Open7
@aws-cdk/aws-ecr module README読みメモ
リポジトリの作成
const repository = new ecr.Repository(this, 'Repository');
Image scanning
- ECR image scanning = コンテナイメージの脆弱性をスキャンする機能。
- Repostioryコンストラクタのオプションに
imageScanOnPush: true
を付けると、コンテナイメージをプッシュしたときに自動でスキャンする
const repository = new ecr.Repository(stack, 'Repo', {
imageScanOnPush: true
});
Authorization Token
- リポジトリへのプッシュは、ECR API、Docker CLI、Dockerのライブラリが使える
- が、Docker CLIはネイティブでIAM認証に対応していないため、追加のステップが必要
- Dockerの認証トークンの発行は、
GetAuthorizationToken
APIで可能 - 以下は、IAMユーザーにそのAPIの権限を付与するサンプルコード
import * as iam from '@aws-cdk/aws-iam';
import * as ecr from '@aws-cdk/aws-ecr';
const user = new iam.User(this, 'User', { ... });
ecr.AuthorizationToken.grantRead(user);
Image tag immutability
-
imageTagMutability
オプションで、タグをImmutableにできる
new ecr.Repository(stack, 'Repo', { imageTagMutability: ecr.TagMutability.IMMUTABLE });
Automatically clean up repositories
- 古いイメージを自動で削除するためにライフサイクルのルールを設定できる
repository.addLifecycleRule({ tagPrefixList: ['prod'], maxImageCount: 9999 });
repository.addLifecycleRule({ maxImageAge: cdk.Duration.days(30) });
まとめ
- @aws-cdk/aws-ecr自体はECRのリポジトリを作るだけのモジュール