Como atualizar para a AMI mais recente no AWS Elastic Beanstalk?

18

Estou executando um aplicativo no AWS Elastic Beanstalk, e parece que preciso criar um novo ambiente se desejar usar a AMI mais recente.

Se eu soubesse qual era o ID da AMI mais recente, poderia atualizá-lo na configuração do ambiente.

Existe um local onde eu possa encontrar o ID das AMIs mais recentes do Elastic Beanstalk, ou melhor ainda, é possível ter as instâncias substituídas automaticamente pela nova versão sempre que uma nova versão for lançada?

Benjamin
fonte
2
Inicie um novo ambiente e veja qual é o ID da AMI no servidor que ele lança?
ceejayoz
2
Isso é um pouco de dor, não é?
Benjamin
A última vez que configurei um ambiente de EB levou cerca de cinco minutos. As AMIs do Amazon Linux são lançadas a cada três meses IIRC. 1,6 minutos por mês não me parecem muita dor.
ceejayoz
Deixe-me reformular: parece que deve haver uma maneira melhor. Mas você está certo, não é grande coisa.
Benjamin
2
Eles realmente deveriam publicá-las em algumas notas de lançamento ou em seus fóruns em vez de apenas lançá-las silenciosamente.
Ken Liu

Respostas:

2

A maneira recomendada e suportada de atualizar seu ambiente do AWS Beanstalk está documentada aqui e as atualizações da plataforma gerenciada são discutidas aqui , sinceramente, eu manteria isso se você quiser que as coisas sejam fáceis (e é disso que se trata o Beanstalk), você teoricamente obtenha apenas as atualizações sem interrupções e a AWS gerenciará o processo para que não haja tempo de inatividade.

Quero apenas reiterar que as atualizações da plataforma gerenciada provavelmente são o que você ou qualquer outra pessoa vinda do Google desejará, mas se você quiser conhecer a mais recente AMI fornecida pela AWS para o seu ambiente Beanstalk, isso pode ser feito de maneira bastante trivial com o AWS CLI (obrigado convenções de nomenclatura sensata da Amazon em suas AMIs).

Começando com uma instância do seu ambiente, descreva a instância para obter a AMI atual (pule se você já conhece a AMI atual).

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

ami-35290a56

Pegue o ID da AMI resultante e descreva-o.

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

Podemos usar a saída do exemplo acima como entrada para um novo, classificado, describe-imagesmas desta vez substituímos os carimbos de data / hora por *símbolos curinga, da seguinte forma:

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

Devido ao poder da classificação lexical e à ISO 8601, terminamos com a mais recente AMI, que é o meu exemplo 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

Novamente, eu não recomendaria que você tentasse alterar essa AMI manualmente, o Beanstalk tem disposições para fazer tudo isso por você!

Nathan
fonte
0

Parece que, mesmo se você alterar a AMI, para uma AMI adequada, o ElasticBeanstalk usa. Parece não funcionar corretamente. Ele perde todos os arquivos. Não funciona direito.

Eu acho que você precisa iniciar um novo ambiente do Elastic Beanstalk que tenha a AMI atualizada. Faça tudo funcionar e troque os URLs do ambiente.

Wesley Mahler
fonte
0

Você pode usar os recursos de atualizações gerenciadas que acompanham eb, mas terá que pagar por relatórios de integridade aprimorados para fazer isso. Ou use o comando 'eb platform show'; Em um aplicativo de trabalho, tenha um cron que execute 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:]]' - Em seguida, compare-os e, se diferente, você poderá usar o eb clone (o padrão é a nova versão) e depois trocar o nome.

Iain Watt
fonte
0

Navegando para o painel do seu aplicativo, localize 'Configuração' e clique em 'Alterar'

Você deve ver uma lista onde pode escolher uma plataforma. A versão mais recente é indicada nessa lista. Selecionando plataforma

O AWS EB usa configurações específicas para diferentes linguagens de programação. Você pode encontrar uma lista das configurações na documentação http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html

Existem tabelas mostrando qual versão AMI cada plataforma usa.

Não encontrei uma maneira de executar essas atualizações automaticamente. Na verdade, prefiro revisar as alterações da plataforma e testá-las antes de implantá-las.

Martin Ro
fonte
0

Selecione seu serviço no Elastic Beanstalk. Você verá uma visão geral no painel. No lado direito do painel, você pode ver a configuração da sua AMI, selecione Alterar atualização ou degradar sua AMI. Nesse ponto, você substituirá sua instância. Então faça o backup ou clone.

ankuj
fonte
-2

Consegui atualizar meu aplicativo atual hospedado no Beanstalk para a mais recente Amazon Linux AMI usando as etapas abaixo.

1- Faça login no AWS Console e navegue no portal Beanstalk.

2- Navegue até a página de configuração do seu aplicativo e clique em 'Instâncias'.

3- Localize o ID da AMI como deve ser a AMI-xxxxxx.

4- Pegue o ID da AMI e volte ao console do EC2 e clique em AMI.

5- Altere a visualização para Imagens públicas e procure o ID da AMI recuperado anteriormente na configuração do Beanstalk.

6- Inicie a AMI como uma nova instância.

7- Uma vez iniciado, efetue login na instância e personalize conforme os requisitos de seus aplicativos.

8- Uma vez que você tenha satisfeito tudo no lugar, como você gostaria que fosse, crie uma imagem AMI dessa nova instância.

9- Pegue o novo ID da AMI da instância criado na etapa 8 e aplique-o à configuração do aplicativo Beanstalk.

10- Não excluirá a instância antiga e criará a nova instância com sua AMI personalizada, além de implantar seu aplicativo mais recente nas novas instâncias.

user2040074
fonte
11
Eu acho que você não entendeu a pergunta. Não perguntei como criar e usar uma AMI personalizada. Perguntei como saber qual é o ID de AMI do Elastic Beanstalk padrão mais recente aplicado quando você cria um novo ambiente e, se possível, como aplicar automaticamente a nova AMI. quando for lançado pela AWS.
Benjamin