EBS 다이렉트 API를 사용하여 Amazon EBS 스냅샷 쓰기 - Amazon EBS

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

EBS 다이렉트 API를 사용하여 Amazon EBS 스냅샷 쓰기

다음 단계에서는 EBS 다이렉트 API를 사용하여 증분 스냅샷을 쓰는 방법을 설명합니다.

  1. StartSnapshot 작업을 사용하고 상위 스냅샷 ID를 지정하여 기존 스냅샷의 증분 스냅샷으로 스냅샷을 시작하거나 상위 스냅샷 ID를 생략하여 새 스냅샷을 시작합니다. 이 작업은 대기 중 상태의 새 스냅샷 ID를 반환합니다.

  2. PutSnapshotBlock 작업을 사용하고 대기 중인 스냅샷의 ID를 지정하여 개별 블록 형식으로 데이터를 추가합니다. 전송되는 데이터의 블록에 대해 Base64 인코딩 SHA256 체크섬을 지정해야 합니다. 이 서비스는 수신된 데이터의 체크섬을 계산하고 지정된 체크섬과 대조하여 검증합니다. 체크섬이 일치하지 않으면 작업이 실패합니다.

  3. 대기 중인 스냅샷에 데이터를 추가했으면 CompleteSnapshot 작업을 사용하여 스냅샷을 봉인하고 완료됨 상태로 전환하는 비동기 워크플로우를 시작합니다.

이 단계를 반복하여 이전에 생성한 스냅샷을 상위 스냅샷으로 사용해 새 증분 스냅샷을 생성합니다.

예를 들어 다음 다이어그램에서 스냅샷 A는 처음 시작된 새 스냅샷입니다. 스냅샷 A는 스냅샷 B를 시작하는 데 상위 스냅샷으로 사용됩니다. 스냅샷 B는 스냅샷 C를 시작하고 생성하는 데 상위 스냅샷으로 사용됩니다. 스냅샷 A, B, C는 증분 스냅샷입니다. 스냅샷 A는 EBS 볼륨 1을 생성하는 데 사용됩니다. 스냅샷 D는 EBS 볼륨 1에서 생성됩니다. 스냅샷 D는 A의 증분 스냅샷이며 B 또는 C의 증분 스냅샷이 아닙니다.

EBS direct API를 사용한 증분 스냅샷 생성

다음 예에서는 EBS 다이렉트 API를 사용하여 스냅샷을 쓰는 방법을 보여 줍니다.

스냅샷 시작

AWS CLI

다음 start-snapshot 예제 요청은 스냅샷 8을 상위 스냅샷으로 사용하여 snap-123EXAMPLE1234567GiB 스냅샷을 시작합니다. 새 스냅샷은 상위 스냅샷의 증분 스냅샷이 됩니다. 지정된 60분의 제한 시간 내에 스냅샷에 대한 추가 또는 완료 요청이 없으면 스냅샷이 오류 상태로 전환됩니다. 550e8400-e29b-41d4-a716-446655440000 클라이언트 토큰은 요청에 대한 멱등성을 보장합니다. 이 클라이언트 토큰이 생략되면 AWS SDK에서 자동으로 생성됩니다. 멱등성에 대한 자세한 내용은 StartSnapshot API 요청에서 멱등성 보장 섹션을 참조하세요.

aws ebs start-snapshot --volume-size 8 --parent-snapshot snap-123EXAMPLE1234567 --timeout 60 --client-token 550e8400-e29b-41d4-a716-446655440000

이전 명령에 대한 다음 예제 응답은 스냅샷 ID, AWS 계정 ID, 상태, 볼륨 크기(GiB) 및 스냅샷의 블록 크기를 보여줍니다. 스냅샷이 pending 상태로 시작됩니다. 후속 put-snapshot-block 명령에서 스냅샷 ID를 지정하여 스냅샷에 데이터를 쓴 다음 complete-snapshot 명령을 사용하여 스냅샷을 완료하고 상태를 completed로 변경합니다.

{ "SnapshotId": "snap-0aaEXAMPLEe306d62", "OwnerId": "111122223333", "Status": "pending", "VolumeSize": 8, "BlockSize": 524288 }
AWS API

다음 StartSnapshot 예제 요청은 스냅샷 8을 상위 스냅샷으로 사용하여 snap-123EXAMPLE1234567GiB 스냅샷을 시작합니다. 새 스냅샷은 상위 스냅샷의 증분 스냅샷이 됩니다. 지정된 60분의 제한 시간 내에 스냅샷에 대한 추가 또는 완료 요청이 없으면 스냅샷이 오류 상태로 전환됩니다. 550e8400-e29b-41d4-a716-446655440000 클라이언트 토큰은 요청에 대한 멱등성을 보장합니다. 이 클라이언트 토큰이 생략되면 AWS SDK에서 자동으로 생성됩니다. 멱등성에 대한 자세한 내용은 StartSnapshot API 요청에서 멱등성 보장 섹션을 참조하세요.

POST /snapshots HTTP/1.1 Host: ebs.us-east-2.amazonaws.com Accept-Encoding: identity User-Agent: <User agent parameter> X-Amz-Date: 20200618T040724Z Authorization: <Authentication parameter> { "VolumeSize": 8, "ParentSnapshot": snap-123EXAMPLE1234567, "ClientToken": "550e8400-e29b-41d4-a716-446655440000", "Timeout": 60 }

