

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon Lightsail 搭配 使用 AWS CLI
<a name="getstarted-awscli"></a>

本教學課程使用 AWS Command Line Interface () 引導您完成常見Amazon Lightsail操作AWS CLI。您將了解如何建立和管理 Lightsail 資源，包括金鑰對、執行個體、儲存體和快照。

**Topics**
+ [先決條件](#getstarted-awscli-prerequisites)
+ [產生 SSH 金鑰對](#getstarted-awscli-generate-ssh-key-pairs)
+ [建立和管理執行個體](#getstarted-awscli-create-and-manage-instances)
+ [連線到您的執行個體](#getstarted-awscli-connect-to-your-instance)
+ [將儲存新增至執行個體](#getstarted-awscli-add-storage-to-your-instance)
+ [建立和使用快照](#getstarted-awscli-create-and-use-snapshots)
+ [清除資源](#getstarted-awscli-clean-up-resources)
+ [後續步驟](#getstarted-awscli-next-steps)

## 先決條件
<a name="getstarted-awscli-prerequisites"></a>

開始本教學課程之前，請確定您有下列項目。

1.  AWS CLI。若需安裝，請根據 [AWS CLI 安裝指南](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)進行操作。您也可以[使用 AWS CloudShell](amazon-lightsail-cloudshell.md) ，其中包含 AWS CLI。

1.  AWS CLI 使用適當的登入資料設定您的 。若尚未設定憑證，請執行 `aws configure`。

1. 基本熟悉命令列界面和 SSH 概念。

1. [有足夠的許可](security_iam_service-with-iam.md)來建立和管理您 AWS 帳戶中Lightsail的資源。

如果您尚未設定環境變數，請在開始之前，將`AWS_REGION`環境變數設定為您設定 AWS CLI 使用的相同區域。此環境變數用於範例命令，以指定 Lightsail 資源的可用區域。

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

讓我們開始使用 CLI 建立和管理Amazon Lightsail資源。

## 產生 SSH 金鑰對
<a name="getstarted-awscli-generate-ssh-key-pairs"></a>

SSH 金鑰對可讓您安全地連線至Lightsail執行個體，而無需使用密碼。在本節中，您將建立新的金鑰對並擷取其資訊。

**Example – 建立新的金鑰對**  
下列命令會建立新的 SSH 金鑰對，名稱為 "cli-tutorial-keys"，並將私有金鑰儲存至本機電腦。  

```
$ 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 的安全需求。

**Example – 擷取金鑰對資訊**  
您可以透過擷取金鑰對的資訊來驗證已成功建立金鑰對。  

```
$ 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、建立時間、區域和指紋。連線至執行個體時，此指紋可用來驗證金鑰的真偽。

## 建立和管理執行個體
<a name="getstarted-awscli-create-and-manage-instances"></a>

Lightsail 執行個體是執行應用程式或網站的虛擬私有伺服器。在本節中，您將建立 WordPress 執行個體並擷取其詳細資訊。

**Example – 建立 WordPress 執行個體**  
下列命令會使用`nano_3_0`套件 （最小執行個體大小） 建立新的 WordPress Lightsail 執行個體，並將其與您的金鑰對建立關聯。命令會使用 `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
        }
    ]
}
```

回應表示執行個體建立操作已開始。您的執行個體可能需要幾分鐘的時間才能使用。

**Example – 取得執行個體詳細資訊**  
建立執行個體後，您可以使用下列命令擷取其詳細資訊。  

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

輸出提供有關執行個體的完整資訊，包括其 IP 地址、硬體規格、聯網組態和狀態。請注意公有 IP 地址和使用者名稱，因為您需要這些地址和使用者名稱才能連線到執行個體。

## 連線到您的執行個體
<a name="getstarted-awscli-connect-to-your-instance"></a>

建立執行個體之後，您可以使用 SSH 搭配您先前建立的金鑰對來連線到執行個體。本節說明如何建立 SSH 連線和管理安全設定。

**Example – 執行個體中的 SSH**  
使用下列命令透過 SSH 連線至執行個體，以執行個體的公有 IP 取代 IP 地址。  

```
$ 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
```

連線後，您可以管理 WordPress 安裝、設定伺服器或安裝其他軟體。上述範例顯示執行個體上使用 `df`命令的磁碟用量。

**Example – 關閉公有連接埠**  
當您不使用 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主控台啟動的連線。如需詳細資訊，請參閱下列主題。  
[管理 SSH 金鑰對並連線至您的Lightsail執行個體](understanding-ssh-in-amazon-lightsail.md)
[使用 中的防火牆控制執行個體流量 Lightsail](understanding-firewall-and-port-mappings-in-amazon-lightsail.md)

回應會確認連接埠 22 已成功關閉。當您需要透過 SSH 重新連線時，您可以使用 `open-instance-public-ports`命令重新開啟連接埠。

## 將儲存新增至執行個體
<a name="getstarted-awscli-add-storage-to-your-instance"></a>

隨著應用程式的成長，您可能需要額外的儲存空間。 Lightsail可讓您建立額外的磁碟並將其連接至執行個體。本節示範如何新增額外的儲存空間。

**Example – 建立磁碟**  
下列命令會建立新的 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
        }
    ]
}
```

回應表示磁碟建立操作已開始。磁碟可能需要一些時間才能使用。

**Example – 將磁碟連接至您的執行個體**  
建立磁碟後，您可以使用下列命令將其連接至執行個體。  

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

disk-path 參數指定磁碟將連接在 Linux 檔案系統中的位置。連接磁碟之後，您需要格式化並從執行個體中掛載磁碟。

**Example – 驗證磁碟連接**  
您可以透過擷取其詳細資訊來確認磁碟已正確連接。  

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

輸出會確認磁碟已連接至您的執行個體。「狀態」欄位顯示「使用中」，且「isAttached」設定為 true，表示連接成功。

## 建立和使用快照
<a name="getstarted-awscli-create-and-use-snapshots"></a>

快照可讓您備份執行個體，並從備份建立新執行個體。這適用於災難復原、測試或建立重複的環境。

**Example – 建立執行個體快照**  
下列命令會建立執行個體的快照。  

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

回應表示快照程序已開始。取得快照的執行個體有一個非同步操作，而要建立的快照有一個非同步操作。快照包含連接至執行個體的所有磁碟。

**Example – 從快照建立新執行個體**  
快照完成後，您可以使用它來建立新的執行個體。  

```
$ 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`在可用區域中建立名為 的新執行個體。請注意，您可以為新執行個體選擇不同的套件大小，這對於向上或向下擴展非常有用。

## 清除資源
<a name="getstarted-awscli-clean-up-resources"></a>

完成Lightsail資源後，您應該將其刪除，以避免產生額外費用。本節說明如何清除在本教學課程中建立的所有資源。

**Example – 刪除執行個體快照**  
若要刪除不再需要的快照，請使用下列命令。  

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

回應會確認快照刪除操作已成功。

**Example – 刪除執行個體**  
若要刪除執行個體，請使用下列命令。  

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

請記得刪除您建立的所有執行個體，包括從快照建立的任何執行個體。

**Example – 刪除磁碟**  
若要刪除不再需要的磁碟，請使用下列命令。  

```
$ 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`命令將其分離。

**Example – 刪除金鑰對**  
最後，刪除您在本教學課程開始時建立的金鑰對。  

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

此命令只會從中刪除金鑰對 AWS。現在您也可以刪除本機複本。

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

## 後續步驟
<a name="getstarted-awscli-next-steps"></a>

現在您已了解使用 管理 Lightsail 資源的基本概念 AWS CLI，請探索其他Lightsail功能。

1. **網域** – [將網域名稱](amazon-lightsail-domain-registration.md)指派給您的應用程式。

1. **負載平衡器** – 將[流量路由到多個執行個體](understanding-lightsail-load-balancers.md)，以提高容量和彈性。

1. **自動快照** – [自動備份應用程式資料](amazon-lightsail-configuring-automatic-snapshots.md)。

1. **指標** – [監控資源的運作狀態](amazon-lightsail-resource-health-metrics.md)、取得通知和設定警示。

1. **資料庫** – [將您的應用程式連線至關聯式資料庫](amazon-lightsail-databases.md)。

如需可用 AWS CLI 命令的詳細資訊，請參閱 [AWS CLI 的命令參考Lightsail](https://docs.aws.amazon.com/cli/latest/reference/lightsail/)。