Open7

@aws-cdk/aws-ecr module README読みメモ

pirosikickpirosikick

リポジトリの作成

const repository = new ecr.Repository(this, 'Repository');
pirosikickpirosikick

Image scanning

  • ECR image scanning = コンテナイメージの脆弱性をスキャンする機能。
  • RepostioryコンストラクタのオプションにimageScanOnPush: trueを付けると、コンテナイメージをプッシュしたときに自動でスキャンする
const repository = new ecr.Repository(stack, 'Repo', {
  imageScanOnPush: true
});
pirosikickpirosikick

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);
pirosikickpirosikick

Image tag immutability

  • imageTagMutabilityオプションで、タグをImmutableにできる
new ecr.Repository(stack, 'Repo', { imageTagMutability: ecr.TagMutability.IMMUTABLE });
pirosikickpirosikick

Automatically clean up repositories

  • 古いイメージを自動で削除するためにライフサイクルのルールを設定できる
repository.addLifecycleRule({ tagPrefixList: ['prod'], maxImageCount: 9999 });
repository.addLifecycleRule({ maxImageAge: cdk.Duration.days(30) });
pirosikickpirosikick

まとめ

  • @aws-cdk/aws-ecr自体はECRのリポジトリを作るだけのモジュール