업로드 및 다운로드

이 페이지에서는 객체 업로드 및 다운로드와 관련된 개념을 설명합니다. 최대 5TiB 크기의 MIME 유형 데이터를 업로드하고 저장할 수 있습니다.

업로드

다음과 같은 방법으로 Cloud Storage에 업로드 요청을 보낼 수 있습니다.

  • 단일 요청 업로드 연결 실패 시 파일 전체를 업로드해도 될 만큼 작은 파일인 경우 이 방법을 사용합니다.

    • JSON API에서는 요청에 객체 데이터만 포함된 미디어 업로드와 요청에 객체 데이터와 객체 메타데이터가 모두 포함된 JSON API 멀티파트 업로드를 추가로 구분합니다.
  • 재개 가능한 업로드. 특히 중요한 대용량 파일을 보다 안정적으로 업로드할 때 이 방법을 사용합니다. 재개 가능한 업로드는 업로드당 하나의 추가 HTTP 요청을 대가로 작은 파일에서도 작동하므로 대부분의 애플리케이션에서 좋은 선택입니다. 또한 재개 가능한 업로드를 사용하여 스트리밍 전송을 수행할 수 있으며, 이를 통해 알 수 없는 크기의 객체를 업로드할 수 있습니다.

  • XML API 멀티파트 업로드 Amazon S3 멀티파트 업로드와 호환되는 업로드 방법입니다. 파일은 여러 부분으로 업로드되고 최종 요청을 통해 단일 객체로 조합됩니다. XML API 멀티파트 업로드를 사용하면 여러 부분을 동시에 업로드할 수 있으므로 전체 업로드를 완료하는 데 걸리는 시간을 줄일 수 있습니다.

이러한 기본 업로드 유형을 사용하면 동시 복합 업로드스트리밍 업로드와 같은 고급 업로드 전략을 사용할 수 있습니다.

업로드 크기 고려사항

재개 가능한 업로드 또는 XML API 멀티파트 업로드 대신 단일 요청 업로드를 사용할지 여부를 선택할 때 네트워크 장애가 발생하고 업로드를 처음부터 다시 시작해야 하는 경우 손실해야 하는 시간을 고려하세요. 더 빠른 연결은 컷오프 크기가 일반적으로 더 클 수 있습니다.

예를 들어 30초의 시간을 사용할 수 있다고 가정해 보겠습니다.

  • 평균 업로드 속도가 8Mbps인 로컬 시스템에서 업로드하는 경우 파일에 단일 요청 업로드를 30MB로 사용할 수 있습니다.

  • 업로드 속도가 평균 500Mbps를 초과하는 리전 내 서비스에서 업로드하는 경우 파일의 컷오프 크기는 거의 2GB입니다.

동시 복합 업로드

대용량 파일을 업로드하는 한 가지 방법은 동시 복합 업로드입니다. 이러한 업로드에서 파일은 최대 32개의 청크로 분할되고, 청크가 임시 객체에 동시에 업로드된 다음, 최종 객체가 임시 객체를 사용하여 다시 생성되고, 임시 객체가 삭제됩니다.

네트워크 및 디스크 속도가 제한 요소가 아닌 경우 동시 복합 업로드 속도가 훨씬 빨라질 수 있습니다. 하지만 버킷에 저장된 최종 객체는 복합 객체이며, MD5 해시가 아닌 crc32c 해시만 있습니다. 따라서 gsutil 또는 다른 Python 애플리케이션으로 객체를 다운로드할 때 crcmod를 사용하여 무결성 검사를 수행해야 합니다. 다음이 적용되는 경우에만 동시 복합 업로드를 수행해야 합니다.

  • 객체를 다운로드해야 하는 Python 사용자에게 google-crc32c 또는 crcmod가 설치되어 있습니다.

  • 객체를 다운로드해야 하는 모든 gsutil 사용자에게 crcmod가 설치되어 있습니다.

    예를 들어 gsutil을 사용해 자바 애플리케이션에서만 제공하는 동영상 애셋을 업로드하는 경우 자바에서 사용할 수 있는 효율적인 CRC32C 구현이 있으므로 동시 복합 업로드가 적합합니다.

  • 업로드된 객체에는 MD5 해시가 없어도 됩니다.

