8

这是我的演示堆栈,

export class HelloCdkStack extends cdk.Stack {
  constructor(parent: cdk.App, id: string, props?: cdk.StackProps) {
    super(parent, id, props);
    new s3.Bucket(this, 'MyFirstBucket', {
      versioned: true,
      encryption: s3.BucketEncryption.KmsManaged,
    });
  }
}

'cdk deploy' 创建一个新的存储桶,但是当我执行 'cdk destroy' 时它不会删除存储桶。我做错什么了吗?

4

5 回答 5

10

默认情况下,S3 存储桶在删除堆栈时配置为“孤立”。设置removalPolicyDestroy将在删除时物理销毁存储桶。

于 2019-02-05T21:30:40.890 回答
1

您可以设置destroyremovalPolicy,如果它是空的,它将删除存储桶:https ://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html#removalpolicy

如果您想销毁非空存储桶,您还应该将autoDeleteObjects属性设置为truehttps ://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html#autodeleteobjects

于 2021-03-29T13:28:49.780 回答
1

如果您需要自动销毁包含文件的存储桶,请查看此 CDK 构造:https ://www.npmjs.com/package/@mobileposse/auto-delete-bucket

如果您需要自动销毁预期为空的存储桶,请使用标准存储桶并将removingPolicy 设置为DESTROY。https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html#removalpolicy

于 2020-01-28T16:29:59.720 回答
0

在python中,在入门之后,您可以在实例化对象时添加removal_policy=cdk.RemovalPolicy.DESTROY参数s3.Bucket,这样bucket就会被删除cdk destroy

from aws_cdk import core as cdk
from aws_cdk import aws_s3 as s3


class HelloCdkStack(cdk.Stack):

    def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)
        bucket = s3.Bucket(self,
                           "MyFirstBucket",
                           versioned=True,
                           removal_policy=cdk.RemovalPolicy.DESTROY)  # delete bucket on destroy
于 2021-05-17T08:47:40.520 回答
0

就我而言,问题是cdk试图获取不同的帐户凭据。添加--verboseor-v标志以查看内部是否引发任何异常。

遗憾的是,异常没有被记录到 stdout 或 stderr(对于任何工具都应该如此)

于 2022-02-07T14:16:48.733 回答