Comment mettre à niveau vers la dernière AMI dans AWS Elastic Beanstalk?

18

J'exécute une application sur AWS Elastic Beanstalk, et il semble que je doive créer un nouvel environnement si je veux utiliser la dernière AMI.

Si je savais quel était le dernier ID AMI, je pourrais le mettre à jour dans la configuration de l'environnement.

Existe-t-il un endroit où je pourrais trouver l'ID des dernières AMI Elastic Beanstalk, ou mieux encore, est-il possible de remplacer automatiquement les instances par la nouvelle version chaque fois qu'une nouvelle version est déployée?

Benjamin
la source
2
Lancer un nouvel environnement et voir quel est l'ID AMI sur le serveur qu'il lance?
ceejayoz
2
C'est un peu pénible, non?
Benjamin
La dernière fois que j'ai configuré un environnement EB, cela a pris environ cinq minutes. Les AMI d'Amazon Linux sortent une fois tous les trois mois IIRC. 1,6 minute par mois ne me fait pas trop de mal.
ceejayoz
Permettez-moi de reformuler: on a l' impression qu'il doit y avoir une meilleure façon. Mais vous avez raison, ce n'est pas grave.
Benjamin
2
Ils devraient vraiment les publier dans certaines notes de publication ou dans un collant dans leurs forums plutôt que de les déployer silencieusement.
Ken Liu

Réponses:

2

La méthode recommandée et prise en charge pour mettre à niveau votre environnement AWS Beanstalk est documentée ici et les mises à jour de la plate-forme gérée sont discutées ici , honnêtement, je m'en tiendrai à cela si vous voulez que les choses soient faciles (et c'est de cela qu'il s'agit), vous théoriquement obtenez uniquement les mises à jour sans interruption et AWS gérera le processus afin qu'il n'y ait pas de temps d'arrêt.