이전 요청에 대한 다음 예제 응답은 스냅샷 ID, AWS 계정 ID, 상태, 볼륨 크기(GiB) 및 스냅샷의 블록 크기를 보여줍니다. 스냅샷이 대기 중 상태로 시작됩니다. 후속 PutSnapshotBlocks 요청에서 스냅샷 ID를 지정하여 스냅샷에 데이터를 씁니다.

HTTP/1.1 201 Created x-amzn-RequestId: 929e6eb9-7183-405a-9502-5b7da37c1b18 Content-Type: application/json Content-Length: 181 Date: Thu, 18 Jun 2020 04:07:29 GMT Connection: keep-alive { "BlockSize": 524288, "Description": null, "OwnerId": "138695307491", "Progress": null, "SnapshotId": "snap-052EXAMPLEc85d8dd", "StartTime": null, "Status": "pending", "Tags": null, "VolumeSize": 8 }

스냅샷에 데이터 추가

AWS CLI

다음 put-snapshot 예제 명령은 스냅샷 524288의 블록 인덱스 1000snap-0aaEXAMPLEe306d62바이트의 데이터를 씁니다. Base64로 인코딩된 QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= 체크섬은 SHA256 알고리즘을 사용하여 생성되었습니다. 전송되는 데이터는 /tmp/data 파일에 있습니다.

aws ebs put-snapshot-block --snapshot-id snap-0aaEXAMPLEe306d62 --block-index 1000 --data-length 524288 --block-data /tmp/data --checksum QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= --checksum-algorithm SHA256

이전 명령에 대한 다음 예제 응답은 서비스에서 수신한 데이터의 데이터 길이, 체크섬 및 체크섬 알고리즘을 확인합니다.

{ "DataLength": "524288", "Checksum": "QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=", "ChecksumAlgorithm": "SHA256" }
AWS API

다음 PutSnapshot 예제 요청은 스냅샷 524288의 블록 인덱스 1000snap-052EXAMPLEc85d8dd바이트의 데이터를 씁니다. Base64로 인코딩된 QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= 체크섬은 SHA256 알고리즘을 사용하여 생성되었습니다. 데이터는 요청 본문에 포함돼 전송되며 다음 예에서는 BlockData로 표시되어 있습니다.

PUT /snapshots/snap-052EXAMPLEc85d8dd/blocks/1000 HTTP/1.1 Host: ebs.us-east-2.amazonaws.com Accept-Encoding: identity x-amz-Data-Length: 524288 x-amz-Checksum: QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= x-amz-Checksum-Algorithm: SHA256 User-Agent: <User agent parameter> X-Amz-Date: 20200618T042215Z X-Amz-Content-SHA256: UNSIGNED-PAYLOAD Authorization: <Authentication parameter> BlockData

이전 요청에 대한 다음 예제 응답은 서비스에서 수신한 데이터의 데이터 길이, 체크섬 및 체크섬 알고리즘을 확인합니다.

HTTP/1.1 201 Created x-amzn-RequestId: 643ac797-7e0c-4ad0-8417-97b77b43c57b x-amz-Checksum: QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= x-amz-Checksum-Algorithm: SHA256 Content-Type: application/json Content-Length: 2 Date: Thu, 18 Jun 2020 04:22:12 GMT Connection: keep-alive {}

스냅샷 완료

AWS CLI

다음 complete-snapshot 예제 명령은 스냅샷 snap-0aaEXAMPLEe306d62를 완료합니다. 이 명령은 5 블록을 스냅샷에 쓰도록 지정합니다. 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= 체크섬은 스냅샷에 쓴 전체 데이터 세트의 체크섬을 나타냅니다. 체크섬에 대한 자세한 내용은 이 설명서 앞부분에 있는 EBS 다이렉트 API 체크섬을 사용하여 스냅샷 데이터 검증 섹션을 참조하세요.

aws ebs complete-snapshot --snapshot-id snap-0aaEXAMPLEe306d62 --changed-blocks-count 5 --checksum 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= --checksum-algorithm SHA256 --checksum-aggregation-method LINEAR

다음은 이전 명령에 대한 응답의 예입니다.

{ "Status": "pending" }
AWS API

다음 CompleteSnapshot 예제 요청은 스냅샷 snap-052EXAMPLEc85d8dd를 완료합니다. 이 명령은 5 블록을 스냅샷에 쓰도록 지정합니다. 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= 체크섬은 스냅샷에 쓴 전체 데이터 세트의 체크섬을 나타냅니다.

POST /snapshots/completion/snap-052EXAMPLEc85d8dd HTTP/1.1 Host: ebs.us-east-2.amazonaws.com Accept-Encoding: identity x-amz-ChangedBlocksCount: 5 x-amz-Checksum: 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= x-amz-Checksum-Algorithm: SHA256 x-amz-Checksum-Aggregation-Method: LINEAR User-Agent: <User agent parameter> X-Amz-Date: 20200618T043158Z Authorization: <Authentication parameter>

다음은 이전 요청에 대한 응답의 예입니다.

HTTP/1.1 202 Accepted x-amzn-RequestId: 06cba5b5-b731-49de-af40-80333ac3a117 Content-Type: application/json Content-Length: 20 Date: Thu, 18 Jun 2020 04:31:50 GMT Connection: keep-alive {"Status":"pending"}