AWS SDK를 사용하여 Amazon S3에서 개발 - Amazon Simple Storage Service

AWS SDK를 사용하여 Amazon S3에서 개발

다양한 프로그래밍 언어에 대해 AWS 소프트웨어 개발 키트(SDK)을 사용할 수 있습니다. 각 SDK는 개발자가 선호하는 언어로 애플리케이션을 쉽게 구축할 수 있도록 하는 API, 코드 예시 및 설명서를 제공합니다.

참고

웹 및 모바일 앱의 엔드-투-엔드 풀스택 개발에 AWS Amplify를 사용할 수 있습니다. Amplify Storage는 파일 스토리지 및 관리 기능을 Amazon S3를 기반으로 구축된 프런트엔드 웹 및 모바일 앱에 원활하게 통합합니다. 자세한 내용은 Amplify 사용 설명서의 스토리지를 참조하세요.

SDK 프로그래밍 인터페이스

각각의 AWS SDK는 Amazon S3 작업을 위한 하나 이상의 프로그래밍 인터페이스를 제공합니다. 각 SDK는 API 작업과 매우 비슷한 메서드를 사용하여 Amazon S3용 하위 수준 인터페이스를 제공합니다. 일부 SDK는 Amazon S3용 상위 수준 인터페이스를 제공합니다. 이러한 인터페이스는 일반 사용 사례를 간소화하기 위해 추상화된 것입니다.

예를 들어 하위 수준 API 작업을 사용하여 멀티파트 업로드를 수행하는 경우, 한 작업을 사용하여 업로드를 시작하고 다른 작업을 사용하여 파트를 업로드하며 최종 작업을 사용하여 업로드를 완료해야 합니다. 상위 수준의 멀티파트 업로드 API 작업을 사용하면 업로드에 필요한 모든 작업을 API 직접 호출 한 번으로 수행할 수 있습니다. 예를 보려면 멀티파트 업로드를 사용한 객체 업로드을 참조하세요.

하위 수준의 API 작업을 통해 업로드를 보다 효과적으로 제어할 수 있습니다. 업로드를 일시 중지했다가 다시 시작해야 하거나 업로드 중에 파트 크기를 변경해야 하거나 데이터 크기를 사전에 알지 못하고 업로드를 시작하는 경우 하위 수준 API를 사용합니다.

요청 인증에서 서명 버전 지정

대부분의 AWS 리전에서는 Amazon S3가 AWS 서명 버전 4만 지원합니다. 일부 이전 AWS 리전에서는 Amazon S3가 서명 버전 4와 서명 버전 2를 모두 지원합니다. 그러나 서명 버전 2의 사용이 중지되고 있습니다(사용되지 않음). 서명 버전 2 지원 중단에 대한 자세한 내용은 AWSAmazon S3에서 서명 버전 2 사용 중지(사용되지 않음) 단원을 참조하십시오.

모든 Amazon S3 리전과 이 리전에서 지원하는 서명 버전의 목록은 AWS 일반 참조리전 및 엔드포인트를 참조하세요.

모든 AWS 리전에서 AWS SDK는 요청 인증에 서명 버전 4를 기본적으로 사용합니다. 2016년 5월 이전에 배포된 AWS SDK를 사용하는 경우에는 다음 표에 있는 서명 버전 4를 요청해야 할 수도 있습니다.

SDK 요청 인증을 위한 서명 버전 4 요청
AWS CLI

기본 프로필의 경우 다음 명령을 실행합니다:

$ aws configure set default.s3.signature_version s3v4

사용자 지정 프로필의 경우 다음 명령을 실행합니다:

$ aws configure set profile.your_profile_name.s3.signature_version s3v4
Java SDK

코드에 다음을 추가합니다:

System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");

또는, 명령줄에 다음을 지정합니다:

-Dcom.amazonaws.services.s3.enableV4
JavaScript SDK

클라이언트 생성 시에 signatureVersion 파라미터를 v4로 설정합니다:

var s3 = new AWS.S3({signatureVersion: 'v4'});
PHP SDK

PHP SDK v2에 대한 Amazon S3 서비스 클라이언트 생성 시 다음과 같이 signature 파라미터를 v4로 설정합니다.

<?php $client = S3Client::factory([ 'region' => 'YOUR-REGION', 'version' => 'latest', 'signature' => 'v4' ]);

PHP SDK v3를 사용하는 경우 Amazon S3 서비스 클라이언트를 생성하는 동안 signature_version 파라미터를 v4로 설정하십시오.

<?php $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'YOUR-REGION', 'signature_version' => 'v4' ]);
Python-Boto SDK

