멀티파트 업로드로 Lightsail 버킷에 파일 업로드 - Amazon Lightsail

멀티파트 업로드로 Lightsail 버킷에 파일 업로드

멀티파트 업로드를 사용하면 단일 파일을 버킷에 여러 파트의 세트로 업로드할 수 있습니다. 각 파트는 파일 데이터의 연속적인 부분입니다. 이러한 파일 파트는 독립적으로 그리고 임의의 순서로 업로드할 수 있습니다. 부분의 전송이 실패할 경우 다른 부분에 영향을 주지 않고도 해당 부분을 재전송할 수 있습니다. 파일의 모든 파트가 업로드되면 Amazon S3에서 이러한 파트를 결합하고 Amazon Lightsail의 버킷에 객체를 생성합니다. 일반적으로 객체 크기가 100MB에 근접할 경우, 단일 작업에서 객체를 업로드하는 대신 멀티파트 업로드 사용을 고려해 봐야 합니다. 버킷에 대한 자세한 내용은 객체 스토리지를 참조하세요.

멀티파트 업로드 사용은 다음 이점을 제공합니다.

  • 개선된 처리량 - 파트를 병렬적으로 업로드하여 처리량을 개선할 수 있습니다.

  • 네트워크 문제로부터 빠른 복구 - 더 작아진 파트 크기는 네트워크 오류로 인해 실패한 업로드 재시작의 영향을 최소화합니다.

  • 시간 경과에 따라 업로드 - 시간 경과에 따라 파일 파트를 업로드할 수 있습니다. 멀티파트 업로드를 시작한 후 24시간 안에 이를 완료해야 합니다.

  • 최종 파일 크기를 알기 전에 업로드 시작 – 파일을 생성하면서 업로드할 수 있습니다.

다음 방법으로 멀티파트 업로드를 사용하는 것이 좋습니다.

  • 안정적인 고대역폭 네트워크를 통해 대용량 파일을 업로드하는 경우, 멀티파트 업로드는 멀티 스레드 성능을 위해 파일 파트를 병렬로 업로드하여 사용 가능한 대역폭 사용을 극대화합니다.

  • 불규칙한 네트워크를 통해 업로드하는 경우, 멀티파트 업로드를 사용하여 업로드가 다시 시작되는 것을 방지하여 네트워크 오류에 대한 복원력을 높입니다. 멀티파트 업로드를 사용하는 경우 중단된 파트만 다시 업로드해야 합니다. 처음부터 시작하거나 전체 파일을 다시 업로드할 필요가 없습니다.

목차

멀티파트 업로드 프로세스

멀티파트 업로드는 Amazon S3 작업을 사용하여 Lightsail의 버킷에 파일을 업로드하는 3단계 프로세스입니다.

  1. CreateMultipartUpload 작업을 사용하여 멀티파트 업로드를 시작합니다.

  2. UploadPart 작업을 사용하여 파일 파트를 업로드합니다.

  3. CompleteMultipartUpload 작업을 사용하여 멀티파트 업로드를 완료합니다.

참고

AbortMultipartUpload 작업을 사용하여 시작한 멀티파트 업로드를 중지합니다.

멀티파트 업로드 요청이 완료되면 Amazon Simple Storage Service는 업로드된 파트에서 객체를 구성합니다. 그런 다음 버킷의 다른 객체에 액세스하는 것과 동일한 방식으로 해당 객체에 액세스할 수 있습니다.

진행 중인 모든 멀티파트 업로드 작업의 목록 또는 특정 멀티파트 업로드에 대해 업로드한 부분의 목록을 확인할 수 있습니다. 다음 섹션에서 이러한 각 작업에 대해 자세히 설명합니다.

멀티파트 업로드 시작

