Wie verwende ich AwsUtility: :CloudFormation: :CommandRunner, um einen Befehl vor oder nach einer Ressource in meinem CloudFormation-Stack auszuführen?
Ich möchte AwsUtility: :CloudFormation: :CommandRunner verwenden, um einen Befehl vor oder nach einer Ressource in meinem AWS CloudFormation-Stack auszuführen.
Behebung
**Hinweis:**Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.
Um einen Befehl vor oder nach einer Ressource in Ihrem CloudFormation-Stack auszuführen, definieren Sie die Ressource AwsUtility::CloudFormation::CommandRunner in Ihrer CloudFormation-Vorlage.
Zum Beispiel:
Resources: CommandRunner: Type: AWSUtility::CloudFormation::CommandRunner Properties: Command: 'aws ssm get-parameter --name BucketName --region us-east-1 --query Parameter.Value --output text > /command-output.txt' Role: EC2-Role LogGroup: my-cloudwatch-log-group
**Wichtig:**Wenn Sie die Ressource AwsUtility::CloudFormation::CommandRunner noch nicht registriert haben, führen Sie die folgenden Befehle aus. Das Skript register.sh verwendet die Datei awsutility-cloudformation-commandrunner.zip, um den Ressourcentyp in Ihrer AWS-Region zu registrieren. Das Skript verwendet den AWS-CLI-Befehl register-type, um den Ressourcentyp in der in der AWS-CLI konfigurierten Standardregion zu registrieren. Sie können die konfigurierte Standardregion überprüfen, indem Sie aws configure get region ausführen. Weitere Informationen zu den Aktionen, die das Skript register.sh ausführt, finden Sie unter Schritte zur Benutzerinstallation im AWS-GitHub-Repository.
git clone https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-awsutilities-commandrunner.git cd aws-cloudformation-resource-providers-awsutilities-commandrunner curl -LO https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-awsutilities-commandrunner/releases/latest/download/awsutility-cloudformation-commandrunner.zip ./scripts/register.sh --set-default
**Wichtig:**Die Eigenschaft Rolle sollte der Name eines AWS Identity and Access Management (IAM) -Instanzprofils mit einer zugehörigen IAM-Rolle sein. Die IAM-Rolle muss eine Vertrauensbeziehung zum Amazon Elastic Compute Cloud (Amazon EC2) -Service (ec2.amazonaws.com) haben. Die Eigenschaft Role wird von der Ressource AwsUtility::CloudFormation::CommandRunner übernommen, um Ihren Befehl auszuführen. Die optionale Eigenschaft LogGroup, falls angegeben, schreibt die Protokolle der Ausführung Ihres Befehls in die Amazon CloudWatch-Protokollgruppe. Weitere Informationen zur Verwendung der Ressource AwsUtility::CloudFormation::CommandRunner in Ihrer Vorlage finden Sie unter README.md und docs/README.md aus dem aws-cloudformation-resource-providers-awsutilities-commandrunner-Repository auf AWS GitHub.
Sie müssen die Option --region in Ihre AWS-CLI-Befehle aufnehmen. Dann müssen Sie die Ausgabe des Befehls in eine reservierte Datei namens /command-output.txt schreiben, wie im vorherigen Codebeispiel.
Sie können die Ausgabe des Befehls mit Fn::getAtt referenzieren. Zum Beispiel:
S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !GetAtt CommandRunner.Output
Um den Befehl nach einer Ressource mit dem logischen Namen Instance auszuführen, geben Sie dependOn an: Instanz in der Definition der Ressource AwsUtility::CloudFormation::CommandRunner. Zum Beispiel:
Resources: CommandRunner: DependsOn: Instance Type: AWSUtility::CloudFormation::CommandRunner Properties: Command: aws s3 ls | sed -n 1p | cut -d " " -f3 > /command-output.txt LogGroup: my-cloudwatch-log-group Role: EC2-Role Instance: Type: AWS::EC2::Instance Properties: Image: ami-abcd1234
Um den Befehl vor einer Ressource auszuführen, setzen Sie DependsOn auf den logischen Namen der AwsUtility::CloudFormation::CommandRunner-Ressource in der Definition dieser Ressource. Zum Beispiel:
Resources: CommandRunner: Type: AWSUtility::CloudFormation::CommandRunner Properties: Command: aws s3 ls | sed -n 1p | cut -d " " -f3 > /command-output.txt LogGroup: my-cloudwatch-log-group Role: EC2-Role Instance: DependsOn: CommandRunner Type: AWS::EC2::Instance Properties: Image: ami-abcd1234
**Hinweis:**In den vorherigen Beispielen gibt sed -n 1p nur die erste Zeile der Antwort aus, die von aws s3 ls zurückgegeben wurde. Um den Bucket-Namen abzurufen, leitet sed -n 1p die Antwort über die Pipeline an cut -d "" -f3 weiter. Dann wählt cut -d "" -f3 das dritte Element in dem Array aus, das nach dem Teilen der durch ein Leerzeichen begrenzten Linie entsteht.
Ähnliche Informationen
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor 3 Jahren