Come eseguire l'aggiornamento all'ultima AMI in AWS Elastic Beanstalk?


18

Sto eseguendo un'applicazione su AWS Elastic Beanstalk e sembra che debba creare un nuovo ambiente se voglio usare la più recente AMI.

Se sapessi quale fosse l'ultimo ID AMI, potrei aggiornarlo nella configurazione dell'ambiente.

Esiste un posto dove posso trovare l'ID delle ultime AMI Elastic Beanstalk o, meglio ancora, è possibile avere le istanze sostituite automaticamente dalla nuova versione ogni volta che viene lanciata una nuova versione?


2
Accendere un nuovo ambiente e vedere qual è l'ID AMI sul server che avvia?
Ceejayoz,

2
È un po 'un dolore, no?
Benjamin,

L'ultima volta che ho creato un ambiente EB ci sono voluti circa cinque minuti. Le AMI di Amazon Linux escono ogni tre mesi IIRC. 1,6 minuti al mese non mi fanno sentire troppo dolore.
Ceejayoz,

Consentitemi di riformulare: sembra che ci debba essere un modo migliore. Ma hai ragione, non è un grosso problema.
Benjamin,

2
Dovrebbero davvero pubblicarli in alcune note di rilascio o in un appiccicoso nei loro forum piuttosto che semplicemente distribuirli in silenzio.
Ken Liu

Risposte:


2

Il modo consigliato e supportato per aggiornare il tuo ambiente AWS Beanstalk è documentato qui e gli aggiornamenti della piattaforma gestita sono discussi qui , onestamente mi atterrerei a questo se vuoi che le cose siano facili (e questo è tutto ciò che riguarda Beanstalk), teoricamente ricevi solo gli aggiornamenti continui e AWS gestirà il processo in modo che non ci siano tempi di inattività.

Quindi voglio solo ribadire che gli aggiornamenti della piattaforma gestita sono probabilmente ciò che tu o chiunque altro veniate qui da Google vorrete, ma se volete conoscere le ultime offerte AWS fornite dall'AMI per il vostro ambiente Beanstalk, con la CLI AWS potete farlo in modo abbastanza banale alle convenzioni di denominazione sensate di Amazon sulle loro AMI).

A partire da un'istanza del tuo ambiente, descrivi l'istanza per ottenere l'AMI corrente (salta se conosci già l'AMI corrente).

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

ami-35290a56

Prendi l'ID AMI risultante e descrivilo.

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"
    ]
]

Possiamo usare l'output di quanto sopra come input per un nuovo, ordinato, describe-imagesma questa volta sostituiamo i timestamp con *simboli jolly, in questo modo:

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

Grazie alla potenza dell'ordinamento lessicale e alla ISO 8601, finiamo con l'ultima AMI, che nel mio esempio è 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

Ancora una volta, non consiglierei di provare a passare a questo AMI a mano, Beanstalk ha delle disposizioni per fare tutto questo per te!


0

Sembra che anche se cambi l'AMI, utilizzi un AMI ElasticBeanstalk appropriato. Non sembra funzionare correttamente. Manca tutti i file. Non funziona bene.

Penso che devi avviare un nuovo ambiente Elastic Beanstalk con l'AMI aggiornata. Fai funzionare tutto, quindi scambia gli URL di ambiente.


0

È possibile utilizzare le funzionalità di aggiornamento gestite fornite con eb, ma per questo è necessario pagare per ottenere report di integrità migliorati. Oppure usa il comando 'eb platform show'; In un'app di lavoro avere un cron che esegue 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:]]' - Quindi confrontarli e, se diversi, è possibile utilizzare il clone eb (predefinito alla nuova versione) e quindi cname swap.


0

Passando al pannello di controllo dell'applicazione, individuare "Configurazione" e fare clic su "Modifica"

Dovresti visualizzare un elenco in cui puoi scegliere una piattaforma. L'ultima versione è indicata in tale elenco. Selezione della piattaforma

AWS EB utilizza impostazioni specifiche per diversi linguaggi di programmazione. È possibile trovare un elenco delle impostazioni nella documentazione http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html

Ci sono tabelle che mostrano quale versione AMI utilizza ogni piattaforma.

Tuttavia, non ho trovato il modo di eseguire automaticamente questi aggiornamenti. In realtà preferisco rivedere le modifiche della piattaforma e testarle prima di distribuirle.


0

Seleziona il tuo servizio in Elastic Beanstalk, vedrai la panoramica in Dashboard, nella parte destra del cruscotto puoi vedere la configurazione della tua AMI, selezionare Cambia aggiornamento o degradare la tua AMI. A questo punto sostituirai la tua istanza. Quindi esegui il backup o il clone.


-2

Sono stato in grado di aggiornare la mia attuale applicazione ospitata su Beanstalk all'ultima AMI di Amazon Linux usando i passaggi seguenti.

1- Accedi alla Console AWS e naviga nel portale Beanstalk.

2- Passare alla pagina di configurazione dell'applicazione e fare clic su "Istanze".

3- Individua l'ID AMI come dovrebbe essere AMI-xxxxxx.

4- Prendere l'ID AMI e tornare alla console EC2 e fare clic su AMI.

5- Modificare la vista in Immagini pubbliche e cercare l'id AMI recuperato in precedenza dalla configurazione Beanstalk.

6- Avvia l'AMI come nuova istanza.

7- Una volta avviato, accedi all'istanza e personalizzalo secondo i requisiti delle tue applicazioni.

8- Una volta che sei soddisfatto tutto sul posto come vorresti che fosse creare un'immagine AMI di questa nuova istanza.

9- Prendi il nuovo ID AMI dell'istanza creato nel passaggio 8 e applicalo alla configurazione dell'applicazione Beanstalk.

10- Non eliminerà la vecchia istanza e creerà la nuova istanza con la tua AMI personalizzata e distribuirà la tua ultima applicazione sulle nuove istanze.


1
Penso che tu abbia frainteso la domanda. Non ho chiesto come creare e utilizzare un AMI personalizzato, ho chiesto come sapere qual è l'ultimo ID AMI Elastic Beanstalk predefinito che viene applicato quando si crea un nuovo ambiente e, se possibile, come applicare automaticamente il nuovo AMI quando viene rilasciato da AWS.
Benjamin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.