EventBridgeもしくはサードパーティーのWebHookを利用して、ビルド開始のトリガーを設定。
EventBridgeでは、コードのコミットなどのルールかcron式でスケジュールを指定してトリガーを設定。
| CodeCommit | ソースコードのコミットID、ブランチを指定。 |
| GitHub | ソースコードのコミットID、ブランチを指定。 |
| プロジェクト名 | |
| ソース | ソースプロバイダ:CodeCommit リポジトリ:api-serverless リファレンスタイプ:ブランチ ブランチ :main |
| 環境 | 環境イメージ :マネージド型イメージ オペレーティングシステム :Amazon Linux 2 ランタイム :Standard イメージ :aws/codebuild/amazonlinux2-x86_64-standard:4.0 イメージのバージョン :最新のイメージ 環境タイプ :Linux |
| アーティファクト | タイプ:CodeCommit バケット名:api-serverless セマンティックバージョニングの有効化:有効 パス :指定なし 暗号化キー:デフォルト(AWS管理キー) キャッシュタイプ:S3 キャッシュバケット:abetest-cache |
| ログ | CloudWatch Logs |
ビルドで実行する内容を定義
YAMLファイルの場合、デフォルトではソースリポジトリのルートディレクトリにbuildspec.ymlのファイル名で格納。
version: 0.2
phases:
install:
commands:
# SSH接続時のホストキーチェックを無効にする
- sed -i 's/# StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config
# EC2の秘密鍵をAWS Secrets Managerから取得し、.sshディレクトリに保存
- aws secretsmanager get-secret-value --secret-id ec2-privatekey --query 'SecretBinary' --output text | base64 -d > ~/.ssh/id_rsa
# 秘密鍵のパーミッションを設定
- chmod 400 ~/.ssh/id_rsa
pre_build:
commands:
- cd ${CODEBUILD_SRC_DIR}/ansible
build:
commands:
# Ansibleプレイブックを実行
- ansible-playbook -i inventory.ini site.yml -u ec2-user -v
version: 0.2
phases:
install:
runtime-version:
docker: 20
pre_build:
commands:
# # ECRリポジトリのURIを環境変数に設定
- REPO_URI_NGINX="${AWS_ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ENV}-${SERVICE}-ecr/nginx"
- REPO_URI_PHPFPM="${AWS_ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ENV}-${SERVICE}-ecr/php-fpm"
# # タグ名にgitのコミットハッシュを利用
- IMAGE_TAG=$(echo ${CODEBUILD_RESOLVED_SOURCE_VERSION} | cut -c 1-7)
- TAG="${ENV}-${IMAGE_TAG}"
# # aws cliの設定
- aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com
build:
commands:
# # docker buildを実行
- docker build -f ./infra/nginx/Dockerfile -t src_nginx:latest .
- docker build -f ./infra/php/Dockerfile -t src_php:latest .
# # doeckr imageのタグ付け
- docker tag src_nginx:latest ${REPO_URI_NGINX}:${ENV}-${IMAGE_TAG}
- docker tag src_php:latest ${REPO_URI_PHPFPM}:${ENV}-${IMAGE_TAG}
- docker images
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker images...
# # dockr pushを実行
- docker push ${REPO_URI_NGINX}:${ENV}-${IMAGE_TAG}
- docker push ${REPO_URI_PHPFPM}:${ENV}-${IMAGE_TAG}
artifacts:
files:
- appspec.yml
- taskdef.json
env:
variables:
REGION: "ap-northeast-1"
parameter-store:
Account_Id: "ACCOUNT_ID"
secrets-manager:
AWS_ACCESS_KEY_ID: "access"
AWS_SECRET_ACCESS_KEY: "secret"

https://d1.awsstatic.com/webinars/jp/pdf/services/20201125_AWS_BlackBelt_AWS_CodeBuild.pdf
CodeBuild上で定義した環境変数になります。
AWS管理コンソールの画面から定義できます。
Codebuildでは環境変数を設定することで、それら環境変数をbuildspec.yml上で使用することができます。
${AWS_ACCOUNT_ID}
${REGION}
${ENV}
${SERVICE}
| AWS_REGION | ビルドが実行されている AWS リージョン | us-east-1 |
| CODEBUILD_SRC_DIR | CodeBuild がビルドに使用するディレクトリパス | /tmp/src123456789/src |
一般向けサイト
ITエンジニア向けサイト
英語サイト
Portfolio
Copyright (c) 2025 クラウドのインフラ技術 All Rights Reserved.