使用访问点 - Amazon Simple Storage Service

使用访问点

您可以使用 AWS 管理控制台、AWS CLI、AWS 开发工具包或 S3 REST API,通过访问点 来访问 Amazon S3 存储桶中的对象。

访问点具有 Amazon 资源名称 (ARN)。访问点 ARN 与存储桶 ARN 类似,但它们是明确键入和编码访问点的区域和访问点拥有者的 AWS 账户 ID。有关 ARN 的更多信息,请参阅 AWS General Reference 中的 Amazon 资源名称 (ARN)

访问点 ARN 使用以下格式:arn:aws:s3:region:account-id:accesspoint/resource。例如:

  • arn:aws:s3:us-west-2:123456789012:accesspoint/test 表示由区域 us-west-2 中的账户 123456789012 拥有的名为 test 的访问点。

  • arn:aws:s3:us-west-2:123456789012:accesspoint/* 表示区域 us-west-2 中的账户 123456789012 拥有的所有访问点。

通过访问点访问的对象的 ARN 使用以下格式:arn:aws:s3:region:account-id:accesspoint/access-point-name/object/resource。例如:

  • arn:aws:s3:us-west-2:123456789012:accesspoint/test/object/unit-01 表示通过区域 us-west-2 中的账户 123456789012 拥有的名为 test 的访问点访问的对象 unit-01

  • arn:aws:s3:us-west-2:123456789012:accesspoint/test/object/* 表示区域 us-west-2 的账户 123456789012 中的访问点 test 的所有对象。

  • arn:aws:s3:us-west-2:123456789012:accesspoint/test/object/unit-01/finance/* 表示区域 us-west-2 的账户 123456789012 中的访问点 test 的所有前缀为 unit-01/finance/ 的对象。

访问点与 S3 操作和 AWS 服务的兼容性

Amazon S3 中的访问点与一部分 S3 操作和其他 AWS 服务兼容。以下部分列出了兼容的服务和 S3 操作。

AWS 服务

您可以将 S3 访问点与 AWS CloudFormation 结合使用。

有关 AWS CloudFormation 的更多信息,请参阅 AWS CloudFormation 用户指南中的什么是 AWS CloudFormation?

S3 操作

您可以使用 Amazon S3 API 的以下子集通过访问点来访问存储桶:

监控和日志记录

Amazon S3 记录通过访问点发出的请求以及对管理访问点(如 CreateAccessPointGetAccessPointPolicy)的 API 发出的请求。

通过访问点向 Amazon S3 发出的请求将显示在 S3 服务器访问日志和具有访问点主机名的 AWS CloudTrail 日志中。访问点的主机名采用此形式:access_point_name-account_id.s3-accesspoint.Region.amazonaws.com。例如,假设您具有以下存储桶和访问点配置:

  • 区域 us-west-2 中包含对象 my-image.jpg 且名为 my-bucket 的存储桶

  • my-bucket 关联且名为 my-bucket-ap 的访问点

  • 您的 AWS 账户 ID 是 123456789012

为了直接通过日志中显示的主机名为 my-bucket.s3.us-west-2.amazonaws.com 的存储桶检索 my-image.jpg 而发出的请求。如果您通过访问点发出请求,则 Amazon S3 检索相同的对象,但使用主机名 my-bucket-ap-123456789012.s3-accesspoint.us-west-2.amazonaws.com 记录该请求。

有关 S3 服务器访问日志的更多信息,请参阅Amazon S3 服务器访问日志记录。有关 AWS CloudTrail 的更多信息,请参阅 AWS CloudTrail User Guide 中的什么是 AWS CloudTrail?

注意

S3 访问点目前与 Amazon CloudWatch 指标不兼容。

示例

以下示例演示如何在 Amazon S3 中将访问点与兼容操作结合使用。

示例:通过访问点请求对象

以下示例通过区域 us-west-2 中的账户 ID 123456789012 拥有的访问点 prod 来请求对象 my-image.jpg,并将下载的文件另存为 download.jpg

AWS CLI
aws s3api get-object --key my-image.jpg --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod download.jpg

示例:通过访问点上传对象

以下示例通过区域 us-west-2 中的账户 ID 123456789012 拥有的访问点 prod 来上传对象 my-image.jpg

AWS CLI
aws s3api put-object --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod --key my-image.jpg --body my-image.jpg

示例:通过访问点删除对象

以下示例通过区域 us-west-2 中的账户 ID 123456789012 拥有的访问点 prod 来删除对象 my-image.jpg

AWS CLI
aws s3api delete-object --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod --key my-image.jpg

示例:通过访问点列出对象

以下示例通过区域 us-west-2 中的账户 ID 123456789012 拥有的访问点 prod 来列出对象。

AWS CLI
aws s3api list-objects-v2 --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod

示例:通过访问点向对象添加标签集

以下示例通过区域 us-west-2 中的账户 ID 123456789012 拥有的访问点 prod 向现有对象 my-image.jpg 添加标签集。

AWS CLI
aws s3api put-object-tagging --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod --key my-image.jpg --tagging TagSet=[{Key="finance",Value="true"}]

示例:使用 ACL 通过访问点授予访问权限

以下示例通过区域 us-west-2 中的账户 ID 123456789012 拥有的访问点 prod 向现有对象 my-image.jpg 应用 ACL。

AWS CLI
aws s3api put-object-acl --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod --key my-image.jpg --acl private