멀티파트 업로드를 시작하기 위한 요청을 보내면 Amazon Simple Storage Service는 업로드 ID와 함께 응답을 반환합니다. 이 응답이 멀티파트 업로드의 고유 식별자입니다. 파트 업로드, 파트 나열, 업로드 완료 또는 업로드 중단 시 항상 이 업로드 ID를 포함해야 합니다. 업로드 중인 객체를 설명하는 메타데이터를 제공하려면 요청에 메타데이터를 지정하여 멀티파트 업로드를 시작해야 합니다.

파트 업로드

부분을 업로드할 때 업로드 ID와 함께 부분 번호를 지정해야 합니다. 1부터 10,000까지 부분 번호를 지정할 수 있습니다. 부분 번호를 사용하여 업로드하는 객체에서 각 부분과 그 위치를 고유하게 식별합니다. 부분 번호는 굳이 연속 시퀀스로 선택할 필요가 없습니다(예를 들면 1, 5 및 14를 선택해도 됩니다). 이전에 업로드한 부분과 동일한 부분 번호로 새 부분을 업로드할 경우 이전에 업로드한 부분을 덮어쓰게 됩니다.

파트를 업로드할 때마다 Amazon Simple Storage Service는 응답으로 ETag 헤더를 반환합니다. 각 부분 업로드에 대해 부분 번호와 ETag 값을 기록해야 합니다. 이후 멀티파트 업로드를 완료하기 위한 요청에 이러한 값을 포함해야 하기 때문입니다.

참고

멀티파트 업로드의 업로드된 모든 파트는 버킷에 저장됩니다. 이러한 파트는 사용자가 업로드를 완료하거나 업로드를 중지하거나 업로드 시간이 초과될 때까지 버킷의 스토리지 공간을 사용합니다. 자세한 내용은 가이드 후반부의 멀티파트 업로드 보존을 참조하세요.

멀티파트 업로드 완료

멀티파트 업로드를 완료하면 Amazon Simple Storage Service는 부분 번호를 바탕으로 오름차순으로 각 부분을 결합하여 객체를 완성합니다. 멀티파트 업로드 시작 요청에 객체 메타데이터가 제공된 경우 Amazon Simple Storage Service는 해당 메타데이터를 객체와 연결합니다. 성공적으로 완료 요청이 수행되면 파트는 더 이상 존재하지 않습니다.

멀티파트 업로드 완료 요청에는 업로드 ID와 각 파트 번호 및 해당 ETag 값의 목록이 포함되어야 합니다. Amazon Simple Storage Service 응답에는 결합된 객체 데이터를 고유하게 식별하는 ETag가 포함됩니다. 이 ETag가 반드시 객체 데이터의 MD5 해시여야 하는 것은 아닙니다.

필요할 경우 멀티파트 업로드를 중단할 수 있습니다. 멀티파트 업로드를 중단한 후에는 해당 업로드 ID로 다시 부분을 업로드할 수 없습니다. 취소된 멀티파트 업로드의 부분이 소비하는 모든 스토리지는 다시 비워집니다. 파트 업로드가 진행 중일 때 멀티파트 업로드를 중단하더라도 진행 중인 파트 업로드는 성공적으로 완료되거나, 혹은 오류로 멈출 수도 있습니다. 따라서 각 부분에서 사용하고 있는 스토리지를 모두 비우려면 모든 파트 업로드가 완료된 후에 멀티파트 업로드를 중단해야 합니다.

멀티파트 업로드 나열

특정 멀티파트 업로드 또는 진행 중인 모든 멀티파트 업로드에 대해 부분 목록을 확인할 수 있습니다. 부분 목록 조회 작업은 특정 멀티파트 업로드에 대해 업로드한 부분의 정보를 반환합니다. 각 부분 목록 조회 요청에 대해 Amazon Simple Storage Service는 특정 멀티파트 업로드에서 최대 1,000개의 부분에 대해 부분 정보를 반환합니다. 멀티파트 업로드에서 1,000개 이상의 부분이 있을 경우 모든 부분을 검색하려면 부분 목록 조회 요청을 여러 번 반복해야 합니다. 반환된 파트 목록에는 업로드 중인 파트가 포함되지 않습니다. 멀티파트 업로드 나열 작업을 사용하여 진행 중인 멀티파트 업로드의 목록을 확인할 수 있습니다.

