Fn::GetAtt
Fn::GetAtt
内部函数返回模板中的资源的属性值。有关特定资源的 GetAtt
返回值的更多信息,请参阅 资源和属性参考 中该资源的文档。
声明
JSON
{ "Fn::GetAtt" : [ "
logicalNameOfResource
", "attributeName
" ] }
YAML
完整函数名称的语法:
Fn::GetAtt: [
logicalNameOfResource
,attributeName
]
短格式的语法:
!GetAtt
logicalNameOfResource
.attributeName
参数
logicalNameOfResource
-
包含所需属性的资源的逻辑名称 (也称为逻辑 ID)。
attributeName
-
您想要获得其值的资源特定属性名称。有关该资源类型之可用属性的详细信息,请参阅资源的引用页面。
返回值
属性值。
示例
返回字符串
此示例代码段返回的字符串包含逻辑名称为 myELB
的负载均衡器的 DNS 名称。
JSON
"Fn::GetAtt" : [ "myELB" , "DNSName" ]
YAML
!GetAtt myELB.DNSName
返回多个字符串
以下示例模板将返回逻辑名称为 SourceSecurityGroup.OwnerAlias
的负载均衡器 SourceSecurityGroup.GroupName
和 myELB
。
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "myELB": { "Type": "AWS::ElasticLoadBalancing::LoadBalancer", "Properties": { "AvailabilityZones": [ "eu-west-1a" ], "Listeners": [ { "LoadBalancerPort": "80", "InstancePort": "80", "Protocol": "HTTP" } ] } }, "myELBIngressGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "ELB ingress group", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "SourceSecurityGroupOwnerId": { "Fn::GetAtt": [ "myELB", "SourceSecurityGroup.OwnerAlias" ] }, "SourceSecurityGroupName": { "Fn::GetAtt": [ "myELB", "SourceSecurityGroup.GroupName" ] } } ] } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Resources: myELB: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: AvailabilityZones: - eu-west-1a Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: HTTP myELBIngressGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: ELB ingress group SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 SourceSecurityGroupOwnerId: !GetAtt myELB.SourceSecurityGroup.OwnerAlias SourceSecurityGroupName: !GetAtt myELB.SourceSecurityGroup.GroupName
支持的函数
对于 Fn::GetAtt
逻辑资源名称,不能使用函数。必须指定作为资源逻辑 ID 的字符串。
对于 Fn::GetAtt
属性名称,可以使用 Ref
函数。