This collection of AWS CloudFormation resource types allow GitHub to be controlled using AWS CloudFormation.
Resource | Description | Documentation |
---|---|---|
GitHub::Git::Tag | This resource type manages a GitHub Git Tag | /GitHub-Git-Tag |
GitHub::Organizations::Membership | This resource type manages a GitHub Organization Membership | /GitHub-Origanizations-Membership |
GitHub::Repositories::Collaborator | This resource type manages a GitHub Repository Collaborator | /GitHub-Repositories-Collaborator |
GitHub::Repositories::Repository | This resource type manages a GitHub Repository | /GitHub-Repositories-Repository |
GitHub::Repositories::Webhook | This resource type manages a GitHub Repository Webhoo | /GitHub-Repositories-Webhook |
GitHub::Teams::Membership | This resource type manages a GitHub Team Membership | /GitHub-Teams-Membership |
GitHub::Teams::RepositoryAccess | This resource type manages a GitHub Team Repository Access | /GitHub-Teams-Repository-Access |
GitHub::Teams::Team | This resource type manages a GitHub Team | /GitHub-Teams-Team |
Github::Repositories::Secret | This resource type manages a Github Repositories Secret | /Github-Repositories-Secret |
Github::Organizations::Secret | This resource type manages a Github Organizations Secret | /Github-Organizations-Secret |
To get started:
-
Sign in to the AWS Management Console with your account and navigate to CloudFormation.
-
Select "Public extensions" from the left hand pane and filter Publisher by "Third Party".
-
Use the search bar to filter by the "GitHub" prefix.
Note: All official GitHub resources begin with GitHub::
and specify that they are Published by GitHub
.
-
Select the desired resource name to view more information about its schema, and click Activate.
-
On the Extension details page, specify:
- Extension name
- Execution role ARN
- Automatic updates for minor version releases
- Configuration
- In your terminal, specify the configuration data for the registered GitHub CloudFormation resource type, in the given account and region by using the SetTypeConfiguration operation:
For example:
$ aws cloudformation set-type-configuration \
--region us-west-2 --type RESOURCE \
--type-name GitHub::Git::Tag \
--configuration-alias default \
--configuration '{"GitHubAccess": {"AccessToken": "{{resolve:ssm-secure:/cfn/github/accesstoken:1}}"}}'
- After you have your resource configured, create your AWS stack that includes any of the activated GitHub resources.
For more information about available commands and workflows, see the official AWS documentation.
The GitHub CloudFormation resources are available on the CloudFormation Public Registry in the following regions:
Code | Name |
---|---|
us-east-1 | US East (N. Virginia) |
us-east-2 | US East (Ohio) |
us-west-1 | US West (N. California) |
us-west-2 | US West (Oregon) |
ap-south-1 | Asia Pacific (Mumbai) |
ap-northeast-1 | Asia Pacific (Tokyo) |
ap-northeast-2 | Asia Pacific (Seoul) |
ap-southeast-1 | Asia Pacific (Singapore) |
ap-southeast-2 | Asia Pacific (Sydney) |
ca-central-1 | Canada (Central) |
eu-central-1 | Europe (Frankfurt) |
eu-west-1 | Europe (Ireland) |
eu-west-2 | Europe (London) |
eu-west-3 | Europe (Paris) |
eu-north-1 | Europe (Stockholm) |
sa-east-1 | South America (São Paulo) |
Note: To privately register a resource in any other region, use the provided packages.
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to set up a new github based project
Parameters:
RepoName:
Type: String
Description: |
The name of the repo that is being created and configured
Default: MyRepo
Resources:
Membership:
Type: GitHub::Organizations::Membership
Properties:
Organization: ACME-CloudFormation
Username: ACME-cloudformation-test-user
Role: member
MyRepo:
Type: GitHub::Repositories::Repository
Properties:
Org: ACME-CloudFormation
Name: !Ref RepoName
Description: Repo created by cloudformation example
Homepage: https://GitHub.com
Private: true
Visibility: private
HasIssues: true
HasProjects: false
HasWiki: true
IsTemplate: false
AutoInit: true
GitIgnoreTemplate: Node
LicenseTemplate: mit
AllowSquashMerge: true
AllowMergeCommit: true
AllowRebaseMerge: true
AllowAutoMerge: true
DeleteBranchOnMerge: false
Archived: false
MyWebHook:
Type: GitHub::Repositories::Webhook
DependsOn: MyRepo
Properties:
Url: http://some.url.com
Owner: ACME-CloudFormation
Name: web
Active: false
Events:
- push
Repository: !Ref RepoName
ExternalCollaborator:
Type: GitHub::Repositories::Collaborator
DependsOn: MyRepo
Properties:
Owner: ACME-CloudFormation
Repository: !Ref RepoName
Username: externaluser
Permission: pull
DemoTeam:
Type: GitHub::Teams::Team
Properties:
Name: My Demo Team
Organization: ACME-CloudFormation
Description: My new Team
Privacy: secret
DemoTeamMemberMe:
Type: GitHub::Teams::Membership
Properties:
Org: ACME-CloudFormation
TeamSlug: !GetAtt DemoTeam.Slug
Username: organisation-member
Role: member
DemoTeamAccessRepo:
Type: GitHub::Teams::RepositoryAccess
DependsOn: MyRepo
Properties:
Org: ACME-CloudFormation
Team: !GetAtt DemoTeam.Slug
Owner: ACME-CloudFormation
Repository: !Ref RepoName
Permission: pull
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Sets up a repository secret
Resources:
MySecret:
Type: GitHub::Repositories::Secret
Properties:
Repository: example-repo
Owner: ACME-CloudFormation
SecretName: secret example
SecretValue: example_secret123
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Sets up a Organization secret
Resources:
MySecret:
Type: GitHub::Organization::Secret
Properties:
Org: example-org
SecretName: secret example
SecretValue: example_secret123
Visibility: selected
SelectedRepositoryIds:
- 595653363