아카이브된 객체 복원 - Amazon Simple Storage Service

아카이브된 객체 복원

S3 Glacier or S3 Glacier Deep Archive 스토리지 클래스에 저장된 Amazon S3 객체에는 즉시 액세스할 수 없습니다. 이 스토리지 클래스의 객체에 액세스하려면 지정된 기간(일) 동안 객체의 임시 복사본을 S3 버킷에 복원해야 합니다. 이 스토리지 클래스의 사용에 대한 자세한 내용은 Amazon S3 스토리지 클래스 사용스토리지 수명 주기 관리 섹션을 참조하세요.

S3 Glacier 또는 S3 Glacier Deep Archive에서 복원된 객체는 지정한 기간 동안만 저장됩니다. 객체의 영구 복사본이 필요한 경우, Amazon S3 버킷에 객체의 복사본을 만드세요. 복사본을 만들지 않는 한 객체는 S3 Glacier 또는 S3 Glacier Deep Archive 스토리지 클래스에 계속 저장됩니다.

Amazon S3에서는 사용자가 지정한 일수를 사용자가 요청한 객체 복원 시간에 더한 다음 익일 자정(UTC)으로 반올림하여 만료 날짜를 계산합니다. 이 계산법은 객체를 처음 복원할 때는 물론 사용자 요청에 따라 가용성을 확장할 때도 적용됩니다. 예를 들어 객체가 2012년 10월 15일 오전 10시 30분(UTC)에 복원되었고 사용자가 일수를 3으로 지정한 경우, 2012년 10월 19일 00:00(UTC)까지 해당 객체를 사용할 수 있습니다. 2012년 10월 16일 오전 11시(UTC)에 객체에 대한 액세스 가능 일수를 1로 변경하는 경우, Amazon S3는 복원된 객체를 2012년 10월 18일 18:00(UTC)까지 사용할 수 있도록 합니다.

아카이브된 객체를 복원하면 아카이브 및 임시로 복원한 복사본 모두에 대해 요금이 청구됩니다. 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하세요.

Amazon S3 콘솔, REST API, AWS SDK 및 AWS Command Line Interface(AWS CLI)를 사용하여 아카이브된 객체를 복원할 수 있습니다.

S3 Glacier 또는 S3 Glacier Deep Archive 스토리지 클래스에 아카이브된 객체를 복원하고, 상태를 확인하고, 진행 중인 복원을 업그레이드하려면 다음 단계를 수행합니다. 이 콘솔에서 이러한 스토리지 클래스에는 GlacierGlacier Deep Archive라는 이름이 사용됩니다.

