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

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

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

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

1

認証情報を指定して、AWS Security Token Service クライアントのインスタンスである AWS::STS::Session を作成します。

2

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

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

3

一時セキュリティ証明書で渡すことにより、AWS::S3 クラスの新しいインスタンスで一時証明書を使用します。

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

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

Copy
# Start a session. # In real applications, the following code is part of your trusted code. It has # your security credentials that you use to obtain temporary security credentials. sts = AWS::STS.new() session = sts.new_session() puts "Session expires at: #{session.expires_at.to_s}" # Get an instance of the S3 interface using the session credentials. s3 = AWS::S3.new(session.credentials) # Get a list of all object keys in a bucket. bucket = s3.buckets[bucket_name].objects.collect(&:key)

注記

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

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

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

Copy
require 'rubygems' require 'aws-sdk' # In real applications, the following code is part of your trusted code. It has # your security credentials you use to obtain temporary security credentials. bucket_name = '*** Provide bucket name ***' # Start a session. sts = AWS::STS.new() session = sts.new_session() puts "Session expires at: #{session.expires_at.to_s}" # get an instance of the S3 interface using the session credentials s3 = AWS::S3.new(session.credentials) # get a list of all object keys in a bucket bucket = s3.buckets[bucket_name].objects.collect(&:key) puts bucket