CDK 的 CodePipeline 或 CodeBuildStep 留下了一个 S3 存储桶,有没有办法自动删除它?
CDK's CodePipeline or CodeBuildStep are leaving an S3 bucket behind, is there a way of automatically removing it?
我正在使用 CDK 创建 CloudFormation 堆栈,代码大致如下:
export class PipelineStack extends cdk.Stack {
constructor(scope: Construct, id: string, props: PipelineStackProps) {
super(scope, id, props)
new pipelines.CodePipeline(this, id, {
pipelineName: id,
synth: new pipelines.CodeBuildStep("Synth", {
input: pipelines.CodePipelineSource.connection(props.githubRepo, props.repoBranch, {connectionArn: props.repoConnectionArn}),
installCommands: ["npm install -g aws-cdk"],
commands: ["npm ci", "npx cdk synth"],
},
),
})
}
}
并且该堆栈创建了一个 S3 存储桶,当我删除该堆栈时,它并没有被删除。我搜索了选项,但找不到任何可以控制该行为的选项。是否可以将该 S3 存储桶标记为 cdk.RemovalPolicy.DESTROY
或类似的东西?
我假设您指的是工件桶。可以通过 CodePipeline.pipeline.artifactBucket
访问它。您需要在定义整个管道并调用 myPipeline.buildPipeline();
后执行此操作
myPipeline.buildPipeline();
const artifactBucket = myPipeline.pipeline.artifactBucket;
artifactBucket.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);
文档:
虽然这不能解决存储桶 non-empty 并且无法删除的问题。要正确解决此问题,您需要使用自己创建的存储桶创建自己的 Pipeline
,并将其传递给 codePipeline
属性:[=19 中的 CodePipeline
的构造函数=]
const artifactBucket = new s3.Bucket(this, 'artifactBucket', {autoDeleteObjects: true});
artifactBucket.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);
const underlyingPipeline = aws_codepipeline.Pipeline(this, 'underlyingPipeline', {artifactBucket: artifactBucket});
const pipeline = pipelines.Codepipeline(this, 'myPipeline', {codePipeline:underlyingPipeline, ...});
我正在使用 CDK 创建 CloudFormation 堆栈,代码大致如下:
export class PipelineStack extends cdk.Stack {
constructor(scope: Construct, id: string, props: PipelineStackProps) {
super(scope, id, props)
new pipelines.CodePipeline(this, id, {
pipelineName: id,
synth: new pipelines.CodeBuildStep("Synth", {
input: pipelines.CodePipelineSource.connection(props.githubRepo, props.repoBranch, {connectionArn: props.repoConnectionArn}),
installCommands: ["npm install -g aws-cdk"],
commands: ["npm ci", "npx cdk synth"],
},
),
})
}
}
并且该堆栈创建了一个 S3 存储桶,当我删除该堆栈时,它并没有被删除。我搜索了选项,但找不到任何可以控制该行为的选项。是否可以将该 S3 存储桶标记为 cdk.RemovalPolicy.DESTROY
或类似的东西?
我假设您指的是工件桶。可以通过 CodePipeline.pipeline.artifactBucket
访问它。您需要在定义整个管道并调用 myPipeline.buildPipeline();
myPipeline.buildPipeline();
const artifactBucket = myPipeline.pipeline.artifactBucket;
artifactBucket.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);
文档:
虽然这不能解决存储桶 non-empty 并且无法删除的问题。要正确解决此问题,您需要使用自己创建的存储桶创建自己的 Pipeline
,并将其传递给 codePipeline
属性:[=19 中的 CodePipeline
的构造函数=]
const artifactBucket = new s3.Bucket(this, 'artifactBucket', {autoDeleteObjects: true});
artifactBucket.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);
const underlyingPipeline = aws_codepipeline.Pipeline(this, 'underlyingPipeline', {artifactBucket: artifactBucket});
const pipeline = pipelines.Codepipeline(this, 'myPipeline', {codePipeline:underlyingPipeline, ...});