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

Descrizione

Lo script di supporto cfn-signal indica se CloudFormation le EC2 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.

Puoi utilizzare lo script cfn-signal in combinazione con un Attributo CreationPolicy o un gruppo Auto Scaling con una policy di aggiornamento WaitOnResourceSignals. Quando CloudFormation crea o aggiorna risorse con tali policy, sospende il lavoro sullo stack fino a quando la risorsa non riceve il numero richiesto di segnali o fino al superamento del periodo di timeout. Per ogni segnale valido che CloudFormation riceve, CloudFormation pubblica i segnali nello stack events in modo da tenere traccia di ogni segnale. Per una procedura guidata che utilizza una policy di creazione e cfn-signal, consulta Distribuisci applicazioni su Amazon EC2.

Nota

cfn-signal non richiede credenziali, perciò non è necessario utilizzare le opzioni --access-key, --secret-key,--role o --credential-file. Tuttavia, se non viene specificata alcuna credenziale, CloudFormation verifica l'appartenenza allo stack e limita l'ambito della chiamata allo stack a cui appartiene l'istanza.

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

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 il permesso di chiamare il CloudFormation SignalResource 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 HTTP proxy (non-SSL). Utilizza il seguente formato: http://user:password@host:port

Tipo: Stringa

No

--https-proxy

Un HTTPS proxy. 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'EC2istanza Amazon. Se l'ID non può essere risolto, viene restituito il Fully Qualified Domain Name (FQDN) 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 IAM ruolo 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 preassegnato URL che è possibile utilizzare per segnalare l'esito positivo o negativo di un dispositivo associato WaitCondition

Tipo: Stringa

Esempio

Esempio Amazon Linux

Un modello di utilizzo comune è utilizzare cfn-init e cfn-signal insieme. La chiamata cfn-signal utilizza lo stato restituito della chiamata per cfn-init (tramite la configurazione shell $?). Se l'applicazione non è in grado di installarsi, l'istanza non è in grado di creare e lo stack sarà sottoposto a rollback. Per gli stack di Windows, consulta Avvio degli stack di 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

Risorse correlate

Diversi modelli CloudFormation di esempio utilizzano cfn-signal, inclusi i seguenti modelli.