微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将物理名称从一个堆栈导出和导入到另一个堆栈

如何解决将物理名称从一个堆栈导出和导入到另一个堆栈

我们有 ECS farget 服务堆栈,我们想在其中导出 serviceName,例如:

In stack1:
     new cdk.CfnOutput(this,'EcsServiceExportName',{
            value: this.service.serviceName,exportName: "EcsExportName"
     });

this.service.serviceName 是 CDK 创建的物理名称

我们想将此服务名称导入另一个堆栈(堆栈2)中,例如:

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 Stack1cdk deploy Stack2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。