首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用importValue()从现有的CloudFormation栈中检索数组

如何使用importValue()从现有的CloudFormation栈中检索数组
EN

Stack Overflow用户
提问于 2020-12-23 05:02:36
回答 1查看 190关注 0票数 0

我正在尝试将现有CloudFormation堆栈中的子网列表导入到正在部署的堆栈中。这些值以逗号分隔的字符串形式存储在现有堆栈的输出中,例如

代码语言:javascript
复制
subnet-1, subnet-2, subnet-3

我尝试使用的导入代码是:

代码语言:javascript
复制
const privateSubnets = Fn.importValue(PrivateSubnets).split(',');

代码语言:javascript
复制
const myVpc = Vpc.fromVpcAttributes(this, 'Vpc', {
      vpcId: vpcId,
      availabilityZones: [0, 1, 2].map(i => Fn.select(i, Fn.getAzs())),
      privateSubnetIds: privateSubnets,
      publicSubnetIds: publicSubnets
    });

我已经找遍了,但看起来我做不到。

EN

回答 1

Stack Overflow用户

发布于 2020-12-28 08:02:21

Fn.importValue返回一个Ref -所以为了使用ref中的值,你需要使用intrinsic functions

代码语言:javascript
复制
const privateSubnets = Fn.split(',', Fn.importValue(PrivateSubnets));


const myVpc = Vpc.fromVpcAttributes(this, 'Vpc', {
    vpcId: vpcId,
    availabilityZones: [0, 1, 2].map(i => Fn.select(i, Fn.getAzs())),
    privateSubnetIds: [Fn.select(0, privateSubnets), Fn.select(1, privateSubnets), Fn.select(2, privateSubnets)],
    publicSubnetIds: publicSubnets
});

不幸的是,没有一种好的方法来知道Ref的长度并迭代它来正确地将privateSubnetsId映射到ImportValue。

对于您来说,使用SSM参数而不是CloudFormation导出来存储/传递专用子网ID的值可能是一种更干净的长期选择。因为您可以将SSM参数的字符串值加载到CDK堆栈中并使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65415784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档