📝
CDKでECR作成
前提条件の確認
- node.js: 20.2.0
- cdk: 2.1018.1 (build cb71364)
mkdir sample2
cd sample2
cdk init app --language typescript
こちらがECRの内容です。
注意したいのは removalPolicy
が設定されているので、Stackを消した時に削除されてしまいます。
lib/repository-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Stack, StackProps } from 'aws-cdk-lib';
import * as ecr from 'aws-cdk-lib/aws-ecr';
import { Construct } from 'constructs';
export class RepositoryStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
// ECR リポジトリの作成
new ecr.Repository(this, 'MySampleRepository', {
repositoryName: 'my-sample-repo1',
imageScanOnPush: true, // プッシュ時にイメージスキャン
removalPolicy: cdk.RemovalPolicy.DESTROY, // スタック削除時にECR削除(開発用)
});
}
}
メインのコードはこれを呼び出して使うようにします
lib/sample2-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { RepositoryStack } from '../lib/repository-stack';
export class Sample2Stack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new RepositoryStack(this, 'RepositoryStack', {
env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: 'ap-northeast-1' },
});
}
}
ではこれで動かします
cdk bootstrap
cdk diff
cdk deploy --all
この書き方だと複数のStackが作成されるので、--all
で全てのStackを更新することを明示します。
https://ap-northeast-1.console.aws.amazon.com/ecr/private-registry/repositories
で確認したら削除します。
cdk destroy --all
ここでも--all
を指定します
注意点
repositoryName はグローバル一意ではないが、アカウント内では重複不可。
RemovalPolicy.DESTROY は本番環境では避けるべきです。
Discussion