是否可以使用AWS Cloud Formation获得VPC ID?

时间:2014-11-06 18:11:42

标签: json amazon-web-services amazon-cloudformation vpc

是否可以使用Cloud Formation JSON获取VPC ID?

类似的东西:

{ "Fn::GetAtt" : [ "MyVPCName", "VPCId" ] }

4 个答案:

答案 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