cfn-signal - AWS CloudFormation

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

cfn-signal

Deskripsi

Skrip pembantu sinyal cfn memberi sinyal CloudFormation untuk menunjukkan apakah EC2 instans Amazon telah berhasil dibuat atau diperbarui. Jika Anda menginstal dan mengkonfigurasi aplikasi perangkat lunak pada instance, Anda dapat memberi sinyal CloudFormation ketika aplikasi perangkat lunak tersebut siap.

Anda menggunakan skrip sinyal cfn bersama dengan grup Auto Scaling CreationPolicyatribut atau Auto Scaling dengan kebijakan pembaruan. WaitOnResourceSignals Saat CloudFormation membuat atau memperbarui sumber daya dengan kebijakan tersebut, ia menangguhkan pekerjaan di tumpukan hingga sumber daya menerima jumlah sinyal yang diperlukan atau hingga periode batas waktu terlampaui. Untuk setiap sinyal valid yang CloudFormation menerima, CloudFormation menerbitkan sinyal ke peristiwa tumpukan sehingga Anda melacak setiap sinyal. Untuk panduan yang menggunakan kebijakan pembuatan dan sinyal cfn, lihat Menyebarkan aplikasi di Amazon EC2.

catatan

cfn-signal tidak memerlukan kredensial, jadi Anda tidak perlu menggunakan opsi --access-key, --secret-key, --role, atau --credential-file. Namun, jika tidak ada kredensil yang ditentukan, CloudFormation periksa keanggotaan tumpukan dan membatasi ruang lingkup panggilan ke tumpukan tempat instance tersebut berada.

Sintaks untuk pemberian sinyal sumber daya (disarankan)

Jika Anda ingin memberi sinyal CloudFormation sumber daya, gunakan sintaks berikut.

cfn-signal --success|-s signal.to.send \ --access-key access.key \ --credential-file|-f credential.file \ --exit-code|-e exit.code \ --http-proxy HTTP.proxy \ --https-proxy HTTPS.proxy \ --id|-i unique.id \ --region AWS.region \ --resource resource.logical.ID \ --role IAM.role.name \ --secret-key secret.key \ --stack stack.name.or.stack.ID \ --url AWS CloudFormation.endpoint

Sintaks yang akan digunakan dengan penanganan syarat tunggu

Jika Anda ingin memberi sinyal penanganan syarat tunggu, gunakan sintaks berikut.

cfn-signal --success|-s signal.to.send \ --reason|-r resource.status.reason \ --data|-d data \ --id|-i unique.id \ --exit-code|-e exit.code \ waitconditionhandle.url

Opsi

Opsi yang dapat Anda gunakan bergantung pada apakah Anda memberi sinyal kebijakan pembuatan atau penanganan syarat tunggu. Beberapa opsi yang berlaku untuk kebijakan pembuatan mungkin tidak berlaku untuk penanganan syarat tunggu.

Nama Deskripsi Diperlukan

--access-key (pemberian sinyal sumber daya saja)

AWS kunci akses untuk akun dengan izin untuk memanggil CloudFormation SignalResource API. Parameter file kredensial menggantikan parameter ini.

Tipe: String

Tidak

-d, --data (penanganan syarat tunggu saja)

Data untuk dikirim kembali dengan waitConditionHandle. Default ke kosong.

Tipe: String

Default: kosong

Tidak

-e, --exit-code

Kode kesalahan dari suatu proses yang dapat digunakan untuk menentukan keberhasilan atau kegagalan. Jika ditentukan, opsi --success diabaikan.

Tipe: String

Contoh: -e $? (untuk Linux), -e %ERRORLEVEL% (untuk Windows cmd.exe), dan -e $lastexitcode (untuk Windows PowerShell).

Tidak

-f, --credential-file (pemberian sinyal sumber daya saja)

File yang berisi secret access key dan access key. Parameter file kredensial menggantikan parameter --peran, --access-key, dan -secret key.

Tipe: String

Tidak

--http-proxy

Sebuah HTTP proxy (non-SSL). Gunakan format berikut: http://user:password@host:port

Tipe: String

Tidak

--https-proxy