기본 config 파일인 boto 파일에 다음을 지정합니다:

[s3] use-sigv4 = True
Ruby SDK

Ruby SDK - 버전 1: 클라이언트 생성 시에 :s3_signature_version 파라미터를 :v4로 설정합니다:

s3 = AWS::S3::Client.new(:s3_signature_version => :v4)

Ruby SDK - 버전 3: 클라이언트 생성 시에 signature_version 파라미터를 v4로 설정합니다:

s3 = Aws::S3::Client.new(signature_version: 'v4')
.NET SDK

Amazon S3 클라이언트를 만들기 전에 다음을 코드에 추가합니다.

AWSConfigsS3.UseSignatureVersion4 = true;

또는, config 파일에 다음을 추가합니다:

<appSettings> <add key="AWS.S3.UseSignatureVersion4" value="true" /> </appSettings>

 

AWSAmazon S3에서 서명 버전 2 사용 중지(사용되지 않음)

Amazon S3에서 서명 버전 2의 사용이 중지되고 있습니다(사용되지 않음). 그런 다음 Amazon S3는 서명 버전 4를 사용하여 서명된 API 요청만 수락합니다.

이 단원에서는 서명 버전 2 지원 종료에 대해 자주 묻는 질문에 답변합니다.

서명 버전 2/4란 무엇이며, 요청 서명은 무엇을 의미합니까?

서명 버전 2 또는 서명 버전 4 서명 프로세스는 Amazon S3 API 요청을 인증하는 데 사용됩니다. 요청 서명은 Amazon S3가 요청을 전송하는 사용자를 식별하고 악의적 사용자로부터 요청을 보호할 수 있게 해줍니다.

AWS 요청 서명에 대한 자세한 내용은 AWS 일반 참조의 AWS API 요청에 서명을 참조하세요.

무엇을 업데이트합니까?

현재 서명 버전 2와 서명 버전 4 프로세스를 사용하여 서명된 Amazon S3 API 요청을 지원합니다. 그 이후로는 Amazon S3가 서명 버전 4를 사용하여 서명된 요청만 수락합니다.

AWS 요청 서명에 대한 자세한 내용은 AWS 일반 참조에서 서명 버전 4의 변경 사항 섹션을 참조하세요.

업데이트하는 이유는 무엇입니까?

서명 버전 4는 보안 액세스 키 대신 서명 키를 사용하여 개선된 보안을 제공합니다. 서명 버전 4는 현재 모든 AWS 리전에서 지원되는 반면, 서명 버전 2는 2014년 1월 이전에 시작한 리전에서만 지원됩니다. 이번 업데이트를 통해 모든 리전에서 보다 일관된 경험을 제공할 수 있게 되었습니다.

서명 버전 4를 사용 중인지 확인하려면 어떻게 해야 하고 무엇을 업데이트해야 합니까?

요청을 서명하는 데 사용되는 서명 버전은 일반적으로 클라이언트 측에서 도구 또는 SDK에 의해 설정됩니다. 기본적으로 최신 버전의 AWS SDK는 서명 버전 4를 사용합니다. 타사 소프트웨어의 경우, 소프트웨어 담당 지원 팀에 연락하여 필요한 버전을 확인하십시오. Amazon S3로 직접 REST 호출을 전송하는 경우, 서명 버전 4 서명 프로세스를 사용하도록 애플리케이션을 수정해야 합니다.

서명 버전 4로 전환 시 사용할 AWS SDK 버전에 대한 정보는 서명 버전 2에서 서명 버전 4로 전환 섹션을 참조하세요.

Amazon S3 REST API에서 서명 버전 4를 사용하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service API 참조요청 인증(AWS 서명 버전 4) 섹션을 참조하세요.

업데이트하지 않으면 어떻게 됩니까?

그 이후 서명 버전 2로 서명하여 작성된 요청은 Amazon S3에서 인증이 실패합니다. 요청자에게 서명 버전 4를 사용하여 요청에 서명해야 한다는 오류가 표시됩니다.

7일 이상 동안 서명하도록 요구하는 미리 서명된 URL을 사용하는 데도 전환이 필요합니까?

7일 이상 동안 서명하도록 요구하는 미리 서명된 URL을 사용하는 경우 현재 아무 조치도 필요하지 않습니다. 계속해서 AWS 서명 버전 2를 사용하여 미리 서명된 URL을 서명 및 인증할 수 있습니다. 추후 미리 서명된 URL 시나리오에서 서명 버전 4로 전환하는 자세한 방법을 안내하도록 하겠습니다.

추가 정보

