View a markdown version of this page

CloudFormation cuplikan templat - AWS CloudFormation

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

CloudFormation cuplikan templat

Tumpukan nested

Membuat nest tumpukan dalam templat

Contoh templat ini mengandung sumber daya tumpukan nested yang disebut myStack. Ketika CloudFormation membuat tumpukan dari template, itu menciptakanmyStack, yang templatnya ditentukan dalam TemplateURL properti. Nilai output StackRef mengembalikan ID tumpukan untuk myStack dan nilai OutputFromNestedStack mengembalikan nilai output BucketName dari dalam sumber daya myStack. Outputs.nestedstackoutputnameFormat dicadangkan untuk menentukan nilai keluaran dari tumpukan bersarang dan dapat digunakan di mana saja dalam template yang berisi.

Untuk informasi selengkapnya, lihat AWS::CloudFormation::Stack.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myStack" : { "Type" : "AWS::CloudFormation::Stack", "Properties" : { "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-1/S3_Bucket.template", "TimeoutInMinutes" : "60" } } }, "Outputs": { "StackRef": {"Value": { "Ref" : "myStack"}}, "OutputFromNestedStack" : { "Value" : { "Fn::GetAtt" : [ "myStack", "Outputs.BucketName" ] } } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Resources: myStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: https://s3.amazonaws.com/cloudformation-templates-us-east-1/S3_Bucket.template TimeoutInMinutes: '60' Outputs: StackRef: Value: !Ref myStack OutputFromNestedStack: Value: !GetAtt myStack.Outputs.BucketName

Membuat nest tumpukan dengan parameter input dalam sebuah templat

Templat contoh ini berisi sumber daya tumpukan yang menentukan parameter input. Saat CloudFormation membuat tumpukan dari template ini, ia menggunakan pasangan nilai yang dideklarasikan dalam Parameters properti sebagai parameter input untuk template yang digunakan untuk membuat myStackWithParams tumpukan. Dalam contoh ini, parameter InstanceType dan KeyName ditentukan.

Untuk informasi selengkapnya, lihat AWS::CloudFormation::Stack.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myStackWithParams" : { "Type" : "AWS::CloudFormation::Stack", "Properties" : { "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2ChooseAMI.template", "Parameters" : { "InstanceType" : "t2.micro", "KeyName" : "mykey" } } } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Resources: myStackWithParams: Type: AWS::CloudFormation::Stack Properties: TemplateURL: https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2ChooseAMI.template Parameters: InstanceType: t2.micro KeyName: mykey

Kondisi menunggu

Menggunakan kondisi tunggu dengan instans Amazon EC2

penting

Untuk sumber daya Amazon EC2 dan Auto Scaling, sebaiknya gunakan CreationPolicy atribut alih-alih kondisi tunggu. Tambahkan CreationPolicy atribut ke sumber daya tersebut, dan gunakan skrip cfn-signal helper untuk memberi sinyal ketika proses pembuatan instance telah selesai dengan sukses.

Jika Anda tidak dapat menggunakan kebijakan pembuatan, Anda melihat contoh template berikut, yang mendeklarasikan instans Amazon EC2 dengan kondisi tunggu. Kondisi myWaitCondition tunggu digunakan myWaitConditionHandle untuk pensinyalan, menggunakan DependsOn atribut untuk menentukan bahwa kondisi tunggu akan dipicu setelah sumber daya instans Amazon EC2 dibuat, dan menggunakan Timeout properti untuk menentukan durasi 4500 detik untuk kondisi tunggu. Selain itu, URL yang telah ditandatangani sebelumnya yang memberi sinyal kondisi tunggu diteruskan ke instans Amazon EC2 dengan UserData properti Ec2Instance sumber daya, sehingga memungkinkan aplikasi atau skrip yang berjalan pada instans Amazon EC2 untuk mengambil URL yang telah ditandatangani sebelumnya dan menggunakannya untuk menandakan keberhasilan atau kegagalan kondisi tunggu. Anda perlu menggunakan cfn-signal atau membuat aplikasi atau skrip yang menandakan kondisi tunggu. Nilai output ApplicationData berisi data yang diteruskan kembali dari sinyal kondisi tunggu.

