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

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

このトピックでは、バージョン 3 の AWS SDK for PHP のクラスを使用して一時的セキュリティ認証情報をリクエストし、これを使用して Amazon S3 にアクセスする方法について説明します。以下では、「AWS SDK for PHP の使用と PHP サンプルの実行」の手順に従い、AWS SDK for PHP を適切にインストール済みであるものとします。

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

注記

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

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

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

<?php require 'vendor/autoload.php'; use Aws\Sts\StsClient; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $bucket = '*** Your Bucket Name ***'; $sts = new StsClient([ 'version' => 'latest', 'region' => 'us-east-1' ]); $sessionToken = $sts->getSessionToken(); $s3 = new S3Client([ 'region' => 'us-east-1', 'version' => 'latest', 'credentials' => [ 'key' => $sessionToken['Credentials']['AccessKeyId'], 'secret' => $sessionToken['Credentials']['SecretAccessKey'], 'token' => $sessionToken['Credentials']['SessionToken'] ] ]); $result = $s3->listBuckets(); try { // Retrieve a paginator for listing objects. $objects = $s3->getPaginator('ListObjects', [ 'Bucket' => $bucket ]); echo "Keys retrieved!" . PHP_EOL; // List objects foreach ($objects as $object) { echo $object['Key'] . PHP_EOL; } } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; }

関連リソース

このページの内容: