AWS CLI를 사용하여 대용량 아카이브 업로드 - Amazon S3 Glacier

이 페이지는 Vaults와 2012RESTAPI년의 원본을 사용하는 S3 Glacier 서비스의 기존 고객만 사용할 수 있습니다.

아카이브 스토리지 솔루션을 찾고 있다면 Amazon S3, S3 Glacier Instant Retrieval , S33 S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 의 S3 Glacier 스토리지 클래스를 사용하는 것이 좋습니다. Amazon S3 이러한 스토리지 옵션에 대한 자세한 내용은 Amazon S3 사용 설명서의 S3 Glacier 스토리지 클래스 S3 Glacier 스토리지 클래스를 사용하는 장기 데이터 스토리지를 참조하세요. Amazon S3 이러한 스토리지 클래스는 Amazon S3 를 사용하며API, 모든 리전에서 사용할 수 있고, Amazon S3 콘솔 내에서 관리할 수 있습니다. 스토리지 비용 분석, 스토리지 렌즈, 고급 선택적 암호화 기능 등과 같은 기능을 제공합니다.

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

AWS CLI를 사용하여 대용량 아카이브 업로드

() 를 사용하여 Amazon S3 빙하 (S3 Glacier) 에 아카이브를 업로드할 수 있습니다. AWS Command Line Interface AWS CLI대규모 아카이브의 업로드 환경을 개선하기 위해 S3 Glacier는 멀티파트 업로드를 지원하는 몇 가지 API 작업을 제공합니다. 이러한 API 작업을 사용하여 아카이브를 여러 부분으로 나누어 업로드할 수 있습니다. 이러한 파트들은 순서에 상관없이 각각 병렬 방식으로 업로드됩니다. 멀티파트 업로드에 실패하더라도 전체 아카이브가 아니라 실패한 파트만 다시 업로드하면 됩니다. 멀티파트 업로드는 크기가 1byte에서 약 40,000기비바이트(GiB)에 이르는 아카이브에 사용할 수 있습니다.

S3 Glacier 멀티파트 업로드에 대한 자세한 내용은 대용량 아카이브를 여러 파트로 나누어 업로드(멀티파트 업로드) 섹션을 참조하세요.

(전제 조건) 설정 AWS CLI

  1. AWS CLI를 다운로드하고 구성합니다. 관련 지침은 AWS Command Line Interface 사용자 가이드에서 다음 주제를 참조하십시오.

    설치 AWS Command Line Interface

    구성하기 AWS Command Line Interface

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

    • help 명령을 사용해 보십시오.

      aws help
    • list-vaults 명령을 사용하여, 구성된 계정의 S3 Glacier 볼트 목록을 가져옵니다. Replace 123456789012 AWS 계정 ID와 함께.

      aws glacier list-vaults --account-id 123456789012
    • 의 현재 구성 데이터를 보려면 aws configure list 명령을 사용하십시오. AWS CLI

      aws configure list

(요구 사항) Python 설치

멀티파트 업로드를 완료하려면 업로드하려는 아카이브의 SHA256 트리 해시를 계산해야 합니다. 이렇게 하는 것은 업로드하려는 파일의 SHA256 트리 해시를 계산하는 것과 다릅니다. 업로드하려는 아카이브의 SHA256 트리 해시를 Java 계산하려면 C# (with. NET) 또는. Python 이 예시에서는 Python을 사용합니다. Java 또는 C#을 사용하는 방법 지침은 체크섬 계산 섹션을 참조하세요.

Python을 설치하는 방법에 대한 자세한 내용은 Boto3 개발자 가이드의 Python 설치 또는 업데이트를 참조하세요.

(요구 사항) S3 Glacier 볼트 생성

다음 예시를 사용하려면 적어도 하나 이상의 S3 Glacier 볼트가 생성되어 있어야 합니다. 볼트 생성에 대한 자세한 내용은 Amazon S3 Glacier에서 볼트 생성 섹션을 참조하세요.

예: 를 사용하여 대규모 아카이브를 여러 부분으로 나누어 업로드 AWS CLI

이 예시에서는 파일을 생성하고 멀티파트 업로드 API 작업을 사용하여 이 파일을 여러 부분으로 나누어 업로드합니다. Amazon S3 Glacier

중요

이 과정을 시작하기 전에 요구 사항 단계를 모두 수행했는지 확인합니다. 아카이브를 업로드하려면 저장소를 만들고 AWS CLI 구성한 다음 C #을 사용하거나 Java SHA256 트리 해시를 계산할 준비가 되어 있어야 합니다. Python

다음 절차에서는 initiate-multipart-uploadupload-multipart-part, 및 complete-multipart-upload AWS CLI 명령을 사용합니다.

