EBS 다이렉트 API를 사용하여 Amazon EBS 스냅샷 쓰기
다음 단계에서는 EBS 다이렉트 API를 사용하여 증분 스냅샷을 쓰는 방법을 설명합니다.
-
StartSnapshot 작업을 사용하고 상위 스냅샷 ID를 지정하여 기존 스냅샷의 증분 스냅샷으로 스냅샷을 시작하거나 상위 스냅샷 ID를 생략하여 새 스냅샷을 시작합니다. 이 작업은 대기 중 상태의 새 스냅샷 ID를 반환합니다.
-
PutSnapshotBlock 작업을 사용하고 대기 중인 스냅샷의 ID를 지정하여 개별 블록 형식으로 데이터를 추가합니다. 전송되는 데이터의 블록에 대해 Base64 인코딩 SHA256 체크섬을 지정해야 합니다. 이 서비스는 수신된 데이터의 체크섬을 계산하고 지정된 체크섬과 대조하여 검증합니다. 체크섬이 일치하지 않으면 작업이 실패합니다.
-
대기 중인 스냅샷에 데이터를 추가했으면 CompleteSnapshot 작업을 사용하여 스냅샷을 봉인하고 완료됨 상태로 전환하는 비동기 워크플로우를 시작합니다.
이 단계를 반복하여 이전에 생성한 스냅샷을 상위 스냅샷으로 사용해 새 증분 스냅샷을 생성합니다.
예를 들어 다음 다이어그램에서 스냅샷 A는 처음 시작된 새 스냅샷입니다. 스냅샷 A는 스냅샷 B를 시작하는 데 상위 스냅샷으로 사용됩니다. 스냅샷 B는 스냅샷 C를 시작하고 생성하는 데 상위 스냅샷으로 사용됩니다. 스냅샷 A, B, C는 증분 스냅샷입니다. 스냅샷 A는 EBS 볼륨 1을 생성하는 데 사용됩니다. 스냅샷 D는 EBS 볼륨 1에서 생성됩니다. 스냅샷 D는 A의 증분 스냅샷이며 B 또는 C의 증분 스냅샷이 아닙니다.
다음 예에서는 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-block 예제 명령은 스냅샷 snap-0aaEXAMPLEe306d62의 블록 인덱스 1000에 524288바이트의 데이터를 씁니다. 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의 블록 인덱스 1000에 snap-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"}