Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

190
Views
La plantilla de Cloudformation completa la implementación antes de que finalice UserData

En la plantilla de CloudFormation que estoy implementando, estoy ejecutando una operación de larga duración en el bloque UserData.

Se ve de la siguiente manera:

 "UserData": { "Fn::Base64" : { "Fn::Join" : [ "", [ "/usr/local/bin/mylongrunningscript.sh" ] ] } }

Los contenidos del guión son:

 echo "UserData starting!" > /var/log/mycustomlog.log sleep 300 echo "UserData finished!" >> /var/log/mycustomlog.log

El problema que veo es que creo que la plantilla de CloudFormation está completando su implementación antes de que termine de ejecutarse el script UserData. Creo que este es el caso porque si soy lo suficientemente rápido y hago ssh en la instancia, veré algo como lo siguiente:

 $ cat /var/log/mycustomlog.log UserData starting

lo que sugiere que UserData no terminó de ejecutarse


¿Cómo puedo asegurarme de que la ejecución del código UserData se complete antes de que la pila esté en el estado "CreateComplete"?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Para asegurarse de que la plantilla de CloudFormation espere a que se complete el script de UserData, debe hacer dos cosas:

  1. Agregue una CreationPolicy al recurso al que se dirige (máquina virtual en mi caso).

  2. Agregue lógica en el script para señalar su finalización. Esta lógica personalizada utiliza la utilidad cfn-signal , que es posible que deba instalar en su instancia.


Así es como se ve la plantilla ahora:

 "UserData": { "Fn::Base64" : { "Fn::Join" : [ "", [ "/usr/local/bin/mylongrunningscript.sh" ] ] } }, "CreationPolicy": { "ResourceSignal" : { "Count": "1", "Timeout": "PT10M" } }

La utilidad cfn-signal se utiliza para señalar la finalización del script:

 "/home/ubuntu/aws-cfn-bootstrap-*/bin/cfn-signal -e $? ", " --stack ", { "Ref": "AWS::StackName" }, " --resource MyInstance" , " --region ", { "Ref" : "AWS::Region" }, "\n"

Vea aquí un ejemplo de Windows.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!