Git Push で CodeBuild と Step Functions を連携させる方法しらべてみた
1. Git Push をトリガーとして CodeBuild を起動する
Gitリポジトリへの push
をトリガーとしてCodeBuildを動作させるためには、以下の手順を設定します。
CodePipelineの利用
- AWS CodePipelineを作成し、GitHubまたはAWS CodeCommitをソースプロバイダとして接続します。
- ソースステージでGitの変更(
push
)を検知し、自動的に次のステージ(ビルド)を開始します。
Webhookの利用
- GitHubやAWS CodeCommitでWebhookを設定し、変更イベントをAWS Lambdaに通知します。
- LambdaでCodeBuildを起動するように処理を実装します。
これにより、Gitリポジトリへの変更が検知されると、自動的にCodeBuildが起動されます。
2. CodeBuild でビルドを実行
CodeBuildプロジェクトでは、buildspec.yml
ファイルを利用してビルド手順を定義します。以下は、buildspec.yml
の例です。
version: 0.2
phases:
install:
runtime-versions:
python: 3.9
build:
commands:
- echo "Starting build process..."
- pip install -r requirements.txt
- pytest
post_build:
commands:
- echo "Build completed successfully!"
- aws stepfunctions start-execution --state-machine-arn <YOUR_STEP_FUNCTIONS_ARN>
主な処理内容
必要なライブラリのインストール。
テストの実行。
ビルド完了後、AWS Step Functionsの実行をトリガー。
CodeBuildプロジェクトは、特定のソース(Gitリポジトリ)を指定しておくことで、自動的にソースコードを取得しビルドを実行します。
3. AWS Step Functions を動作させる
ビルド完了後にStep Functionsを起動し、複雑なワークフローを実行します。
Step Functions のステートマシン例
以下は、シンプルなStep Functionsステートマシンの例です。
{
"Comment": "Sample Step Function",
"StartAt": "LambdaInvoke",
"States": {
"LambdaInvoke": {
"Type": "Task",
"Resource": "arn:aws:lambda:<region>:<account_id>:function:<your_lambda_function>",
"End": true
}
}
}
Step Functionsの実行手順
CodeBuildで指定した aws stepfunctions start-execution コマンドを使用し、ステートマシンを起動します。
ステートマシン内でLambda関数を呼び出し、さらに必要なAWSサービス(S3、DynamoDBなど)を操作します。
実装例: Git Push → CodeBuild → Step Functions
Gitリポジトリの変更
GitHubまたはAWS CodeCommitでリポジトリに変更を push します。
CodePipelineのトリガー
ソースステージで変更を検知し、ビルドステージ(CodeBuild)を開始します。
CodeBuildのビルドプロセス
ソースコードを取得し、ビルド・テストを実行します。
ビルド完了後、Step Functionsを起動します。
Step Functionsの実行
よくある運用だと思いますがなんだかよくわからないので調べてみました!
ステートマシンがLambda関数やその他のAWSサービスを連携し、必要な処理を実行します。
おわりに
この仕組みを構築することで、コードの変更からテスト、デプロイ、さらには複雑なワークフローの実行までを自動化できます。これにより、開発の効率化と品質向上が期待できます。
どんどん自動化していきたいですね
Discussion