AWS CLI에서 인스턴스에 연결된 볼륨 ID를 얻는 방법

AWS CLI에서 인스턴스에 연결된 볼륨 ID를 얻는 방법

메타데이터에서 인스턴스 ID를 얻는 방법처럼 인스턴스에 연결된 볼륨 ID를 얻고 싶습니다.

InstanceID=`curl http://169.254.169.254/latest/meta-data/instance-id

답변1

메타데이터에서는 볼륨 ID를 사용할 수 없습니다. 가상 장치는 다음에서 사용할 수 있습니다.block-device-mapping/

인스턴스에 할당된 볼륨 ID를 얻으려면 AWS CLI(또는 스크립트, 프로그램 등)를 사용해야 합니다.

CLI를 사용하면:

aws ec2 describe-volumes

출력에는 볼륨이 연결된 인스턴스 ID가 포함됩니다.

인스턴스 ID를 알고 나면 해당 인스턴스에 연결된 볼륨만 필터링할 수 있습니다.

aws ec2 describe-volumes --filters Name=attachment.instance-id,Values=i-555550604eaf99999

문서에는 더 자세한 내용과 예제가 있습니다.

설명 볼륨

답변2

제 경우에는 셸 액세스 권한만 있는 인스턴스에서 볼륨 ID를 검색해야 했습니다. VM을 설정한 고객에게 볼륨 ID를 전달해야 했습니다.

이 경우 aws 프로필이 없고 볼륨 ID만 얻으면 ebsnvme-idLinux 배포판에 사전 설치된 aws 도구를 사용할 수 있습니다(https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html)

그래서 예:

$ sudo /sbin/ebsnvme-id /dev/nvme1n1
Volume ID: vol-c26087a73f2293647
sdb

답변3

답변은 이미 제공되었지만 쿼리를 실행 중인 현재 인스턴스 연결 볼륨을 찾고 있었습니다.

따라서 instance Id컬 응답에서 을 전달할 수 있습니다.

aws ec2 describe-volumes --filters Name=attachment.instance-id,Values=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)

샘플 출력

{
    "Volumes": [
        {
            "AvailabilityZone": "us-west-2b", 
            "Attachments": [
                {
                    "AttachTime": "2018-03-01T07:47:43.000Z", 
                    "InstanceId": "i-abcdedf", 
                    "VolumeId": "vol-12345", 
                    "State": "attached", 
                    "DeleteOnTermination": true, 
                    "Device": "/dev/xvda"
                }
            ], 
            "Encrypted": false, 
            "VolumeType": "gp2", 
            "VolumeId": "vol-123456", 
            "State": "in-use", 
            "Iops": 450, 
            "SnapshotId": "snap-1234", 
            "CreateTime": "2018-03-01T07:47:43.261Z", 
            "Size": 150
        }
    ]
}

관련 정보