Sebuah HTTPS proxy. Gunakan format berikut: https://user:password@host:port

Tipe: String

Tidak

-i, --id

ID unik yang akan dikirim.

Tipe: String

Default: ID dari EC2 instans Amazon. Jika ID tidak dapat diselesaikan, Nama Domain Berkualitas Penuh (FQDN) mesin dikembalikan.

Tidak

-r, --reason (penanganan syarat tunggu saja)

Alasan status untuk peristiwa sumber daya (saat ini hanya digunakan pada kegagalan) - default ke 'Konfigurasi gagal' jika keberhasilan salah.

Tipe: String

Tidak

--region (pemberian sinyal sumber daya saja)

Titik akhir CloudFormation regional untuk digunakan.

Tipe: String

Default: us-east-1

Tidak

--resource (pemberian sinyal sumber daya saja)

ID logis dari sumber daya yang berisi kebijakan kreasi yang ingin Anda beri sinyal.

Tipe: String

Ya

--role (pemberian sinyal sumber daya saja)

Nama IAM peran yang terkait dengan instance.

Tipe: String

Syarat: Parameter file kredensial menggantikan parameter ini.

Tidak

-s, --success

Jika benar, beri sinyal SUCCESS, jika tidak FAILURE.

Jenis: Boolean

Default: true

Tidak

--secret-key (pemberian sinyal sumber daya saja)

AWS kunci akses rahasia yang sesuai dengan kunci AWS akses yang ditentukan.

Tipe: String

Tidak

--stack (pemberian sinyal sumber daya saja)

Nama tumpukan atau ID tumpukan yang berisi sumber daya yang ingin Anda beri sinyal.

Tipe: String

Ya

-u, --url (pemberian sinyal sumber daya saja)

CloudFormation Endpoint yang akan digunakan.

Tipe: String

Tidak

waitconditionhandle.url (penanganan syarat tunggu saja)

Presigned URL yang dapat Anda gunakan untuk memberi sinyal keberhasilan atau kegagalan untuk yang terkait WaitCondition

Tipe: String

Ya

Contoh

Contoh Amazon Linux

Pola penggunaan yang umum adalah menggunakan cfn-init dan cfn-signal secara bersamaan. Panggilan cfn-signal menggunakan status pengembalian panggilan ke cfn-init (menggunakan konstruksi shell $?). Jika aplikasi gagal dipasang, instans akan gagal dibuat dan tumpukan akan di-rollback. Untuk tumpukan Windows, lihat Bootstrapping tumpukan Windows AWS CloudFormation.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Simple EC2 instance", "Resources": { "MyInstance": { "Type": "AWS::EC2::Instance", "Metadata": { "AWS::CloudFormation::Init": { "config": { "files": { "/tmp/test.txt": { "content": "Hello world!", "mode": "000755", "owner": "root", "group": "root" } } } } }, "Properties": { "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}", "InstanceType": "t2.micro", "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -x\n", "# Install the files and packages from the metadata\n", "yum install -y aws-cfn-bootstrap", "\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref": "AWS::StackName" }, " --resource MyInstance ", " --region ", { "Ref": "AWS::Region" }, "\n", "# Signal the status from cfn-init\n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref": "AWS::StackName" }, " --resource MyInstance ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } } }, "CreationPolicy": { "ResourceSignal": { "Timeout": "PT5M" } } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Description: Simple EC2 instance Resources: MyInstance: Type: 'AWS::EC2::Instance' Metadata: 'AWS::CloudFormation::Init': config: files: /tmp/test.txt: content: Hello world! mode: '000755' owner: root group: root Properties: ImageId: {{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}} InstanceType: t2.micro UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -x - | # Install the files and packages from the metadata - yum install -y aws-cfn-bootstrap - |+ - | - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource MyInstance ' - ' --region ' - !Ref 'AWS::Region' - |+ - | # Signal the status from cfn-init - '/opt/aws/bin/cfn-signal -e $? ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource MyInstance ' - ' --region ' - !Ref 'AWS::Region' - |+ CreationPolicy: ResourceSignal: Timeout: PT5M

Contoh

Beberapa CloudFormation contoh template menggunakan cfn-signal, termasuk template berikut.