Amazon EBS Direct API 통해 블록 스토리지 스냅샷 생성하기
이제 온프레미스 볼륨, 다른 클라우드 공급자의 볼륨, Amazon Simple Storage Service(S3)에 저장된 기존 블록 데이터 또는 자체 랩톱에 저장된 블록 데이터와 같은 모든 블록 스토리지 데이터에서 Amazon Elastic Block Store(EBS) 스냅샷을 생성할 수 있음을 알려드립니다.
온프레미스 인프라의 재해 복구에 클라우드를 사용하는 AWS 고객은 모두 같은 질문을 합니다. 효율적이고 경제적으로 온프레미스 볼륨 데이터를 클라우드로 전송하는 방법은 무엇입니까? 일반적으로, 임시 Amazon Elastic Compute Cloud (EC2) 인스턴스를 생성하고, Amazon Elastic Block Store(EBS) 볼륨을 연결한 다음 블록 수준에서 온프레미스 데이터를 이러한 새 Amazon Elastic Block Store(EBS) 볼륨으로 전송하고, 생성된 모든 EBS 볼륨의 스냅샷을 생성한 후 임시 인프라를 제거합니다. 일부는 이 프로세스를 간소화하기 위해 CloudEndure를 선택합니다. 복잡성 때문에 온프레미스 볼륨을 클라우드에 복사하는 것을 포기하는 경우도 있습니다.
이 프로세스를 간소화하기 위해 AWS는 오늘 re:Invent 2019에서 발표된 새로운 API 세트인 EBS 직접 API에 포함되는 3개의 새로운 API를 발표합니다. 처음에 출시된 읽기 및 비교 API에 더해 오늘 쓰기 기능이 추가됩니다. 이 3개의 새로운 API를 사용하면 온프레미스 볼륨 또는 AWS에서 저장하고 복구하려는 모든 블록 스토리지 데이터에서 Amazon Elastic Block Store(EBS) 스냅샷을 생성할 수 있습니다.
EBS 직접 API에 추가된 쓰기 기능을 사용하여 이제 온프레미스 볼륨에서 새 스냅샷을 생성하거나 증분 스냅샷을 생성하고 삭제할 수 있습니다. 스냅샷을 생성한 후에는 Amazon Elastic Block Store(EBS) 볼륨에서 생성한 스냅샷과 동일한 모든 이점을 활용할 수 있습니다. 스냅샷을 복사하거나, AWS 계정 간에 공유하거나, 빠른 스냅샷 복원에 사용하거나, 스냅샷에서 Amazon Elastic Block Store(EBS) 볼륨을 생성할 수 있습니다.
Amazon Elastic Compute Cloud(EC2) 인스턴스 및 Amazon Elastic Block Store(EBS) 볼륨을 구동할 필요 없이 모든 볼륨에서 Amazon Elastic Block Store(EBS) 스냅샷을 생성할 수 있으므로 클라우드에서 재해 복구 복사본을 생성하고 관리하는 프로세스가 간소화되고 비용이 절감됩니다.
API 세부 정보
먼저, StartSnapshot
을 호출하여 새 스냅샷을 생성합니다. 증분 스냅샷의 경우 상위 스냅샷의 ID를 전달하면 됩니다. 평상시처럼 스냅샷에 적용할 추가 태그를 전달하거나 이러한 스냅샷을 암호화하고 키를 관리할 수도 있습니다. 스냅샷 암호화를 선택할 때는 AWS의 기술 설명서를 확인하여 미묘한 차이와 옵션을 파악하십시오.
그런 다음 각 데이터 블록에 대해 PutSnapshotBlock
을 호출합니다. 이 API에는 snapshot-id
, block-index
, block-data
, block-length
, checksum
및 checksum-algorithm
의 6가지 필수 파라미터가 있습니다. API는 512KB의 블록 길이를 지원합니다. 원하는 순서로 블록을 전송하고 동시에 전송할 수 있습니다. block-index
는 올바른 순서를 유지하는 역할을 합니다.
모든 블록을 전송한 후 전송한 블록의 수가 포함된 changed-blocks-count
파라미터와 함께 CompleteSnapshot
을 호출합니다.
세부 호출 절차
다음은 스냅샷을 생성할 때 작성해야 하는 pseudo 코드입니다.
AmazonEBS amazonEBS = AmazonEBSClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpointName, awsRegion))
.withCredentials(credentialsProvider)
.build();
response = amazonEBS.startSnapshot(startSnapshotRequest)
snapshotId = response.getSnapshotId();
for each (block in changeset) {
putResponse = amazonEBS.putSnapshotBlock(putSnapshotBlockRequest);
}
amazonEBS.completeSnapshot(completeSnapshotRequest);
이 코드를 사용할 때는 새 API 호출을 허용하는 적절한 IAM 정책이 있어야 합니다. 예를 들면 다음과 같습니다.
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"ebs:StartSnapshot",
"ebs:PutSnapshotBlock",
"ebs:CompleteSnapshot"
],
"Resource": "arn:aws:ec2:<Region>::snapshot/*" }]
암호화된 스냅샷을 생성하는 경우 KMS 관련 권한도 포함합니다.
PutSnapshotBlock
을 호출할 때는 스냅샷의 스토리지 비용에 더해 API 호출당 요금이 부과됩니다.
이러한 새로운 스냅샷 API는 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(캘리포니아 북부), 미국 서부(오레곤), 아시아 태평양(홍콩), 아시아 태평양(뭄바이), 아시아 태평양(서울), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 아시아 태평양(도쿄), 캐나다(중부), 중국(베이징), 중국(닝샤), EU(프랑크푸르트), EU(아일랜드), EU(런던), EU(파리), EU(스톡홀름), 중동(바레인) 및 남아메리카(상파울루) AWS 리전에서 제공됩니다.
지금 바로 사용할 수 있습니다.
Leave a Reply