Existe-t-il un moyen d'envoyer au message SQS la liste des instances "mises à l'échelle" créées pour le lancement par le service Auto Scale de EC2?Obtention de la liste des ID d'instance à partir de l'échelle automatique dans le service EC2
Répondre
Si vous souhaitez connaître l'ID d'instance d'une instance ec2 pendant un événement de mise à l'échelle, vous pouvez configurer des hooks Lifecycle avec SQS.
Recevoir notification à l'aide Amazon SQS
Vous pouvez utiliser Amazon SQS pour mettre en place une cible de notification pour recevoir des notifications lorsqu'une action du cycle de vie se produit.
Pour configurer les notifications en utilisant Amazon SQS
Créer la cible en utilisant Amazon SQS. Pour plus d'informations, consultez Mise en route avec Amazon SQS dans le Guide du développeur Amazon Simple Queue Service. Notez l'ARN de la cible.
Créez un rôle IAM pour accorder à Auto Scaling l'autorisation d'accéder à votre cible de notification, en procédant comme indiqué dans Création d'un rôle pour déléguer des autorisations à un service AWS dans le Guide de l'utilisateur IAM. Lorsque vous êtes invité à sélectionner un type de rôle, sélectionnez AWS Service Roles, AutoScaling Notification Access. Notez l'ARN du rôle. Par exemple, arn: aws: iam :: 123456789012: rôle/mon-notification-rôle.
Lorsque Auto Scaling répond à un événement scale out ou scale in, il met l'instance dans un état d'attente. Pendant que l'instance est dans un état d'attente, Auto Scaling publie un message à la cible de notification.
Exemple de message:
Service: AWS Auto Scaling
Time: 2016-09-30T20:42:11.305Z
RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a
LifecycleActionToken: 71514b9d-6a40-4b26-8523-05e7ee35fa40
AccountId: 123456789012
AutoScalingGroupName: my-asg
LifecycleHookName: my-hook
EC2InstanceId: i-0598c7d356eba48d7
LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING
NotificationMetadata: null
Puis Ajouter Lifecycle Crochet
Vous pouvez créer des crochets du cycle de vie à l'aide de la commande raccrochage de vente-cycle de vie.
Pour effectuer une action à l'échelle dehors, utilisez la commande suivante:
aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-hook --auto-scaling-group-name my-asg --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING --notification-target-arn arn:aws:sns:us-west-2:123456789012:my-sqs --role-arn arn:aws:iam::123456789012:role/my-notification-role
http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html#adding-lifecycle-hooks
http://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-lifecycle-hook.html
Excellent, je suppose que le message SQS aura une liste d'instances lancées ID "EC2InstanceId" si l'autoscaling est fait sur une multitude d'instances? –
Il aura un nouveau message pour chaque événement de mise à l'échelle qui se produit avec chacun d'eux. Donc, vous voudrez faire pour supprimer les messages après les avoir analysés. – strongjz
Cela peut coûter cher, si l'on a des instances de 1k à 10k à lancer. Tnks. Remarque AWS acceptera cette option de mise à l'échelle –
Votre question est un peu difficile à comprendre. Pourriez-vous s'il vous plaît clarifier vos exigences? Par exemple: Voulez-vous un message SQS chaque fois qu'une instance est lancée dans un groupe Auto Scaling, ou juste un seul message répertoriant toutes les instances dans le groupe "en ce moment"? Pourquoi le voulez-vous via un message SQS - seriez-vous prêt à utiliser [AWS Command-Line Interface (CLI)] (http://aws.amazon.com/cli/) ou un appel d'API? N'hésitez pas à modifier votre question pour ajouter des détails. –
mon cas d'utilisation est Monte Carlo Sim. Je souhaite mapper différents fichiers d'entrée contenus dans un dossier de S3 vers une instance. Je me suis dit, j'ai besoin d'utiliser l'ID de l'instance pour renommer le dossier, de sorte qu'une instance utilisera uniquement les fichiers d'entrée contenus dans un dossier qui a le même nom que l'ID de l'instance. Je comprends que c'est un hack, mais le traitement bash diffère forme MCS –