View a markdown version of this page

例: AWS 署名バージョン 4 の署名計算 - Amazon Simple Storage Service

例: AWS 署名バージョン 4 の署名計算

認証を必要とするリクエストを行う場合、AWS SDK を使用していないのであれば、リクエストの認証情報を提供する署名を計算するコードを記述する必要があります。AWS Signature Version 4 (リクエストの認証 (AWS 署名バージョン 4) を参照) での署名計算は複雑な作業になる場合があるため、可能な限り AWS SDK を使用することをお勧めします。

このセクションでは、Java および C# で記述された署名計算の例を示します。コードサンプルは次のリクエストを送信し、HTTP Authorization ヘッダーを使用して認証情報を提供します。

  • PUT オブジェクト – それぞれの例は、ペイロード全体を一度にアップロードする方法と、ペイロードをチャンク単位でアップロードする方法の両方を示しています。認証に Authorization ヘッダーを使用する方法については、「リクエストの認証: Authorization ヘッダーの使用 (AWS 署名バージョン 4)」を参照してください。

  • GET オブジェクト – この例では、オブジェクトを取得するための署名付き URL を生成します。クエリパラメータは、署名およびその他の認証情報を提供します。ユーザーは、署名付き URL をブラウザに貼り付けてオブジェクトを取得するか、URL を使用してクリック可能なリンクを作成できます。認証にクエリパラメータを使用する方法については、「リクエストの認証: クエリパラメータの使用 (AWS 署名バージョン 4)」を参照してください。

このセクションの残りの部分では、Java および C# の例について説明します。トピックには、サンプルのダウンロードおよび実行の手順が含まれています。

Java を使用した署名計算の例 (AWS 署名バージョン 4)

署名計算を示す Java のサンプルは、https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AWSS3SigV4JavaSamples.zip からダウンロードできます。これらのサンプルでは AWS SDK for Java v1 を使用していますが、新しいアプリケーションには AWS SDK for Java v2 を使用することをお勧めします。RunAllSamples.javamain() 関数は、サンプルリクエストを実行して、オブジェクトの作成、オブジェクトの取得、オブジェクトの署名付き URL の作成を行います。このサンプルは、コードで指定されたテキスト文字列からオブジェクトを作成します。

PutS3ObjectSample.putS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); GetS3ObjectSample.getS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); PresignedUrlSample.getPresignedUrlToS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); PutS3ObjectChunkedSample.putS3ObjectChunked(bucketName, regionName, awsAccessKey, awsSecretKey);
Linux ベースのコンピュータで例をテストするには

以下の手順は、Linux オペレーティングシステムを対象としています。

  1. ターミナルで、AWSS3SigV4JavaSamples.zip が含まれるディレクトリに移動します。

  2. .zip ファイルを展開します。

  3. テキストエディタで、./com/amazonaws/services/s3/samples/RunAllSamples.java ファイルを開きます。次の情報を使用してコードを更新します。

    • 新しいオブジェクトを作成できるバケットの名前。

      注記

      この例では、仮想ホスト形式のリクエストを使用してバケットにアクセスします。潜在的なエラーを回避するため、「Amazon Simple Storage Service ユーザーガイド」の「バケットの制約と制限」で説明されているように、バケット名がバケット命名規則に準拠していることを確認してください。

    • バケットが存在する AWS リージョン。

      バケットが米国東部 (バージニア北部) リージョンにある場合は、us-east-1 を使用してリージョンを指定します。その他の AWS リージョンのリストについては、「AWS 全般のリファレンス」の「Amazon Simple Storage Service (S3)」を参照してください。

  4. ソースコードをコンパイルし、コンパイルされたクラスを bin/ ディレクトリに保存します。

    javac -d bin -source 6 -verbose com
  5. ディレクトリを bin/ に変更し、RunAllSamples を実行します。

    java com.amazonaws.services.s3.sample.RunAllSamples

    このコードは、main() のすべてのメソッドを実行します。各リクエストについて、出力には正規リクエスト、署名する文字列、署名が表示されます。

C# を使用した署名計算の例 (AWS 署名バージョン 4)

署名計算を示す C# のサンプルは、https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AmazonS3SigV4_Samples_CSharp.zip からダウンロードできます。これらのサンプルは AWS SDK for .NET v1 を使用していますが、新しいアプリケーションには AWS SDK for .NET v3 を使用することをお勧めします。Program.csmain() 関数は、サンプルリクエストを実行して、オブジェクトの作成、オブジェクトの取得、オブジェクトの署名付き URL の作成を行います。署名計算のコードは \Signers フォルダにあります。

PutS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt"); Console.WriteLine("\n\n************************************************"); PutS3ObjectChunkedSample.Run(awsRegion, bucketName, "MySampleFileChunked.txt"); Console.WriteLine("\n\n************************************************"); GetS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt"); Console.WriteLine("\n\n************************************************"); PresignedUrlSample.Run(awsRegion, bucketName, "MySampleFile.txt");
Microsoft Visual Studio 2010 以降で例をテストするには
  1. .zip ファイルを展開します。

  2. Visual Studio を起動し、.sln ファイルを開きます。

  3. 有効なセキュリティ認証情報を使用して App.config ファイルを更新します。

  4. 次のようにコードを更新します。

    • Program.cs で、バケット名とバケットが存在する AWS リージョンを指定します。このサンプルは、このバケット内にオブジェクトを作成します。

  5. コードを実行します。

  6. オブジェクトが作成されたことを確認するには、プログラムが作成した署名付き URL をコピーし、ブラウザのウィンドウに貼り付けます。