Je tiens donc à réitérer que les mises à jour de la plate-forme gérée sont probablement ce que vous ou toute autre personne venant de Google voudrez, mais si vous souhaitez connaître la dernière AMI fournie par AWS pour votre environnement Beanstalk, cela peut être fait de manière assez triviale avec AWS CLI (merci aux conventions de dénomination saine d'Amazon sur leurs AMI).

En commençant par une instance de votre environnement, décrivez l'instance pour obtenir l'AMI actuelle (ignorez si vous connaissez déjà l'AMI actuelle).

aws ec2 describe-instances --instance-ids i-0909613f35ec0ffee --query 'Reservations[*].Instances[*].ImageId' --output text

ami-35290a56

Prenez l'ID AMI résultant et décrivez-le.

aws ec2 describe-images --image-ids ami-35290a56 --query 'Images[*][Architecture, Hypervisor, Name, RootDeviceType, VirtualizationType]' --output json

[
    [
        "x86_64",
        "xen",
        "aws-elasticbeanstalk-amzn-2016.03.0.x86_64-python34-hvm-201603290718",
        "ebs",
        "hvm"
    ]
]

Nous pouvons utiliser la sortie de ce qui précède comme entrée pour un nouveau tri, describe-imagesmais cette fois nous remplaçons les horodatages par *des symboles génériques, comme ceci:

aws ec2 describe-images --filters 'Name=architecture,Values=x86_64' 'Name=virtualization-type,Values=hvm' 'Name=owner-alias,Values=amazon' 'Name=name,Values=aws-elasticbeanstalk-amzn-*.x86_64-python34-hvm-*' --query 'sort_by(Images[*], &Name)[-1].ImageId' --output text

ami-1be5de78

En raison de la puissance du tri lexical et de l'ISO 8601, nous nous retrouvons avec la dernière AMI, qui dans mon exemple est ami-1be5de78.

aws ec2 describe-images --image-ids ami-1be5de78 --query 'Images[*].Name' --output text

aws-elasticbeanstalk-amzn-2016.09.0.x86_64-python34-hvm-201612200708

Encore une fois, je ne vous recommanderais pas d'essayer de changer cette AMI à la main, Beanstalk a des dispositions pour faire tout cela pour vous!

Nathan
la source
0

Il semble que même si vous changez l'AMI, en une utilisation AMI ElasticBeanstalk appropriée. Cela ne semble pas fonctionner correctement. Il manque tous les fichiers. Ça ne marche pas bien.

Je pense que vous devez démarrer un nouvel environnement Elastic Beanstalk qui a l'AMI mis à jour. Faites tout fonctionner puis échangez les URL de l'environnement.

Wesley Mahler
la source
0

Vous pouvez utiliser les fonctionnalités de mises à jour gérées fournies avec eb, mais vous devrez payer pour des rapports d'intégrité améliorés pour ce faire. Ou utilisez la commande «eb platform show»; Dans une application de travail, ayez un cron qui exécute CURRENT = eb platform show your_env_name | sed -n '5p' | cut -d: -f2- | tr -d '[[:space:]]' LATEST = eb platform show your_env_name | sed -n '6p' | cut -d: -f2- | tr -d '[[:space:]]' - Ensuite, comparez-les et si différent, vous pouvez utiliser eb clone (par défaut vers une nouvelle version), puis échange de nom.

Iain Watt
la source
0

En naviguant vers le tableau de bord de votre application localisez 'Configuration' et cliquez sur 'Modifier'

Vous devriez voir une liste où vous pouvez choisir une plate-forme. La dernière version est indiquée dans cette liste. Sélection de la plateforme

AWS EB utilise des configurations spécifiques pour différents langages de programmation. Vous pouvez trouver une liste des configurations dans la documentation http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html

Des tableaux vous indiquent quelle version AMI chaque plate-forme utilise.

Je n'ai cependant pas trouvé de moyen d'exécuter ces mises à jour automatiquement. Je préfère en fait revoir les changements de la plateforme et les tester avant de les déployer.

Martin Ro
la source
0

Sélectionnez votre service dans Elastic Beanstalk, vous verrez un aperçu dans le tableau de bord, dans le côté droit du tableau de bord, vous pouvez voir la configuration de votre AMI, sélectionnez Modifier la mise à niveau ou dégrader votre AMI. À ce stade, vous allez remplacer votre instance. Faites donc la sauvegarde ou le clonage.

ankuj
la source
-2

J'ai pu mettre à jour mon application actuelle hébergée sur Beanstalk vers la dernière AMI Amazon Linux en suivant les étapes ci-dessous.

1- Connectez-vous à la console AWS et accédez au portail Beanstalk.

2- Accédez à la page de configuration de votre application et cliquez sur 'Instances'.

3- Localisez l'ID AMI qui devrait être comme AMI-xxxxxx.

4- Prenez l'ID AMI et revenez dans la console EC2 et cliquez sur AMI.

5- Changez la vue en Images publiques et recherchez l'ID AMI récupéré plus tôt dans la configuration de Beanstalk.

6- Lancer cette AMI en tant que nouvelle instance.

7- Une fois lancé, connectez-vous à l'instance et personnalisez selon les exigences de vos applications.

8- Une fois que vous avez satisfait tout en place comme vous le souhaitez, créez une image AMI de cette nouvelle instance.

9- Prenez le nouvel ID AMI d'instance qui a été créé à l'étape 8 et appliquez-le à la configuration de votre application Beanstalk.

10- Il ne supprimera pas l'ancienne instance et ne créera pas la nouvelle instance avec votre AMI personnalisée et déploiera également votre dernière application sur les nouvelles instances.

user2040074
la source
1
Je pense que vous avez mal compris la question. Je n'ai pas demandé comment créer et utiliser une AMI personnalisée, j'ai demandé comment savoir quel est le dernier ID AMI Elastic Beanstalk par défaut qui est appliqué lorsque vous créez un nouvel environnement, et si possible, comment appliquer automatiquement la nouvelle AMI quand il est publié par AWS.
Benjamin