gsutil 지원

다음 두 매개변수를 수정하여 gsutil에서 기본적으로 사용 중지되는 동시 복합 업로드의 수행 방법과 시기를 구성할 수 있습니다.

  • parallel_composite_upload_threshold: 동시 복합 업로드를 수행하는 데 필요한 최소한의 총 파일 크기입니다. 이 값을 0으로 설정하여 gsutil의 모든 동시 복합 업로드를 사용 중지할 수 있습니다.

  • parallel_composite_upload_component_size: 각 임시 객체의 최대 크기입니다. 총 파일 크기가 너무 커서 이 크기에서 32개 청크를 초과해야 하는 경우 매개변수는 무시됩니다.

-o 최상위 수준 옵션을 사용하여 명령어별로 두 매개변수를 수정하거나 .boto 구성 파일을 편집하여 모든 gsutil 명령어에 대해 두 매개변수를 수정할 수 있습니다.

gsutil을 사용하여 동시 복합 업로드를 수행하면 로컬 디스크 공간이 추가로 필요하지 않습니다. 조합하기 전에 동시 복합 업로드가 실패하면 gsutil 명령어를 다시 실행하여 실패한 임시 객체에 재개 가능한 업로드를 활용합니다. 업로드가 실패하기 전에 성공적으로 업로드된 임시 객체는 업로드를 재개할 때 다시 업로드되지 않습니다.

임시 객체의 이름은 다음과 같은 방식으로 지정됩니다.

RANDOM_ID/gsutil/tmp/parallel_composite_uploads/for_details_see/gsutil_help_cp/HASH

여기서 RANDOM_ID는 숫자 값이고 HASH는 MD5 해시(파일 또는 객체의 콘텐츠 해시와 관계 없음)입니다.

일반적으로 임시 객체는 동시 복합 업로드 종료 시 삭제되지만, 임시 객체가 주변에 남지 않도록 하려면 gsutil 명령어에서 종료 상태를 확인한 후 중단된 업로드의 일부로 업로드된 임시 객체를 수동으로 삭제해야 합니다.

JSON 및 XML 지원

JSON API 및 XML API 모두 객체 청크를 동시에 업로드하고 compose 작업을 사용하여 단일 객체로 다시 통합할 수 있습니다.

동시 복합 업로드의 코드를 설계할 때는 다음 사항에 유의하세요.

  • compose 작업을 사용하는 경우 소스 객체는 조합 프로세스의 영향을 받지 않습니다.

    즉, 임시로 사용하려는 경우에는 조합이 성공적으로 완료된 후 이를 명시적으로 삭제해야 합니다. 그렇지 않으면 소스 객체가 버킷에 남아 있고 그에 따라 요금이 청구됩니다.

  • 업로드 및 조합 요청 간에 소스 객체가 변경되지 않도록 보호하려면 각 소스에 대해 예상되는 생성 수를 제공해야 합니다.

다운로드

다음 방법으로 다운로드 요청을 Cloud Storage로 보낼 수 있습니다.

  • 간단한 다운로드: 객체를 대상으로 다운로드합니다.

  • 스트리밍 다운로드: 프로세스로 데이터를 다운로드합니다.

  • 슬라이스 객체 다운로드: 큰 객체를 다운로드합니다.

  • 인증된 브라우저 다운로드: Google 계정을 사용하여 브라우저에서 다운로드합니다.

도구당 업로드 및 다운로드 지원

아래의 탭을 클릭하여 각 도구의 지원되는 작업을 확인하세요.

콘솔

gsutil

클라이언트 라이브러리

REST API

요청 엔드포인트

REST API를 사용하여 업로드하고 다운로드하는 경우 요청 엔드포인트에서 사용 가능한 요청 엔드포인트에 대한 전체 논의를 참조하세요.

다음 단계