10

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

就像是:

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

4 回答 4

13

如果您在同一模板中创建了 VPC,则可以使用“Ref”内置函数获取 VPC 的资源 ID ,请参阅http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide的返回值部分/aws-resource-ec2-vpc.html

如果您想引用现有 VPC(如您的默认 VPC),则上述方法将不起作用。您可以将 VPC 的 Id 作为参数传递给模板,并使用内置的“Ref”在需要的地方使用它。

于 2014-11-07T09:00:19.390 回答
7

对于预先存在的 VPC,从参数开始:

    "VpcId": { "Type": "String" },

然后你可以在你的启动脚本中使用这样的东西:

aws --profile profile_name --region us-east-1 ec2 describe-vpcs --filters 'Name=tag:Name,Values=MY_VPC_NAME'

这样您就可以在启动堆栈之前找到 VPC。通过这种方式,您可以启动到不同的区域或帐户,而不必总是手动查找该信息。

于 2014-11-09T21:12:04.987 回答
1

布拉德利的回答是正确的。我还要补充一点,如果您发现需要“缝合”在单独模板中创建的资源,您可能需要查看嵌套堆栈。另一种选择是添加一些生成模板的代码层(例如 cfn-pyplates)并使用 AWS API 跨堆栈进行这些查找。

于 2014-12-08T21:18:13.380 回答
0

我建议将此类重要值放入 CFN 导出中。然后很容易用这样的东西引用。

YAML 代码示例

VpcId: !ImportValue VpcId

JSON 代码示例

"VpcId" : {"Fn::ImportValue" : "VpcId"}

链接到有关如何导入 CloudFormation 导出的 AWS 文档

链接到有关创建 CloudFormation 输出和导出的 AWS 文档

于 2019-10-02T14:23:19.427 回答