使用Amazon CLI的 Amazon S3 示例 - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用Amazon CLI的 Amazon S3 示例

以下代码示例演示了如何通过将 Amazon Command Line Interface与 Amazon S3 结合使用,来执行操作和实现常见场景。

操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。

主题

操作

以下代码示例演示了如何使用 abort-multipart-upload

Amazon CLI

中止指定的分段上传

以下 abort-multipart-upload 命令中止存储桶 amzn-s3-demo-bucket 中键 multipart/01 的分段上传:

aws s3api abort-multipart-upload \ --bucket amzn-s3-demo-bucket \ --key multipart/01 \ --upload-id dfRtDYU0WWCCcH43C3WFbkRONycyCpTJJvxu2i5GYkZljF.Yxwh6XG7WfS2vC4to6HiV6Yjlx.cph0gtNBtJ8P3URCSbB7rjxI5iEwVDmgaXZOGgkk5nVTW16HOQ5l0R

此命令所需的上传 ID 由 create-multipart-upload 输出,也可以使用 list-multipart-uploads 进行检索。

以下代码示例演示了如何使用 complete-multipart-upload

Amazon CLI

以下命令完成存储桶 amzn-s3-demo-bucket 中密钥 multipart/01 的分段上传:

aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket amzn-s3-demo-bucket --key 'multipart/01' --upload-id dfRtDYU0WWCCcH43C3WFbkRONycyCpTJJvxu2i5GYkZljF.Yxwh6XG7WfS2vC4to6HiV6Yjlx.cph0gtNBtJ8P3URCSbB7rjxI5iEwVDmgaXZOGgkk5nVTW16HOQ5l0R

此命令所需的上传 ID 由 create-multipart-upload 输出,也可以使用 list-multipart-uploads 进行检索。

上述命令中的分段上传选项采用 JSON 结构,用于描述分段上传中应重新组合成完整文件的各个部分。在此示例中,file:// 前缀用于从名为 mpustruct 的本地文件夹中的文件加载 JSON 结构。

mpustruct:

{ "Parts": [ { "ETag": "e868e0f4719e394144ef36531ee6824c", "PartNumber": 1 }, { "ETag": "6bb2b12753d66fe86da4998aa33fffb0", "PartNumber": 2 }, { "ETag": "d0a0112e841abec9c9ec83406f0159c8", "PartNumber": 3 } ] }

每次使用 upload-part 命令上传分段时,都会输出每个分段的 ETag 值,也可以通过调用 list-parts 来检索,或者通过对每个分段进行 MD5 校验和执行计算。

输出:

{ "ETag": "\"3944a9f7a4faab7f78788ff6210f63f0-3\"", "Bucket": "amzn-s3-demo-bucket", "Location": "https://amzn-s3-demo-bucket.s3.amazonaws.com/multipart%2F01", "Key": "multipart/01" }

以下代码示例演示了如何使用 copy-object

Amazon CLI

以下命令将对象从 bucket-1 复制到 bucket-2

aws s3api copy-object --copy-source bucket-1/test.txt --key test.txt --bucket bucket-2

输出:

{ "CopyObjectResult": { "LastModified": "2015-11-10T01:07:25.000Z", "ETag": "\"589c8b79c230a6ecd5a7e1d040a9a030\"" }, "VersionId": "YdnYvTCVDqRRFA.NFJjy36p0hxifMlkA" }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 CopyObject

以下代码示例演示了如何使用 cp

Amazon CLI

示例 1:将本地文件复制到 S3

以下 cp 命令会将单个文件复制到指定的存储桶和密钥:

aws s3 cp test.txt s3://amzn-s3-demo-bucket/test2.txt

输出:

upload: test.txt to s3://amzn-s3-demo-bucket/test2.txt

示例 2:将本地文件复制到 S3,并设置到期日期

以下 cp 命令会将单个文件复制到指定的存储桶和密钥,并在指定的 ISO 8601 时间戳到期:

aws s3 cp test.txt s3://amzn-s3-demo-bucket/test2.txt \ --expires 2014-10-01T20:30:00Z

输出:

upload: test.txt to s3://amzn-s3-demo-bucket/test2.txt

示例 3:将文件从 S3 复制到 S3

以下 cp 命令会将单个 S3 对象复制到指定的存储桶和密钥:

aws s3 cp s3://amzn-s3-demo-bucket/test.txt s3://amzn-s3-demo-bucket/test2.txt

输出:

copy: s3://amzn-s3-demo-bucket/test.txt to s3://amzn-s3-demo-bucket/test2.txt

示例 4:将 S3 对象复制到本地文件

以下 cp 命令会将单个对象复制到指定的本地文件:

aws s3 cp s3://amzn-s3-demo-bucket/test.txt test2.txt

输出:

download: s3://amzn-s3-demo-bucket/test.txt to test2.txt

示例 5:将 S3 对象从一个存储桶复制到另一个存储桶

以下 cp 命令会将单个对象复制到指定的存储桶,同时保留其原始名称:

aws s3 cp s3://amzn-s3-demo-bucket/test.txt s3://amzn-s3-demo-bucket2/

输出:

copy: s3://amzn-s3-demo-bucket/test.txt to s3://amzn-s3-demo-bucket2/test.txt

示例 6:将 S3 对象递归复制到本地目录

当与参数 --recursive 一起传递时,以下 cp 命令会将指定前缀和存储桶下的所有对象递归复制到指定目录。在此示例中,存储桶 amzn-s3-demo-bucket 中包含对象 test1.txttest2.txt

aws s3 cp s3://amzn-s3-demo-bucket . \ --recursive

输出:

download: s3://amzn-s3-demo-bucket/test1.txt to test1.txt download: s3://amzn-s3-demo-bucket/test2.txt to test2.txt

示例 7:将本地文件递归复制到 S3

当与参数 --recursive 一起传递时,以下 cp 命令会将指定目录下的所有文件递归复制到指定的存储桶和前缀,同时使用 --exclude 参数将某些文件排除在外。在此示例中,目录 myDir 中包含文件 test1.txttest2.jpg

aws s3 cp myDir s3://amzn-s3-demo-bucket/ \ --recursive \ --exclude "*.jpg"

输出:

upload: myDir/test1.txt to s3://amzn-s3-demo-bucket/test1.txt

示例 8:将 S3 对象递归复制到另一个存储桶

当与参数 --recursive 一起传递时,以下 cp 命令会将指定存储桶下的所有对象递归复制到另一个存储桶,同时使用 --exclude 参数将某些对象排除在外。在此示例中,存储桶 amzn-s3-demo-bucket 中包含对象 test1.txtanother/test1.txt

aws s3 cp s3://amzn-s3-demo-bucket/ s3://amzn-s3-demo-bucket2/ \ --recursive \ --exclude "another/*"

输出:

copy: s3://amzn-s3-demo-bucket/test1.txt to s3://amzn-s3-demo-bucket2/test1.txt

您可以结合 --exclude--include 选项,仅复制与模式匹配的对象,不复制其他对象:

aws s3 cp s3://amzn-s3-demo-bucket/logs/ s3://amzn-s3-demo-bucket2/logs/ \ --recursive \ --exclude "*" \ --include "*.log"

输出:

copy: s3://amzn-s3-demo-bucket/logs/test/test.log to s3://amzn-s3-demo-bucket2/logs/test/test.log copy: s3://amzn-s3-demo-bucket/logs/test3.log to s3://amzn-s3-demo-bucket2/logs/test3.log

示例 9:复制 S3 对象时设置访问控制列表(ACL)

以下 cp 命令会将单个对象复制到指定的存储桶和密钥,同时将 ACL 设置为 public-read-write

aws s3 cp s3://amzn-s3-demo-bucket/test.txt s3://amzn-s3-demo-bucket/test2.txt \ --acl public-read-write

输出:

copy: s3://amzn-s3-demo-bucket/test.txt to s3://amzn-s3-demo-bucket/test2.txt

请注意,如果使用 --acl 选项,请确保所有相关的 IAM 策略都包含 "s3:PutObjectAcl" 操作:

aws iam get-user-policy \ --user-name myuser \ --policy-name mypolicy

输出:

