CDK Codepipeline 自我变异:管道“已存在于堆栈中”

问题描述 投票:0回答:1

我正在尝试使用 codepipeline 来构建/部署 ECS/EC2 应用程序及其必要的工件 - docker 映像。

到目前为止,我在 cdk 中有一个非常简单的设置,它在 CodePipeline 控制台 UI 中创建了 3 个阶段。源 -> 构建 -> 更新管道。

第一步获取 cdk 代码,第二步在其上运行

synth
,最后一步应该更改管道(如果其 CDK 代码已更改)。这是执行此操作的代码

bin/my-app.ts

...
const app = new cdk.App()
const env = { account: 'number', region: 'region' }
new MyPipeline(app, `pipeline`, { env })

lib/pipeline.ts

...
const pipeline = new CodePipeline(this, 'my-pipeline', {
            pipelineName: 'my-pipeline',
            synth: new ShellStep('Synthesize_CDK_Code', {
            input: CodePipelineSource.gitHub(my-infra-repo, 'my-main-branch', { authentication: my-token}),
            commands: [
                  'npm install -g aws-cdk',
                  'npm install',
                  'npx cdk synth'
            ]
            }),
        })

当我第一次手动部署它时,管道堆栈创建成功并自动触发管道。它正确获取基础代码,正确构建它,然后 UpdatePipeline 步骤失败。

当我检查该步骤时,我发现它无法更新管道云信息堆栈。如果我查看堆栈,错误是

my-pipeline already exists in stack ...
。嗯,是的,它已经存在,刚刚创建,但是为什么 updatePipeline 试图重新创建堆栈?第一次部署应该以特殊方式完成吗?

aws-cdk aws-codepipeline infrastructure-as-code infrastructure
1个回答
0
投票

这里的问题是,我使用

cdk cli
手动部署更改,但管道的自我变异步骤是基于 我的 guithub 存储库中的 CDK 代码进行管道更改。

由于 我的 github 存储库仍然有使用

Pipeline
构造的旧代码,它尝试重新创建它但失败了,因为两者具有相同的逻辑 id。

© www.soinside.com 2019 - 2024. All rights reserved.