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

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

IAM ユーザーまたは AWS アカウントは、AWS SDK for Java を使用して一時的なセキュリティ認証情報をリクエストし(「リクエストの実行」を参照)、その認証情報を使用して、Amazon S3 にアクセスできます。これらの認証情報は、セッションの有効期間が過ぎると失効します。デフォルトでは、セッションの有効期間は 1 時間です。 IAM ユーザーの認証情報を使用する場合、一時的なセキュリティ認証情報をリクエストするときに、有効期間を 1 ~ 36 時間の間で指定できます。

IAM ユーザーの一時的なセキュリティ認証情報を使用したリクエストの実行

1

AWS Security Token Service クライアント AWSSecurityTokenServiceClient のインスタンスを作成します。

2

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

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

3

Amazon S3 クライアントに一時的なセキュリティ認証情報を提供できるように、この認証情報を BasicSessionCredentials オブジェクトのインスタンスにパッケージ化します。

4

一時セキュリティ証明書を渡して、AmazonS3Client クラスのインスタンスを作成します。

このクライアントを使用してリクエストを Amazon S3 に送信します。失効した認証情報を使用してリクエストを送信すると、Amazon S3 はエラーを返します。

以下の Java コード例は、前述のタスクの例です。

Copy
// In real applications, the following code is part of your trusted code. It has // your security credentials you use to obtain temporary security credentials. AWSSecurityTokenServiceClient stsClient = new AWSSecurityTokenServiceClient(new ProfileCredentialsProvider()); // // Manually start a session. GetSessionTokenRequest getSessionTokenRequest = new GetSessionTokenRequest(); // Following duration can be set only if temporary credentials are requested by an IAM user. getSessionTokenRequest.setDurationSeconds(7200); GetSessionTokenResult sessionTokenResult = stsClient.getSessionToken(getSessionTokenRequest); Credentials sessionCredentials = sessionTokenResult.getCredentials(); // Package the temporary security credentials as // a BasicSessionCredentials object, for an Amazon S3 client object to use. BasicSessionCredentials basicSessionCredentials = new BasicSessionCredentials(sessionCredentials.getAccessKeyId(), sessionCredentials.getSecretAccessKey(), sessionCredentials.getSessionToken()); // The following will be part of your less trusted code. You provide temporary security // credentials so it can send authenticated requests to Amazon S3. // Create Amazon S3 client by passing in the basicSessionCredentials object. AmazonS3Client s3 = new AmazonS3Client(basicSessionCredentials); // Test. For example, get object keys in a bucket. ObjectListing objects = s3.listObjects(bucketName);

注記

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

以下の Java コード例では、指定したバケットのオブジェクトキーを列挙しています。このコード例では、わかりやすいように、デフォルトの 1 時間のセッションの一時的なセキュリティ認証情報を取得し、それを使用して認証リクエストを Amazon S3 に送信します。

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

Copy
import java.io.IOException; import com.amazonaws.auth.BasicSessionCredentials; import com.amazonaws.auth.PropertiesCredentials; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient; import com.amazonaws.services.securitytoken.model.Credentials; import com.amazonaws.services.securitytoken.model.GetSessionTokenRequest; import com.amazonaws.services.securitytoken.model.GetSessionTokenResult; import com.amazonaws.services.s3.model.ObjectListing; public class S3Sample { private static String bucketName = "*** Provide bucket name ***"; public static void main(String[] args) throws IOException { AWSSecurityTokenServiceClient stsClient = new AWSSecurityTokenServiceClient(new ProfileCredentialsProvider()); // // Start a session. GetSessionTokenRequest getSessionTokenRequest = new GetSessionTokenRequest(); GetSessionTokenResult sessionTokenResult = stsClient.getSessionToken(getSessionTokenRequest); Credentials sessionCredentials = sessionTokenResult.getCredentials(); System.out.println("Session Credentials: " + sessionCredentials.toString()); // Package the session credentials as a BasicSessionCredentials // object for an S3 client object to use. BasicSessionCredentials basicSessionCredentials = new BasicSessionCredentials(sessionCredentials.getAccessKeyId(), sessionCredentials.getSecretAccessKey(), sessionCredentials.getSessionToken()); AmazonS3Client s3 = new AmazonS3Client(basicSessionCredentials); // Test. For example, get object keys for a given bucket. ObjectListing objects = s3.listObjects(bucketName); System.out.println("No. of Objects = " + objects.getObjectSummaries().size()); } }

関連リソース

このページの内容: