是否可以使用AWS Cloud Formation获取VPC ID?
问题描述:
是否可以使用Cloud Formation JSON获取VPC ID?是否可以使用AWS Cloud Formation获取VPC ID?
喜欢的东西:
{ "Fn::GetAtt" : [ "MyVPCName", "VPCId" ] }
答
您可以使用“参考”内置函数获取VPC的资源ID IFF你在同一个模板创建的VPC,看到返回值http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html节
如果您想引用现有的VPC(例如您的默认VPC),那么上述操作将不起作用。您可以将VPC的ID作为参数传递给模板,并使用内置的“Ref”在需要的地方使用它。
答
对于预先存在的VPC,先从参数:
"VpcId": { "Type": "String" },
然后你可以使用这样的事情与你的启动脚本:
aws --profile profile_name --region us-east-1 ec2 describe-vpcs --filters 'Name=tag:Name,Values=MY_VPC_NAME'
这样你面前找到VPC启动堆栈。通过这种方式,您可以启动到不同的地区或帐户,而无需一直手动查找该信息。
答
布拉德利的回答是对的。我还想补充一点,如果你发现你需要“缝合”在不同模板中创建的资源,你可能需要考虑嵌套堆栈。另一个选择是添加一些生成模板的代码层(例如cfn-pyplates)并使用AWS API在堆栈中执行这些查找。