진행 중인 멀티파트 업로드는 시작했지만 아직 완료 또는 중단하지 않은 업로드입니다. 각 요청은 최대 1,000개의 멀티파트 업로드를 반환합니다. 진행 중인 멀티파트 업로드가 1,000개 이상일 경우 남은 멀티파트 업로드를 모두 검색하려면 추가 요청을 전송해야 합니다. 반환된 목록은 확인을 위해서만 사용합니다. 전체 멀티파트 업로드 요청을 보낼 때 이 나열 결과를 사용해서는 안 됩니다. 그 대신, 부분을 업로드할 때 지정한 부분 번호 및 Amazon Simple Storage Service가 반환한 해당 ETag 값의 목록을 보관해야 합니다.

동시 멀티파트 업로드 작업

분산 개발 환경에서는 애플리케이션에서 한 객체에 대해 동시에 여러 업데이트를 시작할 수 있습니다. 애플리케이션은 동일한 객체 키를 사용하여 여러 멀티파트 업로드를 시작할 수 있습니다. 이러한 각 업로드에 대해 애플리케이션은 부분을 업로드한 후 Amazon Simple Storage Service가 객체를 생성하도록 업로드 완료 요청을 전송할 수 있습니다. 버킷에서 버전 관리를 사용할 경우 멀티파트 업로드를 완료하면 항상 새 버전이 생성됩니다. 버킷에서 버전 관리를 활성화하지 않았으면 멀티파트 업로드가 시작된 후 완료되기 전에 수신되는 요청과 같은 다른 요청이 우선할 수 있습니다.

참고

멀티파트 업로드를 시작한 후 완료하기 전에 수신되는 요청과 같은 다른 요청이 우선될 수 있습니다. 예를 들어, 한 키로 멀티파트 업로드를 시작한 후 이를 완료하기 전에 다른 작업을 수행하면 해당 키가 삭제될 수 있습니다. 이 경우 전체 멀티파트 업로드 응답은 객체를 보지 못한 상태에서도 객체를 성공적으로 생성했다고 나타낼 수 있습니다.

멀티파트 업로드 보존

멀티파트 업로드의 업로드된 모든 파트는 버킷에 저장됩니다. 이러한 파트는 사용자가 업로드를 완료하거나 업로드를 중지하거나 업로드 시간이 초과될 때까지 버킷의 스토리지 공간을 사용합니다. 멀티파트 업로드가 생성된 지 24시간이 지나면 멀티파트 업로드 시간이 초과되어 삭제됩니다. 멀티파트 업로드를 중지하거나 시간이 초과되면 업로드된 모든 파트가 삭제되고, 파트가 버킷에서 차지했던 스토리지 공간이 확보됩니다.

Amazon Simple Storage Service 멀티파트 업로드 제한

다음 표에 멀티파트 업로드의 주요 사양이 나와 있습니다.

  • 최대 객체 크기: 5TB

  • 업로드당 최대 파트 번호: 10,000

  • 파트 번호: 1~10,000(포함)

  • 파트 크기: 5MB(최소)~5GB(최대) 멀티파트 업로드의 마지막 파트에는 크기 제한이 없습니다.

  • 파트 나열 요청에 대해 반환되는 최대 파트 번호: 1,000

  • 멀티파트 업로드 나열 요청에서 반환되는 최대 멀티파트 업로드 번호: 1,000

업로드할 파일 분할

Linux 또는 Unix 운영 체제에서 split 명령을 사용하여 파일을 여러 파트로 분할한 다음 버킷에 업로드할 수 있습니다. Windows 운영 체제에서 파일을 분할하는 데 사용할 수 있는 유사한 프리웨어 애플리케이션이 있습니다. 파일을 여러 파트로 분할한 후 가이드의 멀티파트 업로드 시작 섹션을 이어서 진행합니다.

