¿Cómo actualizar a la última AMI en AWS Elastic Beanstalk?

18

Estoy ejecutando una aplicación en AWS Elastic Beanstalk, y parece que necesito crear un nuevo entorno si quiero usar la última AMI.

Si supiera cuál es el último ID de AMI, podría actualizarlo en la configuración del entorno.

¿Hay algún lugar donde pueda encontrar la identificación de las últimas AMI de Elastic Beanstalk, o incluso mejor, es posible reemplazar las instancias automáticamente por la nueva versión cada vez que se lanza una nueva versión?

Benjamín
fuente
2
Inicie un nuevo entorno y vea cuál es la ID de AMI en el servidor que inicia.
ceejayoz
2
Eso es un poco doloroso, ¿no?
Benjamin
La última vez que configuré un entorno EB me llevó unos cinco minutos. Las AMI de Amazon Linux salen una vez cada tres meses IIRC. 1,6 minutos al mes no me parece demasiado dolor.
ceejayoz 01 de
Permítanme reformular: parece que debe haber una mejor manera. Pero tienes razón, no es gran cosa.
Benjamin
2
Realmente deberían publicarlos en algunas notas de lanzamiento o en una nota adhesiva en sus foros en lugar de simplemente desplegarlos en silencio.
Ken Liu

Respuestas:

2

La forma recomendada y compatible de actualizar su entorno de AWS Beanstalk se documenta aquí y las actualizaciones de la plataforma administrada se discuten aquí , honestamente me apegaría a eso si desea que las cosas sean fáciles (y de eso se trata Beanstalk), teóricamente solo obtenga las actualizaciones sin interrupciones y AWS administrará el proceso para que no haya tiempo de inactividad.

Así que solo quiero reiterar que las actualizaciones de la plataforma administrada son probablemente lo que usted o cualquier otra persona que venga de Google querrá, pero si desea conocer la última AMI proporcionada por AWS para su entorno de Beanstalk, puede hacerlo de manera bastante trivial con AWS CLI (gracias para citar convenciones de nomenclatura de Amazon en sus AMI).

Comenzando con una instancia de su entorno, describa la instancia para obtener la AMI actual (omita si ya conoce la AMI actual).

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

ami-35290a56

Tome la ID de AMI resultante y descríbala.

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 la salida de lo anterior como entrada para un nuevo orden, describe-imagespero esta vez reemplazamos las marcas de tiempo con *símbolos comodín, de esta manera:

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

Debido al poder de la clasificación léxica y la ISO 8601, terminamos con la última AMI, que en mi ejemplo es 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

Nuevamente, no recomendaría que intentes cambiar este AMI a mano, ¡Beanstalk tiene disposiciones para hacer todo esto por ti!

Nathan
fuente
0

Parece que incluso si cambia el AMI, a un AMI adecuado utiliza ElasticBeanstalk. No parece funcionar correctamente. Se pierde todos los archivos. No funciona bien

Creo que debe iniciar un nuevo entorno de Elastic Beanstalk que tenga la AMI actualizada. Haga que todo funcione y luego cambie las URL del entorno.

Wesley Mahler
fuente
0

Puede usar las funciones de actualizaciones administradas que vienen con eb, pero tendrá que pagar por informes de salud mejorados para hacerlo. O use el comando 'eb platform show'; En una aplicación de trabajo, tenga un cron que ejecute 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:]]' - Luego compárelos y, si es diferente, puede usar eb clone (predeterminado en la nueva versión) y luego cname swap.

Iain Watt
fuente
0

Navegando al tablero de su aplicación, ubique 'Configuración' y haga clic en 'Cambiar'

Debería ver una lista donde puede elegir una Plataforma. La última versión se indica en esa lista. Seleccionar plataforma

AWS EB utiliza configuraciones específicas para diferentes lenguajes de programación. Puede encontrar una lista de las configuraciones en la documentación http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html

Hay tablas que muestran qué versión de AMI usa cada plataforma.

Sin embargo, no encontré una manera de ejecutar estas actualizaciones automáticamente. De hecho, prefiero revisar los cambios de la plataforma y probarlos antes de implementarlos.

Martin Ro
fuente
0

Seleccione su servicio en Elastic Beanstalk. Verá una descripción general en el Tablero. En el lado derecho del tablero puede ver la configuración de su AMI, Seleccionar Cambiar actualización o degradar su AMI. En este punto, va a reemplazar su instancia. Entonces haga la copia de seguridad o clone.

ankuj
fuente
-2

Pude actualizar mi aplicación actual alojada en Beanstalk a la última AMI de Amazon Linux siguiendo los pasos a continuación.

1- Inicie sesión en la consola de AWS y acceda al portal de Beanstalk.

2- Navegue a la página de configuración de su aplicación y haga clic en 'Instancias'.

3- Localice el ID de AMI como debería ser AMI-xxxxxx.

4- Tome la identificación AMI y navegue de regreso a la consola EC2 y haga clic en AMI.

5- Cambie la vista a Imágenes públicas y busque el ID de AMI recuperado anteriormente de la configuración de Beanstalk.

6- Inicie ese AMI como una nueva instancia.

7- Una vez que se inicia, inicie sesión en la instancia y personalícela según los requisitos de sus aplicaciones.

8- Una vez que haya satisfecho todo en su lugar como le gustaría, cree una imagen AMI de esta nueva instancia.

9- Tome la nueva instancia de ID de AMI que se creó en el paso 8 y aplíquela a la configuración de su aplicación Beanstalk.

10- No eliminará la instancia anterior y creará la nueva instancia con su AMI personalizada y también implementará su última aplicación en las nuevas instancias.

usuario2040074
fuente
1
Creo que entendiste mal la pregunta. No pregunté cómo crear y usar una AMI personalizada, pregunté cómo saber cuál es la última ID de Elastic Beanstalk AMI predeterminada que se aplica cuando se crea un nuevo entorno y, si es posible, cómo aplicar automáticamente la nueva AMI cuando es lanzado por AWS.
Benjamin