GitHub Actions + ECR + ECSで作るコンテナCI/CDパイプライン実践

現場実践|AWS CI/CDパイプライン
GitHub Actions + ECR + ECSで作るコンテナCI/CDパイプライン実践
「コンテナをAWSに自動デプロイする仕組みを作りたい」——GitHub Actions・Amazon ECR(コンテナレジストリ)・Amazon ECS(Fargate)を連携させたCI/CDパイプラインの構築方法を解説します。
💡 「コードをpushしたらコンテナがECSに自動デプロイされる」仕組みはDevOpsの基本パイプライン。GitHub Actions + ECR + ECSはAWSのコンテナCI/CDの最も標準的な構成です。
1. パイプラインの全体像
1
GitHubにコードをpush
開発者がアプリケーションコードの変更をGitHubのmainブランチにマージする(プルリクエスト経由)。
2
GitHub Actionsがビルド・テスト・ECRにプッシュ
workflow.ymlに定義したジョブが自動実行。Dockerイメージをビルドしてユニットテストを実行し、ECRにプッシュする。
3
ECSのタスク定義を更新してデプロイ
新しいECRイメージのタグでECSタスク定義を更新してECSサービスにローリングデプロイを実行する。
2. GitHub Actions ワークフローの例
name: Deploy to ECS
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789:role/github-actions
aws-region: ap-northeast-1
- name: Login to ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Build and push to ECR
run: |
docker build -t $ECR_REGISTRY/$ECR_REPO:$GITHUB_SHA .
docker push $ECR_REGISTRY/$ECR_REPO:$GITHUB_SHA
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPO: my-app
- name: Deploy to ECS
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: task-definition.json
service: my-service
cluster: my-cluster3. IAMロールの設定(OIDC)
GitHub ActionsからAWSにアクセスする際は、アクセスキーをGitHub Secretsに保管するのではなく、GitHub OIDCを使ってIAMロールを引き受ける方法(role-to-assume)が推奨されます。アクセスキーが不要になりセキュリティリスクが大幅に下がります。
📌 この記事のポイント
- GitHub Actions + ECR + ECSはAWSコンテナCI/CDの最も標準的な構成
- GitHub OIDCを使ってアクセスキー不要でGitHub ActionsからAWSにセキュアに接続する
- ローリングデプロイ設定でECSへの無停止デプロイを実現する
キャリアの疑問、一緒に解決しませんか?
Route Bloomでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。
ABOUT ME




