amazon-web-services - Cloudformation 拆分和 ImportValue
问题描述
我在 CloudFormation 中有 2 个堆栈。一个是创建一个带有几个子网的 vpc,这些子网被导出以便在其他堆栈中使用。这个想法是让这些子网在其他堆栈中使用。vpc 堆栈正确导出值,但我无法将它们导入第二个堆栈,因为它使用字符串列表。
堆栈 1:
PrivateSubnets:
Description: "A list of the public subnets"
Value: !Join [ ",", [ !Ref PrivateSubnet1, !Ref PrivateSubnet2 ]]
Export:
Name: !Sub "${StagingArea}-PrivateSubnets"
PublicSubnet1:
Description: "Reference to the publi subnet in the 1st Availability Zone"
Value: !Ref PublicSubnet1
PublicSubnet2:
Description: "A reference to the public subnet in the 2nd Availability Zone"
Value: !Ref PublicSubnet2
PrivateSubnet1:
Description: "A reference to the private subnet in the 1st Availability Zone"
Value: !Ref PrivateSubnet1
Export:
Name: !Sub "${StagingArea}-PrivateSubnet1"
PrivateSubnet2:
Description: "A reference to the private subnet in the 2nd Availability Zone"
Value: !Ref PrivateSubnet2
Export:
Name: !Sub "${StagingArea}-PrivateSubnet2"
当我尝试将 ImportValue 导入我的第二个堆栈时,它不起作用。下面的堆栈 2:
DbSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
DBSubnetGroupDescription: !Sub "${StagingArea} RDS DB Subnet Group"
SubnetIds:
- !ImportValue 'Fn::Sub': '{$StagingArea}-PrivateSubnet1'
- !ImportValue 'Fn::Sub': '{$StagingArea}-PrivateSubnet2'
是否可以将从第一个堆栈导出的值放入第二个堆栈?我尝试了各种选择,但似乎都没有奏效。
解决方案
Sub
是不正确的(错误使用$
),最好遵循文档并将语句分为两行:
- Fn::ImportValue:
!Sub '${StagingArea}-PrivateSubnet1'
- Fn::ImportValue:
!Sub '${StagingArea}--PrivateSubnet2'
推荐阅读
- c++ - 如何将具有相同名称的继承函数视为重载函数?
- node.js - 无法使用 SES/Lambda 发送电子邮件,但代码适用于容器
- unicode - 如何从#defined 的 ascii 字符串初始化 WCHAR 字符串。不包括 L 前缀
- java - SQLite 语法错误,但语句完全正确
- r - SMA 计算不正确的问题
- powershell - 如何为算术表达式构建 AST 树?
- python - MySQL Join 在同一张表上两次给出了一半的结果
- java - 无法理解一组 Java 对象的输出
- c - 查找中位数而不对数组进行排序
- mysql - 我正在尝试使用 multer 显示我上传到后端的图像