객체 다운로드 - Amazon Simple Storage Service

객체 다운로드

이 섹션에서는 Amazon S3 버킷에서 객체를 다운로드하는 방법을 설명합니다. Amazon S3를 사용하면 하나 이상의 버킷에 객체를 저장할 수 있으며, 각 객체의 크기는 최대 5TB까지 가능합니다. 아카이브되지 않은 모든 Amazon S3 객체는 실시간으로 액세스할 수 있습니다. 그러나 아카이브된 객체는 다운로드하기 전에 복원해야 합니다. 아카이브된 객체 다운로드에 대한 자세한 내용은 아카이브된 객체 다운로드를 참조하십시오.

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API를 사용하여 단일 객체를 다운로드할 수 있습니다. 코드를 작성하거나 명령을 실행하지 않고 S3에서 객체를 다운로드하려면 S3 콘솔을 사용하십시오. 자세한 내용은 객체 다운로드 단원을 참조하십시오.

여러 개의 객체를 다운로드하려면 AWS CloudShell, AWS CLI 또는 AWS SDK를 사용하십시오. 자세한 내용은 여러 객체 다운로드 단원을 참조하십시오.

객체의 일부만 다운로드해야 하는 경우, AWS CLI 또는 REST API에서 추가 파라미터를 사용하여 다운로드할 바이트만 지정할 수 있습니다. 자세한 내용은 객체의 일부 다운로드 단원을 참조하십시오.

소유하지 않은 객체를 다운로드해야 하는 경우, 객체 소유자에게 객체를 다운로드할 수 있는 미리 지정된 URL을 생성해 달라고 요청하십시오. 자세한 내용은 다른 AWS 계정에서 객체 다운로드 단원을 참조하십시오.

AWS 네트워크 외부에서 객체를 다운로드하는 경우 데이터 전송 수수료가 적용됩니다. 동일한 AWS 리전 내에서는 AWS 네트워크 내 데이터 전송은 무료이지만 모든 GET 요청에 대해서는 요금이 부과됩니다. 데이터 전송 비용 및 데이터 검색 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하십시오.

객체 다운로드

Amazon S3 콘솔, AWS CLI, AWS SDK 또는 REST API를 사용하여 객체를 다운로드할 수 있습니다.

이 단원에서는 Amazon S3 콘솔을 사용하여 S3 버킷에서 단일 객체를 다운로드하는 방법을 설명합니다.

참고
  • 한 번에 하나의 객체만 다운로드할 수 있습니다.

  • Amazon S3 콘솔을 사용하여 키 이름이 마침표(.)로 끝나는 객체를 다운로드하는 경우, 다운로드한 객체의 키 이름에서 마침표가 제거됩니다. 다운로드한 객체 이름 끝에 마침표를 유지하려면 AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API를 사용해야 합니다.

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

  2. 버킷(Buckets) 목록에서 객체를 다운로드할 버킷의 이름을 선택합니다.

  3. 다음 방법 중 하나를 사용하여 S3 버킷에서 객체를 다운로드할 수 있습니다.

    • 객체 옆의 확인란을 선택하고 다운로드를 선택합니다. 특정 폴더에 객체를 다운로드하려면 작업 메뉴에서 다른 이름으로 다운로드를 선택합니다.

    • 특정 버전의 객체를 다운로드하려면 버전 표시(검색 상자 옆에 있음)를 켭니다. 원하는 객체 버전 옆의 확인란을 선택하고 다운로드를 선택합니다. 특정 폴더에 객체를 다운로드하려면 작업 메뉴에서 다른 이름으로 다운로드를 선택합니다.

다음 get-object 예제 명령은 AWS CLI를 사용하여 Amazon S3에서 객체를 다운로드하는 방법을 보여줍니다. 이 명령은 amzn-s3-demo-bucket1 버킷에서 객체 folder/my_image를 가져옵니다. 객체는 my_downloaded_image라는 파일로 다운로드됩니다.

aws s3api get-object --bucket amzn-s3-demo-bucket1 --key folder/my_image my_downloaded_image

자세한 내용과 예제는 AWS CLI 명령 참조에서 get-object를 참조하세요.

AWS SDK를 사용하여 객체를 다운로드하는 방법에 대한 예제는 Amazon S3 API 참조의 코드 예제를 참조하세요.

다양한 AWS SDK 사용에 대한 일반적인 정보는 Amazon S3 API 참조의 AWS SDK를 사용하여 Amazon S3에서 개발을 참조하세요.

REST API를 사용하여 Amazon S3에서 객체를 검색할 수 있습니다. 자세한 내용은 Amazon Simple Storage Service API 참조에서 GetObject를 참조하십시오.

여러 객체 다운로드

AWS CloudShell, AWS CLI 또는 AWS SDK를 사용하여 여러 객체를 다운로드할 수 있습니다.

