J'ai un groupe AutoScale, qui est lancé lorsqu'une alarme CloudWatch se déclenche, lorsqu'un message est dans une file d'attente SQS. Mais je ne souhaite pas créer une autre alarme CloudWatch qui diminue le nombre d'instances dans le groupe AutoScale car la tâche effectuée dans cette instance peut prendre plus de temps que les paramètres d'alarme. Donc, la façon dont j'ai essayé de faire était, une fois l'instance créée, les données utilisateur que j'ai passées en fichier ".sh", exécute la tâche que je veux, attend jusqu'à ce qu'elle se termine, copie le fichier en S3 et termine l'instance.Copier les fichiers journaux dans S3 et arrêter l'instance AutoScale via les données utilisateur
Malheureusement, le fichier arrive dans S3 mais il est vide et l'instance ne s'arrête jamais. J'ai lu ceci est possible avec quelque chose comme lifecycle-hooks mais je voulais savoir s'il est possible de faire comme expliqué ci-dessus.
Mes données utilisateur est la suivante:
#!/bin/bash
runuser -l ec2-user -c "cd /my-directory && nohup execute-my-task --trace > /logs-directory/my-log-file.log & "
PID=$!
wait $PID
runuser -l ec2-user -c "aws s3 cp /logs-directory/my-log-file.log s3://-my-logs-bucket/my-log-file.log"
PID2=$!
wait $PID2
runuser -l ec2-user -c "shutdown -h now"
Merci.