Uso de Amazon Lightsail con AWS CLI - Amazon Lightsail

Uso de Amazon Lightsail con AWS CLI

Este tutorial describe las operaciones comunes de Amazon Lightsail y cómo realizarlas mediante AWS Command Line Interface (AWS CLI). Aprenderá a crear y administrar recursos de Lightsail, incluidos pares de claves, instancias, almacenamiento e instantáneas.

Requisitos previos

Antes de comenzar este tutorial, asegúrese de tener lo siguiente:

  1. la , AWS CLI. Si necesita instalarla, siga la guía de instalación de la AWS CLI. También puede utilizar AWS CloudShell, que incluye AWS CLI

  2. La AWS CLI debe estar configurada con las credenciales apropiadas. Si aún no ha configurado sus credenciales, ejecute aws configure.

  3. Conocimientos básicos de interfaces de línea de comandos y conceptos de SSH.

  4. Permisos suficientes para crear y administrar recursos de Lightsail en la cuenta de AWS.

Si aún no lo ha hecho, configure la variable de entorno de AWS_REGION para que coincida con la misma región que configuró en AWS CLI antes de comenzar. Esta variable de entorno se utiliza en los comandos de ejemplo para especificar una zona de disponibilidad para los recursos de Lightsail.

$ [ -z "${AWS_REGION}" ] && export AWS_REGION=$(aws configure get region)

Comencemos con la creación y administración de recursos de Amazon Lightsail mediante la CLI.

Generación de pares de claves SSH

Los pares de claves SSH permiten conectarse de forma segura a las instancias de Lightsail sin usar contraseñas. En esta sección, creará un nuevo par de claves y obtendrá su información.

ejemplo – Creación de un nuevo par de claves

El siguiente comando crea un nuevo par de claves SSH llamado “cli-tutorial-keys” y guarda la clave privada en la máquina local.

$ aws lightsail create-key-pair --key-pair-name cli-tutorial-keys \ --query privateKeyBase64 --output text > ~/.ssh/cli-tutorial-keys.pem $ chmod 400 ~/.ssh/cli-tutorial-keys.pem

Después de ejecutar este comando, la clave privada se guarda en el directorio de ~/.ssh con los permisos adecuados. El comando chmod garantiza que solo usted pueda leer el archivo de la clave privada, lo cual es un requisito de seguridad para SSH.

ejemplo – Obtención de información del par de claves

Para verificar que el par de claves se haya creado correctamente, obtenga su información.

$ aws lightsail get-key-pair --key-pair-name cli-tutorial-keys { "keyPair": { "name": "cli-tutorial-keys", "arn": "arn:aws:lightsail:us-east-2:123456789012:KeyPair/e00xmpl-6a6a-434a-bff1-87f2bb815e21", "supportCode": "123456789012/cli-tutorial-keys", "createdAt": 1673596800.000, "location": { "availabilityZone": "all", "regionName": "us-east-2" }, "resourceType": "KeyPair", "tags": [], "fingerprint": "d0:0d:30:db:5a:24:df:f6:17:f0:e2:15:45:77:3d:bb:d0:6d:fc:81" } }

El resultado muestra detalles del par de claves, incluidos su nombre, ARN, hora de creación, región y huella digital. Esta huella digital se puede usar para verificar la autenticidad de la clave al conectarse a instancias.

Creación y administración de instancias

Las instancias de Lightsail son servidores privados virtuales que ejecutan aplicaciones o sitios web. En esta sección, creará una instancia de WordPress y obtendrá sus detalles.

ejemplo – Creación de una instancia de WordPress

El siguiente comando crea una nueva instancia de WordPress con el paquete de nano_3_0 (el tamaño de instancia de Lightsail más pequeño) y la asocia al par de claves. El comando usa la variable de entorno de AWS_REGION para crear la instancia en una zona de disponibilidad dentro de la región que configuró.

$ aws lightsail create-instances --instance-names cli-tutorial \ --availability-zone ${AWS_REGION}a --blueprint-id wordpress \ --bundle-id nano_3_0 --key-pair-name cli-tutorial-keys { "operations": [ { "id": "f30xmpl-3727-492a-9d42-5c94ad3ef9a8", "resourceName": "cli-tutorial", "resourceType": "Instance", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "isTerminal": false, "operationType": "CreateInstance", "status": "Started", "statusChangedAt": 1673596800.000 } ] }

La respuesta indica que se ha iniciado la operación de creación de la instancia. Es posible que la instancia tarde unos minutos en estar disponible.

ejemplo – Obtención de detalles de la instancia

Una vez creada la instancia, puede obtener sus detalles mediante el siguiente comando.

