Amazon Elastic Block Store (EBS) es un servicio que proporciona almacenamiento para las instancias de Amazon EC2. EBS es en lo que se ejecuta cada volumen en sus instancias EC2. Cuando depende de un servicio para ejecutar infraestructura importante, es prudente asegurarse de que los datos estén respaldados. En esta publicación de blog, aprenda cómo administrar y automatizar instantáneas de EC2 utilizando el lenguaje de scripting PowerShell.
Cada volumen EBS adjunto a una instancia EC2 puede respaldarse mediante una instantánea de EBS. Cada instantánea puede crearse de una de dos maneras; completa o incremental. Bueno, técnicamente ambas, pero… solo sígame en esto.
Cuando se crea la primera copia de seguridad de instantánea para una instancia EC2, crea una copia de seguridad de todo el volumen. Cuando se crean instantáneas posteriores, solo se guardan los datos en el nivel de almacenamiento de nivel de bloque que han cambiado desde la última instantánea. Sin embargo, a diferencia de las copias de seguridad incrementales típicas en un punto en el tiempo, dado que las instantáneas pueden encadenarse, cuando se restaura una instantánea se restauran todos los datos para ese volumen, lo que la hace similar a una copia de seguridad completa.
Las instantáneas pueden ocurrir de forma asincrónica, lo que significa que las instantáneas pueden estar en proceso de creación en paralelo. Cuando se inicia, una instantánea entra en una fase pendiente hasta que se copian todos los bloques necesarios en Amazon S3 donde se almacenan todas las instantáneas de EBS.
Uso de PowerShell para crear instantáneas de AWS EC2
Hay varias formas diferentes en las que AWS te permite administrar las instantáneas de EBS. Puedes utilizar la Consola de Administración de AWS, la AWS CLI, PowerShell o las API directamente si lo deseas. En este artículo, vamos a utilizar PowerShell ya que el módulo AWSPowerShell tiene un gran soporte para administrar las instantáneas de EBS con comandos de PowerShell.
Prerrequisitos
Antes de comenzar, asumiremos que tienes algunos prerrequisitos para aprovechar al máximo este tutorial. Necesitarás:
- Una cuenta de AWS
- Una instancia de EC2 con un volumen adjunto
- Autenticado con el usuario raíz o un usuario IAM con el permiso CreateSnapshot (arn:aws:ec2:region::snapshot/*)
Una vez que tengas todos estos requisitos previos en orden, ¡estamos listos para empezar!
Encontrar instantáneas de EC2 existentes
Una de las primeras tareas que haremos es descubrir si ya tenemos alguna instantánea existente. Para averiguarlo, utilizamos el comando Get-EC2Snapshot
. Este es el comando que buscará cualquier instantánea que ya haya sido creada y las mostrará en la consola de PowerShell.
Notarás que las instantáneas de AWS EC2 que aparecen no son las de tu instancia de EC2. Estas son todas las instantáneas que se han compartido contigo y que están disponibles para que las restaures en tus instancias de EC2. Para descubrir todas las instantáneas que provienen de tus instancias de EC2, utiliza el parámetro OwnerId
con el valor self
.
Crear una nueva instantánea de EBS
Suponiendo que ya tienes una instancia de EC2 creada, ahora puedes crear un snapshot. Puedes crear nuevos snapshots usando el comando New-EC2Snapshot
, pero primero, necesitarás recopilar el ID del volumen para cada volumen que desees capturar. Para hacer eso, primero necesitamos encontrar el ID de la instancia de EC2 a la que está conectado el volumen.
Una vez que sepas el ID de la instancia de EC2, necesitarás usarlo para encontrar los volúmenes. Para encontrar todos los volúmenes conectados a la instancia de EC2, usarás el comando Get-EC2Volume
y filtrarás la salida para obtener solo los volúmenes con un ID de instancia adjunto al que estamos buscando.
Ahora que tenemos los volúmenes, AWS recomienda apagar la instancia o al menos desmontar el volumen. Vamos a proceder a apagar la instancia.
Ahora podemos iterar sobre cada uno y pasar el ID del volumen al parámetro VolumeId
en el comando New-EC2Snapshot
. Una vez que eso suceda, notarás que el snapshot entrará en un estado de pendiente.
Puedes confirmar que el snapshot se ha completado ejecutando Get-EC2Snapshot
de nuevo y confirmando que el Estado ahora es completado.
Asignación de etiquetas
Si tienes muchos snapshots para administrar, puede ser difícil mantenerlos todos organizados. Para ordenar los snapshots y categorizarlos para cada descubrimiento, también puedes asignarles etiquetas. Las etiquetas son una parte ubicua de EC2 y se pueden utilizar con tus snapshots de EBS.
Puedes asignar etiquetas en la creación del snapshot o después. Para asignar etiquetas en la creación del snapshot, utiliza el parámetro TagSpecification
en New-EC2Snapshot
.
Por ejemplo, tal vez quiera etiquetar esta instantánea de AWS EC2 que acabo de tomar antes de realizar un cambio en producción. Me gustaría crear una etiqueta llamada Etapa y asignarle Desarrollo. Para hacerlo, puedo crear un objeto TagSpecification, asignar uno o más objetos Tag a la propiedad Tags, y luego definir el tipo de recurso al que se adjuntará esta etiqueta.
Una vez creado el objeto TagSpecification, puedo pasar eso a New-EC2Snapshot
.
Creación de una nueva AMI desde instantáneas
Otra característica interesante de las instantáneas es que puedes crear una nueva imagen (AMI) desde una instantánea. Si tienes una instantánea del volumen raíz de una instancia EC2 solo de Linux, puedes crear fácilmente una nueva AMI a partir de esa instantánea de volumen. Digamos que quiero crear una nueva imagen a partir de la instantánea que acabo de crear. Puedo hacerlo usando el comando New-EC2Image
.
I’ll first need to capture the snapshot ID.
A continuación, puedo pasar ese ID como una hashtable al parámetro BlockDeviceMapping
en New-EC2Image
.
Eliminación de instantáneas de AWS EC2
Si hemos terminado con la instantánea, ahora podemos eliminarla. Hacerlo es fácil. Simplemente pasa la instancia devuelta por Get-EC2Snapshot
a Remove-EC2Snapshot
. Sin embargo, puede encontrarse con este error si una AMI está en uso.
En este caso, la AMI está registrada y primero debes desregistrarla usando el comando Unregister-EC2Image
.
Resumen
PowerShell te permite administrar cada aspecto de las instantáneas de EBS. Si los escenarios que cubrimos aquí no se ajustan a lo que necesitas hacer, te sugiero que eches un vistazo a todos los comandos de instantáneas de EC2 disponibles ejecutando Get-Command -Noun *ec2snapshot* -Module AWSPowerShell
. Eso te dará una buena idea de lo que es posible con PowerShell e instantáneas de EC2 (EBS).