gpt4 book ai didi

amazon-web-services - 在 cf 模板中设置导出时,如何使用 fn::att 或 fn::select 或任何其他内置函数获取当前 VPC CIDR

转载 作者:行者123 更新时间:2023-12-04 08:01:15 25 4
gpt4 key购买 nike

我看到有 Fn::GetAtt 和 Fn::Select 函数,但我如何使用此类或任何其他可以返回 VPC CIDR 并设置为下面列出的导出上的 CidrIp 属性(参见模板)

  "OutboundRule": {
"Type": "AWS::EC2::SecurityGroupEgress",
"Properties":{
"IpProtocol": "tcp",
"FromPort": "80",
"ToPort": "80",
"CidrIp" : "<VPC Cidr>"
}
}

最佳答案

如果您已将 VPC 声明为同一模板中的另一个资源,则可以使用 Fn::GetAtt像这样引用其 CIDR(假设“MyVPC”是您为该 VPC 资源指定的逻辑名称):

{
"OutboundRule": {
"Type": "AWS::EC2::SecurityGroupEgress",
"Properties":{
"IpProtocol": "tcp",
"FromPort": "80",
"ToPort": "80",
"CidrIp" : { "Fn::GetAtt" : [ "MyVPC", "CidrBlock" ] }
}
}

Fn::GetAtt 的属性可以返回特定于它从中返回它们的资源类型,并且它支持的资源类型和属性数量有限。您可以找到list of supported resources and attributes here .

如果您没有在同一模板中声明 VPC,另一个选项是将 CIDR 作为 CloudFormation parameter 传递。并使用{ "Ref": "<parmeterName>" }代替Fn::GetAtt .

更新: Announced on Sept 19, 2016 ,您可以通过 exporting 使用跨堆栈引用和 importing values在堆栈之间共享值而不是参数。

示例(使用 YAML 而不是 JSON,在同一公告中提供):

部分模板 1:

...

Outputs:

VpcCidrBlock:
Description: My VPC's CIDR block.
Value:
Fn::GetAtt:
- MyVpc
- CidrBlock
Export:
Name: MyVpcCidrBlock

部分模板 2:

...

Resources:

Type: "AWS::EC2::SecurityGroupEgress"
Properties:
CidrIp:
Fn::ImportValue: MyVpcCidrBlock
FromPort: 80
IpProtocol: tcp
ToPort: 80

注意:必须先从同一区域中的模板 1 创建堆栈,然后才能从模板 2 创建堆栈。

关于amazon-web-services - 在 cf 模板中设置导出时,如何使用 fn::att 或 fn::select 或任何其他内置函数获取当前 VPC CIDR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35758235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com