AWS SDK を使用した Amazon S3 での開発 - Amazon Simple Storage Service

AWS SDK を使用した Amazon S3 での開発

AWS ソフトウェア開発キット (SDK) は、多くの一般的なプログラミング言語で使用できます。各 SDK には、デベロッパーが好みの言語でアプリケーションを簡単に構築できるようにする API、コード例、およびドキュメントが提供されています。

注記

AWS Amplify を使用して、ウェブおよびモバイルアプリのエンドツーエンドのフルスタック開発を行うことができます。Amplify Storage は、Amazon S3 上に構築されたフロントエンドのウェブおよびモバイルアプリにファイルストレージと管理機能をシームレスに統合します。詳細については、「Amplify ユーザーガイド」の「Storage」を参照してください。

SDK プログラミングインターフェイス

各 AWS SDK には、Amazon S3 を操作するプログラミングインターフェイスが 1 つ以上用意されています。各 SDK は、Amazon S3 用の低レベルインターフェイスを提供します。これには、API オペレーションに似たメソッドが含まれます。一部の SDK は、一般的なユースケースを簡素化するための抽象化である Amazon S3 用の高レベルインターフェイスを提供します。

例えば、低レベル API オペレーションを使用してマルチパートアップロードを実行する場合は、オペレーションを使用してアップロードを開始し、別のオペレーションを使用してパートをアップロードし、最後のオペレーションを使用してアップロードを完了する必要があります。高レベルのマルチパートアップロード API オペレーションを使用すると、1 回の API コールでアップロードに必要なすべてのオペレーションを実行できます。例については、「マルチパートアップロードを使用したオブジェクトのアップロード」を参照してください。

低レベルの API オペレーションを使用すると、アップロードをより詳細に制御できます。アップロードを一時停止して再開する必要がある場合、アップロード中にパートサイズを変更する場合、またはアップロードデータのサイズが事前にわからない場合は、低レベル API オペレーションの使用をお勧めします。

リクエスト認証での署名バージョンの指定

Amazon S3 は、ほとんどの AWS リージョン で AWS Signature Version 4 のみをサポートしています。ただし、初期の AWS リージョン のいくつかでは、Amazon S3 は Signature Version 4 と Signature Version 2 をサポートしています。ただし、署名バージョン 2 はオフになっています (廃止)。署名バージョン 2 のサポート終了についての詳細は、「AWSAmazon S3 の 署名バージョン 2 がオフになっている (非推奨)」を参照してください。

すべての Amazon S3 リージョンとリージョンでサポートされている署名バージョンのリストについては AWS 全般のリファレンスリージョンとエンドポイントを参照してください。

すべての AWS リージョン では、AWS SDK はデフォルトで Signature Version 4 を使用してリクエストを認証します。2016 年 5 月以前にリリースされた AWS SDK を使用する場合、次の表に示すように、Signature Version 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

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;

または、以下を設定ファイルに追加します:

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

 

AWSAmazon S3 の 署名バージョン 2 がオフになっている (非推奨)

署名バージョン 2 は Amazon S3 でオフになっています (廃止)。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 全般のリファレンス」の「Signature Version 4 の変更」を参照してください。

なぜこの更新を実行するのですか。

署名バージョン 4 は、シークレットアクセスキーに代わって、署名されたキーを使用することでセキュリティの向上を提供します。Signature Version 4 は現在すべての AWS リージョン でサポートされていますが、Signature Version 2 は 2014 年 1 月以前にリリースしたリージョンにおいてのみサポートされます。この更新によって、すべてのリージョンを通してより一貫したエクスペリエンスを提供することができます。

署名バージョン 4 を使用していることはどのように確認できますか。また、どの更新が必要ですか。

リクエストを署名するために使用する署名バージョンは、通常の場合、クライアント側のツールあるいは SDK によって設定されます。デフォルトでは、最新バージョンの AWS SDK は Signature Version 4 を使用します。サードパーティのソフトウェアについては、お使いのソフトウェアに該当するサポートチームにお問い合わせいただき、必要なバージョンを確認してください。Amazon S3 にダイレクト REST コールを送信する場合、アプリケーションを変更して署名バージョン 4 の署名プロセスを使用する必要があります。

Signature Version 4 に移行するときに使用する AWS SDK のバージョンについての詳細は、署名バージョン 2 から署名バージョン 4 への移行 を参照してください。

Amazon S3 REST API で Signature Version 4 を使用する方法については、Amazon Simple Storage Service API リファレンスリクエストの認証 (AWSSignature Version 4) を参照してください。

更新しない場合には、どうなりますか。

以降に署名バージョン 2 で署名されたリクエストは、Amazon S3 における認証で失敗します。リクエスト送信者には、リクエストが署名バージョン 4 で署名されている必要があることのエラーが表示されます。

7 日以上にわたって署名することが必要である署名付き URL を使用していても、変更することが必要ですか。

7 日以上にわたって署名することが必要である署名付き URL を使用している場合、現在のところ対応する必要はありません。引き続き AWS Signature Version 2 を使用して署名し、署名付き URL を認証できます。今後、署名付き URL シナリオにおける署名バージョン 4 への移行方法に関する詳細をフォローアップして、提供する予定です。

詳細

署名バージョン 2 から署名バージョン 4 への移行

Amazon S3 API リクエスト認証に署名バージョン 2 を現在使用している場合は、署名バージョン 4 の使用に移行する必要があります。「AWSAmazon S3 の 署名バージョン 2 がオフになっている (非推奨)」で説明されているとおり、署名バージョン 2 のサポートは終了します。

Amazon S3 REST API で Signature Version 4 を使用する方法については、Amazon Simple Storage Service API リファレンスリクエストの認証 (AWSSignature Version 4) を参照してください。

次の表では、署名バージョン 4 (SigV4) を使用するために必要な最低限のバージョンの SDK の一覧を示しています。AWS Java、JavaScript (Node.js)、あるいは Python (Boto/CLI) SDK を使った署名付き URL を使用している場合は、正しい AWS リージョン を設定し、クライアント設定で Signature Version 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

現在のところ、何もする必要はありません。主要バージョン V3 in Q3 2019 にアップグレード。 なし AWS SDK for JavaScript

AWS SDK for PHP v1

最新バージョンの PHP、または少なくとも S3 クライアントの設定で署名パラメータを v4 に設定した v2.7.4 にアップグレードすることをお勧めします。 あり AWS SDK for PHP

AWS SDK for PHP v2

最新バージョンの PHP、または少なくとも S3 クライアントの設定で署名パラメータを v4 に設定した v2.7.4 にアップグレードすることをお勧めします。 なし AWS SDK for PHP

AWS SDK for PHP v3

SDK のアップグレードは不要です。 なし AWS SDK for PHP

Boto2

Boto2 v2.49.0 にアップグレード。 あり Boto 2 アップグレード

Boto3

1.5.71 (Botocore)、1.4.6 (Boto3) にアップグレード。 あり Boto 3 - AWS SDK for Python

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 にアップグレード。 あり Ruby V3 for AWS

AWS SDK for Ruby v2

Ruby V3 にアップグレード。 あり Ruby V3 for AWS

AWS SDK for Ruby v3

SDK のアップグレードは不要です。 なし Ruby V3 for AWS

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 コマンドレットを使用します。

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

3.3.0.0 バージョンに更新するには、Update-Module コマンドレットを使用します。

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

署名バージョン 2 をトラフィックで送信する、7 日間以上で有効な署名付き URL を使用できます。