$ aws lightsail get-instance --instance-name cli-tutorial { "instance": { "name": "cli-tutorial", "arn": "arn:aws:lightsail:us-east-2:123456789012:Instance/7d3xmpl-ae2e-44d5-bbd9-22f9ec2abe1f", "supportCode": "123456789012/i-099cxmpl5dad5923c", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "resourceType": "Instance", "tags": [], "blueprintId": "wordpress", "blueprintName": "WordPress", "bundleId": "nano_3_0", "isStaticIp": false, "privateIpAddress": "172.26.6.136", "publicIpAddress": "192.0.2.1", "ipv6Addresses": [ "2001:db8:85a3:0000:0000:8a2e:0370:7334" ], "ipAddressType": "dualstack", "hardware": { "cpuCount": 2, "disks": [ { "createdAt": 1673596800.000, "sizeInGb": 20, "isSystemDisk": true, "iops": 100, "path": "/dev/xvda", "attachedTo": "cli-tutorial", "attachmentState": "attached" } ], "ramSizeInGb": 0.5 }, "networking": { "monthlyTransfer": { "gbPerMonthAllocated": 1024 }, "ports": [ { "fromPort": 80, "toPort": 80, "protocol": "tcp", "accessFrom": "Anywhere (0.0.0.0/0 and ::/0)", "accessType": "public", "commonName": "", "accessDirection": "inbound", "cidrs": [ "0.0.0.0/0" ], "ipv6Cidrs": [ "::/0" ], "cidrListAliases": [] }, { "fromPort": 22, "toPort": 22, "protocol": "tcp", "accessFrom": "Anywhere (0.0.0.0/0 and ::/0)", "accessType": "public", "commonName": "", "accessDirection": "inbound", "cidrs": [ "0.0.0.0/0" ], "ipv6Cidrs": [ "::/0" ], "cidrListAliases": [] }, { "fromPort": 443, "toPort": 443, "protocol": "tcp", "accessFrom": "Anywhere (0.0.0.0/0 and ::/0)", "accessType": "public", "commonName": "", "accessDirection": "inbound", "cidrs": [ "0.0.0.0/0" ], "ipv6Cidrs": [ "::/0" ], "cidrListAliases": [] } ] }, "state": { "code": 16, "name": "running" }, "username": "bitnami", "sshKeyName": "cli-tutorial-keys", "metadataOptions": { "state": "applied", "httpTokens": "optional", "httpEndpoint": "enabled", "httpPutResponseHopLimit": 1, "httpProtocolIpv6": "disabled" } } }

El resultado proporciona información completa de la instancia, incluidas sus direcciones IP, especificaciones de hardware, configuración de red y estado. Anote la dirección IP pública y el nombre de usuario, ya que los necesitará para conectarse a la instancia.

Conéctese a su instancia

Después de crear la instancia, puede conectarse a esta mediante SSH con el par de claves que creó anteriormente. Esta sección muestra cómo establecer una conexión SSH y administrar la configuración de seguridad.

ejemplo – Conexión mediante SSH a la instancia

Use el siguiente comando para conectarse a la instancia mediante SSH. Para ello, sustituya la dirección IP por la IP pública de la instancia.

$ ssh -i ~/.ssh/cli-tutorial-keys.pem bitnami@192.0.2.1 Linux ip-172-26-6-136 6.1.0-32-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. ___ _ _ _ | _ |_) |_ _ _ __ _ _ __ (_) | _ \ | _| ' \/ _` | ' \| | |___/_|\__|_|_|\__,_|_|_|_|_| *** Welcome to the Bitnami package for WordPress 6.7.2 *** *** Documentation: https://docs.bitnami.com/aws/apps/wordpress/ *** *** https://docs.bitnami.com/aws/ *** *** Bitnami Forums: https://github.com/bitnami/vms/ *** bitnami@ip-172-26-6-136:~$ df Filesystem 1K-blocks Used Available Use% Mounted on udev 217920 0 217920 0% /dev tmpfs 45860 480 45380 2% /run /dev/nvme0n1p1 20403592 3328832 16142256 18% / tmpfs 229292 0 229292 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock /dev/nvme0n1p15 126678 11840 114838 10% /boot/efi tmpfs 45856 0 45856 0% /run/user/1000

Una vez conectado, puede administrar la instalación de WordPress, configurar el servidor o instalar software adicional. El ejemplo anterior muestra el uso de disco en la instancia mediante el comando df.

ejemplo – Cierre de los puertos públicos

Cuando no utilice SSH, puede cerrar los puertos públicos de la instancia. Esto ayuda a proteger la instancia frente a intentos de acceso no autorizado.

$ aws lightsail close-instance-public-ports --instance-name cli-tutorial \ --port-info fromPort=22,protocol=TCP,toPort=22 { "operation": { "id": "6cdxmpl-9f39-4357-a66d-230096140b4f", "resourceName": "cli-tutorial", "resourceType": "Instance", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "isTerminal": true, "operationDetails": "22/tcp", "operationType": "CloseInstancePublicPorts", "status": "Succeeded", "statusChangedAt": 1673596800.000 } }
nota