서명 버전 2에서 서명 버전 4로 전환

현재 Amazon S3 API 요청 인증에 서명 버전 2를 사용 중인 경우 서명 버전 4로 전환해야 합니다. AWSAmazon S3에서 서명 버전 2 사용 중지(사용되지 않음)에서 설명한 대로 서명 버전 2에 대한 지원이 종료될 예정입니다.

Amazon S3 REST API에서 서명 버전 4를 사용하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service API 참조요청 인증(AWS 서명 버전 4) 섹션을 참조하세요.

다음 표에는 필수 최소 버전으로 서명 버전 4(SigV4)를 사용하는 SDK가 나열되어 있습니다. AWS Java, JavaScript(Node.js) 또는 Python(Boto/CLI) SDK를 통해 미리 서명된 URL을 사용 중인 경우 올바른 AWS 리전을 설정하고 클라이언트 구성에서 서명 버전 4를 설정해야 합니다. 클라이언트 구성에서 SigV4 설정에 대한 자세한 내용은 요청 인증에서 서명 버전 지정 단원을 참조하십시오.

현재 사용 중인 SDK/제품 업그레이드할 SDK 버전 Sigv4를 사용하려면 클라이언트에서 코드를 변경해야 합니까? SDK 설명서 링크

AWS SDK for Java v1

Java 1.11.201+ 또는 v2로 업그레이드합니다. 요청 인증에서 서명 버전 지정

AWS SDK for Java v2

SDK 업그레이드가 필요하지 않음. 아니요 AWS SDK for Java

AWS SDK for .NET v1

3.1.10 이상으로 업그레이드. AWS SDK for .NET

AWS SDK for .NET v2

3.1.10 이상으로 업그레이드. 아니요 AWS SDK for .NET v2

AWS SDK for .NET v3

3.3.0.0 이상으로 업그레이드. AWS SDK for .NET v3

AWS SDK for JavaScript v1

2.68.0 이상으로 업그레이드. AWS SDK for JavaScript

AWS SDK for JavaScript v2

2.68.0 이상으로 업그레이드. AWS SDK for JavaScript

AWS SDK for JavaScript v3

현재 아무 조치도 필요하지 않음. 2019년 Q3에 메이저 버전 V3로 업그레이드. 아니요 AWS SDK for JavaScript

AWS SDK for PHP v1

S3 클라이언트 구성에서 서명 파라미터를 v4로 설정하고 PHP의 최신 버전(v2.7.4 이상)으로 업그레이드할 것을 권장합니다. AWS SDK for PHP

AWS SDK for PHP v2

S3 클라이언트 구성에서 서명 파라미터를 v4로 설정하고 PHP의 최신 버전(v2.7.4 이상)으로 업그레이드할 것을 권장합니다. 아니요 AWS SDK for PHP

AWS SDK for PHP v3

SDK 업그레이드가 필요하지 않음. 아니요 AWS SDK for PHP

Boto2

Boto2 v2.49.0으로 업그레이드. Boto 2 업그레이드

Boto 3

1.5.71(Botocore), 1.4.6(Boto3)으로 업그레이드. Boto 3 - Python용 AWS SDK

AWS CLI

1.11.108로 업그레이드. AWS Command Line Interface

AWS CLI v2(프리뷰)

SDK 업그레이드가 필요하지 않음. 아니요 AWS Command Line Interface 버전 2

AWS SDK for Ruby v1

Ruby V3로 업그레이드. AWS용 Ruby V3

AWS SDK for Ruby v2

Ruby V3로 업그레이드. AWS용 Ruby V3

AWS SDK for Ruby v3

SDK 업그레이드가 필요하지 않음. 아니요 AWS용 Ruby V3

Go

SDK 업그레이드가 필요하지 않음. 아니요 AWS SDK for Go

C++

SDK 업그레이드가 필요하지 않음. 아니요 AWS SDK for C++
AWS Tools for Windows PowerShell 또는 AWS Tools for PowerShell Core

3.3.0.0 이전의 모듈 버전을 사용하는 경우 3.3.0.0으로 업그레이드해야 합니다.

버전 정보를 확인하려면 Get-Module cmdlet을 사용합니다.

Get-Module –Name AWSPowershell Get-Module –Name AWSPowershell.NetCore

3.3.0.0 버전을 업데이트하려면 Update-Module cmdlet을 사용합니다.

Update-Module –Name AWSPowershell Update-Module –Name AWSPowershell.NetCore

서명 버전 2 트래픽을 전송하는 데 7일간 유효한 미리 서명된 URL을 사용할 수 있습니다.