와 Amazon Lightsail 함께 사용 AWS CLI - Amazon Lightsail

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

와 Amazon Lightsail 함께 사용 AWS CLI

이 자습서에서는 ()를 사용하는 일반적인 Amazon Lightsail 작업을 안내합니다 AWS Command Line Interface AWS CLI. 키 페어, 인스턴스, 스토리지 및 스냅샷을 포함한 Lightsail 리소스를 생성하고 관리하는 방법을 알아봅니다.

사전 조건

이 자습서를 시작하기 전에 다음이 있는지 확인하세요.

  1. AWS CLI. 설치해야 하는 경우 AWS CLI 설치 가이드를 따르세요. 가 포함된를 사용할 AWS CloudShell 수도 있습니다 AWS CLI.

  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 번들(가장 작은 인스턴스 크기)을 사용하여 새 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 } ] }

응답은 인스턴스 생성 작업이 시작되었음을 나타냅니다. 인스턴스를 사용할 수 있게 되는 데 몇 분 정도 걸릴 수 있습니다.

예 - 인스턴스 세부 정보 가져오기

인스턴스가 생성되면 다음 명령을 사용하여 세부 정보를 검색할 수 있습니다.

$ 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 주소와 사용자 이름은 인스턴스에 연결하는 데 필요하므로 기록해 둡니다.

인스턴스에 연결합니다

인스턴스를 생성한 후 이전에 생성한 키 페어와 함께 SSH를 사용하여 인스턴스에 연결할 수 있습니다. 이 섹션에서는 SSH 연결을 설정하고 보안 설정을 관리하는 방법을 보여줍니다.

예 - 인스턴스에 대한 SSH

다음 명령을 사용하여 SSH를 통해 인스턴스에 연결하고 IP 주소를 인스턴스의 퍼블릭 IP로 바꿉니다.

$ ssh -i ~/.ssh/cli-tutorial-keys.pem bitnami@203.0.113.75 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 사용하면 추가 디스크를 생성하고 인스턴스에 연결할 수 있습니다. 이 섹션에서는 스토리지를 추가하는 방법을 보여줍니다.

예 - 디스크 생성

다음 명령은 새 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" } }

출력은 디스크가 인스턴스에 연결되어 있음을 확인합니다. '상태' 필드에 '사용 중'이 표시되고 '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 } ] }

응답은 스냅샷 프로세스가 시작되었음을 나타냅니다. 스냅샷을 가져오는 인스턴스에는 하나의 비동기 작업이 있고 생성 중인 스냅샷에는 하나의 작업이 있습니다. 스냅샷에는 인스턴스에 연결된 모든 디스크가 포함됩니다.

예 - 스냅샷에서 새 인스턴스 생성

스냅샷이 완료되면 스냅샷을 사용하여 새 인스턴스를 생성할 수 있습니다.

$ 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-2b 사용하여 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 } }

이 명령은 키 페어만 삭제합니다 AWS. 이제 로컬 복사본도 삭제할 수 있습니다.

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

다음 단계

이제를 사용하여 Lightsail 리소스를 관리하는 기본 사항을 배웠으므로 다른 Lightsail 기능을 AWS CLI살펴봅니다.

  1. 도메인 - 애플리케이션에 도메인 이름을 할당합니다.

  2. 로드 밸런서 - 트래픽을 여러 인스턴스로 라우팅하여 용량과 복원력을 높입니다.

  3. 자동 스냅샷 - 애플리케이션 데이터를 자동으로 백업합니다.

  4. 지표 - 리소스 상태를 모니터링하고, 알림을 받고, 경보를 설정합니다.

  5. 데이터베이스 - 애플리케이션을 관계형 데이터베이스에 연결합니다.

사용 가능한 AWS CLI 명령에 대한 자세한 내용은 AWS CLI 에 대한 명령 참조Lightsail를 참조하세요.