cfn-signal - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

cfn-signal

Beschreibung

Das Hilfsskript cfn-signal gibt an CloudFormation , ob Amazon EC2 EC2-Instances erfolgreich erstellt oder aktualisiert wurden. Wenn Sie Softwareanwendungen auf Instances installieren und konfigurieren, können Sie signalisieren, CloudFormation wann diese Softwareanwendungen bereit sind.

Verwenden Sie hierzu das cfn-signal Skript in Verbindung mit einer CreationPolicy Attribut oder Auto-Scaling-Gruppe mit WaitOnResourceSignals-Aktualisierungsrichtlinie. Wenn Ressourcen mit diesen Richtlinien CloudFormation erstellt oder aktualisiert werden, wird die Arbeit am Stack unterbrochen, bis die Ressource die erforderliche Anzahl von Signalen empfängt oder bis der Timeout-Zeitraum überschritten ist. Veröffentlicht für jedes gültige Signal, das CloudFormation empfängt, die CloudFormation Signale in den Stack-Events, sodass Sie jedes Signal verfolgen können. Eine Anleitung, bei der eine Erstellungsrichtlinie und cfn-signal verwendet wird, finden Sie unter Bereitstellen von Anwendungen auf Amazon EC2 mit AWS CloudFormation.

Anmerkung

cfn-signal erfordert keine Anmeldeinformationen; die Optionen --access-key, --secret-key, --role oder --credential-file müssen also nicht verwendet werden. Wenn jedoch keine Anmeldeinformationen angegeben sind, wird die Stack-Mitgliedschaft CloudFormation geprüft und der Umfang des Aufrufs auf den Stack beschränkt, zu dem die Instanz gehört.

Syntax zur Ressourcen-Signalisierung (empfohlen)

Wenn Sie CloudFormation Ressourcen signalisieren möchten, verwenden Sie die folgende Syntax.

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

Syntax zur Verwendung mit Wartebedingungs-Handle

Wenn Sie einen Wartebedingungs-Handle signalisieren möchten, verwenden Sie folgende Syntax.

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

Optionen

Die Optionen, die Sie verwenden können, hängen davon ab, ob Sie eine Erstellungsrichtlinie oder einen Wartebedingungs-Handle signalisieren. Einieg Optionen, die für Erstellungsrichtlinien gelten, gelten u.U. nicht für Wartebedingungs-Handles.

Name Beschreibung Erforderlich

--access-key (nur Ressourcen-Signalisierung)

AWS Zugriffsschlüssel für ein Konto mit der Berechtigung, die CloudFormation SignalResource API aufzurufen. Der Dateiparameter Anmeldeinformationen hat Vorrang vor diesem Parameter.

Typ: Zeichenfolge

Nein

-d, --data (nur Wartebedingungs-Handle)

Mit waitConditionHandle zurückzusendende Daten. Der Standardwert ist leer.

Typ: Zeichenfolge

Standard: leer

Nein

-e, --exit-code

Der Fehlercode aus einem Prozess, der verwendet werden kann, um Erfolg oder Fehlschlag zu ermitteln. Ist dies festgelegt, wird die Option --success ignoriert.

Typ: Zeichenfolge

Beispiele: -e $? (für Linux), -e %ERRORLEVEL% (für Windows cmd.exe) und -e $lastexitcode (für Windows PowerShell).

Nein

-f, --credential-file (nur Ressourcen-Signalisierung)

Eine Datei mit einem geheimen Zugriffsschlüssel und einem Zugriffsschlüssel. Der Dateiparameter Anmeldeinformationen hat Vorrang vor den Parametern Rolle, Zugriffschlüssel und geheimer Zugriffschlüssel.

Typ: Zeichenfolge

Nein

--http-proxy

Ein HTTP-Proxys (Nicht-SSL). Verwenden Sie das folgende Format: http://user:password@host:port

Typ: Zeichenfolge

Nein

--https-proxy

Ein HTTPS-Proxy. Verwenden Sie das folgende Format: https://user:password@host:port

Typ: Zeichenfolge

Nein

-i, --id

Die zu sendende eindeutige ID.

Typ: Zeichenfolge

Standard: Die ID der Amazon EC2-Instance. Wenn die ID nicht aufgelöst werden kann, wird der vollqualifizierte Domänenname (FQDN) des Computer ausgegeben.

Nein

-r, --reason (nur Wartebedingungs-Handle)

Ein Statusgrund für das Ressourcen-Ereignis (derzeit nur bei Fehlschlägen) – Standardeinstellung ist "Konfiguration fehlgeschlagen", wenn kein Erfolg ermittelt wurde.

Typ: Zeichenfolge

Nein

--region (nur Ressourcen-Signalisierung)

Der zu verwendende CloudFormation regionale Endpunkt.

Typ: Zeichenfolge

Standardwert: us-east-1

Nein

--resource (nur Ressourcen-Signalisierung)

Die logische ID der Ressource, die die zu signalisierende Erstellungs-Richtlinie enthält.

Typ: Zeichenfolge

Ja

--role (nur Ressourcen-Signalisierung)

Der Name einer IAM-Rolle, die mit dieser Instance verknüpft ist.

Typ: Zeichenfolge

Bedingun: Der Dateiparameter Anmeldeinformationen hat Vorrang vor diesem Parameter.

Nein

-s, --success

Bei „true“ signalisiert SUCCESS, ansonsten FAILURE.

Typ: Boolesch

Standardwert: true

Nein

--secret-key (nur Ressourcen-Signalisierung)

AWS geheimer Zugriffsschlüssel, der dem angegebenen AWS Zugriffsschlüssel entspricht.

Typ: Zeichenfolge

Nein

--stack (nur Ressourcen-Signalisierung)

Der Stack-Name oder die Stack-ID, die die zu signalisierende Ressource enthält.

Typ: Zeichenfolge

Ja

-u, --url (nur Ressourcen-Signalisierung)

Der zu verwendende CloudFormation Endpunkt.

Typ: Zeichenfolge

Nein

waitconditionhandle.url (nur Wartebedingungs-Handle)

Eine vorsignierte URL, mit der Sie einer zugehörigen WaitCondition Erfolg oder Fehlschlag signalisieren können

Typ: Zeichenfolge

Ja

Beispiel

Beispiel für Amazon Linux

Ein häufiges Anwendungsmuster beteht darin, cfn-init und cfn-signal zusammen zu verwenden. Der cfn-signal-Aufruf nutzt den Rückgabstatus de Aufrufs von cfn-init (über das $? Shell-Konstrukt). Wenn die Anwendung nicht installiert werden kann, kann die Instance nicht erstellt werden und ein Rollback des Stacks wird durchgeführt. Für Windows-Stacks siehe Bootstrapping AWS CloudFormation von Windows-Stacks.

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

Beispiele

Mehrere CloudFormation Beispielvorlagen verwenden cfn-Signal, darunter die folgenden Vorlagen.