Como usar o Amazon Lightsail com o AWS CLI - Amazon Lightsail

Como usar o Amazon Lightsail com o AWS CLI

Este tutorial orienta você pelas operações comuns do Amazon Lightsail usando a AWS Command Line Interface (AWS CLI). Você aprenderá a criar e gerenciar recursos do Lightsail, como pares de chaves, instâncias, armazenamento e snapshots.

Pré-requisitos

Antes de iniciar este tutorial, certifique-se de ter o seguinte.

  1. O AWS CLI. Caso ainda seja necessário instalá-la, consulte o guia de instalação da AWS CLI. Você também pode usar o AWS CloudShell, que contém a AWS CLI.

  2. Certifique-se de que a AWS CLI esteja configurada com as credenciais apropriadas. Caso ainda não tenha realizado a configuração das credenciais, execute o comando aws configure.

  3. Familiaridade básica com as interfaces de linha de comando e os conceitos de SSH.

  4. Permissões suficientes para criar e gerenciar recursos do Lightsail na sua conta da AWS.

Se ainda não fez isto, defina a variável de ambiente AWS_REGION com a mesma região que você configurou para uso na AWS CLI antes de começar. Essa variável de ambiente é usada em exemplos de comandos a fim de especificar uma zona de disponibilidade para recursos do Lightsail.

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

Vamos começar com a criação e o gerenciamento de recursos do Amazon Lightsail usando a CLI.

Gerar pares de chaves SSH

Os pares de chaves SSH permitem a conexão segura com as instâncias do Lightsail sem usar senhas. Nesta seção, você criará um par de chaves e recuperará as informações dele.

exemplo - Criar um par de chaves

O comando a seguir cria um par de chaves SSH chamado “cli-tutorial-keys” e salva a chave privada na 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

Após executar esse comando, a chave privada é salva no seu diretório ~/.ssh com as permissões apropriadas. O comando chmod garante que apenas você possa ler o arquivo da chave privada, que é um requisito de segurança do SSH.

exemplo - Recuperar informações do par de chaves

Para verificar se o par de chaves foi criado com sucesso, recupere as informações dele.

$ 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" } }

O resultado mostra detalhes sobre o par de chaves, como nome, ARN, hora de criação, região e impressão digital. É possível usar essa impressão digital para verificar a autenticidade da chave ao se conectar às instâncias.

Criar e gerenciar instâncias

As instâncias do Lightsail são servidores virtuais privados que executam aplicações ou sites. Nesta seção, você criará uma instância do WordPress e recuperará os dados dela.

exemplo - Criar uma instância do WordPress

O comando a seguir cria uma instância do WordPress usando o pacote nano_3_0 (o menor tamanho de instância do Lightsail) e a associa ao seu par de chaves. O comando usa a variável de ambiente AWS_REGION para criar a instância em uma zona de disponibilidade na sua região configurada.

$ 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 } ] }

A resposta indica que a operação de criar a instância foi iniciada. Pode levar alguns minutos para a instância ficar disponível.

exemplo - Acessar dados da instância

Depois de criar a instância, você pode recuperar os dados usando o comando a seguir.

$ 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" } } }

O resultado contém informações abrangentes sobre a instância, como endereços IP, especificações de hardware, configuração de rede e estado. Anote o nome de usuário e endereço IP público, porque você precisará deles para se conectar à instância.

Conecte-se à sua instância

Depois de criar a instância, você pode se conectar a ela usando SSH com o par de chaves criado anteriormente. Esta seção mostra como você estabelece uma conexão SSH e gerencia configurações de segurança.

exemplo - SSH na sua instância

Use o comando a seguir para se conectar à instância via SSH, substituindo o endereço IP pelo IP público da sua instância.

$ 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

Ao se conectar, você pode gerenciar a instalação do WordPress, configurar o servidor ou instalar software adicional. O exemplo acima mostra o uso do disco na instância com o comando df.

exemplo - Fechar portas públicas

Quando o SSH não está em uso, você pode fechar as portas públicas na sua instância. Isso ajuda a proteger a instância contra tentativas de acesso não 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

