Conservation de l'accès à une Amazon Machine Image (AMI) pour une plateforme retirée - AWS Elastic Beanstalk

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.

Conservation de l'accès à une Amazon Machine Image (AMI) pour une plateforme retirée

Elastic Beanstalk définit le statut de la branche de plateforme sur retiré lorsque le système d'exploitation ou le composant principal utilisé par la branche atteint sa fin de vie. L'AMI Elastic Beanstalk de base pour la branche de plateforme peut également être rendue privée afin d'empêcher l'utilisation de cette AMI obsolète. Les environnements qui utilisent des AMI et ont été rendus privés ne pourront plus lancer d'instances.

Si vous ne parvenez pas à migrer votre application vers un environnement pris en charge avant son retrait, votre environnement peut être concerné. Il peut être nécessaire de mettre à jour un environnement pour une branche de plateforme Beanstalk, dont l'AMI Elastic Beanstalk de base a été rendue privée. Une autre approche est possible. Vous pouvez mettre à jour un environnement existant basé sur une copie de l'AMI Elastic Beanstalk de base utilisée par votre environnement.

Cette rubrique fournit une procédure et un script autonome pour mettre à jour un environnement existant basé sur une copie de l'AMI Elastic Beanstalk de base utilisée par votre environnement. Après avoir migré votre application vers une plateforme prise en charge, vous pouvez continuer à utiliser les procédures standard de maintenance de votre application et des environnements pris en charge.

Étapes manuelles

Pour mettre à jour un environnement basé sur une copie de l'AMI Elastic Beanstalk de base
  1. Déterminez l'AMI utilisée par votre environnement. Cette commande renvoie l'AMI utilisée par l'environnement Elastic Beanstalk que vous spécifiez dans les paramètres. La valeur renvoyée est utilisée comme source-ami-id à l'étape suivante.

    Dans une fenêtre de commande, exécutez une commande similaire à celle-ci. Pour plus d'informations, voir la section describe-configuration-settings du Guide de référence des commandes de la AWS CLI.

    Spécifiez la région AWS utilisée pour l'enregistrement de l'AMI source à copier. Remplacez le nom de l'application et le nom de l'environnement par ceux basés sur l'AMI source. Entrez le texte du paramètre de requête comme indiqué.

    >aws elasticbeanstalk describe-configuration-settings \ --application-name my-application \ --environment-name my-environment \ --region us-east-2 \ --query "ConfigurationSettings[0].OptionSettings[?OptionName=='ImageId'] | [0].Value"
  2. Copiez l'AMI dans votre compte. Cette commande renvoie la nouvelle AMI issue de la copie du source-ami-id renvoyé à l'étape précédente.

    Note

    Veillez à noter le nouvel identifiant d'AMI généré par cette commande. Vous devrez le saisir à l'étape suivante, en remplaçant copied-ami-id dans l'exemple de commande.

    Dans une fenêtre de commande, exécutez une commande similaire à celle-ci. Pour plus d'informations, voir la rubrique copy-object dans la Référence des commandes AWS CLI.

    Spécifiez la région AWS de l'AMI source à copier (--source-region) et la région dans laquelle vous souhaitez utiliser votre nouvelle AMI personnalisée (--region). Remplacez source-ami-id par l'AMI de l'image à copier. Le source-ami-id a été renvoyé par la commande à l'étape précédente. Remplacez new-ami-name par un nom décrivant la nouvelle AMI dans la région de destination. Le script qui suit cette procédure génère le nom de la nouvelle AMI en ajoutant la chaîne « Copie de » au début du nom du source-ami-id.

    >aws ec2 copy-image \ --region us-east-2 \ --source-image-id source-ami-id \ --source-region us-east-2 \ --name new-ami-name
  3. Mettez à jour un environnement pour utiliser l'AMI copiée. Une fois exécutée, la commande renvoie le statut de l'environnement.

    Dans une fenêtre de commande, exécutez une commande similaire à celle-ci. Pour plus d'informations, voir la rubrique update-environment dans la Référence des commandes AWS CLI.

    Spécifiez la région AWS de l'environnement et de l'application à mettre à jour. Remplacez le nom de l'application et le nom de l'environnement par ceux que vous devez associer au copied-ami-id de l'étape précédente. Pour le paramètre --option-settings, remplacez copied-ami-id par l'identifiant d'AMI que vous avez noté dans la sortie de la commande précédente.

    >aws elasticbeanstalk update-environment \ --application-name my-application \ --environment-name my-environment \ --region us-east-2 \ --option-settings "Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId,Value=copied-ami-id"
Note

Nettoyez votre AMI personnalisée lorsque vous n'en avez plus besoin pour lancer des environnements Elastic Beanstalk afin de limiter les coûts de stockage. Pour plus d'informations, voir Nettoyage d'une douane AMI.

Script autonome

Le script suivant fournit les mêmes résultats que les étapes manuelles précédentes. Téléchargez le script en cliquant sur le lien suivant : copy_ami_and_update_env.zip.

