Fn::GetAtt - AWS CloudFormation

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Fn::GetAtt

Fungsi intrinsik Fn::GetAtt mengembalikan nilai atribut dari sumber daya di dalam templat. Ketika Tansformasi AWS::LanguageExtensions transformasi digunakan, Anda dapat menggunakan fungsi intrinsik sebagai parameter untuk. Fn::GetAtt Untuk informasi lebih lanjut tentang nilai kembali GetAtt untuk sumber daya atau properti tertentu, rujuk ke dokumentasi untuk sumber daya tersebut dalam Referensi sumber daya dan properti.

Pernyataan

JSON

{ "Fn::GetAtt" : [ "logicalNameOfResource", "attributeName" ] }

YAML

Sintaks untuk nama fungsi penuh:

Fn::GetAtt: [ logicalNameOfResource, attributeName ]

Sintaks untuk bentuk pendek:

!GetAtt logicalNameOfResource.attributeName

Parameter

logicalNameOfResource

Nama logis (juga disebut ID logis) dari sumber daya yang berisi atribut yang Anda inginkan.

attributeName

Nama atribut sumber daya spesifik yang nilainya Anda inginkan. Lihat halaman referensi sumber daya untuk detail tentang atribut yang tersedia untuk jenis sumber daya tersebut.

Nilai yang dikembalikan

Nilai atribut.

Contoh

Mengembalikan string

Contoh potongan ini mengembalikan string yang berisi nama DNS penyeimbang beban dengan nama logis myELB.

JSON

"Fn::GetAtt" : [ "myELB" , "DNSName" ]

YAML

!GetAtt myELB.DNSName

Mengembalikan beberapa string

Contoh templat berikut mengembalikan SourceSecurityGroup.OwnerAlias dan SourceSecurityGroup.GroupName dari penyeimbang beban dengan nama logis 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

Contoh: Gunakan Identifier standar untuk beberapa sumber daya yang digunakan Fn::Sub dalamFn::GetAtt, dan RefFn::ForEach

Contoh berikut menunjukkan bagaimana menggunakan Fn::GetAtt denganFn::Sub, bersamaan denganFn::ForEach, dalam template untuk mengurangi panjang template dan verbositas. Output Penggunaan Fn::Sub within Fn::GetAtt memungkinkan template berisi satu fungsi intrinsik yang dapat mereferensikan bucket yang berbeda pada setiap iterasi panggilan. 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

Fungsi yang didukung

Ketika Tansformasi AWS::LanguageExtensions transformasi tidak digunakan:

  • Nama sumber daya Fn::GetAtt logis tidak dapat menggunakan fungsi. Anda harus menentukan string yang merupakan ID logis sumber daya. Untuk nama atribut Fn::GetAtt, Anda dapat menggunakan fungsi Ref.

  • Nama Fn::GetAtt atribut dapat menggunakan Ref fungsi.

Saat Tansformasi AWS::LanguageExtensions transformasi digunakan, di dalam Fn::GetAtt fungsi, Anda dapat menggunakan fungsi-fungsi berikut. Ini benar dengan nama sumber daya Fn::GetAtt logis atau nama Fn::GetAtt atribut.