こんにちは。ディベロップメントサービス3課の平松です。
少し前に、AWS CodeBuild(以下、CodeBuild)がGitHubとのAWS CodeConnections(以下、CodeConnection)接続に対応したので、実際に構築して動かしてみようと思います。 記事の最後に、記事と同様の設定ですぐにデプロイできるCloudFormationテンプレートのおまけつきです。
これまでのCodeBuildとGitHubとの接続方法の整理
今回のアップデートが入る前の、これまでCodeBuildのGitHubとの接続方法として、以下の2つがありました。
- アクセストークン
- GitHub OAuth アプリ
ここに今回、新たな手法が加わったわけです。
- GitHub App接続←NEW!!
GitHubとのCodeConnection接続を試してみる
GitHubとの接続(AWS CodeConnections)を作成
まず、CodeConnectionを作成するわけですが、ここは長くなるので、割愛します。 まだ作成されていない方は、以下のブログをご覧ください!
CodeBuildプロジェクトを作成
CodeBuildページからプロジェクトの作成を押下

「ビルドプロジェクトを作成する」ページの「ソース」セクションで以下のように設定
- ソースプロバイダ:GitHub
- 認証情報:カスタムソース認証情報
- アカウントのデフォルトのソース資格情報をすべてのプロジェクトに適用する場合は「デフォルトソース認証情報」を使用し、アカウントのデフォルト設定を上書きする場合は「カスタムソース認証情報」を使用します。今回は、カスタムソース認証情報を設定します。
- 認証情報タイプ:GitHubアプリ
- 接続:任意のCodeConnectionsを選択
- リポジトリ:任意のリポジトリを選択

GitHubからソースを取得できていることを確認するため、buildspecには、「ls -la」コマンドを記載

その他の設定は任意(今回は全てデフォルト)で設定し「ビルドプロジェクトを作成する」を押下する
必要なIAM権限の追加
CodeBuildプロジェクトのIAMロールに、CodeConnection経由でGitHubと接続できるようにするために、以下のポリシーを許可
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codeconnections:GetConnectionToken",
"codeconnections:GetConnection"
],
"Resource": [
"arn:aws:codeconnections:ap-northeast-1:12345678910:connection/xxxx-xxxxxxxx-xxxxxx"
]
}
]
}
動作確認
コンソールから手動実行して、動作確認をします。
ビルドログを見ると、GitHubからソースが取得できていることがわかりますね。(今回はREADME.mdのみ存在するリポジトリを選択)

CloudFormationで作成する
CloudFormationで構築する場合は以下のようなテンプレートになります。
CodeBuildProject -> Property -> Source -> Auth -> Type にCODECONNECTIONSを選択できるようになりました。
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
CodeConnectionArn:
Type: String
Description: CodeConnection ARN
Default: arn:aws:codeconnections:ap-northeast-1:12345678910:connection/xxxxxxx-xxxxxxxx-xxxxxx
RepositoryUrl:
Type: String
Description: Repository URL
Default: https://github.com/xxxxxxxxxx/xxxxxxxxxxx.git
Resources:
ServiceRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: codebuild.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: codebuild-codeconnection-demo
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- codeconnections:GetConnectionToken
- codeconnections:GetConnection
Resource: !Ref CodeConnectionArn
CodeBuildProject:
Type: AWS::CodeBuild::Project
Properties:
Name: codebuild-codeconnection-demo
Description: CodeBuild CodeConnection Demo
ServiceRole: !GetAtt ServiceRole.Arn
Artifacts:
Type: no_artifacts
Environment:
Type: LINUX_CONTAINER
ComputeType: BUILD_GENERAL1_SMALL
Image: aws/codebuild/amazonlinux2-x86_64-standard:5.0
Source:
Type: GITHUB
Auth:
Type: CODECONNECTIONS
Resource: !Ref CodeConnectionArn
Location: !Ref RepositoryUrl
BuildSpec: |
version: 0.2
phases:
build:
commands:
- echo "Hello"
- ls -la
最後に
これまで CodePipeline でのみ CodeConnection 経由での GitHub App 接続がサポートされていましたが、今回のアップデートで CodeBuild 単体でも使用できるようになりました。
これにより、CodePipeline は使わずに CodeBuild だけでサクッとGitHubと連携して、簡単なCI/CDパイプラインなどは作成できるようになったので、個人的には非常に嬉しいアップデートでした。 ただ、CodePipeline V2 でサポートされている、実行トリガーをGit Tagなどでフィルタする機能は、まだサポートされていないので注意が必要です。(将来的にCodeBuild単体でもサポートされることを期待!!)
最後までご覧いただきありがとうございました。