Cerrar el puerto 22 impide todas las conexiones SSH, incluidas las iniciadas desde la consola de Lightsail. Para obtener más información, consulte los siguientes temas.

La respuesta confirma que el puerto 22 se ha cerrado correctamente. Cuando necesite volver a conectarse mediante SSH, puede reabrir el puerto con el comando de open-instance-public-ports.

Cómo agregar almacenamiento a la instancia

A medida que la aplicación crece, es posible que necesite espacio de almacenamiento adicional. Lightsail permite crear y asociar discos adicionales a las instancias. Esta sección muestra cómo agregar almacenamiento adicional.

ejemplo – Creación de un disco

El siguiente comando crea un nuevo disco de 32 GB.

$ aws lightsail create-disk --disk-name cli-tutorial-disk \ --availability-zone ${AWS_REGION}a --size-in-gb 32 { "operations": [ { "id": "070xmpl-3364-4aa2-bff2-3c589de832fc", "resourceName": "cli-tutorial-disk", "resourceType": "Disk", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "isTerminal": false, "operationType": "CreateDisk", "status": "Started", "statusChangedAt": 1673596800.000 } ] }

La respuesta indica que se ha iniciado la operación de creación del disco. Es posible que el disco tarde unos minutos en estar disponible.

ejemplo – Asociación del disco a la instancia

Una vez creado el disco, puede asociarlo a la instancia mediante el siguiente comando.

$ aws lightsail attach-disk --disk-name cli-tutorial-disk \ --disk-path /dev/xvdf --instance-name cli-tutorial { "operations": [ { "id": "d17xmpl-2bdb-4292-ac63-ba5537522cea", "resourceName": "cli-tutorial-disk", "resourceType": "Disk", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "isTerminal": false, "operationDetails": "cli-tutorial", "operationType": "AttachDisk", "status": "Started", "statusChangedAt": 1673596800.000 }, { "id": "01exmpl-c04e-42d4-aa6b-45ce50562a54", "resourceName": "cli-tutorial", "resourceType": "Instance", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "isTerminal": false, "operationDetails": "cli-tutorial-disk", "operationType": "AttachDisk", "status": "Started", "statusChangedAt": 1673596800.000 } ] }

El parámetro disk-path especifica la ubicación en la que el disco se asociará dentro del sistema de archivos de Linux. Después de asociar el disco, deberá formatearlo y montarlo desde la propia instancia.

ejemplo – Verificación de la asociación del disco

Para confirmar que el disco se haya asociado correctamente, obtenga sus detalles.

$ aws lightsail get-disk --disk-name cli-tutorial-disk { "disk": { "name": "cli-tutorial-disk", "arn": "arn:aws:lightsail:us-east-2:123456789012:Disk/1a9xmpl-8a34-46a4-b87e-19184f0cca9c", "supportCode": "123456789012/vol-0dacxmplc1c3108e2", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "resourceType": "Disk", "tags": [], "sizeInGb": 32, "isSystemDisk": false, "iops": 100, "path": "/dev/xvdf", "state": "in-use", "attachedTo": "cli-tutorial", "isAttached": true, "attachmentState": "attached" } }

El resultado confirma que el disco está asociado a la instancia. El campo “estado” muestra el valor “in-use” e “isAttached” aparece establecido en verdadero, lo que indica que la asociación se completó correctamente.

Creación y uso de instantáneas

Las instantáneas proporcionan un método para realizar copias de seguridad de la instancia y crear nuevas instancias a partir de dichas copias. Esto resulta útil para la recuperación ante desastres, las pruebas o la creación de entornos duplicados.

ejemplo – Creación de una instantánea de la instancia

El siguiente comando crea una instantánea de la instancia.

$ aws lightsail create-instance-snapshot --instance-name cli-tutorial \ --instance-snapshot-name cli-tutorial-snapshot { "operations": [ { "id": "41bxmpl-7824-4591-bfcc-1b1c341613a4", "resourceName": "cli-tutorial-snapshot", "resourceType": "InstanceSnapshot", "createdAt": 1673596800.000, "location": { "availabilityZone": "all", "regionName": "us-east-2" }, "isTerminal": false, "operationDetails": "cli-tutorial", "operationType": "CreateInstanceSnapshot", "status": "Started", "statusChangedAt": 1673596800.000 }, { "id": "725xmpl-158e-46f6-bd49-27b0e6805aa2", "resourceName": "cli-tutorial", "resourceType": "Instance", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "isTerminal": false, "operationDetails": "cli-tutorial-snapshot", "operationType": "CreateInstanceSnapshot", "status": "Started", "statusChangedAt": 1673596800.000 } ] }