이 명령에 대한 자세한 내용은 AWS CLI 명령 참조의 initiate-multipart-upload, upload-multipart-part, complete-multipart-upload 섹션을 참조하세요.

  1. initiate-multipart-upload 명령을 사용하여 멀티파트 업로드 리소스를 생성합니다. 요청에서 파트 크기를 바이트 수로 지정합니다. 마지막 파트를 제외하고 사용자가 업로드한 파트는 여기에서 지정하는 크기를 따라야 합니다. 멀티파트 업로드를 시작할 때 전체 아카이브 크기를 알 필요는 없습니다. 하지만 최종 단계에서 업로드를 완료할 때는 각 파트의 총 크기가 바이트로 필요합니다.

    다음 명령에서 --vault-name--account-ID 파라미터의 값을 사용자의 정보로 바꿉니다. 이 명령은 파트 크기가 파일당 1메비바이트(MiB)(1024 x 1024바이트)인 아카이브를 업로드하도록 지정합니다. 필요한 경우 이 --part-size 파라미터 값을 바꾸세요.

    aws glacier initiate-multipart-upload --vault-name awsexamplevault --part-size 1048576 --account-id 123456789012

    예상 결과:

    { "location": "/123456789012/vaults/awsexamplevault/multipart-uploads/uploadId", "uploadId": "uploadId" }

    완료되면 이 명령은 멀티파트 업로드 리소스의 업로드 ID와 S3 Glacier 내의 위치를 출력합니다. 이후 단계에서 이 업로드 ID를 사용합니다.

  2. 이 예시에서는 다음 명령을 사용하여 4.4MiB 파일을 만들고 1MiB 청크로 분할한 다음 각 청크를 업로드할 수 있습니다. 자체 파일을 업로드하려면 데이터를 청크로 분할하고 각 파트를 업로드하는 비슷한 절차를 따를 수 있습니다.

    Linux 또는 macOS

    다음 명령은 Linux 또는 macOS에서 file_to_upload로 이름이 지정된 4.4MiB 파일을 만듭니다.

    mkfile -n 9000b file_to_upload
    Windows

    다음 명령은 Windows에서 file_to_upload로 이름이 지정된 4.4MiB 파일을 만듭니다.

    fsutil file createnew file_to_upload 4608000
  3. 다음으로 이 파일을 1MiB 청크로 분할합니다.

    split -b 1048576 file_to_upload chunk

    이제 다음과 같은 다섯 개의 청크가 있습니다. 처음 네 개는 1MiB이고 마지막 한 개는 약 400키비바이트(KiB)입니다.

    chunkaa chunkab chunkac chunkad chunkae
  4. upload-multipart-part 명령을 사용하여 아카이브의 파트를 업로드합니다. 아카이브를 파트를 어떤 순서로든 업로드할 수 있습니다. 또한 병렬 방식으로 파트를 업로드할 수도 있습니다. 멀티파트 업로드에서 업로드할 수 있는 파트 수는 최대 10,000개입니다.

    다음 명령에서 --vault-name, --account-ID, 및 --upload-id 파라미터 값을 바꿉니다. 업로드 ID는 initiate-multipart-upload 명령 출력으로 제공된 ID와 일치해야 합니다. --range 파라미터는 크기가 1MiB(1024 x 1024바이트)인 파트를 업로드하도록 지정합니다. 이 크기는 initiate-multipart-upload 명령에서 지정한 크기와 일치해야 합니다. 필요한 경우 크기 값을 조정하세요. --body 파라미터는 업로드하는 파트의 이름을 지정합니다.

    aws glacier upload-multipart-part --body chunkaa --range='bytes 0-1048575/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID

    성공하면 명령에서 업로드된 파트의 체크섬이 포함된 출력이 생성됩니다.

  5. upload-multipart-part 명령을 다시 실행하여 멀티파트 업로드의 나머지 파트를 업로드합니다. 업로드하는 부분과 일치하도록 각 명령의 --range–-body 매개변수 값을 업데이트합니다.

    aws glacier upload-multipart-part --body chunkab --range='bytes 1048576-2097151/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    aws glacier upload-multipart-part --body chunkac --range='bytes 2097152-3145727/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    aws glacier upload-multipart-part --body chunkad --range='bytes 3145728-4194303/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    aws glacier upload-multipart-part --body chunkae --range='bytes 4194304-4607999/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    참고

    업로드의 마지막 부분이 1MiB 미만이므로 최종 명령의 --range 파라미터 값은 그보다 더 작습니다. 성공하면 각 명령에서 업로드된 각 부분에 대한 체크섬이 포함된 출력을 생성합니다.

  6. 다음으로 아카이브를 조합하고 업로드를 완료합니다. 아카이브의 전체 크기 및 SHA256 트리 해시를 포함해야 합니다.

    아카이브의 SHA256 트리 해시를 계산하려면Java, C# 또는 를 사용할 수 있습니다. Python 이 예시에서는 Python을 사용합니다. Java 또는 C#을 사용하는 방법 지침은 체크섬 계산 섹션을 참조하세요.

    Python 파일 checksum.py를 생성하고 다음 코드를 추가합니다. 필요한 경우 원본 파일의 이름을 바꾸세요.

    from botocore.utils import calculate_tree_hash checksum = calculate_tree_hash(open('file_to_upload', 'rb')) print(checksum)
  7. checksum.py를 실행하여 SHA256 트리 해시를 계산합니다. 다음 해시는 출력과 일치하지 않을 수 있습니다.

    $ python3 checksum.py $ 3d760edb291bfc9d90d35809243de092aea4c47b308290ad12d084f69988ae0c
  8. complete-multipart-upload 명령을 사용하여 아카이브 업로드를 완료합니다. --vault-name, --account-ID, --upload-ID, 및 --checksum 파라미터의 값을 바꿉니다. --archive 파라미터 값은 아카이브의 전체 크기를 바이트로 지정합니다. 이 값은 반드시 업로드한 개별 파트 크기의 총합이 되어야 합니다. 필요한 경우 이 값을 바꾸세요.

    aws glacier complete-multipart-upload --archive-size 4608000 --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID --checksum checksum

    완료되면 명령이 아카이브의 ID, 체크섬 및 S3 Glacier 내의 위치를 출력합니다.