Amazon ECRコンテナイメージ管理実践|プッシュ・スキャン・ライフサイクルポリシーの設定

現場実践|Amazon ECR管理
Amazon ECRコンテナイメージ管理実践|プッシュ・スキャン・ライフサイクルポリシーの設定
「DockerイメージをAWSに保管・管理したい」「古いイメージが溜まってコストがかかっている」——Amazon ECR(Elastic Container Registry)のイメージプッシュ・脆弱性スキャン・ライフサイクルポリシーの設定を解説します。
💡 ECRはAWSのプライベートDockerレジストリ。古いイメージが蓄積するとストレージコストが増加します。ライフサイクルポリシーで自動削除・脆弱性スキャンでセキュリティを確保する仕組みを整備することが重要です。
1. ECRへのイメージプッシュ
# ECRにログイン(AWS CLI v2)
aws ecr get-login-password --region ap-northeast-1 | \
docker login --username AWS \
--password-stdin 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com
# イメージをビルド
docker build -t my-app:latest .
# ECRのリポジトリURIでタグ付け
docker tag my-app:latest \
123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/my-app:latest
# ECRにプッシュ
docker push \
123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/my-app:latest
# タグをGitのSHAに設定(CI/CDの標準パターン)
docker tag my-app:latest \
123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/my-app:${GITHUB_SHA}2. ECR拡張スキャン(Inspector連携)
ECRのイメージスキャンには基本スキャン(OS脆弱性)と拡張スキャン(AWS Inspectorと連携・OSとアプリケーションライブラリの両方をスキャン)があります。本番環境のリポジトリには拡張スキャンを有効にして「CRITICALまたはHIGHの脆弱性があるイメージをデプロイしない」ポリシーをCI/CDパイプラインに組み込むことを推奨します。
3. ライフサイクルポリシーで古いイメージを自動削除
{
"rules": [
{
"rulePriority": 1,
"description": "latestタグ以外で30日以上古いイメージを削除",
"selection": {
"tagStatus": "tagged",
"tagPrefixList": ["v"],
"countType": "sinceImagePushed",
"countUnit": "days",
"countNumber": 30
},
"action": {"type": "expire"}
},
{
"rulePriority": 2,
"description": "タグなしイメージを1日後に削除",
"selection": {
"tagStatus": "untagged",
"countType": "sinceImagePushed",
"countUnit": "days",
"countNumber": 1
},
"action": {"type": "expire"}
}
]
}4. ECRのクロスアカウントアクセス
マルチアカウントのAWS環境では「共有サービスアカウントのECRから各環境(dev/stg/prod)がイメージをpullする」構成が一般的です。ECRのリソースポリシーで「別のAWSアカウントIDからのPull操作を許可する」設定を行うことで実現できます。
📌 この記事のポイント
- ECRへのプッシュはCIでGitのSHAをタグにすることでイメージとコードの対応が明確になる
- 拡張スキャン(Inspector連携)でOSとアプリライブラリの両方をスキャンしてCRITICALイメージのデプロイをブロックする
- ライフサイクルポリシーで30日以上古いイメージとタグなしイメージを自動削除してEBSコストを削減する
キャリアの疑問、一緒に解決しませんか?
Infra Academyでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。
【編集・制作ポリシー】
本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。 編集ポリシーはこちら
本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。 編集ポリシーはこちら
ABOUT ME




