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 |
デフォルトプロファイルの場合、次のコマンドを実行します。
カスタムプロファイルの場合、次のコマンドを実行します。
|
Java SDK |
コードに以下を追加します:
または、コマンドラインで次のように指定します。
|
JavaScript SDK |
クライアントを構築するときに、
|
PHP SDK |
PHP SDK v2 用の Amazon S3 サービスクライアントを構築する場合は、
PHP SDK v3 を使用している場合、Amazon S3 サービスクライアントの構築中に
|
Python-Boto SDK |
boto デフォルト設定ファイルに以下を指定します。
|
Ruby SDK |
Ruby SDK - バージョン 1: クライアントを構築するときに
Ruby SDK - バージョン 3: クライアントを構築するときに
|
.NET SDK |
Amazon S3 クライアントを作成する前に、コードに以下を追加します。
または、以下を設定ファイルに追加します:
|
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 への移行方法に関する詳細をフォローアップして、提供する予定です。
詳細
-
Signature Version 4 の使用方法の詳細については、AWS API リクエストの署名を参照してください。
-
署名バージョン 2 と 署名バージョン 4 の変更点のリストについては、「署名バージョン 4 の変更」を参照してください。
-
AWS フォーラムの投稿である Amazon S3 API リクエストの署名における AWS Signature Version 2 から AWS Signature Version 4 への移行
を参照してください。 -
ご質問やご意見がありましたら、AWS Support までお問い合わせください。
署名バージョン 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 を使用できます。