Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

AWS SDK、CLI、Explorer の使用

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 コマンドラインインターフェイス (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 のコンテキストから実行できます。設定手順については、「ツールキットのセットアップ」を参照してください。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」を参照してください。

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

Amazon S3 は、ほとんどの AWS リージョンで AWS 署名バージョン 4 のみをサポートしています。以前の AWS リージョンの一部では、Amazon S3 で署名バージョン 4 と署名バージョン 2 がサポートされています。ただし、署名バージョン 2 はオフにされています (廃止)。署名バージョン 2 のサポート終了についての詳細は、「Amazon S3 の AWS 署名バージョン 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

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>

 

Amazon S3 の AWS 署名バージョン 2 がオフ (廃止)

署名バージョン 2 はオフになっています (廃止)。Amazon S3 Amazon S3 は、署名バージョン 4 を使用して署名された API リクエストのみを受け入れます。

このセクションでは、署名バージョン 2 のサポート終了に関するよくある質問への回答が掲載されています。

署名バージョン 2 または 4 とは何ですか。また、署名リクエストとはどういう意味ですか。

署名バージョン 2 または署名バージョン 4 の署名プロセスは、Amazon S3 API リクエストを認証するために使用されます。リクエストの署名は、Amazon S3 によってリクエストの送信者を識別し、悪意のある人物からリクエストを保護することができるようになります。

AWS リクエストの署名の詳細については、『AWS General Reference』の「AWS API リクエストの署名」を参照してください。

どの更新を実行していますか。

現在署名バージョン 2 および署名バージョン 4 プロセスを使用して署名された Amazon S3 API リクエストがサポートされています。署名されたリクエストを用いて、Amazon S3 はリクエストを送信しているユーザーを識別し、不正な攻撃者によるリクエストから保護できます。

AWS リクエストの署名に関する詳細については、『AWS General Reference』の「署名バージョン 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 Reference』の「リクエストの認証 (AWS 署名バージョン 4)」を参照してください。

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

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

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

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

詳細

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

Amazon S3 API リクエスト認証に署名バージョン 2 を現在使用している場合は、署名バージョン 4 の使用に移行する必要があります。「Amazon S3 の AWS 署名バージョン 2 がオフ (廃止)」で説明するように、署名バージョン 2 のサポートは終了します。

Amazon S3 REST API における署名バージョン 4 の使用についての詳細は、『Amazon Simple Storage Service API Reference』の「リクエストの認証 (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.x あるいは v2 in Q4 2018 にアップグレード。 はい リクエスト認証での署名バージョンの指定

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

SDK のアップグレードは不要です。 はい 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 コマンドラインインターフェイス

AWS CLI v2 (プレビュー)

SDK のアップグレードは不要です。 いいえ AWS コマンドラインインターフェイスバージョン 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.99 より以前のモジュールバージョンを使用している場合には、3.3.99 にアップグレードする必要があります。

バージョン情報を取得するには、Get-Module コマンドレットを使用します。

Get-ModuleName AWSPowershell Get-ModuleName AWSPowershell.NetCore

3.3.99 バージョンにアップグレードするには、Update-Module コマンドレットを使用します。

Update-ModuleName AWSPowershell Update-ModuleName AWSPowershell.NetCore

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