🗑️

AWS ECRリポジトリを絶対に削除するCDKの書き方

2024/02/13に公開

こうです。

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)

そこで emptyOnDeletetrue にしたオプションを付与すると、イメージもろともリポジトリを削除してくれます。このオプションはわりと最近サポートされたので過去のCDKコードを見直してみても良いかもしれません。

Discussion