本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Amazon Lightsail 与 AWS CLI
本教程将指导你使用 AWS Command Line Interface ()AWS CLI完成常见的 Amazon Lightsail 操作。您将学习如何创建和管理 Lightsail 资源,包括密钥对、实例、存储和快照。
先决条件
在开始本教程之前,请确保您已具备以下内容。
-
的 AWS CLI。如果需要安装,请按照AWS CLI 安装指南进行操作。您也可以使用 AWS CloudShell,其中包括 AWS CLI。
-
为你配置 AWS CLI 了相应的凭证。
aws configure
如果您尚未设置凭据,请运行。 -
基本熟悉命令行界面和 SSH 概念。
-
在您的 AWS 账户中创建和管理 Lightsail 资源的@@ 足够权限。
在开始之前,请将AWS_REGION
环境变量设置为与您配置为使用的相同区域(如果尚未设置)。此环境变量用于在示例命令中为 Lightsail 资源指定可用区。 AWS CLI
$
[ -z "${AWS_REGION}" ] && export AWS_REGION=$(aws configure get region)
让我们开始使用 CLI 创建和管理 Amazon Lightsail 资源。
生成 SSH 密钥对
SSH 密钥对允许您在不使用密码的情况下安全地连接到 Lightsail 实例。在本节中,您将创建一个新的密钥对并检索其信息。
例 — 创建新的密钥对
以下命令创建一个名为 “cli-tutorial-keys” 的新 SSH 密钥对,并将私钥保存到本地计算机。
$
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
运行此命令后,私钥将以适当的权限保存到您的~/.ssh
目录中。该chmod
命令可确保只有您才能读取私钥文件,这是 SSH 的安全要求。
例 — 检索密钥对信息
您可以通过检索密钥对的信息来验证密钥对是否已成功创建。
$
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" } }
输出显示有关您的密钥对的详细信息,包括其名称、ARN、创建时间、区域和指纹。连接到实例时,此指纹可用于验证密钥的真实性。
创建和管理实例
Lightsail 实例是运行应用程序或网站的虚拟专用服务器。在本节中,您将创建一个 WordPress 实例并检索其详细信息。
例 — 创建实 WordPress 例
以下命令使用nano_3_0
捆绑包(最小的 Lightsail 实例大小)创建一个新 WordPress 实例,并将其与您的密钥对相关联。该命令使用AWS_REGION
环境变量在您配置的区域的可用区中创建实例。
$
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 } ] }
响应表示实例创建操作已开始。您的实例可能需要几分钟才能变为可用。
例 — 获取实例详情
创建实例后,您可以使用以下命令检索其详细信息。
$
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": "203.0.113.75", "ipv6Addresses": [ "2600:1f14:ab4:3800:ceef:89e2:f57:f25" ], "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" } } }
输出提供了有关您的实例的全面信息,包括其 IP 地址、硬件规格、网络配置和状态。记下公有 IP 地址和用户名,因为您需要这些地址和用户名才能连接到您的实例。
连接到您的实例
创建实例后,您可以使用之前创建的密钥 pair 使用 SSH 连接到该实例。本节介绍如何建立 SSH 连接和管理安全设置。
例 — SSH 进入你的实例
使用以下命令通过 SSH 连接到您的实例,将 IP 地址替换为实例的公有 IP。
$
ssh -i ~/.ssh/cli-tutorial-keys.pem bitnami@
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/1000203.0.113.75
连接后,您可以管理 WordPress 安装、配置服务器或安装其他软件。上面的示例使用df
命令显示了实例的磁盘使用情况。
例 — 关闭公共端口
当您不使用 SSH 时,可以关闭实例上的公共端口。这有助于保护您的实例免受未经授权的访问尝试。
$
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 } }
注意
关闭端口 22 会阻止所有 SSH 连接,包括从 Lightsail 控制台启动的连接。有关更多信息,请参阅以下主题。
响应确认端口 22 已成功关闭。当你需要通过 SSH 重新连接时,你可以使用open-instance-public-ports
命令重新打开端口。
向您的实例添加存储空间
随着应用程序的增长,您可能需要额外的存储空间。Lightsail 允许您创建其他磁盘并将其连接到您的实例。本节演示如何添加额外的存储空间。
例 — 创建磁盘
以下命令创建一个新的 32GB 磁盘。
$
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 } ] }
响应表示磁盘创建操作已开始。磁盘可能需要一段时间才能变为可用。
例 — 将磁盘连接到您的实例
创建磁盘后,您可以使用以下命令将其连接到您的实例。
$
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 } ] }
磁盘路径参数指定磁盘在 Linux 文件系统中的连接位置。挂载磁盘后,您需要将其格式化并从实例中挂载。
例 — 验证磁盘附件
您可以通过检索磁盘的详细信息来确认磁盘是否已正确连接。
$
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" } }
输出确认磁盘已连接到您的实例。“状态” 字段显示 “正在使用”,“isAttacted” 设置为 true,表示连接成功。
创建和使用快照
快照提供了一种备份实例并利用备份创建新实例的方法。这对于灾难恢复、测试或创建重复环境非常有用。
例 — 创建实例快照
以下命令创建您的实例的快照。
$
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 } ] }
响应表示快照过程已启动。获取快照的实例有一个异步操作,一个用于正在创建的快照的异步操作。快照包括连接到该实例的所有磁盘。
例 — 从快照创建新实例
快照完成后,您可以使用它来创建新实例。
$
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 } ] }
此命令us-east-2b
使用small_3_0
捆绑包大小cli-tutorial-bup
在可用区中创建一个名为的新实例。请注意,您可以为新实例选择不同的捆绑包大小,这对于向上或向下扩展非常有用。
清理资源
使用 Lightsail 资源后,应将其删除,以免产生额外费用。本节向您展示如何清理本教程中创建的所有资源。
例 — 删除实例快照
要删除不再需要的快照,请使用以下命令。
$
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 } ] }
响应确认快照删除操作已成功。
例 — 删除实例
要删除实例,请使用以下命令。
$
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 } ] }
记得删除您创建的所有实例,包括通过快照创建的所有实例。
例 — 删除磁盘
要删除不再需要的磁盘,请使用以下命令。
$
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 } ] }
如果磁盘已连接到实例,则需要先使用detach-disk
命令将其分离。
例 — 删除密钥对
最后,删除您在本教程开头创建的密钥对。
$
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 } }
此命令仅从中删除 key pair AWS。现在,您也可以删除本地副本。
$
rm ~/.ssh/cli-tutorial-keys.pem
后续步骤
既然你已经学习了使用管理 Lightsail 资源的基础知识,那就 AWS CLI来探索其他 Lightsail 功能吧。
-
域名-为您的应用程序分配域名。
-
负载均衡器-将流量路由到多个实例,以提高容量和弹性。
-
自动快照-自动备份您的应用程序数据。
-
数据库-将您的应用程序连接到关系数据库。
有关可用 AWS CLI 命令的更多信息,请参阅 Lightsa AWS CLI il 的命令参考。