是否可以使用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在堆栈中执行这些查找。