Untuk informasi selengkapnya, lihat Buat kondisi tunggu di CloudFormation template.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "RegionMap" : { "us-east-1" : { "AMI" : "ami-0123456789abcdef0" }, "us-west-1" : { "AMI" : "ami-0987654321fedcba0" }, "eu-west-1" : { "AMI" : "ami-0abcdef123456789a" }, "ap-northeast-1" : { "AMI" : "ami-0fedcba987654321b" }, "ap-southeast-1" : { "AMI" : "ami-0c1d2e3f4a5b6c7d8" } } }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "UserData" : { "Fn::Base64" : {"Ref" : "myWaitHandle"}}, "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]} } }, "myWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle", "Properties" : { } }, "myWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "Ec2Instance", "Properties" : { "Handle" : { "Ref" : "myWaitHandle" }, "Timeout" : "4500" } } }, "Outputs" : { "ApplicationData" : { "Value" : { "Fn::GetAtt" : [ "myWaitCondition", "Data" ]}, "Description" : "The data passed back as part of signalling the WaitCondition." } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Mappings: RegionMap: us-east-1: AMI: ami-0123456789abcdef0 us-west-1: AMI: ami-0987654321fedcba0 eu-west-1: AMI: ami-0abcdef123456789a ap-northeast-1: AMI: ami-0fedcba987654321b ap-southeast-1: AMI: ami-0c1d2e3f4a5b6c7d8 Resources: Ec2Instance: Type: AWS::EC2::Instance Properties: UserData: Fn::Base64: !Ref myWaitHandle ImageId: Fn::FindInMap: - RegionMap - Ref: AWS::Region - AMI myWaitHandle: Type: AWS::CloudFormation::WaitConditionHandle Properties: {} myWaitCondition: Type: AWS::CloudFormation::WaitCondition DependsOn: Ec2Instance Properties: Handle: !Ref myWaitHandle Timeout: '4500' Outputs: ApplicationData: Value: !GetAtt myWaitCondition.Data Description: The data passed back as part of signalling the WaitCondition.

Menggunakan skrip pembantu cfn-signal untuk memberi sinyal kondisi menunggu

Contoh ini menunjukkan baris cfn-signal perintah yang menandakan keberhasilan ke kondisi tunggu. Anda harus menentukan baris perintah di properti UserData instans EC2.

JSON

"UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -xe\n", "/opt/aws/bin/cfn-signal --exit-code 0 '", { "Ref": "myWaitHandle" }, "'\n" ] ] } }

YAML

UserData: Fn::Base64: !Sub | #!/bin/bash -xe /opt/aws/bin/cfn-signal --exit-code 0 '${myWaitHandle}'

Menggunakan Curl untuk memberikan sinyal kondisi menunggu

Contoh ini menunjukkan baris perintah Curl yang memberikan sinyal berhasil ke kondisi menunggu.

curl -T /tmp/a "https://cloudformation-waitcondition-test.s3.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-1%3A034017226601%3Astack%2Fstack-gosar-20110427004224-test-stack-with-WaitCondition--VEYW%2Fe498ce60-70a1-11e0-81a7-5081d0136786%2FmyWaitConditionHandle?Expires=1303976584&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=ik1twT6hpS4cgNAw7wyOoRejVoo%3D"

Dimana file/tmp/a berisi struktur JSON berikut:

{ "Status" : "SUCCESS", "Reason" : "Configuration Complete", "UniqueId" : "ID1234", "Data" : "Application has completed configuration." }

Contoh ini menunjukkan baris perintah Curl yang mengirimkan sinyal berhasil yang sama tetapi mengirimkan JSON sebagai parameter pada baris perintah.

curl -X PUT -H 'Content-Type:' --data-binary '{"Status" : "SUCCESS","Reason" : "Configuration Complete","UniqueId" : "ID1234","Data" : "Application has completed configuration."}' "https://cloudformation-waitcondition-test.s3.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-1%3A034017226601%3Astack%2Fstack-gosar-20110427004224-test-stack-with-WaitCondition--VEYW%2Fe498ce60-70a1-11e0-81a7-5081d0136786%2FmyWaitConditionHandle?Expires=1303976584&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=ik1twT6hpS4cgNAw7wyOoRejVoo%3D"