Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Come posso usare AwsUtility::CloudFormation::CommandRunner per eseguire un comando prima o dopo una risorsa nel mio stack CloudFormation?
Voglio usare AWSUtility::CloudFormation::CommandRunner per eseguire un comando prima o dopo una risorsa nel mio stack AWS CloudFormation.
Risoluzione
Nota: se ricevi errori durante l’esecuzione dei comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Registra AWSUtility::CloudFormation::CommandRunner
Se non hai registrato la risorsa AWSUtility::CloudFormation::CommandRunner, esegui i seguenti comandi per registrarla:
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
Lo script register.sh esegue il comando AWS CLI register-type e utilizza awsutility-cloudformation-commandrunner.zip per registrare il tipo di risorsa nella regione AWS predefinita. Per verificare la regione predefinita, esegui il comando aws configure get region. Per ulteriori informazioni sulle azioni eseguite dallo script register.sh, consulta User installation steps (Procedura di installazione per l'utente) sul sito web di AWS GitHub.
Definisci la risorsa nel tuo modello CloudFormation
Per eseguire un comando prima o dopo una risorsa nello stack CloudFormation, definisci la risorsa AWSUtility::CloudFormation::CommandRunner nel modello CloudFormation.
Esempio di modello:
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
È necessario includere l'opzione --region nei comandi dell'Interfaccia della linea di comando AWS. Quindi scrivi l'output del comando in un file riservato denominato /command-output.txt.
La proprietà Role deve essere il nome di un profilo di istanza AWS Identity and Access Management (IAM) a cui è associato un ruolo IAM. Il ruolo IAM deve avere una relazione di affidabilità con il servizio Amazon Elastic Compute Cloud (Amazon EC2), ec2.amazonaws.com. Per eseguire il comando, la risorsa AWSUtility::CloudFormation::CommandRunner assume la proprietà Role. Se specifichi la proprietà LogGroup, LogGroup scrive i log dall'esecuzione del comando nel gruppo di log di Amazon CloudWatch.
Per ulteriori informazioni sull'utilizzo della risorsa AWSUtility::CloudFormation::CommandRunner nel modello, consulta README.md and docs/README.md sul sito web di GitHub.
Utilizza Fn::GetAtt per fare riferimento all'output del comando.
Esempio di frammento di modello:
S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !GetAtt CommandRunner.Output
Per eseguire il comando dopo una risorsa con il nome logico Instance, specifica DependsOn: Instance nella definizione della risorsa AWSUtility::CloudFormation::CommandRunner.
Esempio di modello:
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
Per eseguire il comando prima di una risorsa, imposta DependsOn sul nome logico della risorsa AWSUtility::CloudFormation::CommandRunner nella definizione della risorsa.
Esempio di modello:
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
Nota: negli esempi precedenti, sed -n 1p stampa solo la prima riga della risposta restituita da aws s3 ls. Per ottenere il nome del bucket, sed -n 1p invia la risposta a cut -d " " -f3. Quindi cut -d " " -f3 sceglie il terzo elemento dell'array creato dopo aver diviso la riga delimitata da uno spazio.
Informazioni correlate
Esecuzione di comandi bash nei modelli di AWS CloudFormation

Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 5 mesi fa
- AWS UFFICIALEAggiornata 5 mesi fa
- AWS UFFICIALEAggiornata 6 mesi fa