AWS CLI를 사용하여 멀티파트 업로드 시작

AWS Command Line Interface(AWS CLI)를 사용하여 멀티파트 업로드를 시작하려면 다음 절차를 완료하세요. create-multipart-upload 명령을 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 AWS CLI 명령 레퍼런스의 create-multipart-upload를 참조하세요.

참고

이 절차를 계속하기 전에 AWS CLI를 설치하고 Lightsail 및 Amazon S3에 맞게 구성해야 합니다. 자세한 내용은 AWS CLI가 Lightsail과 함께 작동하도록 구성을 참조하세요.

  1. 명령 프롬프트 또는 터미널 창을 엽니다.

  2. 다음 명령을 입력하여 버킷에 대한 멀티파트 업로드를 생성합니다.

    aws s3api create-multipart-upload --bucket BucketName --key ObjectKey --acl bucket-owner-full-control

    명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.

    • BucketName - 멀티파트 업로드를 생성하려는 버킷의 이름입니다.

    • ObjectKey - 업로드할 파일에 사용하려는 객체 키입니다.

    예시

    aws s3api create-multipart-upload --bucket amzn-s3-demo-bucket --key sailbot.mp4 --acl bucket-owner-full-control

    다음 예제와 비슷한 결과가 나타나야 합니다. 응답에는 파트를 업로드하고 이 객체에 대한 멀티파트 업로드를 완료할 수 있도록 후속 명령에 지정해야 하는 UploadID가 포함됩니다.

    create-multipart-upload 명령의 결과

    멀티파트 업로드에 대한 UploadID를 포함한 후 이 설명서의 다음 AWS CLI를 사용하여 파트 업로드 섹션을 이어서 진행하고 파트 업로드를 시작하세요.

AWS CLI를 사용하여 파트 업로드

AWS Command Line Interface(AWS CLI)를 사용하여 멀티파트 업로드의 파트를 업로드하려면 다음 절차를 완료하세요. upload-part 명령을 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 AWS CLI 명령 레퍼런스의 upload-part를 참조하세요.

참고

이 절차를 계속하기 전에 AWS CLI를 설치하고 Lightsail 및 Amazon S3에 맞게 구성해야 합니다. 자세한 내용은 AWS CLI가 Lightsail과 함께 작동하도록 구성을 참조하세요.

  1. 명령 프롬프트 또는 터미널 창을 엽니다.

  2. 다음 명령을 입력하여 버킷에 파트를 업로드합니다.

    aws s3api upload-part --bucket BucketName --key ObjectKey --part-number Number --body FilePart --upload-id "UploadID" --acl bucket-owner-full-control

    명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.

    • BucketName - 멀티파트 업로드를 생성하려는 버킷의 이름입니다.

    • ObjectKey - 업로드할 파일에 사용하려는 객체 키입니다.

    • Number - 업로드하려는 파트의 파트 번호입니다. 부분 번호를 사용하여 업로드하는 객체에서 각 부분과 그 위치를 고유하게 식별합니다. 업로드하는 각 파트에 대해 --part-number 파라미터를 점진적으로 늘려야 합니다. 이렇게 하려면 멀티파트 업로드를 완료할 때 Amazon Simple Storage Service가 객체를 결합해야 하는 순서대로 번호를 매겨야 합니다.

    • FilePart - 컴퓨터에서 업로드하려는 파트 파일입니다.

    • UploadID - 가이드의 앞부분에서 생성한 멀티파트 업로드의 업로드 ID입니다.

    예시

    aws s3api upload-part --bucket amzn-s3-demo-bucket --key sailbot.mp4 --part-number 1 --body sailbot.mp4.001 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    다음 예제와 비슷한 결과가 나타나야 합니다. 업로드한 각 파트에 대해 upload-part 명령을 반복합니다. 각 파트 업로드 요청의 응답에는 업로드한 파트의 ETag 값이 포함됩니다. 업로드한 각 파트의 ETag 값을 기록합니다. 멀티파트 업로드를 완료하려면 모든 ETag 값이 필요합니다. 이 값은 가이드의 후반부에서 다룹니다.

    upload-part 명령의 결과

