Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用 AWS 账户或 IAM 用户临时凭证进行请求 - 适用于 PHP 的 AWS 开发工具包

本主题将指导您完成使用适用于 PHP 的 AWS 开发工具包中的类请求临时安全凭证并使用这些凭证访问 Amazon S3 的过程。

注意

本主题假定您已按照 使用适用于 PHP 的 AWS 开发工具包和运行 PHP 示例 的说明执行操作,并正确安装了 适用于 PHP 的 AWS 开发工具包。

IAM 用户或 AWS 账户可以使用适用于 PHP 的 AWS 开发工具包请求临时安全凭证 (请参阅创建请求),然后使用这些凭证访问 Amazon S3。当会话持续时间过期时,这些凭证将过期。默认情况下,会话的持续时间为一个小时。如果您使用 IAM 用户凭证,您可以在请求临时安全凭证时,指定 1 到 36 小时的持续时间。有关临时安全凭证的更多信息,请参阅 IAM 用户指南 中的临时安全凭证

使用 AWS 账户或 IAM 用户临时安全凭证进行请求

1

使用 Aws\Sts\StsClientfactory() 方法创建 AWS Security Token Service (AWS STS) 客户端的实例。

2

执行 Aws\Sts\StsClient::getSessionToken() 方法以启动会话。

此方法将为您返回临时安全凭证。

3

通过将 Aws\S3\S3Clientfactory() 方法与您在上一步骤中获取的临时安全凭证一起使用,创建 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 账户安全凭证获取临时安全凭证,则临时安全凭证的有效期仅为一个小时。只有当您使用 IAM 用户凭证请求会话时,您才可以指定会话持续时间。

例 使用临时安全凭证进行 Amazon S3 请求

以下 PHP 代码示例使用临时安全凭证列出指定存储桶中的对象键。该代码示例会为默认一小时的会话获取临时安全凭证,然后使用这些凭证向 Amazon S3 发送经身份验证的请求。有关运行本指南中的 PHP 示例的信息,请参阅运行 PHP 示例

如果需要使用 IAM 用户凭证测试示例,您将需要在您的 AWS 账户下创建一个 IAM 用户。有关如何创建 IAM 用户的信息,请参阅 IAM 用户指南 中的创建您的第一个 IAM 用户和管理员组。有关在使用 IAM 用户凭证请求会话时设置会话持续时间的示例,请参阅使用联合用户临时凭证创建请求 - 适用于 PHP 的 AWS 开发工具包

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"; }

相关资源

本页内容: