

 **이 페이지는 볼트와 2012년부터 원래 REST API를 사용하는 Amazon Glacier 서비스의 기존 고객만 사용할 수 있습니다.**

아카이브 스토리지 솔루션을 찾고 있다면 Amazon S3의 Amazon Glacier 스토리지 클래스, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive를 사용하는 것이 좋습니다. 이러한 스토리지 옵션에 대한 자세한 내용은 [Amazon Glacier 스토리지 클래스](https://aws.amazon.com/s3/storage-classes/glacier/)를 참조하세요.

Amazon Glacier(기존 독립 실행형 볼트 기반 서비스)는 더 이상 신규 고객을 받지 않습니다. Amazon Glacier는 데이터를 볼트에 저장하고 Amazon S3 및 Amazon S3 Glacier 스토리지 클래스와 구별되는 자체 API를 갖춘 독립 실행형 서비스입니다. 기존 데이터는 Amazon Glacier에서 무기한으로 안전하게 보관되며 액세스 가능합니다. 마이그레이션은 필요하지 않습니다. 저비용 장기 아카이브 스토리지의 경우는 [S3 버킷 기반 API, 전체 가용성, 저렴한 비용 및 서비스 통합을 통해 우수한 고객 경험을 제공하는 Amazon S3 Glacier 스토리지 클래스](https://aws.amazon.com/s3/storage-classes/glacier/)를 AWS 권장합니다. S3 APIs AWS 리전 AWS 향상된 기능을 원하는 경우 [Amazon Glacier 볼트에서 Amazon S3 Glacier 스토리지 클래스로 데이터를 전송하기 위한AWS 솔루션 지침](https://aws.amazon.com/solutions/guidance/data-transfer-from-amazon-s3-glacier-vaults-to-amazon-s3/)을 사용하여 Amazon S3 Glacier 스토리지 클래스로 마이그레이션하는 것이 좋습니다.

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

# Amazon Glacier 시작하기
<a name="amazon-glacier-getting-started"></a>

볼트와 아카이브를 사용하여 Amazon Glacier(Amazon Glacier)를 시작할 수 있습니다. *볼트*란 아카이브를 저장하는 컨테이너를 말하며, *아카이브*는 사진, 동영상 또는 문서 등 볼트에 저장되는 객체를 말합니다. 아카이브는 Amazon Glacier에서 스토리지의 기본 단위입니다. 이번 시작하기 연습에서는 볼트 및 아카이브에서 기본적인 Amazon Glacier 작업을 탐색하기 위한 지침을 제공합니다. 이 리소스에 대한 자세한 내용은 [Amazon Glacier 데이터 모델](amazon-glacier-data-model.md) 섹션을 참조하세요.

시작하기 연습에서는 볼트를 생성하고 아카이브를 업로드 및 다운로드한 후 아카이브와 볼트를 다시 삭제하는 연습을 합니다. 이 모든 작업을 프로그래밍 방식으로도 할 수 있지만 이 연습에서는 Amazon Glacier 관리 콘솔을 사용하여 볼트를 생성하고 삭제합니다. 아카이브 업로드 및 다운로드를 위해이 시작하기 섹션에서는 AWS SDK for Java 및에 대한 상위 수준 API를 사용합니다 AWS SDK for .NET. 하이레벨 API는 Amazon Glacier 작업 시 매우 간편한 프로그래밍 환경을 지원합니다. AWS SDKs[Amazon Glacier에서 AWS SDKs 사용](using-aws-sdk.md).

 

**중요**  
Amazon Glacier는 콘솔을 제공합니다. 그러나 업로드, 다운로드 또는 삭제와 같은 아카이브 작업을 수행하려면 AWS Command Line Interface (CLI) 또는 쓰기 코드를 사용해야 합니다. 콘솔은 아카이브 작업을 지원하지 않습니다. 예를 들어 사진, 비디오 및 기타 문서와 같은 데이터를 업로드하려면 AWS CLI 를 사용하거나 REST API를 직접 사용하거나 AWS SDKs를 사용하여 요청 코드를 작성해야 합니다.  
를 설치하려면 단원을 AWS CLI참조하십시오[AWS Command Line Interface](https://aws.amazon.com/cli/). 에서 Amazon Glacier를 사용하는 방법에 대한 자세한 내용은 Amazon Glacier 참조를 AWS CLI참조하세요. [AWS CLI Amazon Glacier](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html) 를 사용하여 Amazon Glacier AWS CLI 에 아카이브를 업로드하는 예제는 [에서 Amazon Glacier 사용을 참조하세요 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-glacier.html).

이번 시작하기 연습에서는 아카이브를 업로드하거나, 다운로드할 때 사용할 수 있도록 Java 및 C\$1 코드 예제를 제공합니다. 또한 시작하기 연습의 마지막 섹션에서는 Amazon Glacier를 사용하는 개발자 경험에 대해 더욱 자세하게 알아볼 수 있는 몇 가지 단계를 제공합니다.

**Topics**
+ [1단계: Amazon Glacier를 시작하기 전에](getting-started-before-you-begin.md)
+ [2단계: Amazon Glacier에서 볼트 생성](getting-started-create-vault.md)
+ [3단계: 아카이브를 Amazon Glacier의 볼트에 업로드](getting-started-upload-archive.md)
+ [4단계: 아카이브를 Amazon Glacier의 볼트에서 다운로드](getting-started-download-archive.md)
+ [5단계: Amazon Glacier 볼트에서 아카이브 삭제](getting-started-delete-archive.md)
+ [6단계: Amazon Glacier에서 볼트 삭제](getting-started-delete-vault.md)
+ [추가 정보](getting-started-where-do-i-go-next.md)

# 1단계: Amazon Glacier를 시작하기 전에
<a name="getting-started-before-you-begin"></a>

이 연습을 시작하려면 먼저 AWS 계정 (아직 없는 경우)에 가입한 다음 AWS SDKs 중 하나를 다운로드해야 합니다. 지침은 다음 섹션을 참조하세요.

**Topics**
+ [AWS 계정 및 관리자 설정](#setup)
+ [적절한 AWS SDK 다운로드](#getting-started-download-sdk)

## AWS 계정 및 관리자 설정
<a name="setup"></a>

아직 등록하지 않은 경우에 가입 AWS 계정 하고 계정에서 관리자 사용자를 생성해야 합니다.

설정을 완료하려면 다음 토픽의 지침을 따르세요.

### 설정 AWS 계정 및 관리자 사용자 생성
<a name="setting-up"></a>

#### 에 가입 AWS
<a name="setting-up-signup"></a>

Amazon Web Services(AWS)에 가입하면 AWS 계정 가 Amazon Glacier를 AWS포함한의 모든 서비스에 자동으로 등록됩니다. 사용자에게는 사용한 서비스에 대해서만 요금이 청구됩니다. Amazon Glacier 사용 요금에 대한 자세한 정보는 [Amazon Glacier 요금](https://aws.amazon.com/s3/glacier/pricing/) 페이지를 참조하세요.

가 이미 있는 경우 로 AWS 계정건너뜁니다[적절한 AWS SDK 다운로드](#getting-started-download-sdk). 이 없는 경우 AWS 계정다음 절차에 따라 생성합니다.

이 없는 경우 다음 단계를 AWS 계정완료하여 생성합니다.

**에 가입하려면 AWS 계정**

1. [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)을 엽니다.

1. 온라인 지시 사항을 따르세요.

   등록 절차 중 전화 또는 텍스트 메시지를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.

   에 가입하면 AWS 계정*AWS 계정 루트 사용자*이 생성됩니다. 루트 사용자에게는 계정의 모든 AWS 서비스 및 리소스에 액세스할 권한이 있습니다. 보안 모범 사례는 사용자에게 관리 액세스 권한을 할당하고, 루트 사용자만 사용하여 [루트 사용자 액세스 권한이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)을 수행하는 것입니다.

다음 옵션 중 하나를 선택하여 관리 사용자를 생성합니다.


****  

| 관리자를 관리하는 방법 한 가지 선택 | 목적 | By | 다른 방법 | 
| --- | --- | --- | --- | 
| IAM Identity Center에서 (권장) | 단기 보안 인증 정보를 사용하여 AWS에 액세스합니다.이는 보안 모범 사례와 일치합니다. 모범 사례에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)를 참조하세요. | AWS IAM Identity Center 사용 설명서의 [시작하기](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) 지침을 따릅니다. | AWS Command Line Interface 사용 설명서에서 [사용하도록 AWS CLI 를 구성 AWS IAM Identity Center](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-sso.html)하여 프로그래밍 방식 액세스를 구성합니다. | 
| IAM에서 (권장되지 않음) | 장기 보안 인증 정보를 사용하여 AWS에 액세스합니다. | IAM 사용 설명서의 [비상 액세스를 위한 IAM 사용자 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-emergency-iam-user.html)에 나와 있는 지침을 따르세요. | IAM 사용 설명서에 나온 [IAM 사용자의 액세스 키 관리](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html)를 수행하여 프로그래밍 방식의 액세스를 구성합니다. | 

## 적절한 AWS SDK 다운로드
<a name="getting-started-download-sdk"></a>

시작하기 연습을 시도하려면 사용할 프로그래밍 언어를 결정한 다음 개발 플랫폼에 적합한 AWS SDK를 다운로드해야 합니다.

여기에서는 Java와 C\$1 언어로 작성된 예제를 제공합니다.

### 다운로드 AWS SDK for Java
<a name="getting-started-download-sdk-java"></a>

이 개발자 안내서의 Java 예제를 테스트하려면 AWS SDK for Java가 필요합니다. 다운로드 옵션은 다음과 같습니다.
+ Eclipse를 사용하는 경우 업데이트 사이트 [http://aws.amazon.com/eclipse/](https://aws.amazon.com/eclipse/) AWS Toolkit for Eclipse 사용하여를 다운로드하고 설치할 수 있습니다. 자세한 내용은 [AWS Toolkit for Eclipse](https://aws.amazon.com/eclipse/) 단원을 참조하십시오.
+ 다른 IDE를 사용하여 애플리케이션을 개발하는 경우에는 [AWS SDK for Java](https://aws.amazon.com/sdkforjava)를 다운로드합니다.

### 다운로드 AWS SDK for .NET
<a name="getting-started-download-sdk-dotnet"></a>

이 개발자 안내서의 C\$1 예제를 테스트하려면 AWS SDK for .NET이 필요합니다. 다운로드 옵션은 다음과 같습니다.
+ Visual Studio를 사용하는 경우 AWS SDK for .NET 및를 모두 설치할 수 있습니다 AWS Toolkit for Visual Studio. 도구 키트는 개발에 사용할 수 있는 AWS Explorer for Visual Studio 및 프로젝트 템플릿을 제공합니다. 를 다운로드하려면 [http://aws.amazon.com/sdkfornet](https://aws.amazon.com/sdkfornet/) AWS SDK for .NET이동합니다. 기본적으로 설치 스크립트는 AWS SDK와를 모두 설치합니다 AWS Toolkit for Visual Studio. 툴킷에 대한 자세한 내용은 [AWS Toolkit for Visual Studio 사용 설명서](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/)를 참조하세요.
+ 다른 IDE를 사용하여 애플리케이션을 개발하는 경우 이전 단계에서 제공된 링크를 사용하여 AWS SDK for .NET만 설치할 수 있습니다.

# 2단계: Amazon Glacier에서 볼트 생성
<a name="getting-started-create-vault"></a>

볼트는 아카이브를 저장하기 위한 컨테이너입니다. 첫 번째 단계는 지원되는 중 하나에 볼트를 생성하는 것입니다 AWS 리전. Amazon Glacier에서 AWS 리전 지원하는 목록은 *AWS 일반* 참조의 [ Amazon Glacier 엔드포인트 및 할당량을 참조하세요](https://docs.aws.amazon.com/general/latest/gr/glacier-service.html).

볼트는 프로그래밍 방식으로, 혹은 Amazon Glacier 콘솔을 사용하여 생성할 수 있습니다. 여기에서는 콘솔을 사용하여 볼트를 생성합니다.

**볼트를 생성하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/glacier/home](https://console.aws.amazon.com/glacier/home) Amazon Glacier 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **볼트**를 선택합니다.

1. **볼트 생성**을 선택합니다.

   **볼트 생성** 페이지가 열립니다.

1. **리전 선택**의 리전 선택기 AWS 리전 에서를 선택합니다. 볼트는 사용자가 선택한 리전에 위치합니다.

1. **볼트 이름**에는 볼트를 위한 이름을 입력합니다.

   다음은 볼트의 이름을 지정할 때 필요한 요건입니다.
   + 볼트 이름은 볼트가 AWS 리전 생성되는 AWS 계정 및 내에서 고유해야 합니다.
   + 볼트 이름은 반드시 1\$1255자 이내로 작성해야 합니다.
   + 볼트 이름에는 **a\$1z**, **A\$1Z**, **0\$19**, **\$1**(밑줄), **-**(하이픈), **.**(마침표)만 사용할 수 있습니다.

1. 작업 완료 시 볼트에 대한 알림을 켜거나 끄려면 **이벤트 알림**에서 다음 설정 중 하나를 선택합니다.
   + **알림 끄기**: 지정된 작업이 완료되면 알림이 꺼지고 알림을 Amazon Simple Notification Service(SNS)로 보내지 않습니다.
   + **알림 켜기**: 지정된 작업이 완료되면 알림이 켜지고 제공된 Amazon SNS 토픽으로 알림이 전송됩니다.

     **알림 켜기**를 선택한 경우 [Amazon Glacier 콘솔을 사용하여 볼트 알림 구성](https://docs.aws.amazon.com/amazonglacier/latest/dev/configuring-notifications-console.html)을 참조하세요.

1.  AWS 리전 및 볼트 이름이 올바르면 **볼트 생성을** 선택합니다.

이제 Amazon Glacier 콘솔의 **볼트** 페이지에 새 볼트가 나열됩니다.

# 3단계: 아카이브를 Amazon Glacier의 볼트에 업로드
<a name="getting-started-upload-archive"></a>

이번 단계에서는 샘플 아카이브를 이전 단계에서 생성한 볼트에 업로드합니다([2단계: Amazon Glacier에서 볼트 생성](getting-started-create-vault.md) 섹션 참조). 사용하는 개발 플랫폼에 따라 이번 섹션 끝에 있는 링크 중 하나를 클릭합니다.

**중요**  
업로드, 다운로드, 삭제 등 아카이브 작업에서는 AWS Command Line Interface (CLI)를 사용하거나 코드를 작성해야 합니다. 콘솔은 아카이브 작업을 지원하지 않습니다. 예를 들어 사진, 비디오 및 기타 문서와 같은 데이터를 업로드하려면 AWS CLI 를 사용하거나 REST API를 직접 사용하거나 AWS SDKs를 사용하여 요청 코드를 작성해야 합니다.  
를 설치하려면 단원을 AWS CLI참조하십시오[AWS Command Line Interface](https://aws.amazon.com/cli/). 에서 Amazon Glacier를 사용하는 방법에 대한 자세한 내용은 Amazon Glacier 참조 AWS CLI를 참조하세요. [AWS CLI Amazon Glacier](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html) 를 사용하여 Amazon Glacier AWS CLI 에 아카이브를 업로드하는 예제는 [에서 Amazon Glacier 사용을 참조하세요 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-glacier.html).

아카이브란 사진, 동영상, 문서 등 볼트에 저장되는 모든 객체를 말합니다. 아카이브는 Amazon Glacier에서 스토리지의 기본 단위입니다. 아카이브는 단일 요청으로 업로드할 수 있습니다. 대용량 아카이브일 경우에는 Amazon Glacier가 아카이브를 여러 파트로 나누어 업로드할 수 있도록 멀티파트 업로드 API 작업을 제공합니다.

이 섹션에서는 단일 요청으로 샘플 아카이브를 업로드합니다. 또한 크기가 작은 파일을 지정합니다. 파일 용량이 커지면 멀티파트 업로드가 적합합니다. 자세한 내용은 [대용량 아카이브를 여러 파트로 나누어 업로드(멀티파트 업로드)](uploading-archive-mpu.md) 단원을 참조하십시오.

**Topics**
+ [를 사용하여 Amazon Glacier의 볼트에 아카이브 업로드 AWS SDK for Java](getting-started-upload-archive-java.md)
+ [를 사용하여 Amazon Glacier의 볼트에 아카이브 업로드 AWS SDK for .NET](getting-started-upload-archive-dotnet.md)

# 를 사용하여 Amazon Glacier의 볼트에 아카이브 업로드 AWS SDK for Java
<a name="getting-started-upload-archive-java"></a>

다음 Java 코드 예제에서는의 상위 수준 API AWS SDK for Java 를 사용하여 샘플 아카이브를 볼트에 업로드합니다. 코드 예제에서 다음 사항에 유의합니다.
+ 코드 예제는 `AmazonGlacierClient` 클래스 인스턴스를 생성합니다.
+ 이 예시는 AWS SDK for Java의 하이레벨 API에서 `ArchiveTransferManager` 클래스의 `upload` API 작업을 사용합니다.
+ 이 예시는 미국 서부(오레곤) 리전(`us-west-2`)을 사용합니다.

이 예제의 실행 방법에 대한 단계별 지침은 [Eclipse를 사용하여 Amazon Glacier의 Java 예 실행](using-aws-sdk-for-java.md#setting-up-and-testing-sdk-java) 섹션을 참조하세요. 반드시 아래와 같이 업로드할 아카이브 파일 이름을 사용해 코드를 업데이트해야 합니다.

**참고**  
Amazon Glacier는 모든 아카이브 인벤토리를 볼트에 저장합니다. 하지만 다음 예제에서 아카이브를 업로드하더라도 볼트 인벤토리가 업데이트되기 전까지는 관리 콘솔의 볼트에 업로드된 아카이브가 표시되지 않습니다. 볼트 인벤토리의 업데이트는 일반적으로 1일 1회 실행됩니다.

**SDK for Java 2.x**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/glacier#code-examples)에서 전체 예제를 찾고 설정 및 실행하는 방법을 배워보세요.

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.glacier.GlacierClient;
import software.amazon.awssdk.services.glacier.model.UploadArchiveRequest;
import software.amazon.awssdk.services.glacier.model.UploadArchiveResponse;
import software.amazon.awssdk.services.glacier.model.GlacierException;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class UploadArchive {

    static final int ONE_MB = 1024 * 1024;

    public static void main(String[] args) {
        final String usage = """

                Usage:   <strPath> <vaultName>\s

                Where:
                   strPath - The path to the archive to upload (for example, C:\\AWS\\test.pdf).
                   vaultName - The name of the vault.
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String strPath = args[0];
        String vaultName = args[1];
        File myFile = new File(strPath);
        Path path = Paths.get(strPath);
        GlacierClient glacier = GlacierClient.builder()
                .region(Region.US_EAST_1)
                .build();

        String archiveId = uploadContent(glacier, path, vaultName, myFile);
        System.out.println("The ID of the archived item is " + archiveId);
        glacier.close();
    }

    public static String uploadContent(GlacierClient glacier, Path path, String vaultName, File myFile) {
        // Get an SHA-256 tree hash value.
        String checkVal = computeSHA256(myFile);
        try {
            UploadArchiveRequest uploadRequest = UploadArchiveRequest.builder()
                    .vaultName(vaultName)
                    .checksum(checkVal)
                    .build();

            UploadArchiveResponse res = glacier.uploadArchive(uploadRequest, path);
            return res.archiveId();

        } catch (GlacierException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }

    private static String computeSHA256(File inputFile) {
        try {
            byte[] treeHash = computeSHA256TreeHash(inputFile);
            System.out.printf("SHA-256 tree hash = %s\n", toHex(treeHash));
            return toHex(treeHash);

        } catch (IOException ioe) {
            System.err.format("Exception when reading from file %s: %s", inputFile, ioe.getMessage());
            System.exit(-1);

        } catch (NoSuchAlgorithmException nsae) {
            System.err.format("Cannot locate MessageDigest algorithm for SHA-256: %s", nsae.getMessage());
            System.exit(-1);
        }
        return "";
    }

    public static byte[] computeSHA256TreeHash(File inputFile) throws IOException,
            NoSuchAlgorithmException {

        byte[][] chunkSHA256Hashes = getChunkSHA256Hashes(inputFile);
        return computeSHA256TreeHash(chunkSHA256Hashes);
    }

    /**
     * Computes an SHA256 checksum for each 1 MB chunk of the input file. This
     * includes the checksum for the last chunk, even if it's smaller than 1 MB.
     */
    public static byte[][] getChunkSHA256Hashes(File file) throws IOException,
            NoSuchAlgorithmException {

        MessageDigest md = MessageDigest.getInstance("SHA-256");
        long numChunks = file.length() / ONE_MB;
        if (file.length() % ONE_MB > 0) {
            numChunks++;
        }

        if (numChunks == 0) {
            return new byte[][] { md.digest() };
        }

        byte[][] chunkSHA256Hashes = new byte[(int) numChunks][];
        FileInputStream fileStream = null;

        try {
            fileStream = new FileInputStream(file);
            byte[] buff = new byte[ONE_MB];

            int bytesRead;
            int idx = 0;

            while ((bytesRead = fileStream.read(buff, 0, ONE_MB)) > 0) {
                md.reset();
                md.update(buff, 0, bytesRead);
                chunkSHA256Hashes[idx++] = md.digest();
            }

            return chunkSHA256Hashes;

        } finally {
            if (fileStream != null) {
                try {
                    fileStream.close();
                } catch (IOException ioe) {
                    System.err.printf("Exception while closing %s.\n %s", file.getName(),
                            ioe.getMessage());
                }
            }
        }
    }

    /**
     * Computes the SHA-256 tree hash for the passed array of 1 MB chunk
     * checksums.
     */
    public static byte[] computeSHA256TreeHash(byte[][] chunkSHA256Hashes)
            throws NoSuchAlgorithmException {

        MessageDigest md = MessageDigest.getInstance("SHA-256");
        byte[][] prevLvlHashes = chunkSHA256Hashes;
        while (prevLvlHashes.length > 1) {
            int len = prevLvlHashes.length / 2;
            if (prevLvlHashes.length % 2 != 0) {
                len++;
            }

            byte[][] currLvlHashes = new byte[len][];
            int j = 0;
            for (int i = 0; i < prevLvlHashes.length; i = i + 2, j++) {

                // If there are at least two elements remaining.
                if (prevLvlHashes.length - i > 1) {

                    // Calculate a digest of the concatenated nodes.
                    md.reset();
                    md.update(prevLvlHashes[i]);
                    md.update(prevLvlHashes[i + 1]);
                    currLvlHashes[j] = md.digest();

                } else { // Take care of the remaining odd chunk
                    currLvlHashes[j] = prevLvlHashes[i];
                }
            }

            prevLvlHashes = currLvlHashes;
        }

        return prevLvlHashes[0];
    }

    /**
     * Returns the hexadecimal representation of the input byte array
     */
    public static String toHex(byte[] data) {
        StringBuilder sb = new StringBuilder(data.length * 2);
        for (byte datum : data) {
            String hex = Integer.toHexString(datum & 0xFF);

            if (hex.length() == 1) {
                // Append leading zero.
                sb.append("0");
            }
            sb.append(hex);
        }
        return sb.toString().toLowerCase();
    }
}
```
+  API 세부 정보는AWS SDK for Java 2.x API 참조의 [UploadArchive](https://docs.aws.amazon.com/goto/SdkForJavaV2/glacier-2012-06-01/UploadArchive)를 참조하세요.**

# 를 사용하여 Amazon Glacier의 볼트에 아카이브 업로드 AWS SDK for .NET
<a name="getting-started-upload-archive-dotnet"></a>

다음 C\$1 코드 예제에서는의 상위 수준 API AWS SDK for .NET 를 사용하여 샘플 아카이브를 볼트에 업로드합니다. 코드 예제에서 다음 사항에 유의합니다.

 
+ 이 예는 지정된 Amazon Glacier 리전 엔드포인트에 대한 `ArchiveTransferManager` 클래스 인스턴스를 생성합니다.
+ 이 코드 예는 미국 서부(오리건) 리전(`us-west-2`)을 사용합니다.
+ 이 코드 예는 `ArchiveTransferManager` 클래스의 `Upload` API 작업을 사용하여 아카이브를 업로드합니다. 아카이브 크기가 작은 경우에는 이 작업으로 아카이브를 직접 Amazon Glacier에 업로드합니다. 아카이브 크기가 큰 경우에는 이 작업에서 Amazon Glacier의 멀티파트 업로드 API 작업을 사용해 업로드를 여러 파트로 분할하기 때문에 데이터를 Amazon Glacier에 스트리밍하는 도중 오류가 발생하더라도 더욱 쉽게 복구할 수 있습니다.

다음 예제의 실행을 위한 단계별 지침은 [코드 예제 실행](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet) 섹션을 참조하세요. 반드시 아래와 같이 볼트 이름과 업로드할 아카이브 파일 이름을 사용해 코드를 업데이트해야 합니다.

**참고**  
Amazon Glacier는 모든 아카이브 인벤토리를 볼트에 저장합니다. 다음 예시에서 아카이브를 업로드하더라도 볼트 인벤토리가 업데이트되기 전까지는 관리 콘솔의 볼트에 아카이브가 나타나지 않습니다. 볼트 인벤토리의 업데이트는 일반적으로 1일 1회 실행됩니다.

**Example -의 상위 수준 API를 사용하여 아카이브 업로드 AWS SDK for .NET**  <a name="GS_ExampleUploadArchiveDotNet"></a>

```
using System;
using Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
    class ArchiveUploadHighLevel_GettingStarted
    {
        static string vaultName = "examplevault";
        static string archiveToUpload = "*** Provide file name (with full path) to upload ***";

        public static void Main(string[] args)
        {
            try
            {
                var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);
                // Upload an archive.
                string archiveId = manager.Upload(vaultName, "getting started archive test", archiveToUpload).ArchiveId;
                Console.WriteLine("Copy and save the following Archive ID for the next step."); 
                Console.WriteLine("Archive ID: {0}", archiveId);
                Console.WriteLine("To continue, press Enter");
                Console.ReadKey();
            }
            catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
            catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
            catch (Exception e) { Console.WriteLine(e.Message); }
            Console.WriteLine("To continue, press Enter");
            Console.ReadKey();
        }
    }
}
```

# 4단계: 아카이브를 Amazon Glacier의 볼트에서 다운로드
<a name="getting-started-download-archive"></a>

이 단계에서는 이전에 [3단계: 아카이브를 Amazon Glacier의 볼트에 업로드](getting-started-upload-archive.md)에 업로드한 샘플 아카이브를 다운로드합니다.

 

**중요**  
Amazon Glacier는 콘솔을 제공합니다. 그러나 업로드, 다운로드 또는 삭제와 같은 아카이브 작업을 수행하려면 AWS Command Line Interface (CLI) 또는 쓰기 코드를 사용해야 합니다. 콘솔은 아카이브 작업을 지원하지 않습니다. 예를 들어 사진, 비디오 및 기타 문서와 같은 데이터를 업로드하려면 AWS CLI 를 사용하거나 REST API를 직접 사용하거나 AWS SDKs를 사용하여 요청 코드를 작성해야 합니다.  
를 설치하려면 단원을 AWS CLI참조하십시오[AWS Command Line Interface](https://aws.amazon.com/cli/). 에서 Amazon Glacier를 사용하는 방법에 대한 자세한 내용은 Amazon Glacier 참조 AWS CLI를 참조하세요. [AWS CLI Amazon Glacier](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html) 를 사용하여 Amazon Glacier AWS CLI 에 아카이브를 업로드하는 예제는 [에서 Amazon Glacier 사용을 참조하세요 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-glacier.html).

일반적으로 Amazon Glacier에서 데이터를 가져오는 작업은 2단계 프로세스로 구성됩니다.

1. 검색 작업을 시작합니다.

1. 작업이 완료되면 데이터 바이트를 다운로드합니다.

아카이브를 Amazon Glacier에서 가져오려면 먼저 작업을 시작합니다. 이후 작업이 끝나면 데이터를 다운로드합니다. 아카이브 가져오기에 대한 자세한 내용은 [Amazon Glacier 아카이브 가져오기](downloading-an-archive-two-steps.md) 섹션을 참조하세요.

요청의 액세스 시간은 신속, 표준 또는 벌크 중 사용자가 선택하는 검색 옵션에 따라서 결정됩니다. 매우 큰 아카이브(250MB\$1)를 제외한 모든 경우, 신속 검색을 사용하여 액세스된 데이터는 일반적으로 1\$15분 안에 사용할 수 있습니다. 표준 옵션으로 아카이브를 검색할 때는 일반적으로 작업을 마치는 데 3\$15시간이 걸립니다. 벌크 가져오기는 보통 5\$112시간 안에 완료됩니다. 여러 가져오기 옵션에 대한 자세한 내용은 [Amazon Glacier FAQ](https://aws.amazon.com/glacier/faqs/#Data-retrievals)를 참조하세요. 데이터 가져오기 요금에 대한 자세한 내용은 [Amazon Glacier 요금 페이지](https://aws.amazon.com/s3/glacier/pricing/)를 참조하세요.

다음 토픽의 코드 예시는 작업을 시작하여 끝날 때까지 기다린 후 아카이브의 데이터를 다운로드합니다.

**Topics**
+ [를 사용하여 Amazon Glacier의 볼트에서 아카이브 다운로드 AWS SDK for Java](getting-started-download-archive-java.md)
+ [를 사용하여 Amazon Glacier의 볼트에서 아카이브 다운로드 AWS SDK for .NET](getting-started-download-archive-dotnet.md)

# 를 사용하여 Amazon Glacier의 볼트에서 아카이브 다운로드 AWS SDK for Java
<a name="getting-started-download-archive-java"></a>

다음 Java 코드 예제에서는의 상위 수준 API AWS SDK for Java 를 사용하여 이전 단계에서 업로드한 아카이브를 다운로드합니다. 코드 예제에서 다음 사항에 유의합니다.
+ 코드 예제는 `AmazonGlacierClient` 클래스 인스턴스를 생성합니다.
+ 이 코드는 미국 서부(오레곤) 리전(`us-west-2`)을 사용하여 [2단계: Amazon Glacier에서 볼트 생성](getting-started-create-vault.md)에서 볼트를 만든 위치와 일치하도록 합니다.
+ 이 예시는 AWS SDK for Java의 하이레벨 API에서 `ArchiveTransferManager` 클래스의 `download` API 작업을 사용합니다. 이 예시에서는 Amazon Simple Notification Service(SNS) 토픽 및 해당 토픽을 구독하는 Amazon Simple Queue Service(Amazon SQS) 대기열을 생성합니다. 의 지침에 따라 AWS Identity and Access Management (IAM) 관리자 사용자를 생성한 경우 [1단계: Amazon Glacier를 시작하기 전에](getting-started-before-you-begin.md)사용자는 Amazon SNS 주제 및 Amazon SQS 대기열을 생성하고 사용하는 데 필요한 IAM 권한을 가집니다.

이 예제의 실행 방법에 대한 단계별 지침은 [Eclipse를 사용하여 Amazon Glacier의 Java 예 실행](using-aws-sdk-for-java.md#setting-up-and-testing-sdk-java) 섹션을 참조하세요. 반드시 [3단계: 아카이브를 Amazon Glacier의 볼트에 업로드](getting-started-upload-archive.md)에서 업로드한 파일의 아카이브 ID를 사용하여 아래와 같이 코드를 업데이트해야 합니다.

**Example -를 사용하여 아카이브 다운로드 AWS SDK for Java**  <a name="GS_ExampleDownloadArchiveJava"></a>

```
import java.io.File;
import java.io.IOException;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.transfer.ArchiveTransferManager;
import com.amazonaws.services.sns.AmazonSNSClient;
import com.amazonaws.services.sqs.AmazonSQSClient;

public class AmazonGlacierDownloadArchive_GettingStarted {
    public static String vaultName = "examplevault";
    public static String archiveId = "*** provide archive ID ***";
    public static String downloadFilePath  = "*** provide location to download archive ***";
    
    public static AmazonGlacierClient glacierClient;
    public static AmazonSQSClient sqsClient;
    public static AmazonSNSClient snsClient;
    
    public static void main(String[] args) throws IOException {
        
        
    	ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();
    	
        glacierClient = new AmazonGlacierClient(credentials);        
        sqsClient = new AmazonSQSClient(credentials);
        snsClient = new AmazonSNSClient(credentials);
        
        glacierClient.setEndpoint("glacier.us-west-2.amazonaws.com");
        sqsClient.setEndpoint("sqs.us-west-2.amazonaws.com");
        snsClient.setEndpoint("sns.us-west-2.amazonaws.com");

        try {
            ArchiveTransferManager atm = new ArchiveTransferManager(glacierClient, sqsClient, snsClient);
            
            atm.download(vaultName, archiveId, new File(downloadFilePath));
            
        } catch (Exception e)
        {
            System.err.println(e);
        }
    }
}
```

# 를 사용하여 Amazon Glacier의 볼트에서 아카이브 다운로드 AWS SDK for .NET
<a name="getting-started-download-archive-dotnet"></a>

다음 C\$1 코드 예제에서는의 상위 수준 API AWS SDK for .NET 를 사용하여 이전에에 업로드한 아카이브를 다운로드합니다[를 사용하여 Amazon Glacier의 볼트에 아카이브 업로드 AWS SDK for .NET](getting-started-upload-archive-dotnet.md). 코드 예제에서 다음 사항에 유의합니다.

 
+ 이 예는 지정된 Amazon Glacier 리전 엔드포인트에 대한 `ArchiveTransferManager` 클래스 인스턴스를 생성합니다.
+ 이 코드 예시는 미국 서부(오리건) 리전(`us-west-2`)을 사용하여 이전에 [2단계: Amazon Glacier에서 볼트 생성](getting-started-create-vault.md)에서 볼트를 생성한 위치와 일치하도록 합니다.
+ 이 예시에서는 `ArchiveTransferManager` 클래스의 `Download` API 작업을 사용하여 사용자의 아카이브를 다운로드합니다. 이 예시에서는 Amazon Simple Notification Service(SNS) 토픽 및 해당 토픽을 구독하는 Amazon Simple Queue Service(Amazon SQS) 대기열을 생성합니다. 의 지침에 따라 AWS Identity and Access Management (IAM) 관리자 사용자를 생성한 경우 [1단계: Amazon Glacier를 시작하기 전에](getting-started-before-you-begin.md)사용자는 Amazon SNS 주제 및 Amazon SQS 대기열을 생성하고 사용하는 데 필요한 IAM 권한을 가집니다.
+ 이제 이 예제에서는 아카이브 가져오기 작업을 시작하고, 그 아카이브 대기열을 사용할 수 있도록 폴링합니다. 아카이브를 사용할 수 있게 되면 다운로드가 시작됩니다. 검색 시간에 대한 자세한 내용은 [아카이브 검색 옵션](downloading-an-archive-two-steps.md#api-downloading-an-archive-two-steps-retrieval-options) 섹션을 참조하세요.

이 예제의 실행 방법에 대한 단계별 지침은 [코드 예제 실행](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet) 섹션을 참조하세요. 반드시 [3단계: 아카이브를 Amazon Glacier의 볼트에 업로드](getting-started-upload-archive.md)에서 업로드한 파일의 아카이브 ID를 사용하여 아래와 같이 코드를 업데이트해야 합니다.

**Example -의 상위 수준 API를 사용하여 아카이브 다운로드 AWS SDK for .NET**  <a name="GS_ExampleDownloadArchiveDotNet"></a>

```
using System;
using Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
    class ArchiveDownloadHighLevel_GettingStarted
    {
        static string vaultName = "examplevault";
        static string archiveId = "*** Provide archive ID ***";
        static string downloadFilePath = "*** Provide the file name and path to where to store the download ***";

        public static void Main(string[] args)
        {
            try
            {
                var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);

                var options = new DownloadOptions();
                options.StreamTransferProgress += ArchiveDownloadHighLevel_GettingStarted.progress;
                // Download an archive.
                Console.WriteLine("Intiating the archive retrieval job and then polling SQS queue for the archive to be available.");
                Console.WriteLine("Once the archive is available, downloading will begin.");
                manager.Download(vaultName, archiveId, downloadFilePath, options);
                Console.WriteLine("To continue, press Enter");
                Console.ReadKey();
            }
            catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
            catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
            catch (Exception e) { Console.WriteLine(e.Message); }
            Console.WriteLine("To continue, press Enter");
            Console.ReadKey();
        }

        static int currentPercentage = -1;
        static void progress(object sender, StreamTransferProgressArgs args)
        {
            if (args.PercentDone != currentPercentage)
            {
                currentPercentage = args.PercentDone;
                Console.WriteLine("Downloaded {0}%", args.PercentDone);
            }
        }
    }
}
```

# 5단계: Amazon Glacier 볼트에서 아카이브 삭제
<a name="getting-started-delete-archive"></a>

이 단계에서는 [3단계: 아카이브를 Amazon Glacier의 볼트에 업로드](getting-started-upload-archive.md)에 업로드한 샘플 아카이브를 삭제합니다.

**중요**  
Amazon Glacier 콘솔을 사용하여 아카이브를 삭제할 수는 없습니다. 업로드, 다운로드 또는 삭제와 같은 아카이브 작업을 수행하려면 AWS Command Line Interface (CLI) 또는 쓰기 코드를 사용해야 합니다. 사진, 동영상 및 기타 문서와 같은 데이터를 업로드하려면 AWS CLI 를 사용하거나 REST API를 직접 사용하거나 AWS SDKs를 사용하여 요청 코드를 작성해야 합니다.  
를 설치하려면 단원을 AWS CLI참조하십시오[AWS Command Line Interface](https://aws.amazon.com/cli/). 에서 Amazon Glacier를 사용하는 방법에 대한 자세한 내용은 Amazon Glacier 참조 AWS CLI를 참조하세요. [AWS CLI Amazon Glacier](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html) 를 사용하여 Amazon Glacier AWS CLI 에 아카이브를 업로드하는 예제는 [에서 Amazon Glacier 사용을 참조하세요 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-glacier.html).

다음 SDK 중 하나 또는 AWS CLI를 수행하여 샘플 아카이브를 삭제합니다.
+ [를 사용하여 Amazon Glacier의 볼트에서 아카이브 삭제 AWS SDK for Java](getting-started-delete-archive-java.md)
+ [를 사용하여 Amazon Glacier의 볼트에서 아카이브 삭제 AWS SDK for .NET](getting-started-delete-archive-dotnet.md)
+ [를 사용하여 Amazon Glacier에서 아카이브 삭제 AWS CLI](getting-started-delete-archive-cli.md)

## 관련 섹션
<a name="getting-started-delete-archive-related-sections"></a>

 
+ [3단계: 아카이브를 Amazon Glacier의 볼트에 업로드](getting-started-upload-archive.md)
+ [Amazon Glacier에서 아카이브 삭제](deleting-an-archive.md)

# 를 사용하여 Amazon Glacier의 볼트에서 아카이브 삭제 AWS SDK for Java
<a name="getting-started-delete-archive-java"></a>

다음 코드 예제에서는를 사용하여 아카이브 AWS SDK for Java 를 삭제합니다. 코드에서 다음 사항에 유의하세요.

 
+ `DeleteArchiveRequest` 객체는 아카이브가 위치하는 볼트 이름과 아카이브 ID를 포함하여 삭제 요청에 대해서 설명합니다.
+ `deleteArchive` API 작업은 Amazon Glacier에 아카이브 삭제 요청을 보냅니다.
+ 이 예시에서는 미국 서부(오리건) 리전(`us-west-2`)을 사용합니다.

이 예제의 실행 방법에 대한 단계별 지침은 [Eclipse를 사용하여 Amazon Glacier의 Java 예 실행](using-aws-sdk-for-java.md#setting-up-and-testing-sdk-java) 섹션을 참조하세요. 반드시 [3단계: 아카이브를 Amazon Glacier의 볼트에 업로드](getting-started-upload-archive.md)에서 업로드한 파일의 아카이브 ID를 사용하여 아래와 같이 코드를 업데이트해야 합니다.

**Example -를 사용하여 아카이브 삭제 AWS SDK for Java**  <a name="GS_ExampleDeleteArchiveJava"></a>

```
import java.io.IOException;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.model.DeleteArchiveRequest;

public class AmazonGlacierDeleteArchive_GettingStarted {

    public static String vaultName = "examplevault";
    public static String archiveId = "*** provide archive ID***";
    public static AmazonGlacierClient client;
    
    public static void main(String[] args) throws IOException {
        
    	
    	ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();

        client = new AmazonGlacierClient(credentials);
        client.setEndpoint("https://glacier.us-west-2.amazonaws.com/");        

        try {

            // Delete the archive.
            client.deleteArchive(new DeleteArchiveRequest()
                .withVaultName(vaultName)
                .withArchiveId(archiveId));
            
            System.out.println("Deleted archive successfully.");
            
        } catch (Exception e) {
            System.err.println("Archive not deleted.");
            System.err.println(e);
        }
    }
}
```

# 를 사용하여 Amazon Glacier의 볼트에서 아카이브 삭제 AWS SDK for .NET
<a name="getting-started-delete-archive-dotnet"></a>

다음 C\$1 코드 예제에서는의 상위 수준 API AWS SDK for .NET 를 사용하여 이전 단계에서 업로드한 아카이브를 삭제합니다. 코드 예제에서 다음 사항에 유의합니다.
+ 이 예는 지정된 Amazon Glacier 리전 엔드포인트에 대한 `ArchiveTransferManager` 클래스 인스턴스를 생성합니다.
+ 이 코드 예는 미국 서부(오리건) 리전(`us-west-2`)을 사용합니다.
+ 이 예시는 AWS SDK for .NET의 하이레벨 API의 일부로 제공되는 `ArchiveTransferManager` 클래스의 `Delete` API 작업을 사용합니다.

이 예제의 실행 방법에 대한 단계별 지침은 [코드 예제 실행](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet) 섹션을 참조하세요. 반드시 [3단계: 아카이브를 Amazon Glacier의 볼트에 업로드](getting-started-upload-archive.md)에서 업로드한 파일의 아카이브 ID를 사용하여 아래와 같이 코드를 업데이트해야 합니다.

**Example -의 상위 수준 API를 사용하여 아카이브 삭제 AWS SDK for .NET**  <a name="GS_ExampleDeleteArchiveDotNet"></a>

```
using System;
using Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
  class ArchiveDeleteHighLevel_GettingStarted
  {
    static string vaultName = "examplevault";
    static string archiveId = "*** Provide archive ID ***";

    public static void Main(string[] args)
    {
      try
      {
        var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);
        manager.DeleteArchive(vaultName, archiveId);
      }
      catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
      catch (Exception e) { Console.WriteLine(e.Message); }
      Console.WriteLine("To continue, press Enter");
      Console.ReadKey();
    }
  }
}
```

# 를 사용하여 Amazon Glacier에서 아카이브 삭제 AWS CLI
<a name="getting-started-delete-archive-cli"></a>

 AWS Command Line Interface ()를 사용하여 Amazon Glacier에서 아카이브를 삭제할 수 있습니다AWS CLI.

**Topics**
+ [(사전 조건) 설정 AWS CLI](#Creating-Vaults-CLI-Setup)
+ [예:를 사용하여 아카이브 삭제 AWS CLI](#getting-started-Deleting-Archives-CLI-Implementation)

## (사전 조건) 설정 AWS CLI
<a name="Creating-Vaults-CLI-Setup"></a>

1.  AWS CLI를 다운로드하고 구성합니다. 관련 지침은 *AWS Command Line Interface 사용 설명서*에서 다음 토픽을 참조하세요.

    [설치 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 

   [구성 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. 명령 프롬프트에 다음 명령을 입력하여 AWS CLI 설정을 확인합니다. 이러한 명령은 명시적으로 자격 증명을 제공하지 않으므로 기본 프로파일의 자격 증명이 사용됩니다.
   + help 명령을 사용해 보십시오.

     ```
     aws help
     ```
   + 구성된 계정의 Amazon Glacier 볼트 목록을 가져오려면 `list-vaults` 명령을 사용합니다. *123456789012*을 AWS 계정 ID로 바꿉니다.

     ```
     aws glacier list-vaults --account-id 123456789012
     ```
   + 에 대한 현재 구성 데이터를 보려면 `aws configure list` 명령을 AWS CLI사용합니다.

     ```
     aws configure list
     ```

## 예:를 사용하여 아카이브 삭제 AWS CLI
<a name="getting-started-Deleting-Archives-CLI-Implementation"></a>

1. `initiate-job` 명령을 사용하여 인벤토리 검색 작업을 시작합니다. `initiate-job` 명령에 대한 자세한 내용은 [작업 시작](https://docs.aws.amazon.com/amazonglacier/latest/dev/api-initiate-job-post.html)을 참조하세요.

   ```
   aws glacier initiate-job --vault-name awsexamplevault --account-id 111122223333 --job-parameters "{\"Type\": \"inventory-retrieval\"}"
   ```

    예상 결과:

   ```
   {
       "location": "/111122223333/vaults/awsexamplevault/jobs/*** jobid ***", 
       "jobId": "*** jobid ***"
   }
   ```

1. `describe-job` 명령을 사용하여 이전 검색 작업의 상태를 확인합니다. `describe-job` 명령에 대한 자세한 내용은 [작업 설명](https://docs.aws.amazon.com/amazonglacier/latest/dev/api-describe-job-get.html)을 참조하세요.

   ```
   aws glacier describe-job --vault-name awsexamplevault --account-id 111122223333 --job-id *** jobid ***
   ```

    예상 결과:

   ```
   {
       "InventoryRetrievalParameters": {
           "Format": "JSON"
       }, 
       "VaultARN": "*** vault arn ***", 
       "Completed": false, 
       "JobId": "*** jobid ***", 
       "Action": "InventoryRetrieval", 
       "CreationDate": "*** job creation date ***", 
       "StatusCode": "InProgress"
   }
   ```

1. 작업이 완료될 때까지 기다립니다.

   작업 출력을 다운로드할 수 있을 때까지 기다려야 합니다. 볼트에서 알림 구성을 설정하거나 작업을 시작할 때 Amazon Simple Notification Service(Amazon SNS) 토픽을 지정했다면 Amazon Glacier가 작업 완료 후 해당 토픽에 메시지를 보냅니다.

   볼트의 특정 이벤트에 대해 알림 구성을 설정할 수 있습니다. 자세한 내용은 [Amazon Glacier의 볼트 알림 구성](configuring-notifications.md) 단원을 참조하십시오. Amazon Glacier는 특정 이벤트가 발생할 때마다 지정된 Amazon SNS 토픽으로 메시지를 보냅니다.

1. 작업이 완료되면 `get-job-output` 명령을 사용하여 검색 작업을 파일 `output.json`로 다운로드합니다. `get-job-output` 명령에 대한 자세한 내용은 [작업 출력 얻기](https://docs.aws.amazon.com/amazonglacier/latest/dev/api-job-output-get.html)를 참조하세요.

   ```
   aws glacier get-job-output --vault-name awsexamplevault --account-id 111122223333 --job-id *** jobid *** output.json
   ```

   이 명령은 다음 필드가 있는 파일을 생성합니다.

   ```
   {
   "VaultARN":"arn:aws:glacier:region:111122223333:vaults/awsexamplevault",
   "InventoryDate":""*** job completion date ***"",
   "ArchiveList":[{
   {"ArchiveId":""*** archiveid ***"",
   "ArchiveDescription":"*** archive description (if set) ***",
   "CreationDate":""*** archive creation date ***"",
   "Size":""*** archive size (in bytes) ***"",
   "SHA256TreeHash":"*** archive hash ***"
   }],
   "ArchiveId": 123456789
   
   }
   ```

1. `delete-archive` 명령을 사용하여 볼트가 비워질 때까지 볼트에서 각 아카이브를 삭제합니다.

   ```
   aws glacier delete-archive --vault-name awsexamplevault --account-id 111122223333 --archive-id="*** archiveid ***"
   ```

 `delete-archive` 명령에 대한 자세한 내용은 [아카이브 삭제](https://docs.aws.amazon.com/amazonglacier/latest/dev/api-archive-delete.html)를 참조하세요.

# 6단계: Amazon Glacier에서 볼트 삭제
<a name="getting-started-delete-vault"></a>

볼트는 아카이브를 저장하기 위한 컨테이너입니다. Amazon Glacier 볼트를 삭제하려면 먼저 Amazon Glacier에서 계산된 마지막 인벤토리를 기준으로 볼트에 있는 모든 기존 아카이브를 삭제해야 합니다.

볼트는 프로그래밍 방식으로, 혹은 Amazon Glacier 콘솔을 사용하여 삭제할 수 있습니다. 볼트를 프로그래밍 방식으로 삭제하는 방법에 대한 자세한 내용은 [Amazon Glacier에서 볼트 삭제](deleting-vaults.md) 섹션을 참조하세요.

**중요**  
최근 24시간 이내에 아카이브를 볼트에 업로드하거나 볼트에서 아카이브를 삭제하는 경우 최신 정보가 반영되도록 마지막 볼트 인벤토리가 업데이트될 때까지 기다려야 합니다. Amazon Glacier는 각 볼트마다 24시간을 주기로 인벤토리를 준비합니다.

**빈 볼트를 삭제하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/glacier/home](https://console.aws.amazon.com/glacier/home) Amazon Glacier 콘솔을 엽니다.

1. **리전 선택** 메뉴에서 삭제할 볼트 AWS 리전 의를 선택합니다.

   시작하기 연습에서 예시 볼트는 미국 서부(오레곤) 리전에 속합니다.

1. 삭제를 원하는 빈 볼트 옆의 옵션 버튼을 선택합니다. 볼트가 비어 있지 않으면 볼트를 삭제하기 전에 모든 아카이브를 삭제해야 합니다. 자세한 내용은 [Amazon Glacier에서 아카이브 삭제](deleting-an-archive.md) 단원을 참조하십시오.
**중요**  
볼트 삭제는 실행 취소할 수 없습니다.

1. **삭제**를 선택합니다.

1. **볼트 삭제** 대화 상자가 나타납니다. **삭제**를 선택합니다.

**비어 있지 않은 볼트를 삭제하려면**

1. 비어 있지 않은 볼트를 삭제하는 경우 볼트를 삭제하기 전에 먼저 기존 아카이브를 모두 삭제해야 합니다. REST API, AWS SDK for Java, AWS SDK for .NET 또는를 사용하여 아카이브 삭제 요청을 하는 코드를 작성하여이 작업을 수행할 수 있습니다 AWS CLI. 아카이브 삭제에 대한 자세한 내용은 [5단계: Amazon Glacier 볼트에서 아카이브 삭제](getting-started-delete-archive.md) 섹션을 참조하세요.

1. 볼트가 비워지면 이전 절차에서 단계에 따라 빈 볼트를 삭제합니다.

# 추가 정보
<a name="getting-started-where-do-i-go-next"></a>

이제 시작하기 연습을 마쳤습니다. 다음 섹션을 참조하여 Amazon Glacier에 대해 좀 더 자세히 알아보세요.

 
+ [Amazon Glacier에서의 볼트 작업](working-with-vaults.md)
+ [Amazon Glacier의 아카이브 작업](working-with-archives.md)