Fn::GetAtt
Fn::GetAtt
내장 함수는 템플릿의 리소스에서 속성 값을 반환합니다. AWS::LanguageExtensions 변환 변환이 사용되는 경우 내장 함수를 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
, Ref
및 Fn::ForEach
내에서 Fn::Sub
를 사용하여 여러 리소스에 표준 식별자를 사용합니다.
다음 예제는 템플릿의 Outputs에서 Fn::ForEach와 함께 Fn::GetAtt를 Fn::Sub와 함께 사용하여 템플릿의 길이와 세부 사항을 줄이는 방법을 보여줍니다. Fn::GetAtt에서 Fn::Sub를 사용하면 Fn::ForEach 직접 호출이 반복될 때마다 다른 버킷을 참조할 수 있는 하나의 내장 함수를 템플릿에 포함할 수 있습니다.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::LanguageExtensions", "Mappings": { "Buckets": { "Properties": { "Identifiers": ["A", "B", "C"] } } }, "Resources": { "Fn::ForEach::Buckets": [ "Identifier", {"Fn::FindInMap": ["Buckets", "Properties", "Identifiers"]}, { "S3Bucket${Identifier}": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead", "MetricsConfigurations": [ { "Id": {"Fn::Sub": "EntireBucket${Identifier}"} } ], "WebsiteConfiguration": { "IndexDocument": "index.html", "ErrorDocument": "error.html", "RoutingRules": [ { "RoutingRuleCondition": { "HttpErrorCodeReturnedEquals": "404", "KeyPrefixEquals": "out1/" }, "RedirectRule": { "HostName": "ec2-11-22-333-44.compute-1.amazonaws.com", "ReplaceKeyPrefixWith": "report-404/" } } ] } }, "DeletionPolicy": "Retain", "UpdateReplacePolicy": "Retain" } } ] }, "Outputs": { "Fn::ForEach::BucketOutputs": [ "Identifier", {"Fn::FindInMap": ["Buckets", "Properties", "Identifiers"]}, { "Fn::ForEach::GetAttLoop": [ "Property", ["Arn", "DomainName", "WebsiteURL"], { "S3Bucket${Identifier}${Property}": { "Value": { "Fn::GetAtt": [{"Fn::Sub": "S3Bucket${Identifier}"}, {"Ref": "Property"}] } } } ] } ] } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Transform: 'AWS::LanguageExtensions' Mappings: Buckets: Properties: Identifiers: - A - B - C Resources: 'Fn::ForEach::Buckets': - Identifier - Fn::FindInMap: - Buckets - Properties - Identifiers - 'S3Bucket${Identifier}': Type: 'AWS::S3::Bucket' Properties: AccessControl: PublicRead MetricsConfigurations: - Id: Fn::Sub: 'EntireBucket${Identifier}' WebsiteConfiguration: IndexDocument: index.html ErrorDocument: error.html RoutingRules: - RoutingRuleCondition: HttpErrorCodeReturnedEquals: '404' KeyPrefixEquals: out1/ RedirectRule: HostName: ec2-11-22-333-44.compute-1.amazonaws.com ReplaceKeyPrefixWith: report-404/ DeletionPolicy: Retain UpdateReplacePolicy: Retain Outputs: 'Fn::ForEach::BucketOutputs': - Identifier - Fn::FindInMap: - Buckets - Properties - Identifiers - 'Fn::ForEach::GetAttLoop': - Property - - Arn - DomainName - WebsiteURL - 'S3Bucket${Identifier}${Property}': Value: !GetAtt - !Sub 'S3Bucket${Identifier}' - !Ref Property
지원되는 함수
AWS::LanguageExtensions 변환 변환이 사용되지 않는 경우:
AWS::LanguageExtensions 변환 변환을 사용하는 경우 Fn::GetAtt
함수 내에서 다음 함수를 사용할 수 있습니다. Fn::GetAtt
논리적 리소스 이름 또는 Fn::GetAtt
속성 이름에 해당됩니다.