CodeCommitのトリガーからCodeBuildを起動


CodePipelineを使えばいいのでは?となりそうですが、CodePipelineの月額1ドルも節約したい時の話です。

前提

サービス 項目 設定値
CodeCommit リポジトリ名 sample_repo
CodeBuild ビルドプロジェクト名 sample_build

IAMの作成

Lambdaでの実行ロールを作成します。次のポリシーをアタッチした、IAMを作成します。

  • AWSCodeBuildDeveloperAccess
  • AWSLambdaBasicExecutionRole

Lambdaの作成

作成したIAMを指定してLambdaを作成します。

Lambdaのトリガーを作成します。今回はブランチをプッシュした際に起動するようにしておきます。

lambda_function.py
import boto3

def lambda_handler(event, context):
    print("start build")
    client = boto3.client('codebuild')
    client.start_build(projectName='sample_build')
    return 0

まとめ

lambdaが動かせるので、単にAWS SDKを使って起動しました。