🗑️
AWS ECRリポジトリを絶対に削除するCDKの書き方
こうです。
import { Stack, StackProps, RemovalPolicy } from "aws-cdk-lib";
import { Construct } from "constructs";
import { Repository } from "aws-cdk-lib/aws-ecr";
export class SandboxStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
// ECR
const repository = new Repository(this, "SandBoxRepository", {
removalPolicy: RemovalPolicy.DESTROY,
emptyOnDelete: true,
});
}
}
removalPolicy
だけではプッシュされたイメージがないリポジトリは削除できますが、1つでもイメージがあると削除できません。こんなエラーメッセージが出ます。
Resource handler returned message: "The repository with name 'sandboxstack-sandboxrepository32903a99-nl90fbb4xlev' in registry with id '826204725037' cannot be deleted because it still c
ontains images (Service: Ecr, Status Code: 400, Request ID: xxx)" (RequestToken: xxx, HandlerErrorCode: GeneralServiceEx
ception)
そこで emptyOnDelete
を true
にしたオプションを付与すると、イメージもろともリポジトリを削除してくれます。このオプションはわりと最近サポートされたので過去のCDKコードを見直してみても良いかもしれません。
Discussion