#!/bin/bash set -ue USAGE="This script is used to copy an AMI used by your Elastic Beanstalk environment into your account to use in your environment.\n\n" USAGE+="Usage:\n\n" USAGE+="./$(basename $0) [OPTIONS]\n" USAGE+="OPTIONS:\n" USAGE+="\t--application-name <application-name>\tThe name of your Elastic Beanstalk application.\n" USAGE+="\t--environment-name <environment-name>\tThe name of your Elastic Beanstalk environment.\n" USAGE+="\t--region <region> \t\t\tThe AWS region your Elastic Beanstalk environment is deployed to.\n" USAGE+="\n\n" USAGE+="Script Usage Example(s):\n" USAGE+="./$(basename $0) --application-name my-application --environment-name my-environment --region us-east-1\n" if [ $# -eq 0 ]; then echo -e $USAGE exit fi while [[ $# -gt 0 ]]; do case $1 in --application-name) APPLICATION_NAME="$2"; shift ;; --environment-name) ENVIRONMENT_NAME="$2"; shift ;; --region) REGION="$2"; shift ;; *) echo "Unknown option $1" ; echo -e $USAGE ; exit ;; esac shift done aws_cli_version="$(aws --version)" if [ $? -ne 0 ]; then echo "aws CLI not found. Please install it: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html. Exiting." exit 1 fi echo "Using aws CLI version: ${aws_cli_version}" account=$(aws sts get-caller-identity --query "Account" --output text) echo "Using account ${account}" environment_ami_id=$(aws elasticbeanstalk describe-configuration-settings \ --application-name "$APPLICATION_NAME" \ --environment-name "$ENVIRONMENT_NAME" \ --region "$REGION" \ --query "ConfigurationSettings[0].OptionSettings[?OptionName=='ImageId'] | [0].Value" \ --output text) echo "Image associated with environment ${ENVIRONMENT_NAME} is ${environment_ami_id}" owned_image=$(aws ec2 describe-images \ --owners self \ --image-ids "$environment_ami_id" \ --region "$REGION" \ --query "Images[0]" \ --output text) if [ "$owned_image" != "None" ]; then echo "${environment_ami_id} is already owned by account ${account}. Exiting." exit fi source_image_name=$(aws ec2 describe-images \ --image-ids "$environment_ami_id" \ --region "$REGION" \ --query "Images[0].Name" \ --output text) if [ "$source_image_name" = "None" ]; then echo "Cannot find ${environment_ami_id}. Please contact AWS support if you need additional help: https://aws.amazon.com/support." exit 1 fi copied_image_name="Copy of ${source_image_name}" copied_ami_id=$(aws ec2 describe-images \ --owners self \ --filters Name=name,Values="${copied_image_name}" \ --region "$REGION" \ --query "Images[0].ImageId" \ --output text) if [ "$copied_ami_id" != "None" ]; then echo "Detected that ${environment_ami_id} has already been copied by account ${account}. Skipping image copy." else echo "Copying ${environment_ami_id} to account ${account} with name ${copied_image_name}" copied_ami_id=$(aws ec2 copy-image \ --source-image-id "$environment_ami_id" \ --source-region "$REGION" \ --name "$copied_image_name" \ --region "$REGION" \ --query "ImageId" \ --output text) echo "New AMI ID is ${copied_ami_id}" echo "Waiting for ${copied_ami_id} to become available" aws ec2 wait image-available \ --image-ids "$copied_ami_id" \ --region "$REGION" echo "${copied_ami_id} is now available" fi echo "Updating environment ${ENVIRONMENT_NAME} to use ${copied_ami_id}" environment_status=$(aws elasticbeanstalk update-environment \ --application-name "$APPLICATION_NAME" \ --environment-name "$ENVIRONMENT_NAME" \ --option-settings "Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId,Value=${copied_ami_id}" \ --region "$REGION" \ --query "Status" \ --output text) echo "Environment ${ENVIRONMENT_NAME} is now ${environment_status}" echo "Waiting for environment ${ENVIRONMENT_NAME} update to complete" aws elasticbeanstalk wait environment-updated \ --application-name "$APPLICATION_NAME" \ --environment-names "$ENVIRONMENT_NAME" \ --region "$REGION" echo "Environment ${ENVIRONMENT_NAME} update complete"
Note

Vous devez avoir installé la AWS CLI pour exécuter le script. Pour obtenir des instructions d'installation, voir la rubrique Installation ou mise à jour de la dernière version de la AWS CLI du Guide de l'utilisateur de la AWS Command Line Interface.

Après avoir installé la AWS CLI, vous devez également la configurer pour utiliser le compte AWS propriétaire de l'environnement. Pour plus d'informations, voir la rubrique Configuration de la AWS CLI du Guide de l'utilisateur de la AWS Command Line Interface. Le compte doit également disposer des autorisations nécessaires pour créer une AMI et mettre à jour l'environnement Elastic Beanstalk.

Ces étapes décrivent le processus suivi par le script.

  1. Notez le compte en cours d'utilisation.

  2. Déterminez quelle AMI est utilisée par l'environnement (AMI source).

  3. Vérifiez si l'AMI source appartient déjà au compte. Si oui, quittez.

  4. Déterminez le nom de l'AMI source afin qu'il puisse être utilisé dans le nom de la nouvelle AMI. Cela permet également de confirmer l'accès à l'AMI source.

  5. Vérifiez si l'AMI source a déjà été copiée sur le compte. Pour ce faire, recherchez des AMI portant le nom de l'AMI copiée qui appartient au compte. Si le nom de l'AMI a été modifié entre deux exécutions de script, l'image sera de nouveau copiée.

  6. Si l'AMI source n'a pas encore été copiée, copiez-la sur le compte et patientez jusqu'à ce que la nouvelle AMI soit disponible.

  7. Mettez à jour la configuration de l'environnement de sorte à utiliser la nouvelle AMI.

  8. Patientez jusqu'à la fin de la mise à jour de l'environnement.

Après avoir extrait le script du fichier copy_ami_and_update_env.zip, exécutez-le comme indiqué dans l'exemple suivant. Remplacez le nom de l'application et le nom de l'environnement de l'exemple par vos propres valeurs.

>sh copy_ami_and_update_env.sh \ --application-name my-application \ --environment-name my-environment \ --region us-east-1
Note

Nettoyez votre AMI personnalisée lorsque vous n'en avez plus besoin pour lancer des environnements Elastic Beanstalk afin de limiter les coûts de stockage. Pour plus d'informations, voir Nettoyage d'une douane AMI.