AWS CLI를 사용하여 멀티파트 업로드의 파트 나열

AWS Command Line Interface (AWS CLI)를 사용하여 멀티파트 업로드의 파트를 나열하려면 다음 절차를 완료하세요. list-parts 명령을 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 AWS CLI 명령 레퍼런스의 list-parts를 참조하세요.

이 절차를 완료하여 멀티파트 업로드에서 업로드된 모든 파트의 ETag 값을 가져옵니다. 이 값이 있어야 가이드 후반부에서 멀티파트 업로드를 완료할 수 있습니다. 단, 파트 업로드 응답의 ETag 값을 모두 기록한 경우 이 절차를 건너뛰고 가이드의 멀티파트 업로드 .json 파일 생성 섹션을 이어서 진행합니다.

참고

이 절차를 계속하기 전에 AWS CLI를 설치하고 Lightsail 및 Amazon S3에 맞게 구성해야 합니다. 자세한 내용은 AWS CLI가 Lightsail과 함께 작동하도록 구성을 참조하세요.

  1. 명령 프롬프트 또는 터미널 창을 엽니다.

  2. 다음 명령을 입력하여 버킷에 멀티파트 업로드 파트를 나열합니다.

    aws s3api list-parts --bucket BucketName --key ObjectKey --upload-id "UploadID"

    명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.

    • BucketName - 멀티파트 업로드의 파트를 나열하려는 버킷의 이름입니다.

    • ObjectKey - 멀티파트 업로드의 객체 키입니다.

    • UploadID - 가이드의 앞부분에서 생성한 멀티파트 업로드의 업로드 ID입니다.

    예시

    aws s3api list-parts --bucket amzn-s3-demo-bucket --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG"

    다음 예제와 비슷한 결과가 나타나야 합니다. 응답에는 멀티파트 업로드에 업로드한 파트의 ETag 값과 모든 파트 번호가 나열됩니다. 이 값을 클립보드로 복사하고 가이드의 멀티파트 업로드 .json 생성 섹션을 이어서 진행합니다.

    list-parts 명령의 결과

멀티파트 업로드 .json 파일 생성

업로드한 모든 파트와 파트 ETag 값을 정의하는 멀티파트 업로드 .json 파일을 생성하려면 다음 절차를 완료하세요. 이 작업은 가이드의 후반부에서 수행해야 합니다.

  1. 텍스트 편집기를 열고 가이드의 이전 섹션에서 요청한 list-parts 명령의 응답을 붙여넣습니다.

    결과는 다음 예제와 같아야 합니다.

    멀티파트 업로드 JSON 파일 번호 1
  2. 다음 예와 같이 텍스트 파일의 형식을 다시 지정합니다.

    멀티파트 업로드 JSON 파일 번호 2
  3. 텍스트 파일을 컴퓨터에 mpstructure.json으로 저장하고 가이드의 AWS CLI를 사용하여 멀티파트 업로드 완료 섹션을 이어서 진행합니다.

AWS CLI를 사용하여 멀티파트 업로드 완료

AWS Command Line Interface (AWS CLI)를 사용하여 멀티파트 업로드를 마치려면 다음 절차를 완료하세요. complete-multipart-upload 명령을 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 AWS CLI 명령 레퍼런스의 complete-multipart-upload를 참조하세요.

참고