아카이브된 객체를 복원하려면

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷(Buckets) 목록에서 복원할 객체가 들어 있는 버킷 이름을 선택합니다.

  3. [객체(Objects)] 목록에서 객체 또는 복원할 객체를 선택하고 [작업(Actions)]을 선택한 다음 [복원 시작(Initiate restore)]을 선택합니다.

  4. S3 Glacier 또는 S3 Glacier Deep Archive에서 복원하는 경우 [복원 시작(Initiate restore)] 대화 상자에 아카이브된 데이터에 액세스할 수 있는 기간 (일)을 입력합니다.

  5. [검색 옵션(Retrieval options)]에서 다음 중 하나를 수행합니다.

    • Bulk retrieval(벌크 검색) 또는 Standard retrieval(표준 검색)을 선택하고 복원을 선택합니다.

    • [긴급 검색(Expedited retrieval)을 선택합니다(S3 Glacier 또는 S3 Intelligent-Tiering Archive Access에만 사용 가능).

  6. 프로비저닝된 용량은 S3 Glacier의 객체에만 사용할 수 있습니다. 프로비저닝된 용량이 있는 경우, 복원을 선택하여 프로비저닝된 검색을 시작합니다.

    프로비저닝된 용량이 있으면 모든 신속 검색을 프로비저닝된 용량으로 처리합니다. 자세한 내용은 프로비저닝된 용량 섹션을 참조하세요.

    • 프로비저닝된 용량이 없고 구매할 계획도 없는 경우, 복원을 선택합니다.

    • 프로비저닝된 용량이 없지만 구매할 계획인 경우, 용량 단위 추가를 선택한 다음 구매하기를 선택합니다. 구매 성공 메시지가 나타나면 복원을 선택하여 프로비저닝된 검색을 시작합니다.

복원 진행 중에 복원 속도를 업그레이드할 수 있습니다.

진행 중인 복원을 더 빠른 티어로 업그레이드하는 방법

  1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷 이름 목록에서 복원할 객체가 들어 있는 버킷 이름을 선택합니다.

  3. [객체(Objects)] 목록에서 복원할 객체를 하나 이상 선택하고, [작업(Actions)]을 선택한 후 [Glacier에서 복원(Restore from Glacier)]을 선택합니다. 객체의 복원 상태 점검에 관한 내용은 복원 상태 및 만료 날짜 확인 단원을 참조하세요.

  4. 업그레이드할 계층을 선택한 후 [복원(Restore)]을 선택합니다.

    더 빠른 복원 계층으로 업그레이드하는 방법에 대한 자세한 내용은 진행 중인 복원의 속도 업그레이드 섹션을 참조하세요.

    참고

    S3 Intelligent-Tiering의 표준 및 대량 복원은 무료입니다. 그러나 이미 복원 중인 개체에 대해 호출된 후속 복원 요청은 GET 요청으로 청구됩니다.

복원 상태 및 만료 날짜 확인

객체 개요 패널에서 복원 진행률을 확인할 수 있습니다. 자세한 내용은 Amazon S3 콘솔에서 객체 개요 보기 섹션을 참조하세요. 이 페이지는 복원이 진행 중임을 보여줍니다.

S3 Glacier 또는 S3 Glacier Deep Archive에서 복원하는 경우 [객체 개요(Object overview)]의 임시 복사본에 [복원 만료 날짜(Restoration expiry date)]가 표시됩니다. 이 날짜는 Amazon S3가 아카이브 항목의 복원된 복사본을 제거하는 날짜입니다.

S3 Glacier 또는 S3 Glacier Deep Archive에서 복원된 객체는 지정한 기간 동안만 저장됩니다. 객체의 영구 복사본이 필요한 경우, Amazon S3 버킷에 객체의 복사본을 만드세요.

객체를 복원한 뒤 개요 페이지에서 다운로드할 수 있습니다. 자세한 내용은 Amazon S3 콘솔에서 객체 개요 보기 섹션을 참조하세요.

Java

다음 예제에서는 AWS SDK for Java를 사용하여 아카이브된 객체의 복사본을 복원합니다. 다음 예제는 아카이브된 지정 객체에 대한 복원 요청을 시작하고 복원 상태를 확인합니다.

실제 예제를 작성 및 테스트하는 방법에 대한 자세한 내용은 Amazon S3 Java 코드 예제 테스트 섹션을 참조하세요.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.RestoreObjectRequest; import java.io.IOException; public class RestoreArchivedObject { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Object key ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Create and submit a request to restore an object from Glacier for two days. RestoreObjectRequest requestRestore = new RestoreObjectRequest(bucketName, keyName, 2); s3Client.restoreObjectV2(requestRestore); // Check the restoration status of the object. ObjectMetadata response = s3Client.getObjectMetadata(bucketName, keyName); Boolean restoreFlag = response.getOngoingRestore(); System.out.format("Restoration status: %s.\n", restoreFlag ? "in progress" : "not in progress (finished or failed)"); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

다음 C# 예제는 2일 동안 보관된 객체에 대한 복원 요청을 시작합니다. Amazon S3는 객체 메타데이터에 복원 상태를 유지합니다. 요청을 시작한 후 이 예제에서는 객체 메타데이터를 가져와 RestoreInProgress 속성의 값을 확인합니다.

실제 예제를 작성 및 테스트하는 방법에 대한 자세한 내용은 Amazon S3 .NET 코드 예제 실행 섹션을 참조하세요.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class RestoreArchivedObjectTest { private const string bucketName = "*** bucket name ***"; private const string objectKey = "** archived object key name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); RestoreObjectAsync(client, bucketName, objectKey).Wait(); } static async Task RestoreObjectAsync(IAmazonS3 client, string bucketName, string objectKey) { try { var restoreRequest = new RestoreObjectRequest { BucketName = bucketName, Key = objectKey, Days = 2 }; RestoreObjectResponse response = await client.RestoreObjectAsync(restoreRequest); // Check the status of the restoration. await CheckRestorationStatusAsync(client, bucketName, objectKey); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } static async Task CheckRestorationStatusAsync(IAmazonS3 client, string bucketName, string objectKey) { GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest { BucketName = bucketName, Key = objectKey }; GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest); Console.WriteLine("restoration status: {0}", response.RestoreInProgress ? "in-progress" : "finished or failed"); } } }

Amazon S3에서 제공한 API로 아카이브 복원을 시작합니다. 자세한 내용은 Amazon Simple Storage Service API 참조에서 RestoreObject를 참조하세요.

restore-object 명령을 사용하여 S3 Glacier에서 객체를 복원합니다.

다음 예제에서는 awsexamplebucketdir1/example.obj 객체를 25일간 복원합니다.

aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'

예제에 사용된 JSON 구문으로 인해 Windows 클라이언트에서 오류가 발생하는 경우 복원 요청을 다음 구문으로 바꿉니다.

--restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}

다음 명령을 실행하여 restore-object 요청 상태를 모니터링할 수 있습니다.

aws s3api head-object --bucket awsexamplebucket --key dir1/example.obj

자세한 내용은 AWS CLI 명령 참조에서 restore-object를 참조하세요.