cfn-signal - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

cfn-signal

Description

Le script d'assistance cfn-signal indique si les EC2 instances Amazon ont été créées ou mises CloudFormation à jour avec succès. Si vous installez et configurez des applications logicielles sur des instances, vous pouvez signaler CloudFormation quand ces applications logicielles sont prêtes.

Vous utilisez le script cfn-signal conjointement avec une politique de création Attribut CreationPolicy ou un groupe Auto Scaling avec une politique de mise à jour WaitOnResourceSignals. Lors de CloudFormation la création ou de la mise à jour de ressources avec ces politiques, il suspend le travail sur la pile jusqu'à ce que la ressource reçoive le nombre de signaux requis ou jusqu'à ce que le délai d'expiration soit dépassé. Pour chaque signal valide CloudFormation reçu, CloudFormation publie les signaux dans la pile d'événements afin que vous puissiez suivre chaque signal. Pour voir une procédure détaillée qui utilise une politique de création et cfn-signal, consultez Déployez des applications sur Amazon EC2.

Note

cfn-signal ne requiert pas d'informations d'identification. Dès lors, vous n'avez pas besoin d'utiliser les options --access-key, --secret-key, --role ou --credential-file. Toutefois, si aucune information d'identification n'est spécifiée, CloudFormation vérifie l'appartenance à la pile et limite la portée de l'appel à la pile à laquelle appartient l'instance.

Syntaxe pour le signalement des ressources (recommandée)

Si vous souhaitez signaler CloudFormation des ressources, utilisez la syntaxe suivante.

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

Syntaxe à utiliser avec le descripteur de condition d'attente

Si vous souhaitez signaler un descripteur de condition d'attente, utilisez la syntaxe suivante.

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

Options

Les options que vous pouvez utiliser varient selon que vous signalez une politique de création ou un descripteur de condition d'attente. Les options qui s'appliquent à une politique de création ne s'appliquent pas forcément toutes au descripteur d'une condition d'attente.

Name (Nom) Description Obligatoire

--access-key (signalement de ressources uniquement)

AWS clé d'accès pour un compte autorisé à appeler le CloudFormation SignalResource API. Le paramètre du fichier d'informations d'identification prévaut sur ce paramètre.

Type : chaîne

Non

-d, --data (descripteur de condition d'attente uniquement)

Données à envoyer avec le descripteur waitConditionHandle. Vide par défaut.

Type : chaîne

Par défaut : vide

Non

-e, --exit-code

Code d'erreur d'un processus qui peut être utilisé pour déterminer le succès ou l'échec. S'il est spécifié, l'option --success est ignorée.

Type : chaîne

Exemples : -e $? (pour Linux), -e %ERRORLEVEL% (pour Windows cmd.exe) et -e $lastexitcode (pour Windows PowerShell).

Non

-f, --credential-file (signalement de ressources uniquement)

Fichier qui contient une clé d'accès secrète et une clé d'accès. Le paramètre du fichier d'informations d'identification supplante les paramètres --role, --access-key et --secret-key.

Type : chaîne

Non

--http-proxy

Un HTTP proxy (non-SSL). Utilisez le format suivant : http://user:password@host:port

Type : chaîne

Non

--https-proxy

Un HTTPS proxy. Utilisez le format suivant : https://user:password@host:port

Type : chaîne

Non

-i, --id

ID unique à envoyer.

Type : chaîne

Par défaut : ID de l'EC2instance Amazon. Si l'ID ne peut pas être résolu, le nom de domaine complet (FQDN) de la machine est renvoyé.

Non

-r, --reason (descripteur de condition d'attente uniquement)

Raison du statut pour l'événement de ressource (actuellement uniquement utilisé en cas d'échec) : indique par défaut « Configuration failed » si « success » est false.

Type : chaîne

Non

--region (signalement de ressources uniquement)

Le point de terminaison CloudFormation régional à utiliser.

Type : chaîne

Par défaut : us-east-1

Non

--resource (signalement de ressources uniquement)

ID logique de la ressource qui contient les règles de création que vous souhaitez signaler.

Type : chaîne

Oui

--role (signalement de ressources uniquement)

Le nom d'un IAM rôle associé à l'instance.

Type : chaîne

Condition : le paramètre du fichier d'informations d'identification prévaut sur ce paramètre.

Non

-s, --success

Si la valeur est true, signal SUCCESS, sinon FAILURE.

Type : valeur booléenne

Par défaut : true

Non

--secret-key (signalement de ressources uniquement)

AWS clé d'accès secrète qui correspond à la clé AWS d'accès spécifiée.

Type : chaîne

Non

--stack (signalement de ressources uniquement)

Nom de la pile ou ID de la pile qui contient la ressource que vous voulez signaler.

Type : chaîne

Oui

-u, --url (signalement de ressources uniquement)

Le CloudFormation point de terminaison à utiliser.

Type : chaîne

Non

waitconditionhandle.url (descripteur de condition d'attente uniquement)

Un présigné URL que vous pouvez utiliser pour signaler le succès ou l'échec à une personne associée WaitCondition

Type : chaîne

Oui

Exemple

Exemple de Amazon Linux

Un modèle courant consiste à utiliser cfn-init et cfn-signal ensemble. L'appel de cfn-signal utilise le statut de retour de l'appel à cfn-init (avec la construction shell $?). Si l'installation de l'application échoue, l'instance ne sera pas créée et la pile sera restaurée. Pour les piles Windows, consultez Bootstrap Windows Stacks 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

Ressources connexes

Plusieurs CloudFormation exemples de modèles utilisent cfn-signal, notamment les modèles suivants.