pup*_*eno 0 amazon-web-services aws-cdk
我正在使用 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"],
},
),
})
}
}
Run Code Online (Sandbox Code Playgroud)
该堆栈创建了一个 S3 存储桶,当我删除该存储桶时,该堆栈不会随之删除。我搜索了选项,但找不到任何可以控制该行为的选项。是否可以将 S3 存储桶标记为cdk.RemovalPolicy.DESTROY或类似的内容?
我假设您指的是工件存储桶。可以通过 访问它CodePipeline.pipeline.artifactBucket。您需要在定义整个管道并调用之后执行此操作myPipeline.buildPipeline();
myPipeline.buildPipeline();
const artifactBucket = myPipeline.pipeline.artifactBucket;
artifactBucket.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);
Run Code Online (Sandbox Code Playgroud)
文档:
虽然这并不能解决存储桶非空且无法删除的问题。为了正确解决这个问题,您需要使用自己Pipeline创建的存储桶来创建自己的存储桶,并将其传递给属性CodePipeline中的构造函数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, ...});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |