Amazon Lightsail を AWS CLI に使用する - Amazon Lightsail

Amazon Lightsail を AWS CLI に使用する

このチュートリアルでは、AWS Command Line Interface (AWS CLI) を使用した一般的な Amazon Lightsail オペレーションについて説明します。キーペア、インスタンス、ストレージ、スナップショットなどの Lightsail リソースを作成および管理する方法を学びます。

前提条件

このチュートリアルを開始する前に、以下の要件を満たしていることを確認してください。

  1. AWS CLI インストールする必要がある場合は、「AWS CLI の最新バージョンのインストールまたは更新」に従ってください。AWS CLI を含む AWS CloudShell を使用することもできます。

  2. AWS CLI が適切な認証情報で設定されている。認証情報をまだ設定していない場合は、aws configure を実行します。

  3. コマンドラインインターフェイスと SSH の概念に関する基本的な知識。

  4. AWS アカウントに Lightsail リソースを作成および管理するための十分なアクセス許可

まだ設定していない場合は、開始する前に AWS_REGION 環境変数を、AWS CLI を使用するよう設定したのと同じリージョンに設定します。この環境変数は、Lightsail リソースのアベイラビリティーゾーンを指定するコマンド例で使用されます。

$ [ -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": "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 アドレスとユーザー名を書き留めます。これらはインスタンスに接続するために必要になります。

インスタンスへの接続

インスタンスを作成したら、前に作成したキーペアで SSH を使用してインスタンスに接続できます。このセクションでは、SSH 接続を確立し、セキュリティ設定を管理する方法について説明します。

例 – インスタンスへの 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 コマンドを使用したインスタンスのディスク使用量を示しています。

例 – パブリックポートを閉じる

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 を閉じると、Lightsail コンソールから開始された接続を含むすべての SSH 接続が禁止されます。詳細については、以下のトピックを参照してください。

レスポンスは、ポート 22 が正常に閉じられたことを確認します。SSH 経由で再接続する必要がある場合は、open-instance-public-ports コマンドを使用してポートを再度開くことができます。

インスタンスにストレージを追加する

アプリケーションが大きくなるにつれて、追加のストレージ容量が必要になる場合があります。Lightsail では、追加のディスクを作成してインスタンスにアタッチできます。このセクションでは、ストレージを追加する方法を示します。

例 – ディスクを作成する

次のコマンドで、新しい 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 } ] }

レスポンスは、ディスク作成オペレーションが開始されたことを示します。ディスクが使用可能になるまでに少し時間がかかる場合があります。

例 – ディスクをインスタンスにアタッチする

ディスクが作成されたら、次のコマンドを使用してインスタンスにアタッチできます。

$ 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 ファイルシステムにアタッチする場所を指定します。ディスクをアタッチしたら、インスタンス内からディスクをフォーマットしてマウントする必要があります。

例 – ディスクのアタッチを検証する

ディスクの詳細を取得することで、ディスクが正しくアタッチされていることを確認できます。

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

出力から、ディスクがインスタンスにアタッチされていることが確認できます。「state」フィールドが「in-use」を示し、「isAttached」は 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 } ] }

レスポンスは、スナップショットのプロセスが開始されたことを示します。スナップショットを取得するインスタンスには 1 つの非同期オペレーションがあり、作成されるスナップショットには 1 つの非同期オペレーションがあります。スナップショットには、インスタンスにアタッチされたすべてのディスクが含まれます。

例 – スナップショットから新しいインスタンスを作成する

スナップショットが完了したら、そのスナップショットを使用して新しいインスタンスを作成できます。

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

このコマンドは、small_3_0 バンドルサイズを使用して、アベイラビリティーゾーン us-east-2bcli-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 } }

このコマンドは、AWS からキーペアのみを削除します。これで、ローカルコピーも削除できます。

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

次のステップ

AWS CLI を使用して Lightsail リソースを管理する基本を学習したので、他の Lightsail 機能について説明します。

  1. ドメイン – アプリケーションにドメイン名を割り当てます。

  2. ロードバランサートラフィックを複数のインスタンスにルーティングして、容量と耐障害性を向上させます。

  3. 自動スナップショットアプリケーションデータを自動的にバックアップします

  4. メトリクスリソースの状態のモニタリング、通知の取得、アラームの設定を行います。

  5. データベースアプリケーションをリレーショナルデータベースに接続します

利用可能な AWS CLI コマンドの詳細については、「AWS CLI Command Reference for Lightsail」を参照してください。