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

AWS アカウントまたは IAM ユーザーの一時的な認証情報を使用したリクエストの実行 – AWS SDK for PHP

このトピックでは、AWS SDK for PHP のクラスを使用して一時的セキュリティ認証情報をリクエストし、その認証情報を使用して Amazon S3 にアクセスする手順を示します。

注記

このトピックでは、既に AWS SDK for PHP の使用と PHP サンプルの実行 の説明が実行されていて、AWS SDK for PHP が正しくインストールされていることを前提としています。

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

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

1

Aws\Sts\StsClient クラスの factory() メソッドを使用して、AWS Security Token Service(AWS STS)クライアントのインスタンスを作成します。

2

Aws\Sts\StsClient::getSessionToken() メソッドを使用してセッションを開始します。

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

3

前のステップで取得した一時的なセキュリティ認証情報と共に Aws\S3\S3Client クラスの factory() メソッドを使用して、Amazon S3 クライアントのインスタンスを作成します。

呼び出す S3Client クラスのメソッドはいずれも、一時的なセキュリティ認証情報を使用して、認証リクエストを Amazon S3 に送信します。

以下の PHP コード例は、一時的なセキュリティ認証情報をリクエストし、その認証情報を使用して Amazon S3 にアクセスする方法を示しています。

Copy
use Aws\Sts\StsClient; use Aws\S3\S3Client; // 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 = StsClient::factory(); $result = $sts->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 an Amazon S3 client using temporary security credentials. $credentials = $result->get('Credentials'); $s3 = S3Client::factory(array( 'key' => $credentials['AccessKeyId'], 'secret' => $credentials['SecretAccessKey'], 'token' => $credentials['SessionToken'] )); $result = $s3->listBuckets();

注記

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

例 (一時的なセキュリティ認証情報を使用した Amazon S3 リクエストの実行)

以下の PHP コード例では、一時的なセキュリティ認証情報を使用して、指定したバケットのオブジェクトキーをリストしています。このコード例では、デフォルトの 1 時間のセッションの一時的なセキュリティ認証情報を取得し、その認証情報を使用して認証リクエストを Amazon S3 に送信しています。PHP 例の実行については、このガイド内の「PHP サンプルの実行」を参照してください。

IAM ユーザーの認証情報を使用してこのサンプルをテストする場合、AWS アカウントに IAM ユーザーを作成する必要があります。IAM ユーザーを作成する方法については、『IAM ユーザーガイド』の「最初の IAM ユーザーと管理者グループの作成」を参照してください。IAM ユーザー認証情報を使用してセッションをリクエストする場合のセッションの有効期間を設定する例については、「フェデレーションユーザーの一時的な認証情報を使用したリクエストの実行 – AWS SDK for PHP」を参照してください。

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\Sts\StsClient; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $bucket = '*** Your Bucket Name ***'; $sts = StsClient::factory(); $credentials = $sts->getSessionToken()->get('Credentials'); $s3 = S3Client::factory(array( 'key' => $credentials['AccessKeyId'], 'secret' => $credentials['SecretAccessKey'], 'token' => $credentials['SessionToken'] )); try { $objects = $s3->getIterator('ListObjects', array( 'Bucket' => $bucket )); echo "Keys retrieved!\n"; foreach ($objects as $object) { echo $object['Key'] . "\n"; } } catch (S3Exception $e) { echo $e->getMessage() . "\n"; }

関連リソース

このページの内容: