AWS CloudFormation cuplikan template - AWS CloudFormation

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

AWS CloudFormation cuplikan template

Tumpukan nested

Membuat nest tumpukan dalam templat

Contoh templat ini mengandung sumber daya tumpukan nested yang disebut myStack. Saat AWS 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 ini dicadangkan untuk menentukan nilai output dari tumpukan bersarang dan dapat digunakan di mana saja dalam template yang berisi.

Untuk informasi selengkapnya, silakan 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 AWS CloudFormation membuat tumpukan dari template ini, 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, silakan 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 EC2 instans Amazon

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 pembantu sinyal cfn untuk memberi sinyal ketika proses pembuatan instance telah berhasil diselesaikan.

Jika Anda tidak dapat menggunakan kebijakan pembuatan, Anda akan melihat contoh template berikut, yang mendeklarasikan EC2 instance Amazon dengan kondisi tunggu. Kondisi myWaitCondition tunggu digunakan myWaitConditionHandle untuk pensinyalan, menggunakan DependsOn atribut untuk menentukan bahwa kondisi tunggu akan dipicu setelah sumber daya EC2 instans Amazon dibuat, dan menggunakan Timeout properti untuk menentukan durasi 4500 detik untuk kondisi tunggu. Selain itu, presigned URL yang memberi sinyal kondisi tunggu diteruskan ke EC2 instance Amazon dengan UserData properti Ec2Instance sumber daya, sehingga memungkinkan aplikasi atau skrip yang berjalan pada EC2 instance Amazon tersebut untuk mengambil presigned URL 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 lebih lanjut, lihatBuat kondisi tunggu di CloudFormation template, AWS::CloudFormation::WaitCondition, AWS::CloudFormation::WaitConditionHandle, dancfn-signal.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "RegionMap" : { "us-east-1" : { "AMI" : "ami-0ff8a91507f77f867" }, "us-west-1" : { "AMI" : "ami-0bdb828fd58c52235" }, "eu-west-1" : { "AMI" : "ami-047bb4163c506cd98" }, "ap-northeast-1" : { "AMI" : "ami-06cd52961ce9f0d85" }, "ap-southeast-1" : { "AMI" : "ami-08569b978cc4dfa10" } } }, "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-0ff8a91507f77f867 us-west-1: AMI: ami-0bdb828fd58c52235 eu-west-1: AMI: ami-047bb4163c506cd98 ap-northeast-1: AMI: ami-06cd52961ce9f0d85 ap-southeast-1: AMI: ami-08569b978cc4dfa10 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 untuk kondisi menunggu. Anda perlu menentukan baris perintah di UserData properti EC2 instance.

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': 'Fn::Join': - '' - - | #!/bin/bash -xe - /opt/aws/bin/cfn-signal --exit-code 0 ' - Ref: 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 berikut: JSON

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

Contoh ini menunjukkan baris perintah Curl yang mengirimkan sinyal sukses yang sama kecuali 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"