Fn::GetAtt - AWS CloudFormation

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.GroupNamemyELB을 반환합니다.

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, RefFn::ForEach 내에서 Fn::Sub를 사용하여 여러 리소스에 표준 식별자를 사용합니다.

다음 예제는 템플릿의 결과에서 Fn::ForEach와 함께 Fn::GetAttFn::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 변환 변환이 사용되지 않는 경우:

  • Fn::GetAtt 논리적 리소스 이름에는 함수를 사용할 수 없습니다. 리소스의 논리적 ID인 문자열을 지정해야 합니다. Fn::GetAtt 속성 이름에 대해 Ref 함수를 사용할 수 있습니다.

  • Fn::GetAtt 속성 이름에 Ref 함수를 사용할 수 있습니다.

AWS::LanguageExtensions 변환 변환을 사용하는 경우 Fn::GetAtt 함수 내에서 다음 함수를 사용할 수 있습니다. Fn::GetAtt 논리적 리소스 이름 또는 Fn::GetAtt 속성 이름에 해당됩니다.