Utilisation d'Amazon CloudWatch Events etAWS LambdaavecAWS SMS - AWS Server Migration Service

Mise à jour produit

Il est recommandé :AWSApplication Migration Service(AWSMGN) en tant que service de migration principal pour lift-and-shift Migration. SiAWSMGN n'est pas disponible dans unAWS, vous pouvez utiliser laAWS SMSAPIjusqu'en mars 2023.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'Amazon CloudWatch Events etAWS LambdaavecAWS SMS

Vous pouvez utiliser Amazon CloudWatch Events avecAWS Server Migration Servicepour automatiser des actions en fonction de votre flux de travail de migration. Cela vous permet de créer une stratégie IAM qui sera assumée par Lambda, une fonction Lambda pour gérer l'événement, et une règle CloudWatch Events qui fait correspondre les événements entrants et les achemine vers la fonction Lambda.

Gestion des règles CloudWatch Events pourAWS SMS

La procédure suivante utilise unAWS Lambdacontrôle de fonctionAWS SMSl'état de tâche change et lance une instance Amazon EC2 chaque fois qu'un ID d'AMI a été créé.

Pour créer une fonction Lambda qui surveille les modifications d'état de tâche

  1. Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Créez une stratégie IAM pour fournir des autorisations afin d'exécuter une action (appelée par Lambda) et d'écrire dans le journal CloudWatch lors d'un appel par CloudWatch Events. L'exemple suivant fournit des autorisations pour exécuter une action RunInstances. Attribuez la stratégie au rôle IAM de l'utilisateur qui gérera l'événement CloudWatch.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource":"arn:aws:logs:*:*:*" }, { "Effect":"Allow", "Action":[ "ec2:RunInstances" ], "Resource":"*" } ] }
  3. Ouvrez la console AWS Lambda à l'adresse https://console.aws.amazon.com/lambda/.

  4. Sélectionnez Créer une fonction.

  5. Pour vous assurer que votre fonction Lambda est disponible à partir de la console CloudWatch, créez-la dans la région où l'événement CloudWatch doit se produire. Pour plus d'informations, consultez le Manuel du développeur AWS Lambda. Nommez la fonction LaunchInstanceFromAMI et sélectionnez Python 2.7 comme environnement d'exécution.

  6. Pour Rôle, sélectionnez Choisir un rôle de existant. Sous Existing role (Rôle existant), dans la liste des rôles disponibles, choisissez le rôle auquel vous avez ajouté votre stratégie.

  7. ChoisissezCréation de fonctionet définissez une fonction Lambda similaire à celle ci-dessous. Cet exemple de fonction, écrite en Python 2.7, est appelé par CloudWatch Events lorsqu'uneAWS SMSl'achèvement de la tâche envoie un événement avec un ID AMI. Lorsqu'elle est appelée, elle lance une instance t2.micro dans la région de l'événement.

    # Sample Lambda function to launch an EC2 instance from all AMI ID's created from a # Server Migration Service replication job import boto3 # main function def lambda_handler(event, context): # create an ec2 client ec2 = boto3.client('ec2', region_name=event['region']) # match any event that returns an ami-id if 'ami-id' in event['detail']: imageId = event['detail']['ami-id'] # launch instance from the AMI ID ec2.run_instances( ImageId=imageId, MaxCount=123, MinCount=1, InstanceType='t2.micro' ) print 'launched instance with ami id: ' + imageId else: print 'did not launch instance'
  8. Ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch/.

  9. Choisissez Événements, Créer une règle. Pour Service Name (Nom du service), choisissez Server Migration Service (SMS). Pour Event Type (Type d'événement), choisissez Server Migration Job State Change (Modification de l'état de tâche de migration de serveur).

  10. Choisissez Target, puis Add Target.

  11. Dans le champ Lambda function, sélectionnez la fonction Lambda que vous avez créée précédemment, puis choisissez Configure details.

  12. Sur la page Configure rule details, tapez les valeurs de Name et Description. Sélectionnez la case à cocher State pour activer la fonction (en la définissant sur Enabled).

  13. Choisissez Create rule.

Votre règle doit désormais apparaître sur l'onglet Rules. Dans l'exemple présenté, l'événement configuré doit lancer une instance EC2 chaque fois que vous recevez un ID d'AMI.