Fechar a porta 22 impede todas as conexões SSH, incluindo aquelas iniciadas no console do Lightsail. Para obter mais informações, consulte os tópicos a seguir.

A resposta confirma que a porta 22 foi fechada com êxito. Quando precisar se reconectar via SSH, reabra a porta usando o comando open-instance-public-ports.

Adicionar armazenamento à sua instância

À medida que sua aplicação cresce, você talvez precise de mais espaço de armazenamento. O Lightsail permite criar e anexar discos adicionais às instâncias. Esta seção demonstra como adicionar o armazenamento extra.

exemplo - Criar um disco

O comando a seguir cria um 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 } ] }

A resposta indica que a operação de criar o disco foi iniciada. Pode levar alguns instantes para o disco ficar disponível.

exemplo - Anexar o disco à sua instância

Depois de criar o disco, você pode anexá-lo à instância usando o comando a seguir.

$ 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 } ] }

O parâmetro disk-path especifica onde o disco será anexado no sistema de arquivos do Linux. Depois de anexar o disco, você precisará formatá-lo e montá-lo na sua instância.

exemplo - Verificar disco anexado

Para confirmar se o disco foi anexado corretamente, recupere os dados dele.

$ 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" } }

O resultado confirma que o disco foi anexado à sua instância. O campo “state” mostra “in-use” e “isAttached” está definido como verdadeiro, indicando que foi anexado com êxito.

Criar e usar snapshots

Os snapshots são uma maneira de fazer backup da sua instância e criar instâncias pelo backup. Isso é útil para testes, recuperação de desastres ou criação de ambientes duplicados.

exemplo - Criar um snapshot da instância

O comando a seguir cria um snapshot da instância.

$ 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 } ] }

A resposta indica que o processo do snapshot começou. Há uma operação assíncrona para a instância que receberá o snapshot e outra para o snapshot que será criado. O snapshot abrange todos os discos anexados à instância.

exemplo - Criar uma instância por um snapshot

Depois de terminar o snapshot, você poderá usá-lo para criar uma instância.

$ 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 } ] }

Esse comando cria uma instância chamada cli-tutorial-bup na zona de disponibilidade us-east-2b usando o tamanho de pacote small_3_0. Observação: você pode escolher um tamanho de pacote diferente para a nova instância, o que pode ser útil para aumentar a escala verticalmente ou horizontalmente.

Limpar recursos.

Depois de finalizar este tutorial com seus recursos do Lightsail, exclua todos eles para não gerar cobranças adicionais. Esta seção mostra como limpar os recursos criados neste tutorial.

exemplo - Excluir um snapshot da instância

Para excluir um snapshot de que não precisa mais, use o comando a seguir.

$ 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 } ] }

A resposta confirma que a operação de excluir o snapshot ocorreu com êxito.

exemplo - Excluir uma instância

Para excluir uma instância, use o comando a seguir.

$ 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 } ] }

Lembre-se de excluir todas as instâncias que você criou, incluindo aquelas criadas pelos snapshots.

exemplo - Excluir um disco

Para excluir um disco de que não precisa mais, use o comando a seguir.

$ 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 } ] }

Se o disco estiver anexado a uma instância, você precisará desanexá-lo primeiro com o comando detach-disk.

exemplo - Excluir um par de chaves

Por fim, exclua o par de chaves que criou no início deste 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 } }

Esse comando exclui apenas o par de chaves da AWS. Agora, você pode excluir também a cópia local.

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

Próximas etapas

Agora que você aprendeu os conceitos básicos de como gerenciar recursos do Lightsail usando a AWS CLI, conheça outros recursos do Lightsail.

  1. Domínios: atribua um nome de domínio à sua aplicação.

  2. Balanceadores de carga: encaminhe o tráfego a várias instâncias para aumentar a capacidade e resiliência.

  3. Snapshots automáticos: faça backup automático dos dados da sua aplicação.

  4. Métricas: monitore a integridade dos seus recursos, receba notificações e configure alarmes.

  5. Bancos de dados: conecte sua aplicação a um banco de dados relacional.

Para obter mais informações sobre os comandos da AWS CLI disponíveis, consulte Referência de comandos da AWS CLI para o Lightsail.