cfn-signal - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

cfn-signal

Lo script di cfn-signal supporto segnala CloudFormation se EC2 le istanze Amazon sono state create o aggiornate con successo. Se installi e configuri applicazioni software sulle istanze, puoi segnalare CloudFormation quando tali applicazioni software sono pronte.

Lo cfn-signal script viene utilizzato in combinazione con un Attributo CreationPolicy o un Attributo UpdatePolicy with WaitOnResourceSignals per i gruppi Amazon EC2 Auto Scaling. Quando CloudFormation crea o aggiorna risorse con tali policy, sospende il lavoro sullo stack finché la risorsa non riceve il numero di segnali richiesto o fino al superamento del periodo di timeout. Per ogni segnale valido che CloudFormation riceve, pubblica i segnali negli eventi dello stack in modo da consentire all'utente di tenere traccia di ogni segnale.

Sintassi per la segnalazione della risorsa (consigliata)

Se desideri segnalare CloudFormation le risorse, usa la seguente sintassi.

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
Nota

cfn-signalnon richiede credenziali, quindi non è necessario utilizzare le opzioni--access-key, --secret-key--role, o--credential-file. Tuttavia, se non viene specificata alcuna credenziale, CloudFormation verifica la sottoscrizione allo stack e limita l'ambito della chiamata allo stack a cui l'istanza appartiene. Per ulteriori informazioni, consulta Autorizzazioni per gli script helper.

Sintassi per l'uso con handle di condizione di attesa

Se desideri segnalare un handle di condizione di attesa, utilizza la sintassi seguente.

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

Opzioni

Le opzioni che puoi utilizzare dipendono dalla segnalazione di una policy di creazione o di una condizione di attesa. Alcune opzioni che si applicano a una policy di creazione potrebbero non essere applicabili a una condizione di attesa.

Nome Descrizione Richiesto

--access-key (solo per la segnalazione della risorsa)

AWS chiave di accesso per un account con autorizzazione a chiamare l' CloudFormationSignalResource API. Il parametro del file delle credenziali sostituisce questo parametro.

Tipo: Stringa

No

-d, --data (solo per l'handle di condizione di attesa)

Dati per l'invio con waitConditionHandle. L'impostazione predefinita è vuoto.

Tipo: Stringa

Default: vuoto

No

-e, --exit-code

Il codice di errore da parte di un processo che può essere utilizzato per determinare un esito positivo o negativo. Se specificato, l'opzione --success viene ignorata.

Tipo: Stringa

Esempi: -e $? (per Linux), -e %ERRORLEVEL% (per Windows cmd.exe) e -e $lastexitcode (per Windows PowerShell).

No

-f, --credential-file (solo per la segnalazione della risorsa)

Un file che contiene sia una chiave di accesso segreta sia una chiave di accesso. Il parametro del file delle credenziali sostituisce i parametri di ruolo, chiave di accesso e chiave segreta.

Tipo: Stringa

No

--http-proxy

Un proxy HTTP (non SSL). Utilizza il seguente formato: http://user:password@host:port

Tipo: Stringa

No

--https-proxy

Un proxy HTTPS. Utilizza il seguente formato: https://user:password@host:port

Tipo: Stringa

No

-i, --id

ID univoco per l'invio.

Tipo: Stringa

Predefinito: l'ID dell' EC2 istanza Amazon. Se l'ID non può essere risolto, viene restituito il nome di dominio completo della macchina.

No

-r, --reason (solo per l'handle di condizione di attesa)

Un motivo dello stato per l'evento della risorsa (attualmente utilizzato solo in caso di errore) - viene impostato su "Configurazione non riuscita" se il successo è false.

Tipo: Stringa

No

--region (solo per la segnalazione della risorsa)

L'endpoint CloudFormation regionale da utilizzare.

Tipo: Stringa

Default: us-east-1

No

--resource (solo per la segnalazione della risorsa)

L'ID logico della risorsa che contiene la policy della creazione che vuoi segnalare.

Tipo: Stringa

--role (solo per la segnalazione della risorsa)

Il nome di un ruolo IAM associato all'istanza.

Tipo: Stringa

Condizione: il parametro del file delle credenziali sostituisce questo parametro.

No

-s, --success

Se è true, il segnale è SUCCESS, altrimenti è FAILURE.

Tipo: Booleano

Default: true

No

--secret-key (solo per la segnalazione della risorsa)

AWS chiave di accesso segreta che corrisponde alla chiave di AWS accesso specificata.

Tipo: Stringa

No

--stack (solo per la segnalazione della risorsa)

Il nome dello stack o l'ID dello stack che contiene la risorsa da segnalare.

Tipo: Stringa

-u, --url (solo per la segnalazione della risorsa)

L' CloudFormation endpoint da usare.

Tipo: Stringa

No

waitconditionhandle.url (solo per l'handle di condizione di attesa)

Un URL prefirmato che puoi utilizzare per segnalare l'esito positivo o negativo a una WaitCondition associata.

Tipo: Stringa

Esempi

Esempio Amazon Linux

Un modello di utilizzo comune è quello di utilizzare cfn-init e cfn-signal insieme. La cfn-signal chiamata utilizza lo stato di ritorno della chiamata a cfn-init (utilizzando $? costruzione shell). Se l'applicazione non è in grado di installarsi, l'istanza non è in grado di creare e lo stack sarà sottoposto a rollback.

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

Puoi anche visitare il nostro GitHub repository per scaricare i modelli di esempio che utilizziamocfn-signal, inclusi i seguenti modelli.