Jak zaktualizować do najnowszej wersji AMI w AWS Elastic Beanstalk?


18

Korzystam z aplikacji na AWS Elastic Beanstalk i wygląda na to, że muszę utworzyć nowe środowisko, jeśli chcę korzystać z najnowszego interfejsu AMI.

Gdybym wiedział, jaki jest najnowszy identyfikator AMI, mógłbym go zaktualizować w konfiguracji środowiska.

Czy jest miejsce, w którym mógłbym znaleźć identyfikator najnowszych AMI Elastic Beanstalk, a nawet lepiej, czy możliwe jest automatyczne zastępowanie instancji nową wersją przy każdym uruchomieniu nowej wersji?


2
Uruchom nowe środowisko i sprawdź, jaki jest identyfikator AMI na serwerze, który uruchamia?
ceejayoz

2
To trochę boli, prawda?
Benjamin

Ostatnim razem, gdy konfigurowałem środowisko EB, zajęło to około pięciu minut. Interfejsy AMI Amazon Linux pojawiają się raz na trzy miesiące IIRC. 1,6 minuty w miesiącu nie sprawia mi tak wielkiego bólu.
ceejayoz

Pozwólcie, że powtórzę: mam wrażenie, że musi być lepszy sposób. Ale masz rację, to nie jest wielka sprawa.
Benjamin,

2
Naprawdę powinni opublikować je w uwagach do wydania lub przykleić na swoich forach, zamiast po prostu rozprowadzać je po cichu.
Ken Liu

Odpowiedzi:


2

Zalecana i wspierane sposób uaktualnić środowisko AWS beanstalk jest udokumentowane tutaj i zarządzana aktualizacje platformy są omawiane tutaj , szczerze bym trzymać się, że jeśli chcesz być łatwe rzeczy (i to jest wszystko o Beanstalk), będziesz teoretycznie otrzymuj tylko nieprzerwane aktualizacje, a AWS będzie zarządzać procesem, więc nie będzie żadnych przestojów.

Chciałbym więc tylko powtórzyć, że zarządzanymi aktualizacjami platformy są prawdopodobnie to, czego Ty lub ktokolwiek pochodzący z Google będzie chciał, ale jeśli chcesz poznać najnowszy AMS dostarczony przez AWS dla twojego środowiska Beanstalk, możesz to zrobić dość trywialnie za pomocą AWS CLI (dzięki do rozsądnych konwencji nazewnictwa Amazon na ich AMI).

Zaczynając od instancji ze swojego środowiska, opisz ją, aby uzyskać bieżący AMI (pomiń, jeśli znasz już obecny AMI).

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

ami-35290a56

Weź wynikowy identyfikator AMI i opisz go.

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

Możemy użyć wyniku powyższego jako danych wejściowych do nowego, posortowanego, describe-imagesale tym razem zastępujemy znaczniki czasu *symbolami wieloznacznymi, takimi jak:

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

Ze względu na moc sortowania leksykalnego i ISO 8601 otrzymujemy najnowszą wersję AMI, którą w moim przykładzie jest 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

Ponownie nie polecam, abyś próbował ręcznie zmienić ten AMI, Beanstalk ma przepisy, aby zrobić to wszystko za Ciebie!


0

Wygląda na to, że nawet jeśli zmienisz AMI, użyjesz właściwego AMI ElasticBeanstalk. Wygląda na to, że nie działa poprawnie. Brakuje wszystkich plików. To nie działa dobrze.

Myślę, że musisz uruchomić nowe środowisko Elastic Beanstalk ze zaktualizowanym interfejsem AMI. Spraw, aby wszystko działało, a następnie zamień adresy URL środowiska.


0

Możesz użyć funkcji aktualizacji zarządzanych dostarczanych z eb, ale będziesz musiał zapłacić za ulepszone raportowanie stanu zdrowia, aby to zrobić. Lub użyj polecenia „pokaż platformę eb”; W aplikacji pracującej masz crona, który uruchamia CURRENT = eb platform show your_env_name | sed -n '5p' | cut -d: -f2- | tr -d '[[:space:]]' NAJNOWSZY = eb platform show your_env_name | sed -n '6p' | cut -d: -f2- | tr -d '[[:space:]]' - Następnie porównaj je, a jeśli są inne, możesz użyć klonu eb (domyślnie do nowej wersji), a następnie zamiany cname.


0

Przechodząc do pulpitu nawigacyjnego aplikacji zlokalizuj „Konfiguracja” i kliknij „Zmień”

Powinieneś zobaczyć listę, w której możesz wybrać platformę. Najnowsza wersja jest wskazana na tej liście. Wybór platformy

AWS EB używa określonych ustawień dla różnych języków programowania. Listę ustawień można znaleźć w dokumentacji http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html

Istnieją tabele pokazujące, z której wersji AMI korzysta każda platforma.

Nie znalazłem jednak sposobu na automatyczne uruchomienie tych aktualizacji. Właściwie wolę przejrzeć zmiany platformy i przetestować je przed ich wdrożeniem.


0

Wybierz usługę w Elastic Beanstalk, Zobaczysz przegląd w Dashboard, W panelu po prawej stronie możesz zobaczyć konfigurację AMI, Wybierz Zmień aktualizację lub zdegraduj AMI. W tym momencie zamierzasz zastąpić swoją instancję. Utwórz kopię zapasową lub sklonuj.


-2

Byłem w stanie zaktualizować moją obecną aplikację hostowaną na Beanstalk do najnowszej wersji Amazon Linux AMI, wykonując poniższe kroki.

1- Zaloguj się do konsoli AWS i przejdź do portalu Beanstalk.

2- Przejdź do strony konfiguracji aplikacji i kliknij „Instancje”.

3- Znajdź identyfikator AMI, tak powinien wyglądać AMI-xxxxxx.

4- Weź identyfikator AMI i przejdź z powrotem do konsoli EC2 i kliknij AMI.

5- Zmień widok na Obrazy publiczne i poszukaj identyfikatora AMI pobranego wcześniej z konfiguracji Beanstalk.

6- Uruchom AMI jako nową instancję.

7- Po uruchomieniu zaloguj się do instancji i dostosuj zgodnie z wymaganiami aplikacji.

8- Po spełnieniu wszystkich oczekiwań, należy utworzyć obraz AMI tej nowej instancji.

9- Weź nowy identyfikator AMI instancji utworzony w kroku 8 i zastosuj go do konfiguracji aplikacji Beanstalk.

10- Nie usunie starej instancji i nie utworzy nowej z niestandardowym interfejsem AMI, a także wdroży najnowszą aplikację na nowych instancjach.


1
Myślę, że źle zrozumiałeś pytanie. Nie pytałem, jak utworzyć niestandardowy interfejs AMI i korzystać z niego, zapytałem, jak się dowiedzieć, jaki jest najnowszy domyślny identyfikator AMI elastycznej fasoli, który jest stosowany podczas tworzenia nowego środowiska, i jeśli to możliwe, jak automatycznie zastosować nowy interfejs AMI kiedy zostanie wydany przez AWS.
Benjamin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.