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

IAM ユーザーの一時的な認証情報を使用したリクエストの実行 – AWS SDK for .NET

IAM ユーザーまたは AWS アカウントは、AWS SDK for .NET を使用して一時的なセキュリティ認証情報をリクエストし、これを使用して Amazon S3 にアクセスできます。これらの認証情報は、セッションの有効期間が過ぎると失効します。一時的なセキュリティ認証情報を取得して Amazon S3 にアクセスするには、以下の操作を行います。

  1. AWS Security Token Service クライアント AmazonSecurityTokenServiceClient のインスタンスを作成します。認証情報の指定の詳細については、「AWS SDK、CLI、Explorer の使用」をご覧ください。

  2. 前の手順で作成した STS クライアントの GetSessionToken メソッドを呼び出して、セッションを開始します。GetSessionTokenRequest オブジェクトを使用して、このメソッドにセッション情報を指定します。

    このメソッドは一時的なセキュリティ認証情報を返します。

  3. SessionAWSCredentials オブジェクトのインスタンスに一時セキュリティ証明書をパッケージ化します。このオブジェクトを使用して、 Amazon S3 クライアントに対して一時的なセキュリティ認証情報を提供します。

  4. 一時セキュリティ証明書を渡して、AmazonS3Client クラスのインスタンスを作成します。 このクライアントを使用してリクエストを Amazon S3 に送信します。失効した認証情報を使用してリクエストを送信すると、Amazon S3 はエラーを返します。

注記

AWS アカウントのセキュリティ認証情報を使用して一時的なセキュリティ認証情報を取得した場合、この認証情報は 1 時間だけ有効です。セッションの有効期間を指定できるのは、IAM ユーザー認証情報を使用してセッションをリクエストする場合に限ります。

次の C# の例では、指定したバケットのオブジェクトキーを一覧表示します。わかりやすいように、一時的なセキュリティ認証情報をデフォルトの 1 時間のセッションとして取得し、これを使用して認証済みのリクエストを Amazon S3 に送信します。

IAM ユーザー認証情報を使用してサンプルをテストする場合は、AWS アカウントに IAM ユーザーを作成する必要があります。IAM ユーザーを作成する方法の詳細については、IAM ユーザーガイドの「最初の IAM ユーザーと管理者グループの作成」を参照してください。リクエストの実行の詳細については、「リクエストの実行」を参照してください。

有効な例を作成してテストする手順については、「Amazon S3 .NET コード例の実行」を参照してください。

using Amazon.Runtime; using Amazon.S3; using Amazon.S3.Model; using Amazon.SecurityToken; using Amazon.SecurityToken.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class TempCredExplicitSessionStartTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main() { ListObjectsAsync().Wait(); } private static async Task ListObjectsAsync() { try { // Credentials use the default AWS SDK for .NET credential search chain. // On local development machines, this is your default profile. Console.WriteLine("Listing objects stored in a bucket"); SessionAWSCredentials tempCredentials = await GetTemporaryCredentialsAsync(); // Create a client by providing temporary security credentials. using (s3Client = new AmazonS3Client(tempCredentials, bucketRegion)) { var listObjectRequest = new ListObjectsRequest { BucketName = bucketName }; // Send request to Amazon S3. ListObjectsResponse response = await s3Client.ListObjectsAsync(listObjectRequest); List<S3Object> objects = response.S3Objects; Console.WriteLine("Object count = {0}", objects.Count); } } catch (AmazonS3Exception s3Exception) { Console.WriteLine(s3Exception.Message, s3Exception.InnerException); } catch (AmazonSecurityTokenServiceException stsException) { Console.WriteLine(stsException.Message, stsException.InnerException); } } private static async Task<SessionAWSCredentials> GetTemporaryCredentialsAsync() { using (var stsClient = new AmazonSecurityTokenServiceClient()) { var getSessionTokenRequest = new GetSessionTokenRequest { DurationSeconds = 7200 // seconds }; GetSessionTokenResponse sessionTokenResponse = await stsClient.GetSessionTokenAsync(getSessionTokenRequest); Credentials credentials = sessionTokenResponse.Credentials; var sessionCredentials = new SessionAWSCredentials(credentials.AccessKeyId, credentials.SecretAccessKey, credentials.SessionToken); return sessionCredentials; } } } }

関連リソース

このページの内容: