awsのcdkを使ってS3のバケットを作成した時、cdk destroy
コマンドでリソースを削除すると下記のエラーが出ることがあります。
$ cdk destory
The bucket you tried to delete is not empty
(Service: Amazon S3; Status Code: 409;
Error Code: BucketNotEmpty;
Request ID: xxx; S3 Extended Request ID: xxx;
Proxy: null)
これは削除しようとしたS3バケットが空では無いためです。
このエラーを回避するには以下のように、removalPolicy
やautoDeleteObjects
を指定すればよいです。
destoryしたときに、バケットを保持したい場合
import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';
export class AwsCdkStack extends cdk.Stack {
const websiteBacket = new s3.Bucket(this, 'MyWebsiteBucket', {
bucketName: 'my-backet-name',
websiteErrorDocument: 'index.html',
websiteIndexDocument: 'index.html',
removalPolicy: cdk.RemovalPolicy.RETAIN,
});
}
destoryしたときに、バケットの中にあるオブジェクトを含めて削除したい場合
import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';
export class AwsCdkStack extends cdk.Stack {
const websiteBacket = new s3.Bucket(this, 'MyWebsiteBucket', {
bucketName: 'my-backet-name',
websiteErrorDocument: 'index.html',
websiteIndexDocument: 'index.html',
removalPolicy: cdk.RemovalPolicy.DESTROY,
autoDeleteObjects: true,
});
}
こちらもおススメ