Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Dapatkan AWS nilai menggunakan parameter semu
Parameter semu adalah variabel bawaan yang menyediakan akses ke informasi AWS lingkungan penting seperti akun IDs, nama Wilayah, dan detail tumpukan yang dapat berubah antara penerapan atau lingkungan.
Anda dapat menggunakan parameter semu alih-alih nilai hard-code untuk membuat templat Anda lebih portabel dan lebih mudah digunakan kembali di berbagai wilayah dan wilayah. Akun AWS
Sintaksis
Anda dapat mereferensikan parameter semu menggunakan fungsi Ref
intrinsik atau fungsi intrinsik. Fn::Sub
Ref
Fungsi Ref
intrinsik menggunakan sintaks umum berikut. Untuk informasi lebih lanjut, lihat Ref.
JSON
{ "Ref" : "AWS::
PseudoParameter
" }
YAML
!Ref AWS::
PseudoParameter
Fn: :Sub
Fungsi Fn::Sub
intrinsik menggunakan format berbeda yang mencakup ${}
sintaks di sekitar parameter semu. Untuk informasi selengkapnya, lihat Fn::Sub.
JSON
{ "Fn::Sub" : "${AWS::
PseudoParameter
}" }
YAML
!Sub '${AWS::
PseudoParameter
}'
Parameter pseudo yang tersedia
AWS::AccountId
Mengembalikan Akun AWS ID akun di mana tumpukan sedang dibuat, seperti123456789012
.
Parameter semu ini biasanya digunakan saat mendefinisikan peran IAM, kebijakan, dan kebijakan sumber daya lainnya yang melibatkan spesifik akun. ARNs
AWS::NotificationARNs
Mengembalikan daftar Nama Sumber Daya Amazon (ARNs) untuk topik Amazon SNS yang menerima pemberitahuan peristiwa tumpukan. Anda dapat menentukan ini ARNs melalui --notification-arns
opsi di AWS CLI atau melalui konsol saat Anda membuat atau memperbarui tumpukan Anda.
Tidak seperti parameter semu lainnya yang mengembalikan nilai tunggal, AWS::NotificationARNs
mengembalikan daftar. ARNs Untuk mengakses ARN tertentu dalam daftar, gunakan fungsi Fn::Select
intrinsik. Untuk informasi selengkapnya, lihat Fn::Select.
AWS::NoValue
Menghapus atribut sumber daya yang sesuai jika ditentukan sebagai nilai kembali dalam fungsi intrinsik Fn::If
. Untuk informasi selengkapnya, lihat Fn::If.
Parameter semu ini sangat berguna untuk membuat properti sumber daya bersyarat yang seharusnya hanya disertakan dalam kondisi tertentu.
AWS::Partition
Mengembalikan partisi tempat sumber daya berada. Untuk standar Wilayah AWS, partisi adalahaws
. Jika Anda memiliki sumber daya di partisi lain, maka partisi-nya adalah aws-
partitionname
. Misalnya, partisi untuk sumber daya di Wilayah Tiongkok (Beijing dan Ningxia) aws-cn
adalah dan partisi untuk sumber daya di AWS GovCloud Wilayah (AS-Barat) adalah. aws-us-gov
Partisi merupakan bagian dari ARN untuk sumber daya. Menggunakan AWS::Partition
memastikan template Anda bekerja dengan benar di berbagai AWS partisi.
AWS::Region
Mengembalikan string yang mewakili Wilayah tempat sumber daya yang dicakup sedang dibuat, seperti us-west-2
.
Ini adalah salah satu parameter semu yang paling umum digunakan, karena memungkinkan template untuk beradaptasi dengan yang berbeda Wilayah AWS tanpa modifikasi.
AWS::StackId
Mengembalikan ID (ARN) dari tumpukan, seperti. arn:aws:cloudformation:us-west-2:123456789012:stack/teststack/51af3dc0-da77-11e4-872e-1234567db123
AWS::StackName
Mengembalikan nama tumpukan, sepertiteststack
.
Nama tumpukan biasanya digunakan untuk membuat nama sumber daya unik yang mudah diidentifikasi sebagai milik tumpukan tertentu.
AWS::URLSuffix
Mengembalikan akhiran untuk AWS domain di Wilayah AWS tempat tumpukan digunakan. Akhiran biasanyaamazonaws.com
, tetapi untuk Wilayah Tiongkok (Beijing), sufiksnya adalah. amazonaws.com.cn
Parameter ini sangat berguna ketika membangun URLs untuk titik akhir AWS layanan.
Contoh
Penggunaan dasar
Contoh berikut membuat dua sumber daya: topik Amazon SNS dan CloudWatch alarm yang mengirimkan pemberitahuan ke topik itu. Mereka menggunakanAWS::StackName
,AWS::Region
, dan AWS::AccountId
untuk secara dinamis memasukkan nama tumpukan, saat ini Wilayah AWS, dan ID akun ke dalam nama sumber daya, deskripsi, dan. ARNs
JSON
{ "Resources": { "MyNotificationTopic": { "Type": "AWS::SNS::Topic", "Properties": { "DisplayName": { "Fn::Sub": "Notifications for ${AWS::StackName}" } } }, "CPUAlarm": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": { "Fn::Sub": "Alarm for high CPU in ${AWS::Region}" }, "AlarmName": { "Fn::Sub": "${AWS::StackName}-HighCPUAlarm" }, "MetricName": "CPUUtilization", "Namespace": "AWS/EC2", "Statistic": "Average", "Period": 300, "EvaluationPeriods": 1, "Threshold": 80, "ComparisonOperator": "GreaterThanThreshold", "AlarmActions": [{ "Fn::Sub": "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${MyNotificationTopic}" }] } } } }
YAML
Resources: MyNotificationTopic: Type: AWS::SNS::Topic Properties: DisplayName: !Sub Notifications for ${AWS::StackName} CPUAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: !Sub Alarm for high CPU in ${AWS::Region} AlarmName: !Sub ${AWS::StackName}-HighCPUAlarm MetricName: CPUUtilization Namespace: AWS/EC2 Statistic: Average Period: 300 EvaluationPeriods: 1 Threshold: 80 ComparisonOperator: GreaterThanThreshold AlarmActions: - !Sub arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${MyNotificationTopic}
Menggunakan AWS::NotificationARNs
Contoh berikut mengonfigurasi grup Auto Scaling untuk mengirim notifikasi misalnya peristiwa peluncuran dan kesalahan peluncuran. Konfigurasi menggunakan parameter AWS::NotificationARNs
semu, yang menyediakan daftar ARNs topik Amazon SNS yang ditentukan selama pembuatan tumpukan. Fn::Select
Fungsi memilih ARN pertama dari daftar itu.
JSON
"myASG": { "Type": "AWS::AutoScaling::AutoScalingGroup", "Properties": { "LaunchTemplate": { "LaunchTemplateId": { "Ref": "myLaunchTemplate" }, "Version": { "Fn::GetAtt": [ "myLaunchTemplate", "LatestVersionNumber" ] } }, "MaxSize": "1", "MinSize": "1", "VPCZoneIdentifier": [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "NotificationConfigurations" : [{ "TopicARN" : { "Fn::Select" : [ "0", { "Ref" : "AWS::NotificationARNs" } ] }, "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH", "autoscaling:EC2_INSTANCE_LAUNCH_ERROR" ] }] } }
YAML
myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: LaunchTemplate: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber MinSize: '1' MaxSize: '1' VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 NotificationConfigurations: - TopicARN: Fn::Select: - '0' - Ref: AWS::NotificationARNs NotificationTypes: - autoscaling:EC2_INSTANCE_LAUNCH - autoscaling:EC2_INSTANCE_LAUNCH_ERROR
Properti bersyarat dengan AWS::NoValue
Contoh berikut membuat instans Amazon RDS DB yang menggunakan snapshot hanya jika ID snapshot disediakan. Jika UseDBSnapshot
kondisi mengevaluasi ke true, CloudFormation menggunakan nilai DBSnapshotName
parameter untuk DBSnapshotIdentifier
properti. Jika kondisi dievaluasi menjadi false, CloudFormation hapus DBSnapshotIdentifier
properti.
JSON
"MyDB" : { "Type" : "AWS::RDS::DBInstance", "Properties" : { "AllocatedStorage" : "5", "DBInstanceClass" : "db.t2.small", "Engine" : "MySQL", "EngineVersion" : "5.5", "MasterUsername" : { "Ref" : "DBUser" }, "MasterUserPassword" : { "Ref" : "DBPassword" }, "DBParameterGroupName" : { "Ref" : "MyRDSParamGroup" }, "DBSnapshotIdentifier" : { "Fn::If" : [ "UseDBSnapshot", {"Ref" : "DBSnapshotName"}, {"Ref" : "AWS::NoValue"} ] } } }
YAML
MyDB: Type: AWS::RDS::DBInstance Properties: AllocatedStorage: '5' DBInstanceClass: db.t2.small Engine: MySQL EngineVersion: '5.5' MasterUsername: Ref: DBUser MasterUserPassword: Ref: DBPassword DBParameterGroupName: Ref: MyRDSParamGroup DBSnapshotIdentifier: Fn::If: - UseDBSnapshot - Ref: DBSnapshotName - Ref: AWS::NoValue