Wie kann ein Upgrade auf das neueste AMI in AWS Elastic Beanstalk durchgeführt werden?


18

Ich führe eine Anwendung auf AWS Elastic Beanstalk aus und es sieht so aus, als müsste eine neue Umgebung erstellt werden, wenn ich das neueste AMI verwenden möchte.

Wenn ich die neueste AMI-ID kenne, kann ich sie in der Umgebungskonfiguration aktualisieren.

Gibt es eine Stelle, an der ich die ID der neuesten AMIs von Elastic Beanstalk finden kann, oder ist es sogar möglich, die Instanzen automatisch durch die neue Version zu ersetzen, wenn eine neue Version eingeführt wird?


2
Starten Sie eine neue Umgebung und sehen Sie, welche AMI-ID sich auf dem Server befindet, den es startet?
Ceejayoz

2
Das ist ein bisschen schmerzhaft, nicht wahr?
Benjamin

Das letzte Mal, als ich eine EB-Umgebung eingerichtet habe, dauerte es ungefähr fünf Minuten. Amazon Linux AMIs erscheinen alle drei Monate im IIRC. 1,6 Minuten im Monat empfinden ich nicht als zu viel Schmerz.
Ceejayoz

Lassen Sie mich umformulieren: Es scheint, dass es einen besseren Weg geben muss. Aber du hast recht, es ist keine große Sache.
Benjamin

2
Sie sollten diese wirklich in einigen Release Notes oder einem Sticky in ihren Foren veröffentlichen, anstatt sie nur stillschweigend zu veröffentlichen.
Ken Liu

Antworten:


2

Die empfohlene und unterstützte Methode zum Aktualisieren Ihrer AWS Beanstalk-Umgebung wird hier dokumentiert und verwaltete Plattformaktualisierungen werden hier besprochen. Ich würde mich ehrlich daran halten, wenn Sie möchten, dass die Dinge einfach sind (und genau darum geht es bei Beanstalk), werden Sie es theoretisch tun Erhalten Sie nur die aktuellen Updates, und AWS verwaltet den Prozess, sodass keine Ausfallzeiten entstehen.

Ich möchte noch einmal darauf hinweisen, dass Updates für verwaltete Plattformen wahrscheinlich genau das sind, was Sie oder andere, die von Google hierher kommen, wollen. Wenn Sie jedoch wissen möchten, ob das neueste AWS-AMI für Ihre Beanstalk-Umgebung verfügbar ist, können Sie dies mit AWS CLI relativ einfach tun (vielen Dank) zu vernünftigen Namenskonventionen von Amazon auf ihren AMIs).

Beschreiben Sie ausgehend von einer Instanz aus Ihrer Umgebung die Instanz, um die aktuelle AMI abzurufen (überspringen Sie, wenn Sie die aktuelle AMI bereits kennen).

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

ami-35290a56

Nimm die resultierende AMI ID und beschreibe sie.

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

Wir können die oben genannten Ausgaben als Eingabe für eine neue, sortierte Ausgabe verwenden, describe-imagesaber dieses Mal ersetzen wir die Zeitstempel durch *Platzhaltersymbole wie folgt:

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

Aufgrund der Leistungsfähigkeit der lexikalischen Sortierung und von ISO 8601 erhalten wir die neueste AMI, wie in meinem Beispiel 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

Auch hier würde ich nicht empfehlen, dass Sie versuchen, von Hand auf dieses AMI umzusteigen. Beanstalk hat Vorkehrungen getroffen, um dies alles für Sie zu erledigen!


0

Es scheint so, als ob Sie, selbst wenn Sie den AMI ändern, einen ordnungsgemäßen AMI ElasticBeanstalk verwenden. Es scheint nicht richtig zu funktionieren. Es fehlen alle Dateien. Es funktioniert nicht richtig.

Ich denke, Sie müssen eine neue Elastic Beanstalk-Umgebung mit dem aktualisierten AMI starten. Stellen Sie sicher, dass alles funktioniert, und tauschen Sie dann die Umgebungs-URLs aus.