AWS CloudShell은 브라우저 기반의 사전 인증된 쉘로, AWS Management Console에서 바로 시작할 수 있습니다.

AWS CloudShell에 대한 자세한 내용은 AWS CloudShell 사용 안내서에서 CloudShell이란 무엇인가요?를 참조하십시오.

중요

AWS CloudShell을 사용하면 홈 디렉터리에는 AWS 리전당 최대 1GB의 저장 공간이 있습니다. 따라서 객체가 이 용량을 초과하면 동기화할 수 없습니다. 자세한 제한 사항은 AWS CloudShell 사용 안내서에서 서비스 할당량 및 제한 사항을 참조하십시오.

AWS CloudShell을 사용하여 객체를 다운로드하려면 다음을 수행하십시오.
  1. AWS Management Console에 로그인하고 CloudShell 콘솔(https://console.aws.amazon.com/cloudshell/)을 엽니다.

  2. 다음 명령을 실행하여 버킷의 객체를 CloudShell에 동기화합니다. 다음 명령은 amzn-s3-demo-bucket1이라는 버킷의 객체를 동기화하고 CloudShell에 temp라는 폴더를 생성합니다. CloudShell은 이 폴더에 객체를 동기화합니다. 이 명령을 사용하려면 user input placeholders를 실제 정보로 대체합니다.

    aws s3 sync s3://amzn-s3-demo-bucket1 ./temp
    참고

    특정 객체를 제외하거나 포함하기 위해 패턴 일치를 수행하려면 sync 명령과 함께 --exclude "value"--include "value" 파라미터를 사용할 수 있습니다.

  3. 다음 명령을 실행하여 temp라는 폴더에 있는 객체를 temp.zip이라는 파일로 압축합니다.

    zip temp.zip -r temp/
  4. 작업을 선택한 다음 파일 다운로드를 선택합니다.

  5. 파일 이름 temp.zip을 입력한 다음 다운로드를 선택합니다.

  6. (선택 사항) CloudShell에서 temp.zip 파일과 temp 폴더에 동기화된 객체를 삭제합니다. AWS CloudShell을 사용하면 각 AWS 리전에 대해 최대 1GB의 영구 스토리지가 제공됩니다.

    다음 예제 명령을 사용하여 .zip 파일과 폴더를 삭제할 수 있습니다. 이 예 명령을 사용하려면 user input placeholders를 실제 정보로 대체하세요.

    rm temp.zip && rm -rf temp/

다음 예제는 AWS CLI를 사용하여 지정된 디렉토리 또는 접두사 아래에 있는 모든 파일 또는 객체를 다운로드하는 방법을 보여줍니다. 이 명령은 amzn-s3-demo-bucket1 버킷의 모든 객체를 현재 디렉터리로 복사합니다. 이 예제 명령을 사용하려면 amzn-s3-demo-bucket1 대신 버킷 이름을 사용하십시오.

aws s3 cp s3://amzn-s3-demo-bucket1 . --recursive

다음 명령은 amzn-s3-demo-bucket1 버킷의 접두사 logs에 해당하는 모든 객체를 현재 디렉터리로 다운로드합니다. 또한 --exclude--include 파라미터를 사용하여 접미사가 .log인 객체만 복사합니다. 이 예시 명령을 사용하려면 user input placeholders를 실제 정보로 대체하십시오.

aws s3 cp s3://amzn-s3-demo-bucket1/logs/ . --recursive --exclude "*" --include "*.log"

자세한 내용과 예제는 AWS CLI 명령 참조에서 cp를 참조하세요.

AWS SDK를 사용하여 Amazon S3 버킷의 모든 객체를 다운로드하는 방법에 대한 예제는 Amazon S3 API 참조의 코드 예제를 참조하세요.

다양한 AWS SDK 사용에 대한 일반적인 정보는 Amazon S3 API 참조의 AWS SDK를 사용하여 Amazon S3에서 개발을 참조하세요.

객체의 일부 다운로드

AWS CLI 또는 REST API를 사용하여 객체의 일부를 다운로드할 수 있습니다. 이렇게 하려면 추가 파라미터를 사용하여 다운로드할 객체의 일부를 지정합니다.

다음 예제 명령은 amzn-s3-demo-bucket1이라는 버킷에 있는 folder/my_data라는 객체의 바이트 범위에 대한 GET 요청을 수행합니다. 요청에서 바이트 범위 앞에 bytes=를 붙여야 합니다. 부분 객체는 my_data_range라는 출력 파일로 다운로드됩니다. 이 예시 명령을 사용하려면 user input placeholders를 실제 정보로 대체하십시오.

aws s3api get-object --bucket amzn-s3-demo-bucket1 --key folder/my_data --range bytes=0-500 my_data_range

자세한 내용과 예제는 AWS CLI 명령 참조에서 get-object를 참조하십시오.

HTTP Range 헤더에 대한 자세한 내용은 RFC 편집기 웹 사이트에서 RFC 9110을 참조하십시오.

참고

Amazon S3는 단일 GET 요청에서 여러 범위의 데이터 검색을 지원하지 않습니다.

REST API의 partNumberRange 파라미터를 사용하여 Amazon S3에서 객체 파트를 검색할 수 있습니다. 자세한 내용은 Amazon Simple Storage Service API 참조에서 GetObject를 참조하십시오.

다른 AWS 계정에서 객체 다운로드

미리 지정된 URL을 사용하여 버킷 정책을 업데이트하지 않고도 다른 사람에게 객체에 대한 시간 제한 액세스를 허용할 수 있습니다.

미리 지정된 URL은 브라우저에 입력하거나 프로그램에서 객체를 다운로드하는 데 사용할 수 있습니다. URL에 사용되는 보안 인증 정보는 URL을 생성한 AWS 사용자의 보안 인증 정보입니다. URL이 생성된 후에는 URL이 만료될 때까지 미리 지정된 URL을 가진 사람은 누구나 해당 객체를 다운로드할 수 있습니다.

다음 단계에 따라 Amazon S3 콘솔을 사용하여 객체 공유를 위해 미리 서명된 URL을 생성할 수 있습니다. 콘솔을 사용할 때 미리 지정된 URL의 최대 만료 시간은 생성 시점으로부터 12시간입니다.

Amazon S3 콘솔을 사용하여 미리 서명된 URL을 생성하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 버킷(Buckets)을 선택합니다.

  3. 버킷(Buckets) 목록에서 미리 서명된 URL이 필요한 객체가 있는 버킷 이름을 선택합니다.

  4. 객체(Objects) 목록에서 미리 서명된 URL을 생성할 객체를 선택합니다.

  5. 객체 작업 메뉴에서 미리 서명된 URL 공유를 선택합니다.

  6. 미리 서명된 URL의 유효 기간을 지정합니다.

  7. 미리 서명된 URL 생성을 선택합니다.

  8. 확인 메시지가 나타나면 URL이 클립보드에 자동으로 복사됩니다. 미리 서명된 URL을 다시 복사해야 하는 경우 미리 서명된 URL을 복사하는 버튼이 표시됩니다.

  9. 다시 복사해야 하는 경우 미리 지정한 URL을 복사하는 버튼이 표시됩니다.

미리 지정된 URL 및 기타 생성 방법에 대한 자세한 내용은 미리 서명된 URL을 통해 객체 다운로드 및 업로드을 참조하십시오.

아카이브된 객체 다운로드

자주 액세스하지 않는 객체의 스토리지 비용을 줄이려면 해당 객체를 아카이브합니다. 객체를 아카이브하면 저비용 스토리지로 이동되므로 실시간으로 액세스할 수 없습니다. 아카이브된 객체를 다운로드하려면 먼저 복원해야 합니다.

스토리지 클래스에 따라 몇 분 또는 몇 시간 내에 아카이브된 객체를 복원할 수 있습니다. Amazon S3 콘솔, S3 배치 작업, Amazon S3 REST API, AWS SDK 및 AWS Command Line Interface(AWS CLI)를 사용하여 아카이브된 객체를 복원할 수 있습니다.

지침은 아카이브된 객체 복원 단원을 참조하십시오. 아카이브된 객체를 복원하고 나면 다운로드할 수 있습니다.

메타데이터를 기반으로 한 객체 다운로드

조건부 읽기 요청을 사용하여 메타데이터를 기반으로 객체를 다운로드하기 위한 사전 조건을 추가할 수 있습니다. 엔터티 태그(ETag) 또는 마지막 수정 날짜를 기준으로 객체를 반환할 수 있습니다. 이렇게 하면 S3 작업을 지정된 날짜 이후에 업데이트된 객체로 제한하거나 특정 객체 버전만 반환할 수 있습니다.

GetObject 또는 HeadObject 요청에 대해 조건부 쓰기를 사용할 수 있습니다.

조건부 요청에 대한 자세한 내용은 조건부 요청을 통해 S3 작업에 사전 조건 추가 섹션을 참조하세요.

객체 다운로드 문제 해결

권한이 충분하지 않거나 버킷 또는 AWS Identity and Access Management(IAM) 사용자 정책이 잘못되면 Amazon S3에서 객체를 다운로드하려고 할 때 오류가 발생할 수 있습니다. 이러한 문제로 인해 Amazon S3에서 리소스에 대한 액세스를 허용할 수 없는 액세스 거부(403 금지됨) 오류가 자주 발생할 수 있습니다.

액세스 거부(403 금지됨) 오류의 일반적인 원인에 대해서는 Amazon S3의 액세스 거부(403 Forbidden) 오류 문제 해결을 참조하십시오.