이 절차를 계속하기 전에 AWS CLI를 설치하고 Lightsail 및 Amazon S3에 맞게 구성해야 합니다. 자세한 내용은 AWS CLI가 Lightsail과 함께 작동하도록 구성을 참조하세요.

  1. 명령 프롬프트 또는 터미널 창을 엽니다.

  2. 다음 명령을 입력하여 버킷에 파트를 업로드합니다.

    aws s3api complete-multipart-upload --multipart-upload file://JSONFileName --bucket BucketName --key ObjectKey --upload-id "UploadID" --acl bucket-owner-full-control

    명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.

    • JSONFileName - 가이드의 앞부분에서 생성한 .json 파일의 이름(예:mpstructure.json)입니다.

    • BucketName - 멀티파트 업로드를 완료하려는 버킷의 이름입니다.

    • ObjectKey - 멀티파트 업로드의 객체 키입니다.

    • UploadID - 가이드의 앞부분에서 생성한 멀티파트 업로드의 업로드 ID입니다.

    aws s3api complete-multipart-upload --multipart-upload file://mpstructure.json --bucket amzn-s3-demo-bucket --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    다음 예와 비슷한 응답이 나타나는 것을 볼 수 있습니다. 이것으로 멀티파트 업로드가 완료되었는지 확인할 수 있습니다. 이제 객체가 결합되어 버킷에서 사용할 수 있게 됩니다.

    complete-multipart-upload 명령의 결과

AWS CLI를 사용하여 버킷에 대한 멀티파트 업로드 나열

AWS Command Line Interface (AWS CLI)를 사용하여 버킷의 모든 멀티파트 업로드를 나열하려면 다음 절차를 완료하세요. list-multipart-uploads 명령을 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 AWS CLI 명령 레퍼런스의 list-multipart-uploads를 참조하세요.

참고

이 절차를 계속하기 전에 AWS CLI를 설치하고 Lightsail 및 Amazon S3에 맞게 구성해야 합니다. 자세한 내용은 AWS CLI가 Lightsail과 함께 작동하도록 구성을 참조하세요.

  1. 명령 프롬프트 또는 터미널 창을 엽니다.

  2. 다음 명령을 입력하여 버킷에 파트를 업로드합니다.

    aws s3api list-multipart-uploads --bucket BucketName

    명령에서 BucketName을 모든 멀티파트 업로드를 나열하려는 버킷의 이름으로 바꿉니다.

    예시

    aws s3api list-multipart-uploads --bucket amzn-s3-demo-bucket

    다음 예와 비슷한 응답이 나타나는 것을 볼 수 있습니다.

    list-multipart-uploads 명령의 결과

AWS CLI를 사용하여 멀티파트 업로드 중지

AWS Command Line Interface (AWS CLI)를 사용하여 멀티파트 업로드를 중지하려면 다음 절차를 완료하세요. 멀티파트 업로드를 시작했는데 더 이상 계속하지 않으려는 경우 이 작업을 수행하면 됩니다. abort-multipart-upload 명령을 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 AWS CLI 명령 레퍼런스의 abort-multipart-upload를 참조하세요.

참고

이 절차를 계속하기 전에 AWS CLI를 설치하고 Lightsail 및 Amazon S3에 맞게 구성해야 합니다. 자세한 내용은 AWS CLI가 Lightsail과 함께 작동하도록 구성을 참조하세요.

  1. 명령 프롬프트 또는 터미널 창을 엽니다.

  2. 다음 명령을 입력하여 버킷에 파트를 업로드합니다.

    aws s3api abort-multipart-upload --bucket BucketName --key ObjectKey --upload-id "UploadID" --acl bucket-owner-full-control

    명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.

    • BucketName - 멀티파트 업로드를 중단하려는 버킷의 이름입니다.

    • ObjectKey - 멀티파트 업로드의 객체 키입니다.

    • UploadID - 중지하려는 멀티파트 업로드의 업로드 ID입니다.

    예시

    aws s3api abort-multipart-upload --bucket amzn-s3-demo-bucket --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    이 명령은 응답을 반환하지 않습니다. list-multipart-uploads 명령을 실행하여 멀티파트 업로드가 중지되었음을 확인할 수 있습니다.