{ "UserName": "myuser", "PolicyName": "mypolicy", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Effect": "Allow", "Sid": "Stmt1234567891234" } ] } }

示例 10:为 S3 对象授予权限

以下 cp 命令说明如何使用 --grants 选项向所有通过 URI 标识的用户授予读取权限,并向通过 Canonical ID 标识的特定用户授予完全控制权限:

aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=id=79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be

输出:

upload: file.txt to s3://amzn-s3-demo-bucket/file.txt

示例 11:将本地文件流上传到 S3

PowerShell 可能会更改管道输入的编码或向其添加 CRLF。

以下 cp 命令会将本地文件流从标准输入上传到指定的存储桶和密钥:

aws s3 cp - s3://amzn-s3-demo-bucket/stream.txt

示例 12:将大于 50GB 的本地文件流上传到 S3

以下 cp 命令会将 51GB 的本地文件流从标准输入上传到指定的存储桶和密钥。必须提供 --expected-size 选项,否则当达到 10,000 的默认分段限制时,上传可能会失败:

aws s3 cp - s3://amzn-s3-demo-bucket/stream.txt --expected-size 54760833024

示例 13:将 S3 对象下载为本地文件流

PowerShell 可能会更改管道或重定向输出的编码或向其添加 CRLF。

以下 cp 命令会将 S3 对象作为流下载到本地标准输出。以流形式下载目前与 --recursive 参数不兼容:

aws s3 cp s3://amzn-s3-demo-bucket/stream.txt -

示例 14:上传到 S3 接入点

以下 cp 命令会将单个文件(mydoc.txt)上传到密钥(mykey)处的接入点(myaccesspoint):

aws s3 cp mydoc.txt s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/mykey

输出:

upload: mydoc.txt to s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/mykey

示例 15:从 S3 接入点下载

以下 cp 命令会将单个对象(mykey)从接入点(myaccesspoint)下载到本地文件(mydoc.txt):

aws s3 cp s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/mykey mydoc.txt

输出:

download: s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/mykey to mydoc.txt
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 Cp

以下代码示例演示了如何使用 create-bucket

Amazon CLI

示例 1:创建存储桶

以下 create-bucket 示例创建一个名为 amzn-s3-demo-bucket 的存储桶:

aws s3api create-bucket \ --bucket amzn-s3-demo-bucket \ --region us-east-1

输出:

{ "Location": "/amzn-s3-demo-bucket" }

有关更多信息,请参阅《Amazon S3 用户指南》中的创建存储桶

示例 2:创建带有强制拥有者的存储桶

以下 create-bucket 示例创建一个名为 amzn-s3-demo-bucket 的存储桶,该存储桶对于 S3 对象所有权使用强制存储桶拥有者设置。

aws s3api create-bucket \ --bucket amzn-s3-demo-bucket \ --region us-east-1 \ --object-ownership BucketOwnerEnforced

输出:

{ "Location": "/amzn-s3-demo-bucket" }

有关更多信息,请参阅《Amazon S3 用户指南》中的控制对象所有权和禁用 ACL

示例 3:在“us-east-1”区域之外创建存储桶

以下 create-bucket 示例在 eu-west-1 区域中创建名为 amzn-s3-demo-bucket 的存储桶。us-east-1 之外的区域需要指定相应的 LocationConstraint 才能在所需区域创建存储桶。

aws s3api create-bucket \ --bucket amzn-s3-demo-bucket \ --region eu-west-1 \ --create-bucket-configuration LocationConstraint=eu-west-1

输出:

{ "Location": "http://amzn-s3-demo-bucket.s3.amazonaws.com/" }

有关更多信息,请参阅《Amazon S3 用户指南》中的创建存储桶

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 CreateBucket

以下代码示例演示了如何使用 create-multipart-upload

Amazon CLI

以下命令在存储桶 amzn-s3-demo-bucket 中创建带有密钥 multipart/01 的分段上传:

aws s3api create-multipart-upload --bucket amzn-s3-demo-bucket --key 'multipart/01'

输出:

{ "Bucket": "amzn-s3-demo-bucket", "UploadId": "dfRtDYU0WWCCcH43C3WFbkRONycyCpTJJvxu2i5GYkZljF.Yxwh6XG7WfS2vC4to6HiV6Yjlx.cph0gtNBtJ8P3URCSbB7rjxI5iEwVDmgaXZOGgkk5nVTW16HOQ5l0R", "Key": "multipart/01" }

完成的文件在存储桶 amzn-s3-demo-bucket 中名为 multipart 文件夹中将命名为 01。保存上传 ID、密钥和存储桶名称以供 upload-part 命令使用。

以下代码示例演示了如何使用 delete-bucket-analytics-configuration

Amazon CLI

删除存储桶的分析配置

以下 delete-bucket-analytics-configuration 示例移除指定存储桶和 ID 的分析配置。

aws s3api delete-bucket-analytics-configuration \ --bucket amzn-s3-demo-bucket \ --id 1

此命令不生成任何输出。

以下代码示例演示了如何使用 delete-bucket-cors

Amazon CLI

以下命令从名为 amzn-s3-demo-bucket 的存储桶中删除跨源资源共享配置:

aws s3api delete-bucket-cors --bucket amzn-s3-demo-bucket
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteBucketCors

以下代码示例演示了如何使用 delete-bucket-encryption

Amazon CLI

删除存储桶的服务器端加密配置

以下 delete-bucket-encryption 示例删除指定存储桶的服务器端加密配置。

aws s3api delete-bucket-encryption \ --bucket amzn-s3-demo-bucket

此命令不生成任何输出。

以下代码示例演示了如何使用 delete-bucket-intelligent-tiering-configuration

Amazon CLI

移除存储桶上的 S3 智能分层配置

以下 delete-bucket-intelligent-tiering-configuration 示例移除存储桶上名为 ExampleConfig 的 S3 智能分层配置。

aws s3api delete-bucket-intelligent-tiering-configuration \ --bucket amzn-s3-demo-bucket \ --id ExampleConfig

此命令不生成任何输出。

有关更多信息,请参阅《Amazon S3 用户指南》中的使用 S3 智能分层

以下代码示例演示了如何使用 delete-bucket-inventory-configuration

Amazon CLI

删除存储桶的清单配置

以下 delete-bucket-inventory-configuration 示例删除指定存储桶的 ID 为 1 的清单配置。

aws s3api delete-bucket-inventory-configuration \ --bucket amzn-s3-demo-bucket \ --id 1

此命令不生成任何输出。

以下代码示例演示了如何使用 delete-bucket-lifecycle

Amazon CLI

以下命令从名为 amzn-s3-demo-bucket 的存储桶中删除生命周期配置:

aws s3api delete-bucket-lifecycle --bucket amzn-s3-demo-bucket

以下代码示例演示了如何使用 delete-bucket-metrics-configuration

Amazon CLI

删除存储桶的指标配置

以下 delete-bucket-metrics-configuration 示例移除指定存储桶和 ID 的指标配置。

aws s3api delete-bucket-metrics-configuration \ --bucket amzn-s3-demo-bucket \ --id 123

此命令不生成任何输出。

以下代码示例演示了如何使用 delete-bucket-ownership-controls

Amazon CLI

移除存储桶的存储桶所有权设置

以下 delete-bucket-ownership-controls 示例移除存储桶的存储桶所有权设置。

aws s3api delete-bucket-ownership-controls \ --bucket amzn-s3-demo-bucket

此命令不生成任何输出。

有关更多信息,请参阅《Amazon S3 用户指南》中的设置现有存储桶的对象所有权

以下代码示例演示了如何使用 delete-bucket-policy

Amazon CLI

以下命令从名为 amzn-s3-demo-bucket 的存储桶中删除存储桶策略:

aws s3api delete-bucket-policy --bucket amzn-s3-demo-bucket
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteBucketPolicy

以下代码示例演示了如何使用 delete-bucket-replication

Amazon CLI

以下命令从名为 amzn-s3-demo-bucket 的存储桶中删除复制配置:

aws s3api delete-bucket-replication --bucket amzn-s3-demo-bucket

以下代码示例演示了如何使用 delete-bucket-tagging

Amazon CLI

以下命令从名为 amzn-s3-demo-bucket 的存储桶中删除标记配置:

aws s3api delete-bucket-tagging --bucket amzn-s3-demo-bucket
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteBucketTagging

以下代码示例演示了如何使用 delete-bucket-website

Amazon CLI

以下命令从名为 amzn-s3-demo-bucket 的存储桶中删除网站配置:

aws s3api delete-bucket-website --bucket amzn-s3-demo-bucket
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteBucketWebsite

以下代码示例演示了如何使用 delete-bucket

Amazon CLI

以下命令删除名为 amzn-s3-demo-bucket 的存储桶:

aws s3api delete-bucket --bucket amzn-s3-demo-bucket --region us-east-1
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteBucket

以下代码示例演示了如何使用 delete-object-tagging

Amazon CLI

删除对象的标签集

以下 delete-object-tagging 示例从对象 doc1.rtf 中删除带有指定键的标签。

aws s3api delete-object-tagging \ --bucket amzn-s3-demo-bucket \ --key doc1.rtf

此命令不生成任何输出。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteObjectTagging

以下代码示例演示了如何使用 delete-object

Amazon CLI

以下命令从名为 amzn-s3-demo-bucket 的存储桶中删除名为 test.txt 的对象:

aws s3api delete-object --bucket amzn-s3-demo-bucket --key test.txt

如果启用了存储桶版本控制,则输出将包含删除标记的版本 ID:

{ "VersionId": "9_gKg5vG56F.TTEUdwkxGpJ3tNDlWlGq", "DeleteMarker": true }

有关删除对象的更多信息,请参阅《Amazon S3 开发人员指南》中的“删除对象”。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteObject

以下代码示例演示了如何使用 delete-objects

Amazon CLI

以下命令从名为 amzn-s3-demo-bucket 的存储桶中删除对象:

aws s3api delete-objects --bucket amzn-s3-demo-bucket --delete file://delete.json

delete.json 是当前目录中指定要删除的对象的 JSON 文档:

{ "Objects": [ { "Key": "test1.txt" } ], "Quiet": false }

输出:

{ "Deleted": [ { "DeleteMarkerVersionId": "mYAT5Mc6F7aeUL8SS7FAAqUPO1koHwzU", "Key": "test1.txt", "DeleteMarker": true } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteObjects

以下代码示例演示了如何使用 delete-public-access-block

Amazon CLI

删除存储桶的屏蔽公共访问权限配置

以下 delete-public-access-block 示例移除指定存储桶上的屏蔽公共访问权限配置。

aws s3api delete-public-access-block \ --bucket amzn-s3-demo-bucket

此命令不生成任何输出。

以下代码示例演示了如何使用 get-bucket-accelerate-configuration

Amazon CLI

检索存储桶的加速配置

以下 get-bucket-accelerate-configuration 示例检索指定存储桶的加速配置。

aws s3api get-bucket-accelerate-configuration \ --bucket amzn-s3-demo-bucket

输出:

{ "Status": "Enabled" }

以下代码示例演示了如何使用 get-bucket-acl

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的访问控制列表:

aws s3api get-bucket-acl --bucket amzn-s3-demo-bucket

输出:

{ "Owner": { "DisplayName": "my-username", "ID": "7009a8971cd538e11f6b6606438875e7c86c5b672f46db45460ddcd087d36c32" }, "Grants": [ { "Grantee": { "DisplayName": "my-username", "ID": "7009a8971cd538e11f6b6606438875e7c86c5b672f46db45460ddcd087d36c32" }, "Permission": "FULL_CONTROL" } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketAcl

以下代码示例演示了如何使用 get-bucket-analytics-configuration

Amazon CLI

检索具有特定 ID 的存储桶的分析配置

以下 get-bucket-analytics-configuration 示例显示了指定存储桶和 ID 的分析配置。

aws s3api get-bucket-analytics-configuration \ --bucket amzn-s3-demo-bucket \ --id 1

输出:

{ "AnalyticsConfiguration": { "StorageClassAnalysis": {}, "Id": "1" } }

以下代码示例演示了如何使用 get-bucket-cors

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的跨源资源共享配置:

aws s3api get-bucket-cors --bucket amzn-s3-demo-bucket

输出:

{ "CORSRules": [ { "AllowedHeaders": [ "*" ], "ExposeHeaders": [ "x-amz-server-side-encryption" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "MaxAgeSeconds": 3000, "AllowedOrigins": [ "http://www.example.com" ] }, { "AllowedHeaders": [ "Authorization" ], "MaxAgeSeconds": 3000, "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ] } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketCors

以下代码示例演示了如何使用 get-bucket-encryption

Amazon CLI

检索存储桶的服务器端加密配置

以下 get-bucket-encryption 示例检索存储桶 amzn-s3-demo-bucket 的服务器端加密配置。

aws s3api get-bucket-encryption \ --bucket amzn-s3-demo-bucket

输出:

{ "ServerSideEncryptionConfiguration": { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] } }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketEncryption

以下代码示例演示了如何使用 get-bucket-intelligent-tiering-configuration

Amazon CLI

检索存储桶上的 S3 智能分层配置

以下 get-bucket-intelligent-tiering-configuration 示例检索存储桶上名为 ExampleConfig 的 S3 智能分层配置。

aws s3api get-bucket-intelligent-tiering-configuration \ --bucket amzn-s3-demo-bucket \ --id ExampleConfig

输出:

{ "IntelligentTieringConfiguration": { "Id": "ExampleConfig2", "Filter": { "Prefix": "images" }, "Status": "Enabled", "Tierings": [ { "Days": 90, "AccessTier": "ARCHIVE_ACCESS" }, { "Days": 180, "AccessTier": "DEEP_ARCHIVE_ACCESS" } ] } }

有关更多信息,请参阅《Amazon S3 用户指南》中的使用 S3 智能分层

以下代码示例演示了如何使用 get-bucket-inventory-configuration

Amazon CLI

检索存储桶的清单配置

以下 get-bucket-inventory-configuration 示例检索 ID 为 1 的指定存储桶的清单配置。

aws s3api get-bucket-inventory-configuration \ --bucket amzn-s3-demo-bucket \ --id 1

输出:

{ "InventoryConfiguration": { "IsEnabled": true, "Destination": { "S3BucketDestination": { "Format": "ORC", "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket", "AccountId": "123456789012" } }, "IncludedObjectVersions": "Current", "Id": "1", "Schedule": { "Frequency": "Weekly" } } }

以下代码示例演示了如何使用 get-bucket-lifecycle-configuration

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的生命周期配置:

aws s3api get-bucket-lifecycle-configuration --bucket amzn-s3-demo-bucket

输出:

{ "Rules": [ { "ID": "Move rotated logs to Glacier", "Prefix": "rotated/", "Status": "Enabled", "Transitions": [ { "Date": "2015-11-10T00:00:00.000Z", "StorageClass": "GLACIER" } ] }, { "Status": "Enabled", "Prefix": "", "NoncurrentVersionTransitions": [ { "NoncurrentDays": 0, "StorageClass": "GLACIER" } ], "ID": "Move old versions to Glacier" } ] }

以下代码示例演示了如何使用 get-bucket-lifecycle

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的生命周期配置:

aws s3api get-bucket-lifecycle --bucket amzn-s3-demo-bucket

输出:

{ "Rules": [ { "ID": "Move to Glacier after sixty days (objects in logs/2015/)", "Prefix": "logs/2015/", "Status": "Enabled", "Transition": { "Days": 60, "StorageClass": "GLACIER" } }, { "Expiration": { "Date": "2016-01-01T00:00:00.000Z" }, "ID": "Delete 2014 logs in 2016.", "Prefix": "logs/2014/", "Status": "Enabled" } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketLifecycle

以下代码示例演示了如何使用 get-bucket-location

Amazon CLI

如果存在约束条件,则以下命令会检索名为 amzn-s3-demo-bucket 的存储桶的位置约束:

aws s3api get-bucket-location --bucket amzn-s3-demo-bucket

输出:

{ "LocationConstraint": "us-west-2" }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketLocation

以下代码示例演示了如何使用 get-bucket-logging

Amazon CLI

检索存储桶的日志记录状态

以下 get-bucket-logging 示例检索指定存储桶的日志记录状态。

aws s3api get-bucket-logging \ --bucket amzn-s3-demo-bucket

输出:

{ "LoggingEnabled": { "TargetPrefix": "", "TargetBucket": "amzn-s3-demo-bucket-logs" } }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketLogging

以下代码示例演示了如何使用 get-bucket-metrics-configuration

Amazon CLI

检索具有特定 ID 的存储桶的指标配置

以下 get-bucket-metrics-configuration 示例显示了指定存储桶和 ID 的指标配置。

aws s3api get-bucket-metrics-configuration \ --bucket amzn-s3-demo-bucket \ --id 123

输出:

{ "MetricsConfiguration": { "Filter": { "Prefix": "logs" }, "Id": "123" } }

以下代码示例演示了如何使用 get-bucket-notification-configuration

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的通知配置:

aws s3api get-bucket-notification-configuration --bucket amzn-s3-demo-bucket

输出:

{ "TopicConfigurations": [ { "Id": "YmQzMmEwM2EjZWVlI0NGItNzVtZjI1MC00ZjgyLWZDBiZWNl", "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-notification-topic", "Events": [ "s3:ObjectCreated:*" ] } ] }

以下代码示例演示了如何使用 get-bucket-notification

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的通知配置:

aws s3api get-bucket-notification --bucket amzn-s3-demo-bucket

输出:

{ "TopicConfiguration": { "Topic": "arn:aws:sns:us-west-2:123456789012:my-notification-topic", "Id": "YmQzMmEwM2EjZWVlI0NGItNzVtZjI1MC00ZjgyLWZDBiZWNl", "Event": "s3:ObjectCreated:*", "Events": [ "s3:ObjectCreated:*" ] } }

以下代码示例演示了如何使用 get-bucket-ownership-controls

Amazon CLI

检索存储桶的存储桶所有权设置

以下 get-bucket-ownership-controls 示例检索存储桶的存储桶所有权设置。

aws s3api get-bucket-ownership-controls \ --bucket amzn-s3-demo-bucket

输出:

{ "OwnershipControls": { "Rules": [ { "ObjectOwnership": "BucketOwnerEnforced" } ] } }

有关更多信息,请参阅《Amazon S3 用户指南》中的查看 S3 存储桶的对象所有权设置

以下代码示例演示了如何使用 get-bucket-policy-status

Amazon CLI

检索存储桶的策略状态,此状态指示存储桶是否为公有存储桶

以下 get-bucket-policy-status 示例检索存储桶 amzn-s3-demo-bucket 的策略状态。

aws s3api get-bucket-policy-status \ --bucket amzn-s3-demo-bucket

输出:

{ "PolicyStatus": { "IsPublic": false } }

以下代码示例演示了如何使用 get-bucket-policy

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的存储桶策略:

aws s3api get-bucket-policy --bucket amzn-s3-demo-bucket

输出:

{ "Policy": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:GetObject\",\"Resource\":\"arn:aws:s3:::amzn-s3-demo-bucket/*\"},{\"Sid\":\"\",\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"s3:GetObject\",\"Resource\":\"arn:aws:s3:::amzn-s3-demo-bucket/secret/*\"}]}" }

获取并放置存储桶策略 以下示例演示了如何下载 Amazon S3 存储桶策略,修改文件,然后使用 put-bucket-policy 来应用修改后的存储桶策略。要将存储桶策略下载到文件中,您可以运行:

aws s3api get-bucket-policy --bucket amzn-s3-demo-bucket --query Policy --output text > policy.json

然后,您可以根据需要修改 policy.json 文件。最后,您可以通过运行以下对象,将此修改后的策略应用回 S3 存储桶:

policy.json 文件(根据需要)。最后,您可以通过运行以下对象,将此修改后的策略应用回 S3 存储桶:

文件(根据需要)。最后,您可以通过运行以下对象,将此修改后的策略应用回 S3 存储桶:

aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketPolicy

以下代码示例演示了如何使用 get-bucket-replication

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的复制配置:

aws s3api get-bucket-replication --bucket amzn-s3-demo-bucket

输出:

{ "ReplicationConfiguration": { "Rules": [ { "Status": "Enabled", "Prefix": "", "Destination": { "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket-backup", "StorageClass": "STANDARD" }, "ID": "ZmUwNzE4ZmQ4tMjVhOS00MTlkLOGI4NDkzZTIWJjNTUtYTA1" } ], "Role": "arn:aws:iam::123456789012:role/s3-replication-role" } }

以下代码示例演示了如何使用 get-bucket-request-payment

Amazon CLI

检索存储桶的请求付款配置

以下 get-bucket-request-payment 示例检索指定存储桶的申请方付款配置。

aws s3api get-bucket-request-payment \ --bucket amzn-s3-demo-bucket

输出:

{ "Payer": "BucketOwner" }

以下代码示例演示了如何使用 get-bucket-tagging

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的标记配置:

aws s3api get-bucket-tagging --bucket amzn-s3-demo-bucket

输出:

{ "TagSet": [ { "Value": "marketing", "Key": "organization" } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketTagging

以下代码示例演示了如何使用 get-bucket-versioning

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的版本控制配置:

aws s3api get-bucket-versioning --bucket amzn-s3-demo-bucket

输出:

{ "Status": "Enabled" }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketVersioning

以下代码示例演示了如何使用 get-bucket-website

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶的静态网站配置:

aws s3api get-bucket-website --bucket amzn-s3-demo-bucket

输出:

{ "IndexDocument": { "Suffix": "index.html" }, "ErrorDocument": { "Key": "error.html" } }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetBucketWebsite

以下代码示例演示了如何使用 get-object-acl

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶中对象的访问控制列表:

aws s3api get-object-acl --bucket amzn-s3-demo-bucket --key index.html

输出:

{ "Owner": { "DisplayName": "my-username", "ID": "7009a8971cd538e11f6b6606438875e7c86c5b672f46db45460ddcd087d36c32" }, "Grants": [ { "Grantee": { "DisplayName": "my-username", "ID": "7009a8971cd538e11f6b6606438875e7c86c5b672f46db45460ddcd087d36c32" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetObjectAcl

以下代码示例演示了如何使用 get-object-attributes

Amazon CLI

从对象检索元数据而不返回对象本身

以下 get-object-attributes 示例从对象 doc1.rtf 检索元数据。

aws s3api get-object-attributes \ --bucket amzn-s3-demo-bucket \ --key doc1.rtf \ --object-attributes "StorageClass" "ETag" "ObjectSize"

输出:

{ "LastModified": "2022-03-15T19:37:31+00:00", "VersionId": "IuCPjXTDzHNfldAuitVBIKJpF2p1fg4P", "ETag": "b662d79adeb7c8d787ea7eafb9ef6207", "StorageClass": "STANDARD", "ObjectSize": 405 }

有关更多信息,请参阅《Amazon S3 API 参考》中的 GetObjectAttributes

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetObjectAttributes

以下代码示例演示了如何使用 get-object-legal-hold

Amazon CLI

检索对象的法定保留状态

以下 get-object-legal-hold 示例检索指定对象的法定保留状态。

aws s3api get-object-legal-hold \ --bucket amzn-s3-demo-bucket-with-object-lock \ --key doc1.rtf

输出:

{ "LegalHold": { "Status": "ON" } }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetObjectLegalHold

以下代码示例演示了如何使用 get-object-lock-configuration

Amazon CLI

检索存储桶的对象锁定配置

以下 get-object-lock-configuration 示例检索指定存储桶的对象锁定配置。

aws s3api get-object-lock-configuration \ --bucket amzn-s3-demo-bucket-with-object-lock

输出:

{ "ObjectLockConfiguration": { "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 50 } } } }

以下代码示例演示了如何使用 get-object-retention

Amazon CLI

检索对象的对象保留配置

以下 get-object-retention 示例检索指定对象的对象保留配置。

aws s3api get-object-retention \ --bucket amzn-s3-demo-bucket-with-object-lock \ --key doc1.rtf

输出:

{ "Retention": { "Mode": "GOVERNANCE", "RetainUntilDate": "2025-01-01T00:00:00.000Z" } }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetObjectRetention

以下代码示例演示了如何使用 get-object-tagging

Amazon CLI

检索附加到对象的标签

以下 get-object-tagging 示例从指定的对象中检索指定键的值。

aws s3api get-object-tagging \ --bucket amzn-s3-demo-bucket \ --key doc1.rtf

输出:

{ "TagSet": [ { "Value": "confidential", "Key": "designation" } ] }

以下 get-object-tagging 示例尝试检索没有标签的对象 doc2.rtf 的标签集。

aws s3api get-object-tagging \ --bucket amzn-s3-demo-bucket \ --key doc2.rtf

输出:

{ "TagSet": [] }

以下 get-object-tagging 示例检索具有多个标签的对象 doc3.rtf 的标签集。

aws s3api get-object-tagging \ --bucket amzn-s3-demo-bucket \ --key doc3.rtf

输出:

{ "TagSet": [ { "Value": "confidential", "Key": "designation" }, { "Value": "finance", "Key": "department" }, { "Value": "payroll", "Key": "team" } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetObjectTagging

以下代码示例演示了如何使用 get-object-torrent

Amazon CLI

以下命令为名为 amzn-s3-demo-bucket 的存储桶中的对象创建种子文件:

aws s3api get-object-torrent --bucket amzn-s3-demo-bucket --key large-video-file.mp4 large-video-file.torrent

种子文件保存在本地的当前文件夹中。请注意,指定输出 filename(large-video-file.torrent)时没有选项名称,并且必须是命令中的最后一个参数。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetObjectTorrent

以下代码示例演示了如何使用 get-object

Amazon CLI

以下示例使用 get-object 命令从 Amazon S3 下载对象:

aws s3api get-object --bucket text-content --key dir/my_images.tar.bz2 my_images.tar.bz2

请注意,指定 outfile 参数时没有诸如“--outfile”之类的选项名称。输出文件的名称必须是命令中的最后一个参数。

以下示例演示了如何使用 --range 从对象下载特定字节范围。请注意,字节范围需要以“bytes=”为前缀:

aws s3api get-object --bucket text-content --key dir/my_data --range bytes=8888-9999 my_data_range

有关检索对象的更多信息,请参阅《Amazon S3 开发人员指南》中的“获取对象”。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetObject

以下代码示例演示了如何使用 get-public-access-block

Amazon CLI

设置或修改存储桶的屏蔽公共访问权限配置

以下 get-public-access-block 示例显示了指定存储桶的屏蔽公共访问权限配置。

aws s3api get-public-access-block \ --bucket amzn-s3-demo-bucket

输出:

{ "PublicAccessBlockConfiguration": { "IgnorePublicAcls": true, "BlockPublicPolicy": true, "BlockPublicAcls": true, "RestrictPublicBuckets": true } }

以下代码示例演示了如何使用 head-bucket

Amazon CLI

以下命令验证对名为 amzn-s3-demo-bucket 的存储桶的访问权限:

aws s3api head-bucket --bucket amzn-s3-demo-bucket

如果存储桶存在并且您可以访问它,则不返回任何输出。否则,会显示错误消息。例如:

A client error (404) occurred when calling the HeadBucket operation: Not Found
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 HeadBucket

以下代码示例演示了如何使用 head-object

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶中对象的元数据:

aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html

输出:

{ "AcceptRanges": "bytes", "ContentType": "text/html", "LastModified": "Thu, 16 Apr 2015 18:19:14 GMT", "ContentLength": 77, "VersionId": "null", "ETag": "\"30a6ec7e1a9ad79c203d05a589c8b400\"", "Metadata": {} }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 HeadObject

以下代码示例演示了如何使用 list-bucket-analytics-configurations

Amazon CLI

检索存储桶的分析配置列表

下面的 list-bucket-analytics-configurations 检索指定存储桶的分析配置列表。

aws s3api list-bucket-analytics-configurations \ --bucket amzn-s3-demo-bucket

输出:

{ "AnalyticsConfigurationList": [ { "StorageClassAnalysis": {}, "Id": "1" } ], "IsTruncated": false }

以下代码示例演示了如何使用 list-bucket-intelligent-tiering-configurations

Amazon CLI

检索存储桶上的所有 S3 智能分层配置

以下 list-bucket-intelligent-tiering-configurations 示例检索存储桶上的所有 S3 智能分层配置。

aws s3api list-bucket-intelligent-tiering-configurations \ --bucket amzn-s3-demo-bucket

输出:

{ "IsTruncated": false, "IntelligentTieringConfigurationList": [ { "Id": "ExampleConfig", "Filter": { "Prefix": "images" }, "Status": "Enabled", "Tierings": [ { "Days": 90, "AccessTier": "ARCHIVE_ACCESS" }, { "Days": 180, "AccessTier": "DEEP_ARCHIVE_ACCESS" } ] }, { "Id": "ExampleConfig2", "Status": "Disabled", "Tierings": [ { "Days": 730, "AccessTier": "ARCHIVE_ACCESS" } ] }, { "Id": "ExampleConfig3", "Filter": { "Tag": { "Key": "documents", "Value": "taxes" } }, "Status": "Enabled", "Tierings": [ { "Days": 90, "AccessTier": "ARCHIVE_ACCESS" }, { "Days": 365, "AccessTier": "DEEP_ARCHIVE_ACCESS" } ] } ] }

有关更多信息,请参阅《Amazon S3 用户指南》中的使用 S3 智能分层

以下代码示例演示了如何使用 list-bucket-inventory-configurations

Amazon CLI

检索存储桶的清单配置列表

以下 list-bucket-inventory-configurations 示例列出了指定存储桶的清单配置。

aws s3api list-bucket-inventory-configurations \ --bucket amzn-s3-demo-bucket

输出:

{ "InventoryConfigurationList": [ { "IsEnabled": true, "Destination": { "S3BucketDestination": { "Format": "ORC", "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket", "AccountId": "123456789012" } }, "IncludedObjectVersions": "Current", "Id": "1", "Schedule": { "Frequency": "Weekly" } }, { "IsEnabled": true, "Destination": { "S3BucketDestination": { "Format": "CSV", "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket", "AccountId": "123456789012" } }, "IncludedObjectVersions": "Current", "Id": "2", "Schedule": { "Frequency": "Daily" } } ], "IsTruncated": false }

以下代码示例演示了如何使用 list-bucket-metrics-configurations

Amazon CLI

检索存储桶的指标配置列表

以下 list-bucket-metrics-configurations 示例检索指定存储桶的指标配置列表。

aws s3api list-bucket-metrics-configurations \ --bucket amzn-s3-demo-bucket

输出:

{ "IsTruncated": false, "MetricsConfigurationList": [ { "Filter": { "Prefix": "logs" }, "Id": "123" }, { "Filter": { "Prefix": "tmp" }, "Id": "234" } ] }

以下代码示例演示了如何使用 list-buckets

Amazon CLI

以下命令使用 list-buckets 命令显示所有 Amazon S3 存储桶的名称(跨所有区域):

aws s3api list-buckets --query "Buckets[].Name"

查询选项会筛选 list-buckets 的输出,使其范围缩小到仅限存储桶名称。

有关存储桶的更多信息,请参阅《Amazon S3 开发人员指南》中的“使用 Amazon S3 存储桶”。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 ListBuckets

以下代码示例演示了如何使用 list-multipart-uploads

Amazon CLI

以下命令列出名为 amzn-s3-demo-bucket 的存储桶的所有活动分段上传:

aws s3api list-multipart-uploads --bucket amzn-s3-demo-bucket

输出:

{ "Uploads": [ { "Initiator": { "DisplayName": "username", "ID": "arn:aws:iam::0123456789012:user/username" }, "Initiated": "2015-06-02T18:01:30.000Z", "UploadId": "dfRtDYU0WWCCcH43C3WFbkRONycyCpTJJvxu2i5GYkZljF.Yxwh6XG7WfS2vC4to6HiV6Yjlx.cph0gtNBtJ8P3URCSbB7rjxI5iEwVDmgaXZOGgkk5nVTW16HOQ5l0R", "StorageClass": "STANDARD", "Key": "multipart/01", "Owner": { "DisplayName": "aws-account-name", "ID": "100719349fc3b6dcd7c820a124bf7aecd408092c3d7b51b38494939801fc248b" } } ], "CommonPrefixes": [] }

正在进行的分段上传会产生 Amazon S3 存储费用。完成或中止活动分段上传,可将其从您的账户中移除。

以下代码示例演示了如何使用 list-object-versions

Amazon CLI

以下命令检索名为 amzn-s3-demo-bucket 的存储桶中对象的版本信息:

aws s3api list-object-versions --bucket amzn-s3-demo-bucket --prefix index.html

输出:

{ "DeleteMarkers": [ { "Owner": { "DisplayName": "my-username", "ID": "7009a8971cd660687538875e7c86c5b672fe116bd438f46db45460ddcd036c32" }, "IsLatest": true, "VersionId": "B2VsEK5saUNNHKcOAJj7hIE86RozToyq", "Key": "index.html", "LastModified": "2015-11-10T00:57:03.000Z" }, { "Owner": { "DisplayName": "my-username", "ID": "7009a8971cd660687538875e7c86c5b672fe116bd438f46db45460ddcd036c32" }, "IsLatest": false, "VersionId": ".FLQEZscLIcfxSq.jsFJ.szUkmng2Yw6", "Key": "index.html", "LastModified": "2015-11-09T23:32:20.000Z" } ], "Versions": [ { "LastModified": "2015-11-10T00:20:11.000Z", "VersionId": "Rb_l2T8UHDkFEwCgJjhlgPOZC0qJ.vpD", "ETag": "\"0622528de826c0df5db1258a23b80be5\"", "StorageClass": "STANDARD", "Key": "index.html", "Owner": { "DisplayName": "my-username", "ID": "7009a8971cd660687538875e7c86c5b672fe116bd438f46db45460ddcd036c32" }, "IsLatest": false, "Size": 38 }, { "LastModified": "2015-11-09T23:26:41.000Z", "VersionId": "rasWWGpgk9E4s0LyTJgusGeRQKLVIAFf", "ETag": "\"06225825b8028de826c0df5db1a23be5\"", "StorageClass": "STANDARD", "Key": "index.html", "Owner": { "DisplayName": "my-username", "ID": "7009a8971cd660687538875e7c86c5b672fe116bd438f46db45460ddcd036c32" }, "IsLatest": false, "Size": 38 }, { "LastModified": "2015-11-09T22:50:50.000Z", "VersionId": "null", "ETag": "\"d1f45267a863c8392e07d24dd592f1b9\"", "StorageClass": "STANDARD", "Key": "index.html", "Owner": { "DisplayName": "my-username", "ID": "7009a8971cd660687538875e7c86c5b672fe116bd438f46db45460ddcd036c32" }, "IsLatest": false, "Size": 533823 } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 ListObjectVersions

以下代码示例演示了如何使用 list-objects-v2

Amazon CLI

获取存储桶中对象的列表

以下 list-objects-v2 示例列出了指定存储桶中的对象。

aws s3api list-objects-v2 \ --bucket amzn-s3-demo-bucket

输出:

{ "Contents": [ { "LastModified": "2019-11-05T23:11:50.000Z", "ETag": "\"621503c373607d548b37cff8778d992c\"", "StorageClass": "STANDARD", "Key": "doc1.rtf", "Size": 391 }, { "LastModified": "2019-11-05T23:11:50.000Z", "ETag": "\"a2cecc36ab7c7fe3a71a273b9d45b1b5\"", "StorageClass": "STANDARD", "Key": "doc2.rtf", "Size": 373 }, { "LastModified": "2019-11-05T23:11:50.000Z", "ETag": "\"08210852f65a2e9cb999972539a64d68\"", "StorageClass": "STANDARD", "Key": "doc3.rtf", "Size": 399 }, { "LastModified": "2019-11-05T23:11:50.000Z", "ETag": "\"d1852dd683f404306569471af106988e\"", "StorageClass": "STANDARD", "Key": "doc4.rtf", "Size": 6225 } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 ListObjectsV2

以下代码示例演示了如何使用 list-objects

Amazon CLI

以下示例使用 list-objects 命令显示指定存储桶中所有对象的名称:

aws s3api list-objects --bucket text-content --query 'Contents[].{Key: Key, Size: Size}'

该示例使用 --query 参数筛选 list-objects 的输出,使其范围缩小到每个对象的键值和大小

有关对象的更多信息,请参阅《Amazon S3 开发人员指南》中的“使用 Amazon S3 对象”。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 ListObjects

以下代码示例演示了如何使用 list-parts

Amazon CLI

以下命令列出存储桶 amzn-s3-demo-bucket 中,使用密钥 multipart/01 的分段上传中已上传的所有部分:

aws s3api list-parts --bucket amzn-s3-demo-bucket --key 'multipart/01' --upload-id dfRtDYU0WWCCcH43C3WFbkRONycyCpTJJvxu2i5GYkZljF.Yxwh6XG7WfS2vC4to6HiV6Yjlx.cph0gtNBtJ8P3URCSbB7rjxI5iEwVDmgaXZOGgkk5nVTW16HOQ5l0R

输出:

{ "Owner": { "DisplayName": "aws-account-name", "ID": "100719349fc3b6dcd7c820a124bf7aecd408092c3d7b51b38494939801fc248b" }, "Initiator": { "DisplayName": "username", "ID": "arn:aws:iam::0123456789012:user/username" }, "Parts": [ { "LastModified": "2015-06-02T18:07:35.000Z", "PartNumber": 1, "ETag": "\"e868e0f4719e394144ef36531ee6824c\"", "Size": 5242880 }, { "LastModified": "2015-06-02T18:07:42.000Z", "PartNumber": 2, "ETag": "\"6bb2b12753d66fe86da4998aa33fffb0\"", "Size": 5242880 }, { "LastModified": "2015-06-02T18:07:47.000Z", "PartNumber": 3, "ETag": "\"d0a0112e841abec9c9ec83406f0159c8\"", "Size": 5242880 } ], "StorageClass": "STANDARD" }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 ListParts

以下代码示例演示了如何使用 ls

Amazon CLI

示例 1:列出用户拥有的所有存储桶

以下 ls 命令列出用户拥有的所有存储桶。在此示例中,用户拥有存储桶 amzn-s3-demo-bucketamzn-s3-demo-bucket2。时间戳是存储桶的创建日期,以计算机的时区显示。对存储桶进行更改(例如编辑存储桶策略)时,此日期可能会更改。请注意,如果路径参数 <S3Uri> 使用了 s3://,则也会列出所有存储桶。

aws s3 ls

输出:

2013-07-11 17:08:50 amzn-s3-demo-bucket 2013-07-24 14:55:44 amzn-s3-demo-bucket2

示例 2:列出存储桶中的所有前缀和对象

以下 ls 命令列出指定存储桶和前缀下的对象和常用前缀。在此示例中,用户拥有带有对象 test.txtsomePrefix/test.txt 的存储桶 amzn-s3-demo-bucketLastWriteTimeLength 是任意值。请注意,由于 ls 命令与本地文件系统没有交互,因此不需要使用 s3:// URI 方案来解决歧义,可以省略。

aws s3 ls s3://amzn-s3-demo-bucket

输出:

PRE somePrefix/ 2013-07-25 17:06:27 88 test.txt

示例 3:列出特定存储桶和前缀中的所有前缀和对象

以下 ls 命令列出指定存储桶和前缀下的对象和常用前缀。但是,指定的存储桶和前缀下没有对象,也没有常用前缀。

aws s3 ls s3://amzn-s3-demo-bucket/noExistPrefix

输出:

None

示例 4:递归列出存储桶中的所有前缀和对象

以下 ls 命令将递归列出存储桶中的对象。输出中将不再显示 PRE dirname/,而是按顺序列出存储桶中的所有内容。

aws s3 ls s3://amzn-s3-demo-bucket \ --recursive

输出:

2013-09-02 21:37:53 10 a.txt 2013-09-02 21:37:53 2863288 foo.zip 2013-09-02 21:32:57 23 foo/bar/.baz/a 2013-09-02 21:32:58 41 foo/bar/.baz/b 2013-09-02 21:32:57 281 foo/bar/.baz/c 2013-09-02 21:32:57 73 foo/bar/.baz/d 2013-09-02 21:32:57 452 foo/bar/.baz/e 2013-09-02 21:32:57 896 foo/bar/.baz/hooks/bar 2013-09-02 21:32:57 189 foo/bar/.baz/hooks/foo 2013-09-02 21:32:57 398 z.txt

示例 5:汇总存储桶中的所有前缀和对象

以下 ls 命令使用 --human-readable 和 --summarize 选项演示了相同的命令。--human readable 会以 Bytes/MiB/KiB/GiB/TiB/PiB/EiB 为单位显示文件大小。--summarize 会在结果列表的末尾显示对象的总数和总大小:

aws s3 ls s3://amzn-s3-demo-bucket \ --recursive \ --human-readable \ --summarize

输出:

2013-09-02 21:37:53 10 Bytes a.txt 2013-09-02 21:37:53 2.9 MiB foo.zip 2013-09-02 21:32:57 23 Bytes foo/bar/.baz/a 2013-09-02 21:32:58 41 Bytes foo/bar/.baz/b 2013-09-02 21:32:57 281 Bytes foo/bar/.baz/c 2013-09-02 21:32:57 73 Bytes foo/bar/.baz/d 2013-09-02 21:32:57 452 Bytes foo/bar/.baz/e 2013-09-02 21:32:57 896 Bytes foo/bar/.baz/hooks/bar 2013-09-02 21:32:57 189 Bytes foo/bar/.baz/hooks/foo 2013-09-02 21:32:57 398 Bytes z.txt Total Objects: 10 Total Size: 2.9 MiB

示例 6:从 S3 接入点列出

以下 ls 命令列出来自接入点(myaccesspoint)的对象:

aws s3 ls s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/

输出:

PRE somePrefix/ 2013-07-25 17:06:27 88 test.txt
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 Ls

以下代码示例演示了如何使用 mb

Amazon CLI

示例 1:创建存储桶

以下 mb 命令创建存储桶。在此示例中,用户创建了存储桶 amzn-s3-demo-bucket。存储桶可在用户配置文件中指定的区域内创建:

aws s3 mb s3://amzn-s3-demo-bucket

输出:

make_bucket: s3://amzn-s3-demo-bucket

示例 2:在指定区域内创建存储桶

以下 mb 命令在 --region 参数指定的区域内创建一个存储桶。在此示例中,用户在区域 us-west-1 内创建了存储桶 amzn-s3-demo-bucket

aws s3 mb s3://amzn-s3-demo-bucket \ --region us-west-1

输出:

make_bucket: s3://amzn-s3-demo-bucket
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 Mb

以下代码示例演示了如何使用 mv

Amazon CLI

示例 1:将本地文件移动到指定的存储桶

以下 mv 命令将单个文件移动到指定的存储桶和密钥。

aws s3 mv test.txt s3://amzn-s3-demo-bucket/test2.txt

输出:

move: test.txt to s3://amzn-s3-demo-bucket/test2.txt

示例 2:将对象移动到指定的存储桶和密钥

以下 mv 命令将单个 S3 对象移动到指定的存储桶和密钥。

aws s3 mv s3://amzn-s3-demo-bucket/test.txt s3://amzn-s3-demo-bucket/test2.txt

输出:

move: s3://amzn-s3-demo-bucket/test.txt to s3://amzn-s3-demo-bucket/test2.txt

示例 3:将 S3 对象移动到本地目录

以下 mv 命令将单个对象移动到指定的本地文件。

aws s3 mv s3://amzn-s3-demo-bucket/test.txt test2.txt

输出:

move: s3://amzn-s3-demo-bucket/test.txt to test2.txt

示例 4:将具有原始名称的对象移动到指定的存储桶

以下 mv 命令将单个对象移动到指定的存储桶,同时保留其原始名称:

aws s3 mv s3://amzn-s3-demo-bucket/test.txt s3://amzn-s3-demo-bucket2/

输出:

move: s3://amzn-s3-demo-bucket/test.txt to s3://amzn-s3-demo-bucket2/test.txt

示例 5:将存储桶中的所有对象和前缀移动到本地目录

当与参数 --recursive 一起传递时,以下 mv 命令将指定前缀和存储桶下的所有对象递归移动到指定目录。在此示例中,存储桶 amzn-s3-demo-bucket 中包含对象 test1.txttest2.txt

aws s3 mv s3://amzn-s3-demo-bucket . \ --recursive

输出:

move: s3://amzn-s3-demo-bucket/test1.txt to test1.txt move: s3://amzn-s3-demo-bucket/test2.txt to test2.txt

示例 6:将存储桶中的所有对象和前缀移动到本地目录(“.jpg”文件除外)

当与参数 --recursive 一起传递时,以下 mv 命令将指定目录下的所有文件递归移动到指定的存储桶和前缀,同时使用 --exclude 参数将某些文件排除在外。在此示例中,目录 myDir 中包含文件 test1.txttest2.jpg

aws s3 mv myDir s3://amzn-s3-demo-bucket/ \ --recursive \ --exclude "*.jpg"

输出:

move: myDir/test1.txt to s3://amzn-s3-demo-bucket2/test1.txt

示例 7:将存储桶中的所有对象和前缀移动到本地目录(指定前缀除外)

当与参数 --recursive 一起传递时,以下 mv 命令将指定存储桶下的所有对象递归移动到另一个存储桶,同时使用 --exclude 参数将某些对象排除在外。在此示例中,存储桶 amzn-s3-demo-bucket 中包含对象 test1.txtanother/test1.txt

aws s3 mv s3://amzn-s3-demo-bucket/ s3://amzn-s3-demo-bucket2/ \ --recursive \ --exclude "amzn-s3-demo-bucket/another/*"

输出:

move: s3://amzn-s3-demo-bucket/test1.txt to s3://amzn-s3-demo-bucket2/test1.txt

示例 8:将对象移动到指定的存储桶并设置 ACL

以下 mv 命令将单个对象移动到指定的存储桶和密钥,同时将 ACL 设置为 public-read-write

aws s3 mv s3://amzn-s3-demo-bucket/test.txt s3://amzn-s3-demo-bucket/test2.txt \ --acl public-read-write

输出:

move: s3://amzn-s3-demo-bucket/test.txt to s3://amzn-s3-demo-bucket/test2.txt

示例 9:将本地文件移动到指定的存储桶并授予权限

以下 mv 命令说明如何使用 --grants 选项向所有用户授予读取权限,并向通过电子邮件地址识别的特定用户授予完全控制权限。

aws s3 mv file.txt s3://amzn-s3-demo-bucket/ \ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.com

输出:

move: file.txt to s3://amzn-s3-demo-bucket/file.txt

示例 10:将文件移动到 S3 接入点

以下 mv 命令将名为 mydoc.txt 的单个文件移动到名为 mykey 的密钥下的名为 myaccesspoint 的接入点。

aws s3 mv mydoc.txt s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/mykey

输出:

move: mydoc.txt to s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/mykey
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 Mv

以下代码示例演示了如何使用 presign

Amazon CLI

示例 1:创建默认生命周期为一小时的预签名 URL,链接到 S3 存储桶中的对象

以下 presign 命令为指定的存储桶和密钥生成一个预签名 URL,有效期为一小时。

aws s3 presign s3://amzn-s3-demo-bucket/test2.txt

输出:

https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/key?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAEXAMPLE123456789%2F20210621%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210621T041609Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=EXAMBLE1234494d5fba3fed607f98018e1dfc62e2529ae96d844123456

示例 2:创建自定义生命周期的预签名 URL,链接到 S3 存储桶中的对象

以下 presign 命令为指定的存储桶和密钥生成一个预签名 URL,有效期为一周。

aws s3 presign s3://amzn-s3-demo-bucket/test2.txt \ --expires-in 604800

输出:

https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/key?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAEXAMPLE123456789%2F20210621%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210621T041609Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=EXAMBLE1234494d5fba3fed607f98018e1dfc62e2529ae96d844123456

有关更多信息,请参阅《S3 开发人员指南》中的与其他用户共享对象

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 Presign

以下代码示例演示了如何使用 put-bucket-accelerate-configuration

Amazon CLI

设置存储桶的加速配置

以下 put-bucket-accelerate-configuration 示例启用指定存储桶的加速配置。

aws s3api put-bucket-accelerate-configuration \ --bucket amzn-s3-demo-bucket \ --accelerate-configuration Status=Enabled

此命令不生成任何输出。

以下代码示例演示了如何使用 put-bucket-acl

Amazon CLI

此示例向两个 Amazon 用户(user1@example.comuser2@example.com)授予 full control 权限,并向所有人授予 read 权限:

aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --grant-full-control emailaddress=user1@example.com,emailaddress=user2@example.com --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers

有关自定义 ACL(s3api ACL 命令(如 put-bucket-acl)使用相同的速记参数表示法)的详细信息,请参阅 http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutBucketAcl

以下代码示例演示了如何使用 put-bucket-analytics-configuration

Amazon CLI

设置存储桶的分析配置

以下 put-bucket-analytics-configuration 示例启用指定存储桶的分析配置。

aws s3api put-bucket-analytics-configuration \ --bucket amzn-s3-demo-bucket --id 1 \ --analytics-configuration '{"Id": "1","StorageClassAnalysis": {}}'

此命令不生成任何输出。

以下代码示例演示了如何使用 put-bucket-cors

Amazon CLI

以下示例启用来自 www.example.comPUTPOSTDELETE 请求,并启用来自任何域的 GET 请求:

aws s3api put-bucket-cors --bucket amzn-s3-demo-bucket --cors-configuration file://cors.json cors.json: { "CORSRules": [ { "AllowedOrigins": ["http://www.example.com"], "AllowedHeaders": ["*"], "AllowedMethods": ["PUT", "POST", "DELETE"], "MaxAgeSeconds": 3000, "ExposeHeaders": ["x-amz-server-side-encryption"] }, { "AllowedOrigins": ["*"], "AllowedHeaders": ["Authorization"], "AllowedMethods": ["GET"], "MaxAgeSeconds": 3000 } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutBucketCors

以下代码示例演示了如何使用 put-bucket-encryption

Amazon CLI

配置存储桶的服务器端加密

以下 put-bucket-encryption 示例将 AES256 加密设置为指定存储桶的默认值。

aws s3api put-bucket-encryption \ --bucket amzn-s3-demo-bucket \ --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}'

此命令不生成任何输出。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutBucketEncryption

以下代码示例演示了如何使用 put-bucket-intelligent-tiering-configuration

Amazon CLI

更新存储桶上的 S3 智能分层配置

以下 put-bucket-intelligent-tiering-configuration 示例更新存储桶上名为 ExampleConfig 的 S3 智能分层配置。该配置会在 90 天后将前缀映像下未曾访问过的对象过渡到归档访问层,并在 180 天后过渡到深度归档访问层。

aws s3api put-bucket-intelligent-tiering-configuration \ --bucket amzn-s3-demo-bucket \ --id "ExampleConfig" \ --intelligent-tiering-configuration file://intelligent-tiering-configuration.json

intelligent-tiering-configuration.json 的内容:

{ "Id": "ExampleConfig", "Status": "Enabled", "Filter": { "Prefix": "images" }, "Tierings": [ { "Days": 90, "AccessTier": "ARCHIVE_ACCESS" }, { "Days": 180, "AccessTier": "DEEP_ARCHIVE_ACCESS" } ] }

此命令不生成任何输出。

有关更多信息,请参阅《Amazon S3 用户指南》中的设置现有存储桶的对象所有权

以下代码示例演示了如何使用 put-bucket-inventory-configuration

Amazon CLI

示例 1:为存储桶设置清单配置

以下 put-bucket-inventory-configuration 示例为存储桶 amzn-s3-demo-bucket 设置 ORC 格式的每周清单报告。

aws s3api put-bucket-inventory-configuration \ --bucket amzn-s3-demo-bucket \ --id 1 \ --inventory-configuration '{"Destination": { "S3BucketDestination": { "AccountId": "123456789012", "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket", "Format": "ORC" }}, "IsEnabled": true, "Id": "1", "IncludedObjectVersions": "Current", "Schedule": { "Frequency": "Weekly" }}'

此命令不生成任何输出。

示例 2:为存储桶设置清单配置

以下 put-bucket-inventory-configuration 示例为存储桶 amzn-s3-demo-bucket 设置 CSV 格式的每日清单报告。

aws s3api put-bucket-inventory-configuration \ --bucket amzn-s3-demo-bucket \ --id 2 \ --inventory-configuration '{"Destination": { "S3BucketDestination": { "AccountId": "123456789012", "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket", "Format": "CSV" }}, "IsEnabled": true, "Id": "2", "IncludedObjectVersions": "Current", "Schedule": { "Frequency": "Daily" }}'

此命令不生成任何输出。

以下代码示例演示了如何使用 put-bucket-lifecycle-configuration

Amazon CLI

以下命令将生命周期配置应用于名为 amzn-s3-demo-bucket 的存储桶:

aws s3api put-bucket-lifecycle-configuration --bucket amzn-s3-demo-bucket --lifecycle-configuration file://lifecycle.json

文件 lifecycle.json 是当前文件夹中指定两个规则的 JSON 文档:

{ "Rules": [ { "ID": "Move rotated logs to Glacier", "Prefix": "rotated/", "Status": "Enabled", "Transitions": [ { "Date": "2015-11-10T00:00:00.000Z", "StorageClass": "GLACIER" } ] }, { "Status": "Enabled", "Prefix": "", "NoncurrentVersionTransitions": [ { "NoncurrentDays": 2, "StorageClass": "GLACIER" } ], "ID": "Move old versions to Glacier" } ] }

第一条规则在指定日期将带有前缀 rotated 的文件移动到 Glacier。第二条规则在旧对象版本不再是最新版本时将其移至 Glacier。有关可接受时间戳格式的信息,请参阅《Amazon CLI 用户指南》中的“指定参数值”。

以下代码示例演示了如何使用 put-bucket-lifecycle

Amazon CLI

以下命令将生命周期配置应用于存储桶 amzn-s3-demo-bucket

aws s3api put-bucket-lifecycle --bucket amzn-s3-demo-bucket --lifecycle-configuration file://lifecycle.json

文件 lifecycle.json 是当前文件夹中指定两个规则的 JSON 文档:

{ "Rules": [ { "ID": "Move to Glacier after sixty days (objects in logs/2015/)", "Prefix": "logs/2015/", "Status": "Enabled", "Transition": { "Days": 60, "StorageClass": "GLACIER" } }, { "Expiration": { "Date": "2016-01-01T00:00:00.000Z" }, "ID": "Delete 2014 logs in 2016.", "Prefix": "logs/2014/", "Status": "Enabled" } ] }

第一条规则是在六十天后将文件移动到 Amazon Glacier。第二条规则是在指定日期从 Amazon S3 中删除文件。有关可接受时间戳格式的信息,请参阅《Amazon CLI 用户指南》中的“指定参数值”。

上面示例中的每条规则都指定了其适用的策略(TransitionExpiration)和文件前缀(文件夹名称)。您还可以通过指定空白前缀来创建适用于整个存储桶的规则:

{ "Rules": [ { "ID": "Move to Glacier after sixty days (all objects in bucket)", "Prefix": "", "Status": "Enabled", "Transition": { "Days": 60, "StorageClass": "GLACIER" } } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutBucketLifecycle

以下代码示例演示了如何使用 put-bucket-logging

Amazon CLI

示例 1:设置存储桶策略日志记录

以下 put-bucket-logging 示例为 amzn-s3-demo-bucket 设置日志记录策略。首先,使用 put-bucket-policy 命令在存储桶策略中向日志记录服务主体授予权限。

aws s3api put-bucket-policy \ --bucket amzn-s3-demo-bucket \ --policy file://policy.json

policy.json 的内容:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": {"Service": "logging.s3.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/Logs/*", "Condition": { "ArnLike": {"aws:SourceARN": "arn:aws:s3:::SOURCE-BUCKET-NAME"}, "StringEquals": {"aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID"} } } ] }

要应用日志记录策略,请使用 put-bucket-logging

aws s3api put-bucket-logging \ --bucket amzn-s3-demo-bucket \ --bucket-logging-status file://logging.json

logging.json 的内容:

{ "LoggingEnabled": { "TargetBucket": "amzn-s3-demo-bucket", "TargetPrefix": "Logs/" } }

向日志记录服务主体授予 s3:PutObject 权限需要使用 put-bucket-policy 命令。

有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的 Amazon S3 服务器访问日志记录

示例 2:设置仅向单个用户授予日志访问权限的存储桶策略

以下 put-bucket-logging 示例为 amzn-s3-demo-bucket 设置日志记录策略。Amazon 用户 bob@example.com 将对日志文件具有完全控制权限,其他人没有任何访问权限。首先,使用 put-bucket-acl 授予 S3 权限。

aws s3api put-bucket-acl \ --bucket amzn-s3-demo-bucket \ --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery \ --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery

然后,使用 put-bucket-logging 应用日志记录策略。

aws s3api put-bucket-logging \ --bucket amzn-s3-demo-bucket \ --bucket-logging-status file://logging.json

logging.json 的内容:

{ "LoggingEnabled": { "TargetBucket": "amzn-s3-demo-bucket", "TargetPrefix": "amzn-s3-demo-bucket-logs/", "TargetGrants": [ { "Grantee": { "Type": "AmazonCustomerByEmail", "EmailAddress": "bob@example.com" }, "Permission": "FULL_CONTROL" } ] } }

必须使用 put-bucket-acl 命令向 S3 的日志传输系统授予必要的权限(write-acp 和 read-acp 权限)。

有关更多信息,请参阅《Amazon Simple Storage Service 开发人员指南》中的 Amazon S3 服务器访问日志记录

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutBucketLogging

以下代码示例演示了如何使用 put-bucket-metrics-configuration

Amazon CLI

设置存储桶的指标配置

以下 put-bucket-metrics-configuration 示例为指定存储桶设置 ID 为 123 的指标配置。

aws s3api put-bucket-metrics-configuration \ --bucket amzn-s3-demo-bucket \ --id 123 \ --metrics-configuration '{"Id": "123", "Filter": {"Prefix": "logs"}}'

此命令不生成任何输出。

以下代码示例演示了如何使用 put-bucket-notification-configuration

Amazon CLI

启用存储桶的指定通知

以下 put-bucket-notification-configuration 示例将通知配置应用于名为 amzn-s3-demo-bucket 的存储桶。文件 notification.json 是当前文件夹中的一个 JSON 文件,用于指定 SNS 主题和要监控的事件类型。

aws s3api put-bucket-notification-configuration \ --bucket amzn-s3-demo-bucket \ --notification-configuration file://notification.json

notification.json 的内容:

{ "TopicConfigurations": [ { "TopicArn": "arn:aws:sns:us-west-2:123456789012:s3-notification-topic", "Events": [ "s3:ObjectCreated:*" ] } ] }

SNS 主题必须附加一个 IAM 策略,以允许 Amazon S3 向其发布。

{ "Version": "2008-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SNS:Publish" ], "Resource": "arn:aws:sns:us-west-2:123456789012::s3-notification-topic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" } } } ] }

以下代码示例演示了如何使用 put-bucket-notification

Amazon CLI

将通知配置应用于名为 amzn-s3-demo-bucket 的存储桶:

aws s3api put-bucket-notification --bucket amzn-s3-demo-bucket --notification-configuration file://notification.json

文件 notification.json 是当前文件夹中的一个 JSON 文件,用于指定 SNS 主题和要监控的事件类型:

{ "TopicConfiguration": { "Event": "s3:ObjectCreated:*", "Topic": "arn:aws:sns:us-west-2:123456789012:s3-notification-topic" } }

SNS 主题必须附加一个 IAM 策略,以允许 Amazon S3 向其发布:

{ "Version": "2008-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SNS:Publish" ], "Resource": "arn:aws:sns:us-west-2:123456789012:amzn-s3-demo-bucket", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" } } } ] }

以下代码示例演示了如何使用 put-bucket-ownership-controls

Amazon CLI

更新存储桶的存储桶所有权设置

以下 put-bucket-ownership-controls 示例更新存储桶的存储桶所有权设置。

aws s3api put-bucket-ownership-controls \ --bucket amzn-s3-demo-bucket \ --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"

此命令不生成任何输出。

有关更多信息,请参阅《Amazon S3 用户指南》中的设置现有存储桶的对象所有权

以下代码示例演示了如何使用 put-bucket-policy

Amazon CLI

此示例允许所有用户检索 amzn-s3-demo-bucket 中的任何对象,但 MySecretFolder 中的对象除外。它还向 Amazon 账户 1234-5678-9012 的根用户授予 putdelete 权限:

aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json policy.json: { "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" }, { "Effect": "Deny", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/MySecretFolder/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": [ "s3:DeleteObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutBucketPolicy

以下代码示例演示了如何使用 put-bucket-replication

Amazon CLI

为 S3 存储桶配置复制

以下 put-bucket-replication 示例将复制配置应用于指定的 S3 存储桶。

aws s3api put-bucket-replication \ --bucket amzn-s3-demo-bucket1 \ --replication-configuration file://replication.json

replication.json 的内容:

{ "Role": "arn:aws:iam::123456789012:role/s3-replication-role", "Rules": [ { "Status": "Enabled", "Priority": 1, "DeleteMarkerReplication": { "Status": "Disabled" }, "Filter" : { "Prefix": ""}, "Destination": { "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket2" } } ] }

目标存储桶必须已启用版本控制。指定的角色必须具有写入目标存储桶的权限,并且必须建立允许 Amazon S3 代入角色的信任关系。

示例角色权限策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Effect": "Allow", "Action": [ "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] }, { "Effect": "Allow", "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket2/*" } ] }

示例信任关系策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

此命令不生成任何输出。

有关更多信息,请参阅《Amazon Simple Storage Service 控制台用户指南》中的这是主题标题

以下代码示例演示了如何使用 put-bucket-request-payment

Amazon CLI

示例 1:为存储桶启用“申请方付款”配置

以下 put-bucket-request-payment 示例为指定的存储桶启用 requester pays

aws s3api put-bucket-request-payment \ --bucket amzn-s3-demo-bucket \ --request-payment-configuration '{"Payer":"Requester"}'

此命令不生成任何输出。

示例 2:为存储桶禁用“申请方付款”配置

以下 put-bucket-request-payment 示例为指定的存储桶禁用 requester pays

aws s3api put-bucket-request-payment \ --bucket amzn-s3-demo-bucket \ --request-payment-configuration '{"Payer":"BucketOwner"}'

此命令不生成任何输出。

以下代码示例演示了如何使用 put-bucket-tagging

Amazon CLI

以下命令将标记配置应用于名为 amzn-s3-demo-bucket 的存储桶:

aws s3api put-bucket-tagging --bucket amzn-s3-demo-bucket --tagging file://tagging.json

文件 tagging.json 是当前文件夹中指定标签的 JSON 文档:

{ "TagSet": [ { "Key": "organization", "Value": "marketing" } ] }

或者,直接从命令行将标记配置应用于 amzn-s3-demo-bucket

aws s3api put-bucket-tagging --bucket amzn-s3-demo-bucket --tagging 'TagSet=[{Key=organization,Value=marketing}]'
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutBucketTagging

以下代码示例演示了如何使用 put-bucket-versioning

Amazon CLI

以下命令对于名为 amzn-s3-demo-bucket 的存储桶启用版本控制。

aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket --versioning-configuration Status=Enabled

以下命令启用版本控制,并使用 mfa 代码

aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket --versioning-configuration Status=Enabled --mfa "SERIAL 123456"
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutBucketVersioning

以下代码示例演示了如何使用 put-bucket-website

Amazon CLI

将静态网站配置应用于名为 amzn-s3-demo-bucket 的存储桶:

aws s3api put-bucket-website --bucket amzn-s3-demo-bucket --website-configuration file://website.json

文件 website.json 是当前文件夹中的一个 JSON 文档,用于指定网站的索引和错误页面:

{ "IndexDocument": { "Suffix": "index.html" }, "ErrorDocument": { "Key": "error.html" } }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutBucketWebsite

以下代码示例演示了如何使用 put-object-acl

Amazon CLI

以下示例向两个 Amazon 用户(user1@example.comuser2@example.com)授予 full control,并向所有人授予 read

aws s3api put-object-acl --bucket amzn-s3-demo-bucket --key file.txt --grant-full-control emailaddress=user1@example.com,emailaddress=user2@example.com --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers

有关自定义 ACL(s3api ACL 命令(如 put-object-acl)使用相同的速记参数表示法)的详细信息,请参阅 http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutObjectAcl

以下代码示例演示了如何使用 put-object-legal-hold

Amazon CLI

对对象应用法定保留

以下 put-object-legal-hold 示例在 doc1.rtf 对象上设置了法定保留。

aws s3api put-object-legal-hold \ --bucket amzn-s3-demo-bucket-with-object-lock \ --key doc1.rtf \ --legal-hold Status=ON

此命令不生成任何输出。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutObjectLegalHold

以下代码示例演示了如何使用 put-object-lock-configuration

Amazon CLI

在存储桶上设置对象锁定配置

以下 put-object-lock-configuration 示例在指定存储桶上设置了 50 天的对象锁定。

aws s3api put-object-lock-configuration \ --bucket amzn-s3-demo-bucket-with-object-lock \ --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 50 }}}'

此命令不生成任何输出。

以下代码示例演示了如何使用 put-object-retention

Amazon CLI

为对象设置对象保留配置

以下 put-object-retention 示例为指定对象设置直到 2025 年 1 月 1 日的对象保留配置。

aws s3api put-object-retention \ --bucket amzn-s3-demo-bucket-with-object-lock \ --key doc1.rtf \ --retention '{ "Mode": "GOVERNANCE", "RetainUntilDate": "2025-01-01T00:00:00" }'

此命令不生成任何输出。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutObjectRetention

以下代码示例演示了如何使用 put-object-tagging

Amazon CLI

为对象设置标签

以下 put-object-tagging 示例会在指定对象上设置带有键 designation 和值 confidential 的标签。

aws s3api put-object-tagging \ --bucket amzn-s3-demo-bucket \ --key doc1.rtf \ --tagging '{"TagSet": [{ "Key": "designation", "Value": "confidential" }]}'

此命令不生成任何输出。

以下 put-object-tagging 示例在指定对象上设置多个标签集。

aws s3api put-object-tagging \ --bucket amzn-s3-demo-bucket-example \ --key doc3.rtf \ --tagging '{"TagSet": [{ "Key": "designation", "Value": "confidential" }, { "Key": "department", "Value": "finance" }, { "Key": "team", "Value": "payroll" } ]}'

此命令不生成任何输出。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutObjectTagging

以下代码示例演示了如何使用 put-object

Amazon CLI

示例 1:将对象上传到 Amazon S3

以下 put-object 命令示例将对象上传到 Amazon S3。

aws s3api put-object \ --bucket amzn-s3-demo-bucket \ --key my-dir/MySampleImage.png \ --body MySampleImage.png

有关上传对象的更多信息,请参阅《Amazon S3 开发人员指南》中的“上传对象”<http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadingObjects.html>。

示例 2:将视频文件上传到 Amazon S3

以下 put-object 命令示例上传视频文件。

aws s3api put-object \ --bucket amzn-s3-demo-bucket \ --key my-dir/big-video-file.mp4 \ --body /media/videos/f-sharp-3-data-services.mp4

有关上传对象的更多信息,请参阅《Amazon S3 开发人员指南》中的“上传对象”<http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadingObjects.html>。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutObject

以下代码示例演示了如何使用 put-public-access-block

Amazon CLI

为存储桶设置阻止公共访问配置

以下 put-public-access-block 示例为指定存储桶设置限制性阻止公共访问配置。

aws s3api put-public-access-block \ --bucket amzn-s3-demo-bucket \ --public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"

此命令不生成任何输出。

以下代码示例演示了如何使用 rb

Amazon CLI

示例 1:删除存储桶

以下 rb 命令将移除存储桶。在此示例中,用户的存储桶为 amzn-s3-demo-bucket。请注意,存储桶必须为空才能移除:

aws s3 rb s3://amzn-s3-demo-bucket

输出:

remove_bucket: amzn-s3-demo-bucket

示例 2:强制删除存储桶

以下 rb 命令使用 --force 参数,首先移除存储桶中的所有对象,然后移除存储桶本身。在此示例中,用户的存储桶为 amzn-s3-demo-bucketamzn-s3-demo-bucket 中的对象为 test1.txttest2.txt

aws s3 rb s3://amzn-s3-demo-bucket \ --force

输出:

delete: s3://amzn-s3-demo-bucket/test1.txt delete: s3://amzn-s3-demo-bucket/test2.txt remove_bucket: amzn-s3-demo-bucket
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 Rb

以下代码示例演示了如何使用 restore-object

Amazon CLI

为对象创建还原请求

以下 restore-object 示例将存储桶 my-glacier-bucket 的指定 Amazon S3 Glacier 对象还原为 10 天。

aws s3api restore-object \ --bucket my-glacier-bucket \ --key doc1.rtf \ --restore-request Days=10

此命令不生成任何输出。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 RestoreObject

以下代码示例演示了如何使用 rm

Amazon CLI

示例 1:删除 S3 对象

以下 rm 命令将删除单个 S3 对象:

aws s3 rm s3://amzn-s3-demo-bucket/test2.txt

输出:

delete: s3://amzn-s3-demo-bucket/test2.txt

示例 2:删除存储桶中的所有内容

以下 rm 命令在传递参数 --recursive 时,会递归删除指定存储桶和前缀下的所有对象。在此示例中,存储桶 amzn-s3-demo-bucket 中包含对象 test1.txttest2.txt

aws s3 rm s3://amzn-s3-demo-bucket \ --recursive

输出:

delete: s3://amzn-s3-demo-bucket/test1.txt delete: s3://amzn-s3-demo-bucket/test2.txt

示例 3:删除存储桶中的所有内容(“.jpg”文件除外)

以下 rm 命令在传递参数 --recursive 时,会递归删除指定存储桶和前缀下的所有对象,同时使用 --exclude 参数将某些对象排除在外。在此示例中,存储桶 amzn-s3-demo-bucket 中包含对象 test1.txttest2.jpg

aws s3 rm s3://amzn-s3-demo-bucket/ \ --recursive \ --exclude "*.jpg"

输出:

delete: s3://amzn-s3-demo-bucket/test1.txt

示例 4:删除存储桶中的所有内容(指定前缀下的对象除外)

以下 rm 命令在传递参数 --recursive 时,会递归删除指定存储桶和前缀下的所有对象,同时使用 --exclude 参数将特定前缀下的所有对象排除在外。在此示例中,存储桶 amzn-s3-demo-bucket 中包含对象 test1.txtanother/test.txt

aws s3 rm s3://amzn-s3-demo-bucket/ \ --recursive \ --exclude "another/*"

输出:

delete: s3://amzn-s3-demo-bucket/test1.txt

示例 5:从 S3 接入点中删除对象

以下 rm 命令从接入点(myaccesspoint)中删除单个对象(mykey)。::以下 rm 命令从接入点(myaccesspoint)中删除单个对象(mykey)。

aws s3 rm s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/mykey

输出:

delete: s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/mykey
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 Rm

以下代码示例演示了如何使用 select-object-content

Amazon CLI

基于 SQL 语句筛选 Amazon S3 对象的内容

以下 select-object-content 示例使用指定的 SQL 语句筛选 my-data-file.csv 对象并将输出发送到文件。

aws s3api select-object-content \ --bucket amzn-s3-demo-bucket \ --key my-data-file.csv \ --expression "select * from s3object limit 100" \ --expression-type 'SQL' \ --input-serialization '{"CSV": {}, "CompressionType": "NONE"}' \ --output-serialization '{"CSV": {}}' "output.csv"

此命令不生成任何输出。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 SelectObjectContent

以下代码示例演示了如何使用 sync

Amazon CLI

示例 1:将所有本地对象同步到指定存储桶

以下 sync 命令通过将本地文件上传到 S3,将本地目录中的对象同步到指定的前缀和存储桶。如果本地文件的大小与 S3 对象的大小不同,本地文件的上次修改时间晚于 S3 对象的上次修改时间,或者本地文件在指定的存储桶和前缀下不存在,则需要上传本地文件。在此示例中,用户将存储桶 amzn-s3-demo-bucket 同步到了当前本地目录中。当前本地目录包含文件 test.txttest2.txt。存储桶 amzn-s3-demo-bucket 不包含任何对象。

aws s3 sync . s3://amzn-s3-demo-bucket

输出:

upload: test.txt to s3://amzn-s3-demo-bucket/test.txt upload: test2.txt to s3://amzn-s3-demo-bucket/test2.txt

示例 2:将指定的 S3 存储桶中的所有 S3 对象同步到另一个存储桶

以下 sync 命令通过复制 S3 对象,将指定前缀和存储桶下的对象同步到另一个指定前缀和存储桶下的对象。如果两个 S3 对象的大小不同,源的上次修改时间晚于目标的上次修改时间,或者 S3 对象在指定的存储桶和前缀目标下不存在,则需要复制 S3 对象。

在此示例中,用户将存储桶 amzn-s3-demo-bucket 同步到了存储桶 amzn-s3-demo-bucket2。存储桶 amzn-s3-demo-bucket 包含对象 test.txttest2.txt。存储桶 amzn-s3-demo-bucket2 不包含任何对象:

aws s3 sync s3://amzn-s3-demo-bucket s3://amzn-s3-demo-bucket2

输出:

copy: s3://amzn-s3-demo-bucket/test.txt to s3://amzn-s3-demo-bucket2/test.txt copy: s3://amzn-s3-demo-bucket/test2.txt to s3://amzn-s3-demo-bucket2/test2.txt

示例 3:将指定 S3 存储桶中的所有 S3 对象同步到本地目录

以下 sync 命令通过下载 S3 对象,将指定 S3 存储桶中的文件同步到本地目录。如果 S3 对象的大小与本地文件的大小不同,S3 对象的上次修改时间晚于本地文件的上次修改时间,或者 S3 对象在本地目录中不存在,则需要下载 S3 对象。请注意,从 S3 下载对象时,本地文件的上次修改时间将更改为 S3 对象的上次修改时间。在此示例中,用户将存储桶 amzn-s3-demo-bucket 同步到了当前本地目录中。存储桶 amzn-s3-demo-bucket 包含对象 test.txttest2.txt。当前本地目录中没有文件:

aws s3 sync s3://amzn-s3-demo-bucket .

输出:

download: s3://amzn-s3-demo-bucket/test.txt to test.txt download: s3://amzn-s3-demo-bucket/test2.txt to test2.txt

示例 4:将所有本地对象同步到指定存储桶并删除所有不匹配的文件

以下 sync 命令通过将本地文件上传到 S3,将指定前缀和存储桶下的对象同步到本地目录中的文件。由于 --delete 参数的原因,任何存在于指定前缀和存储桶下但不存在于本地目录中的文件都将被删除。在此示例中,用户将存储桶 amzn-s3-demo-bucket 同步到了当前本地目录中。当前本地目录包含文件 test.txttest2.txt。存储桶 amzn-s3-demo-bucket 包含对象 test3.txt

aws s3 sync . s3://amzn-s3-demo-bucket \ --delete

输出:

upload: test.txt to s3://amzn-s3-demo-bucket/test.txt upload: test2.txt to s3://amzn-s3-demo-bucket/test2.txt delete: s3://amzn-s3-demo-bucket/test3.txt

示例 5:将除“.jpg”文件之外的所有本地对象同步到指定存储桶

以下 sync 命令通过将本地文件上传到 S3,将指定前缀和存储桶下的对象同步到本地目录中的文件。由于 --exclude 参数的原因,所有与 S3 和本地存在的模式相匹配的文件都不会同步。在此示例中,用户将存储桶 amzn-s3-demo-bucket 同步到了当前本地目录中。当前本地目录包含文件 test.jpgtest2.txt。存储桶 amzn-s3-demo-bucket 中的对象 test.jpg 与本地 test.jpg 的大小不同:

aws s3 sync . s3://amzn-s3-demo-bucket \ --exclude "*.jpg"

输出:

upload: test2.txt to s3://amzn-s3-demo-bucket/test2.txt

示例 6:将除指定的目录文件之外的所有本地对象同步到指定存储桶

以下 sync 命令通过下载 S3 对象,将本地目录下的文件同步到指定前缀和存储桶下的对象。此示例使用 --exclude 参数标志,将指定目录和 S3 前缀排除在 sync 命令之外。在此示例中,用户将当前本地目录同步到了存储桶 amzn-s3-demo-bucket 中。当前本地目录包含文件 test.txtanother/test2.txt。存储桶 amzn-s3-demo-bucket 包含对象 another/test5.txttest1.txt

aws s3 sync s3://amzn-s3-demo-bucket/ . \ --exclude "*another/*"

输出:

download: s3://amzn-s3-demo-bucket/test1.txt to test1.txt

示例 7:在不同区域的存储桶之间同步所有对象

以下 sync 命令可在不同区域的两个存储桶之间同步文件:

aws s3 sync s3://my-us-west-2-bucket s3://my-us-east-1-bucket \ --source-region us-west-2 \ --region us-east-1

输出:

download: s3://my-us-west-2-bucket/test1.txt to s3://my-us-east-1-bucket/test1.txt

示例 8:同步到 S3 接入点

以下 sync 命令会将当前目录同步到接入点(myaccesspoint):

aws s3 sync . s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/

输出:

upload: test.txt to s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/test.txt upload: test2.txt to s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/test2.txt
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 Sync

以下代码示例演示了如何使用 upload-part-copy

Amazon CLI

从现有对象复制数据作为数据来源,上传部分对象

以下 upload-part-copy 示例会通过从现有对象复制数据作为数据来源,上传部分对象。

aws s3api upload-part-copy \ --bucket amzn-s3-demo-bucket \ --key "Map_Data_June.mp4" \ --copy-source "amzn-s3-demo-bucket/copy_of_Map_Data_June.mp4" \ --part-number 1 \ --upload-id "bq0tdE1CDpWQYRPLHuNG50xAT6pA5D.m_RiBy0ggOH6b13pVRY7QjvLlf75iFdJqp_2wztk5hvpUM2SesXgrzbehG5hViyktrfANpAD0NO.Nk3XREBqvGeZF6U3ipiSm"

输出:

{ "CopyPartResult": { "LastModified": "2019-12-13T23:16:03.000Z", "ETag": "\"711470fc377698c393d94aed6305e245\"" } }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 UploadPartCopy

以下代码示例演示了如何使用 upload-part

Amazon CLI

以下命令上传使用 create-multipart-upload 命令启动的分段上传中的第一个分段:

aws s3api upload-part --bucket amzn-s3-demo-bucket --key 'multipart/01' --part-number 1 --body part01 --upload-id "dfRtDYU0WWCCcH43C3WFbkRONycyCpTJJvxu2i5GYkZljF.Yxwh6XG7WfS2vC4to6HiV6Yjlx.cph0gtNBtJ8P3URCSbB7rjxI5iEwVDmgaXZOGgkk5nVTW16HOQ5l0R"

body 选项采用本地文件的名称或路径进行上传(不要使用 file:// 前缀)。最小分段大小为 5 MB。上传 ID 由 create-multipart-upload 返回,也可以使用 list-multipart-uploads 进行检索。存储桶和键是在您创建分段上传时指定的。

输出:

{ "ETag": "\"e868e0f4719e394144ef36531ee6824c\"" }

保存每个分段的 ETag 值以备后用。需要这些值才能完成分段上传。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 UploadPart

以下代码示例演示了如何使用 website

Amazon CLI

将 S3 存储桶配置为静态网站

以下命令将名为 amzn-s3-demo-bucket 的存储桶配置为静态网站。索引文档选项指定了访客在导航到网站 URL 时将定向到的 amzn-s3-demo-bucket 文件。在此示例中,存储桶位于 us-west-2 区域中,因此网站将显示为 http://amzn-s3-demo-bucket.s3-website-us-west-2.amazonaws.com

存储桶中显示在静态站点中的所有文件都必须配置为允许访客打开。文件权限与存储桶网站配置分开配置。

aws s3 website s3://amzn-s3-demo-bucket/ \ --index-document index.html \ --error-document error.html

有关在 Amazon S3 中托管静态网站的信息,请参阅《Amazon Simple Storage Service 开发人员指南》中的托管静态网站

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 Website