使用 S3 访问点 ARNs 适用于 PHP 的 AWS 开发工具包版本 3 - 适用于 PHP 的 AWS 开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 S3 访问点 ARNs 适用于 PHP 的 AWS 开发工具包版本 3

S3 引入了接入点,这是与 S3 存储桶交互的一种新方式。接入点上可以应用唯一的策略和配置,而不是直接应用到存储桶。适用于 PHP 的 AWS 开发工具包允许您在存储桶字段中使用访问点 ARNs 执行 API 操作,而不是显式指定存储桶名称。有关 S3 访问点和 ARNs 工作原理的更多详细信息,请参阅 , 以下示例演示如何:

  • GetObject 与接入点 ARN 一起使用可从存储桶中提取对象。

  • PutObject 与访问点 ARN 一起使用可将对象添加到存储桶。

  • 将 S3 客户端配置为使用 ARN 区域而不是客户端区域。

版本 3 的所有示例代码在 AWS SDK for PHP 上的此处提供。GitHub

Credentials

在运行示例代码之前,您需要配置 AWS 凭证,如适用于 PHP 的 AWS 开发工具包版本 3 的凭证中所述。然后导入AWS SDK for PHP,如适用于 PHP 的 AWS 开发工具包版本 3 的基本使用模式中所述。

导入

require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException;

GET Object

首先创建一个用于指定 AWS 区域和版本的 AWS.S3 客户端服务。然后 getObject 使用您的密钥并在 Bucket 字段中使用 S3 接入点 ARN 调用该方法,以从与该接入点关联的存储桶中获取对象。

示例代码

$s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-west-2', ]); $result = $s3->getObject([ 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:endpoint-name', 'Key' => 'MyKey' ]);

在存储桶中放置对象

首先创建一个用于指定 AWS 区域和版本的 AWS.S3 客户端服务。然后使用所需的密钥、正文或源文件并在 Bucket 字段中使用 S3 接入点 ARN 调用 putObject 方法,这会将对象放入与该接入点关联的存储桶中。

示例代码

$s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-west-2', ]); $result = $s3->putObject([ 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:endpoint-name', 'Key' => 'MyKey', 'Body' => 'MyBody' ]);

将 S3 客户端配置为使用 ARN 区域而不是客户端区域

在 S3 客户端操作中使用 S3 接入点 ARN 时,默认情况下,客户端将确保 ARN 区域与客户端区域匹配,如果不匹配则引发异常。通过将 use_arn_region 配置选项设置为 true,可将此行为更改为接受 ARN 区域而不是客户端区域。 默认情况下,该选项设置为 false

示例代码

$s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'use_arn_region' => true ]);

客户端还将按以下优先顺序检查环境变量和配置文件选项:

  1. 客户端选项 use_arn_region,如上例所示。

  2. 环境变量 AWS_S3_USE_ARN_REGION

export AWS_S3_USE_ARN_REGION=true
  1. AWS 共享配置文件(默认情况下位于 ~/.aws/config)中的配置变量 s3_use_arn_region

[default] s3_use_arn_region = true