是否可以使用Cloud Formation JSON获取VPC ID?
类似的东西:
{ "Fn::GetAtt" : [ "MyVPCName", "VPCId" ] }
答案 0 :(得分:9)
您可以使用"参考"内置函数来获取您在同一模板中创建VPC的VPC资源ID iff ,请参阅http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html的返回值部分
如果您想要引用现有的VPC(例如您的默认VPC),那么上述功能将无法使用。您可以将VPC的ID作为参数传递给模板,然后使用" Ref"内置在需要的地方使用它。
答案 1 :(得分:5)
对于预先存在的VPC,请从参数:
开始 "VpcId": { "Type": "String" },
然后你可以在你的启动脚本中使用这样的东西:
aws --profile profile_name --region us-east-1 ec2 describe-vpcs --filters 'Name=tag:Name,Values=MY_VPC_NAME'
这样您就可以在启动堆栈之前找到VPC。通过这种方式,您可以启动到不同的区域或帐户,而无需始终手动查找该信息。
答案 2 :(得分:1)
布拉德利的回答是正确的。我还补充说,如果您发现需要“缝合”在单独模板中创建的资源,您可能需要查看嵌套堆栈。另一种选择是添加一些生成模板的代码层(例如cfn-pyplates),并使用AWS API在堆栈中执行这些查找。
答案 3 :(得分:0)
我建议将此类重要值输入CFN导出中。然后用这样的东西轻松引用。
YAML代码示例
VpcId: !ImportValue VpcId
JSON代码示例
"VpcId" : {"Fn::ImportValue" : "VpcId"}
Link to AWS documentation on how to import CloudFormation exports
Link to AWS documentation on creating CloudFormation Outputs and Exports