Dapatkan AWS nilai menggunakan parameter semu - AWS CloudFormation

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::SelectFungsi 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