0

Sie können die Funktionen für verwaltete Updates verwenden, die mit eb geliefert werden. Dafür müssen Sie jedoch für eine verbesserte Berichterstellung zahlen. Oder verwenden Sie den Befehl 'eb platform show'. In einer Worker-App gibt es einen Cron, der CURRENT = eb platform show your_env_name | sed -n '5p' | cut -d: -f2- | tr -d '[[:space:]]' LATEST = ausführt. eb platform show your_env_name | sed -n '6p' | cut -d: -f2- | tr -d '[[:space:]]' Dann vergleiche sie und falls anders, kannst du eb clone (Standard auf neue Version) und dann cname swap verwenden.


0

Navigieren Sie zum Dashboard Ihrer Anwendung, suchen Sie "Konfiguration" und klicken Sie auf "Ändern".

Sie sollten eine Liste sehen, in der Sie eine Plattform auswählen können. Die neueste Version ist in dieser Liste angegeben. Plattform auswählen

AWS EB verwendet spezifische Setups für verschiedene Programmiersprachen. Eine Liste der Setups finden Sie in der Dokumentation http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html

In Tabellen wird angezeigt, welche AMI-Version auf den einzelnen Plattformen verwendet wird.

Ich habe jedoch keine Möglichkeit gefunden, diese Updates automatisch auszuführen. Eigentlich bevorzuge ich es, Änderungen an der Plattform zu überprüfen und zu testen, bevor ich sie bereitstelle.


0

Wählen Sie Ihren Dienst in Elastic Beanstalk aus. Sie sehen die Übersicht im Dashboard. Im Dashboard auf der rechten Seite sehen Sie die Konfiguration Ihres AMI. Wählen Sie Upgrade ändern oder beeinträchtigen Sie Ihren AMI. An diesem Punkt werden Sie Ihre Instanz ersetzen. Machen Sie also das Backup oder den Klon.


-2

Ich konnte meine aktuelle auf Beanstalk gehostete Anwendung mithilfe der folgenden Schritte auf das neueste Amazon Linux AMI aktualisieren.

1- Melden Sie sich bei der AWS Console an und navigieren Sie zum Beanstalk-Portal.

2- Navigieren Sie zur Konfigurationsseite Ihrer Anwendung und klicken Sie auf "Instances".

3- Suchen Sie die AMI-ID, die lauten sollte, also AMI-xxxxxx.

4- Nehmen Sie die AMI-ID, navigieren Sie zurück zur EC2-Konsole und klicken Sie auf AMI.

5- Ändern Sie die Ansicht in "Öffentliche Bilder" und suchen Sie nach der AMI-ID, die Sie zuvor aus der Beanstalk-Konfiguration abgerufen haben.

6- Starten Sie AMI als neue Instanz.

7- Melden Sie sich nach dem Start bei der Instanz an und passen Sie sie gemäß Ihren Anwendungsanforderungen an.

8- Sobald Sie mit dem Ergebnis zufrieden sind, erstellen Sie ein AMI-Image dieser neuen Instanz.

9- Nehmen Sie die neue Instanz-AMI-ID, die in Schritt 8 erstellt wurde, und wenden Sie diese auf Ihre Beanstalk-Anwendungskonfiguration an.

10- Die alte Instanz wird nicht gelöscht und die neue Instanz wird nicht mit Ihrer benutzerdefinierten AMI erstellt. Außerdem wird Ihre neueste Anwendung auf den neuen Instanzen bereitgestellt.


1
Ich denke, Sie haben die Frage falsch verstanden. Ich habe nicht gefragt, wie ein benutzerdefiniertes AMI erstellt und verwendet werden soll. Ich habe gefragt, wie die neueste Standard-AMI-ID für Elastic Beanstalk ermittelt wird, die beim Erstellen einer neuen Umgebung angewendet wird, und wie das neue AMI nach Möglichkeit automatisch angewendet wird wenn es von AWS veröffentlicht wird.
Benjamin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.