La respuesta indica que el proceso de creación de la instantánea se ha iniciado. Existen dos operaciones asincrónicas: una para la creación de la instantánea de la instancia y otra para la creación de la propia instantánea. La instantánea incluye todos los discos asociados a la instancia.

ejemplo – Creación de una nueva instancia a partir de una instantánea

Una vez que la instantánea se completa, puede usarla para crear una nueva instancia.

$ aws lightsail create-instances-from-snapshot --availability-zone ${AWS_REGION}b \ --instance-snapshot-name cli-tutorial-snapshot --instance-name cli-tutorial-bup --bundle-id small_3_0 { "operations": [ { "id": "a35xmpl-efa1-4d6c-958e-9d58fd258f5f", "resourceName": "cli-tutorial-bup", "resourceType": "Instance", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2b", "regionName": "us-east-2" }, "isTerminal": false, "operationType": "CreateInstancesFromSnapshot", "status": "Started", "statusChangedAt": 1673596800.000 } ] }

Este comando crea una nueva instancia denominada cli-tutorial-bup en la zona de disponibilidad us-east-2b mediante el tamaño de paquete small_3_0. Tenga en cuenta que puede elegir un tamaño de paquete diferente para la nueva instancia, lo cual resulta útil para escalar o desescalar verticalmente.

Eliminar recursos

Cuando finalice el uso de los recursos de Lightsail, debe eliminarlos para evitar cargos adicionales. Esta sección muestra cómo limpiar todos los recursos creados en este tutorial.

ejemplo – Eliminación de una instantánea de la instancia

Para eliminar una instantánea que ya no necesita, utilice el siguiente comando.

$ aws lightsail delete-instance-snapshot --instance-snapshot-name cli-tutorial-snapshot { "operations": [ { "id": "cf8xmpl-0ec7-43ec-9cbc-6dedd9d8eda8", "resourceName": "cli-tutorial-snapshot", "resourceType": "InstanceSnapshot", "createdAt": 1673596800.000, "location": { "availabilityZone": "all", "regionName": "us-east-2" }, "isTerminal": true, "operationDetails": "", "operationType": "DeleteInstanceSnapshot", "status": "Succeeded", "statusChangedAt": 1673596800.000 } ] }

La respuesta confirma que la operación de eliminación de la instantánea se completó correctamente.

ejemplo – Eliminación de una instancia

Para eliminar una instancia, utilice el siguiente comando.

$ aws lightsail delete-instance --instance-name cli-tutorial { "operations": [ { "id": "f4bxmpl-2df1-4740-90d7-e30adaf7e3a1", "resourceName": "cli-tutorial", "resourceType": "Instance", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "isTerminal": true, "operationDetails": "", "operationType": "DeleteInstance", "status": "Succeeded", "statusChangedAt": 1673596800.000 } ] }

Recuerde eliminar todas las instancias que creó, incluidas las instancias creadas a partir de instantáneas.

ejemplo – Eliminación de un disco

Para eliminar un disco que ya no necesita, utilice el siguiente comando.

$ aws lightsail delete-disk --disk-name cli-tutorial-disk { "operations": [ { "id": "aacxmpl-8626-4edd-8b3b-bf108d6b279c", "resourceName": "cli-tutorial-disk", "resourceType": "Disk", "createdAt": 1673596800.000, "location": { "availabilityZone": "us-east-2a", "regionName": "us-east-2" }, "isTerminal": true, "operationDetails": "", "operationType": "DeleteDisk", "status": "Succeeded", "statusChangedAt": 1673596800.000 } ] }

Si el disco está asociado a una instancia, primero debe desasociarlo mediante el comando detach-disk.

ejemplo – Eliminación de un par de claves

Por último, elimine el par de claves que creó al inicio de este tutorial.

$ aws lightsail delete-key-pair --key-pair-name cli-tutorial-keys { "operation": { "id": "dbfxmpl-c954-4a45-93a4-ab3e627d2c23", "resourceName": "cli-tutorial-keys", "resourceType": "KeyPair", "createdAt": 1673596800.000, "location": { "availabilityZone": "all", "regionName": "us-east-2" }, "isTerminal": true, "operationDetails": "", "operationType": "DeleteKeyPair", "status": "Succeeded", "statusChangedAt": 1673596800.000 } }

Este comando elimina únicamente el par de claves de AWS. Ahora, también puede eliminar la copia local.

$ rm ~/.ssh/cli-tutorial-keys.pem

Pasos a seguir a continuación

Ahora que conoce los conceptos básicos para administrar recursos de Lightsail mediante AWS CLI, explore otras características de Lightsail.

Para obtener más información sobre los comandos de la AWS CLI disponibles, consulte la Referencia de comandos de la AWS CLI para Lightsail.