如何解决将物理名称从一个堆栈导出和导入到另一个堆栈
我们有 ECS farget 服务堆栈,我们想在其中导出 serviceName,例如:
In stack1:
new cdk.CfnOutput(this,'EcsServiceExportName',{
value: this.service.serviceName,exportName: "EcsExportName"
});
this.service.serviceName 是 CDK 创建的物理名称。
Fn.importValue(ECS_PROD_SERVICE_EXPORT_NAME)
我们的管道先部署 stack2,然后部署 stack1。
如何在单个部署中部署此代码更改?
CDK 会更改物理名称吗?如果它正在更改物理名称,我们将在部署 Stack2 时遇到问题,因为 Stack1 使用“EcsExportName”。
[注意:我们总是更新我们的服务]
解决方法
当单个 CDK 项目有多个堆栈,我们需要跨堆栈引用资源时,
我们可以直接引用对象,而不是在另一个堆栈中手动导出和导入,如文档化here
const stack1 = new StackThatProvidesABucket(app,'Stack1',{ env: prod });
// stack2 will take a property { bucket: IBucket }
const stack2 = new StackThatExpectsABucket(app,'Stack2',{
bucket: stack1.bucket,env: prod
});
cdk deploy
将根据这些引用自动对堆栈进行排序,并按必要的顺序执行它们。
如果我们用CfnOutput
手动导出和导入,需要手动将栈分别作为cdk deploy Stack1
和cdk deploy Stack2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。