AWS SDK およびエクスプローラーを使用して Amazon S3 で開発する - Amazon Simple Storage Service

AWS SDK およびエクスプローラーを使用して Amazon S3 で開発する

Amazon S3 でのアプリケーション開発に AWS SDK を使用できます。AWS SDK は、基盤となる REST API をラップして、プログラミング作業を簡素化します。AWS を使用して、接続されるモバイルおよびウェブアプリケーションを構築するために、AWS Mobile SDK と AWS Amplify JavaScript ライブラリも用意されています。

このセクションでは、Amazon S3 アプリケーションの開発に AWS SDK を使用する方法を概説します。また、このガイドで提供されている AWS SDK コード例のテスト方法も説明します。

AWS SDK に加え、Visual Studio および Eclipse for Java IDE で使用できる AWS Explorer も提供されています。この場合、SDK と Explorer が、AWS Toolkit としてバンドルされて提供されます。

また、AWS Command Line Interface (AWS CLI) を使用して Amazon S3 のバケットとオブジェクトを管理することもできます。

AWS Toolkit for Eclipse

AWS Toolkit for Eclipse には、AWS SDK for Java と AWS Explorer for Eclipse が両方とも同梱されています。AWS Explorer for Eclipse は、AWS を使用してデベロッパーが Java アプリケーションを容易に開発、デバッグ、およびデプロイできるようにする Eclipse for Java IDE のオープンソースプラグインです。使いやすい GUI で、Amazon S3 などの AWS インフラストラクチャにアクセスし管理することができます。アプリケーションの開発中、バケットとオブジェクトの管理や IAM ポリシーの設定といった一般的な作業をすべて Eclipse for Java IDE のコンテキストから実行できます。設定手順については、「Toolkit のセットアップ」を参照してください。Explorer の使用例については、AWS Explorer にアクセスする方法を参照してください。

AWS Toolkit for Visual Studio

AWS Explorer for Visual Studio は、デベロッパーがアマゾン ウェブ サービスを使用して .NET アプリケーションを容易に開発、デバッグ、およびデプロイできるようにする Microsoft Visual Studio の拡張機能です。使いやすい GUI で、Amazon S3 などの AWS インフラストラクチャにアクセスし管理することができます。アプリケーションの開発中に、バケットとオブジェクトの管理や IAM ポリシーの設定といった一般的な作業をすべて Visual Studio のコンテキストから実行できます。設定手順については、「AWS Toolkit for Visual Studio を使用する」を参照してください。Explorer を使った Amazon S3 の使用例については、AWS Explorer からの Amazon S3 の使用を参照してください。

AWS SDK

SDK のみをダウンロードできます。SDK ライブラリのダウンロードについては、「サンプルコードライブラリ」を参照してください。

AWS CLI

AWS CLI は、Amazon S3 などの AWS のサービスを管理するための統合ツールです。AWS CLI のダウンロードの詳細については、「AWS Command Line Interface」を参照してください。

このサービスを AWS SDK で使用する

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

このサービスに固有の例については、「AWS SDK を使用した Amazon S3 のコード例」を参照してください。

可用性の例

必要なものが見つからなかった場合。このページの下側にある [Provide feedback (フィードバックを送信)] リンクから、コードの例をリクエストしてください。

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

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 を使用できます。