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

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

使用 Amazon S3 的示例 Amazon CLI

以下代码示例向您展示了如何在 Amazon S3 中使用来执行操作和实现常见场景。 Amazon Command Line Interface

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

场景是展示如何通过在同一服务中调用多个函数来完成特定任务任务的代码示例。

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

主题

操作

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

Amazon CLI

中止指定的分段上传

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

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

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

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

Amazon CLI

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

aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket my-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": "my-bucket", "Location": "https://my-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://mybucket/test2.txt

输出:

upload: test.txt to s3://mybucket/test2.txt

示例 2:将带有过期日期的本地文件复制到 S3

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

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

输出:

upload: test.txt to s3://mybucket/test2.txt

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

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

aws s3 cp s3://mybucket/test.txt s3://mybucket/test2.txt

输出:

copy: s3://mybucket/test.txt to s3://mybucket/test2.txt

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

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

aws s3 cp s3://mybucket/test.txt test2.txt

输出:

download: s3://mybucket/test.txt to test2.txt

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

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

aws s3 cp s3://mybucket/test.txt s3://mybucket2/

输出:

copy: s3://mybucket/test.txt to s3://mybucket2/test.txt

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

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

aws s3 cp s3://mybucket . \ --recursive

输出:

download: s3://mybucket/test1.txt to test1.txt download: s3://mybucket/test2.txt to test2.txt

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

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

aws s3 cp myDir s3://mybucket/ \ --recursive \ --exclude "*.jpg"

输出:

upload: myDir/test1.txt to s3://mybucket/test1.txt

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

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

aws s3 cp s3://mybucket/ s3://mybucket2/ \ --recursive \ --exclude "another/*"

输出:

copy: s3://mybucket/test1.txt to s3://mybucket2/test1.txt

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

aws s3 cp s3://mybucket/logs/ s3://mybucket2/logs/ \ --recursive \ --exclude "*" \ --include "*.log"

输出:

copy: s3://mybucket/logs/test/test.log to s3://mybucket2/logs/test/test.log copy: s3://mybucket/logs/test3.log to s3://mybucket2/logs/test3.log

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

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

aws s3 cp s3://mybucket/test.txt s3://mybucket/test2.txt \ --acl public-read-write

输出:

copy: s3://mybucket/test.txt to s3://mybucket/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:::mybucket/*" ], "Effect": "Allow", "Sid": "Stmt1234567891234" } ] } }

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

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

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

输出:

upload: file.txt to s3://mybucket/file.txt

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

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

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

aws s3 cp - s3://mybucket/stream.txt

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

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

aws s3 cp - s3://mybucket/stream.txt --expected-size 54760833024

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

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

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

aws s3 cp s3://mybucket/stream.txt -

示例 14:上传到 S3 接入点

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

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 示例创建一个名为 my-bucket 的存储桶:

aws s3api create-bucket \ --bucket my-bucket \ --region us-east-1

输出:

{ "Location": "/my-bucket" }

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

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

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

aws s3api create-bucket \ --bucket my-bucket \ --region us-east-1 \ --object-ownership BucketOwnerEnforced

输出:

{ "Location": "/my-bucket" }

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

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

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

aws s3api create-bucket \ --bucket my-bucket \ --region eu-west-1 \ --create-bucket-configuration LocationConstraint=eu-west-1

输出:

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

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

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

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

Amazon CLI

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

aws s3api create-multipart-upload --bucket my-bucket --key 'multipart/01'

输出:

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

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

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

Amazon CLI

删除存储桶的分析配置

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

aws s3api delete-bucket-analytics-configuration \ --bucket my-bucket \ --id 1

此命令不生成任何输出。

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

Amazon CLI

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

aws s3api delete-bucket-cors --bucket my-bucket
  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteBucketCors中的。

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

Amazon CLI

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

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

aws s3api delete-bucket-encryption \ --bucket my-bucket

此命令不生成任何输出。

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

Amazon CLI

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

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

aws s3api delete-bucket-intelligent-tiering-configuration \ --bucket DOC-EXAMPLE-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 my-bucket \ --id 1

此命令不生成任何输出。

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

Amazon CLI

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

aws s3api delete-bucket-lifecycle --bucket my-bucket

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

Amazon CLI

删除存储桶的指标配置

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

aws s3api delete-bucket-metrics-configuration \ --bucket my-bucket \ --id 123

此命令不生成任何输出。

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

Amazon CLI

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

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

aws s3api delete-bucket-ownership-controls \ --bucket DOC-EXAMPLE-BUCKET

此命令不生成任何输出。

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

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

Amazon CLI

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

aws s3api delete-bucket-policy --bucket my-bucket
  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteBucketPolicy中的。

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

Amazon CLI

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

aws s3api delete-bucket-replication --bucket my-bucket

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

Amazon CLI

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

aws s3api delete-bucket-tagging --bucket my-bucket

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

Amazon CLI

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

aws s3api delete-bucket-website --bucket my-bucket

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

Amazon CLI

以下命令删除名为 my-bucket 的存储桶:

aws s3api delete-bucket --bucket my-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 my-bucket \ --key doc1.rtf

此命令不生成任何输出。

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

Amazon CLI

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

aws s3api delete-object --bucket my-bucket --key test.txt

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

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

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

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

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

Amazon CLI

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

aws s3api delete-objects --bucket my-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 my-bucket

此命令不生成任何输出。

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

Amazon CLI

检索存储桶的加速配置

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

aws s3api get-bucket-accelerate-configuration \ --bucket my-bucket

输出:

{ "Status": "Enabled" }

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

Amazon CLI

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

aws s3api get-bucket-acl --bucket my-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 my-bucket \ --id 1

输出:

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

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

Amazon CLI

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

aws s3api get-bucket-cors --bucket my-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 示例检索存储桶 my-bucket 的服务器端加密配置。

aws s3api get-bucket-encryption \ --bucket my-bucket

输出:

{ "ServerSideEncryptionConfiguration": { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] } }

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

Amazon CLI

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

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

aws s3api get-bucket-intelligent-tiering-configuration \ --bucket DOC-EXAMPLE-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 my-bucket \ --id 1

输出:

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

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

Amazon CLI

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

aws s3api get-bucket-lifecycle-configuration --bucket my-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

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

aws s3api get-bucket-lifecycle --bucket my-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

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

aws s3api get-bucket-location --bucket my-bucket

输出:

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

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

Amazon CLI

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

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

aws s3api get-bucket-logging \ --bucket my-bucket

输出:

{ "LoggingEnabled": { "TargetPrefix": "", "TargetBucket": "my-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 my-bucket \ --id 123

输出:

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

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

Amazon CLI

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

aws s3api get-bucket-notification-configuration --bucket my-bucket

输出:

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

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

Amazon CLI

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

aws s3api get-bucket-notification --bucket my-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 DOC-EXAMPLE-BUCKET

输出:

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

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

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

Amazon CLI

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

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

aws s3api get-bucket-policy-status \ --bucket my-bucket

输出:

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

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

Amazon CLI

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

aws s3api get-bucket-policy --bucket my-bucket

输出:

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

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

aws s3api get-bucket-policy --bucket mybucket --query Policy --output text > policy.json

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

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

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

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

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

Amazon CLI

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

aws s3api get-bucket-replication --bucket my-bucket

输出:

{ "ReplicationConfiguration": { "Rules": [ { "Status": "Enabled", "Prefix": "", "Destination": { "Bucket": "arn:aws:s3:::my-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 my-bucket

输出:

{ "Payer": "BucketOwner" }

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

Amazon CLI

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

aws s3api get-bucket-tagging --bucket my-bucket

输出:

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

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

Amazon CLI

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

aws s3api get-bucket-versioning --bucket my-bucket

输出:

{ "Status": "Enabled" }

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

Amazon CLI

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

aws s3api get-bucket-website --bucket my-bucket

输出:

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

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

Amazon CLI

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

aws s3api get-object-acl --bucket my-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 my-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中的。

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

Amazon CLI

检索对象的法定保留状态

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

aws s3api get-object-legal-hold \ --bucket my-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 my-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 my-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 my-bucket \ --key doc1.rtf

输出:

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

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

aws s3api get-object-tagging \ --bucket my-bucket \ --key doc2.rtf

输出:

{ "TagSet": [] }

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

aws s3api get-object-tagging \ --bucket my-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

以下命令为名为的存储桶中的对象创建 torrentmy-bucket

aws s3api get-object-torrent --bucket my-bucket --key large-video-file.mp4 large-video-file.torrent

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 my-bucket

输出:

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

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

Amazon CLI

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

aws s3api head-bucket --bucket my-bucket

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

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

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

Amazon CLI

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

aws s3api head-object --bucket my-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 my-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 DOC-EXAMPLE-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 my-bucket

输出:

{ "InventoryConfigurationList": [ { "IsEnabled": true, "Destination": { "S3BucketDestination": { "Format": "ORC", "Bucket": "arn:aws:s3:::my-bucket", "AccountId": "123456789012" } }, "IncludedObjectVersions": "Current", "Id": "1", "Schedule": { "Frequency": "Weekly" } }, { "IsEnabled": true, "Destination": { "S3BucketDestination": { "Format": "CSV", "Bucket": "arn:aws:s3:::my-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 my-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

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

aws s3api list-multipart-uploads --bucket my-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

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

aws s3api list-object-versions --bucket my-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 my-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

以下命令列出了为分段上传而上传的所有分段,密钥multipart/01位于存储桶my-bucket中:

aws s3api list-parts --bucket my-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命令列出了用户拥有的所有存储桶。在此示例中,用户拥有存储桶mybucket和。mybucket2时间戳是存储桶的创建日期,以计算机的时区显示。更改存储桶(例如编辑存储桶策略)时,此日期可能会更改。请注意s3://,如果用于 path 参数<S3Uri>,它也会列出所有存储桶。

aws s3 ls

输出:

2013-07-11 17:08:50 mybucket 2013-07-24 14:55:44 mybucket2

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

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

aws s3 ls s3://mybucket

输出:

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

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

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

aws s3 ls s3://mybucket/noExistPrefix

输出:

None

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

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

aws s3 ls s3://mybucket \ --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和--summary选项演示了相同的命令。 --human readable 以字节/mib/kib/kib/Gib/tib/pib/EIB 为单位显示文件大小。 --summary 在结果列表的末尾显示对象的总数和总大小:

aws s3 ls s3://mybucket \ --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命令创建存储桶。在此示例中,用户创建了存储桶mybucket。存储桶是在用户配置文件中指定的区域创建的:

aws s3 mb s3://mybucket

输出:

make_bucket: s3://mybucket

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

以下mb命令在--region参数指定的区域中创建存储桶。在此示例中,用户mybucket在以下区域创建存储桶us-west-1

aws s3 mb s3://mybucket \ --region us-west-1

输出:

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

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

Amazon CLI

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

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

aws s3 mv test.txt s3://mybucket/test2.txt

输出:

move: test.txt to s3://mybucket/test2.txt

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

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

aws s3 mv s3://mybucket/test.txt s3://mybucket/test2.txt

输出:

move: s3://mybucket/test.txt to s3://mybucket/test2.txt

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

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

aws s3 mv s3://mybucket/test.txt test2.txt

输出:

move: s3://mybucket/test.txt to test2.txt

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

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

aws s3 mv s3://mybucket/test.txt s3://mybucket2/

输出:

move: s3://mybucket/test.txt to s3://mybucket2/test.txt

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

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

aws s3 mv s3://mybucket . \ --recursive

输出:

move: s3://mybucket/test1.txt to test1.txt move: s3://mybucket/test2.txt to test2.txt

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

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

aws s3 mv myDir s3://mybucket/ \ --recursive \ --exclude "*.jpg"

输出:

move: myDir/test1.txt to s3://mybucket2/test1.txt

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

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

aws s3 mv s3://mybucket/ s3://mybucket2/ \ --recursive \ --exclude "mybucket/another/*"

输出:

move: s3://mybucket/test1.txt to s3://mybucket2/test1.txt

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

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

aws s3 mv s3://mybucket/test.txt s3://mybucket/test2.txt \ --acl public-read-write

输出:

move: s3://mybucket/test.txt to s3://mybucket/test2.txt

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

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

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

输出:

move: file.txt to s3://mybucket/file.txt

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

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

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://DOC-EXAMPLE-BUCKET/test2.txt

输出:

https://DOC-EXAMPLE-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://DOC-EXAMPLE-BUCKET/test2.txt \ --expires-in 604800

输出:

https://DOC-EXAMPLE-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 my-bucket \ --accelerate-configuration Status=Enabled

此命令不生成任何输出。

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

Amazon CLI

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

aws s3api put-bucket-acl --bucket MyBucket --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 my-bucket --id 1 \ --analytics-configuration '{"Id": "1","StorageClassAnalysis": {}}'

此命令不生成任何输出。

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

Amazon CLI

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

aws s3api put-bucket-cors --bucket MyBucket --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 my-bucket \ --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}'

此命令不生成任何输出。

以下代码示例演示如何使用 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 DOC-EXAMPLE-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示例为存储桶设置了每周 ORC 格式的库存报告。my-bucket

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

此命令不生成任何输出。

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

以下put-bucket-inventory-configuration示例为存储桶设置 CSV 格式的每日库存报告。my-bucket

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

此命令不生成任何输出。

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

Amazon CLI

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

aws s3api put-bucket-lifecycle-configuration --bucket my-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

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

aws s3api put-bucket-lifecycle --bucket my-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示例为设置了日志策略MyBucket。首先,使用 put-bucket-policy 命令在存储桶策略中向日志记录服务主体授予权限。

aws s3api put-bucket-policy \ --bucket MyBucket \ --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:::MyBucket/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 MyBucket \ --bucket-logging-status file://logging.json

logging.json 的内容:

{ "LoggingEnabled": { "TargetBucket": "MyBucket", "TargetPrefix": "Logs/" } }

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

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

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

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

aws s3api put-bucket-acl \ --bucket MyBucket \ --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 MyBucket \ --bucket-logging-status file://logging.json

logging.json 的内容:

{ "LoggingEnabled": { "TargetBucket": "MyBucket", "TargetPrefix": "MyBucketLogs/", "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 my-bucket \ --id 123 \ --metrics-configuration '{"Id": "123", "Filter": {"Prefix": "logs"}}'

此命令不生成任何输出。

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

Amazon CLI

启用存储桶的指定通知

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

aws s3api put-bucket-notification-configuration \ --bucket my-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:*:*:my-bucket" } } } ] }

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

Amazon CLI

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

aws s3api put-bucket-notification --bucket my-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:my-bucket", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:my-bucket" } } } ] }

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

Amazon CLI

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

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

aws s3api put-bucket-ownership-controls \ --bucket DOC-EXAMPLE-BUCKET \ --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"

此命令不生成任何输出。

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

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

Amazon CLI

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

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

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

Amazon CLI

为 S3 存储桶配置复制

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

aws s3api put-bucket-replication \ --bucket AWSDOC-EXAMPLE-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:::AWSDOC-EXAMPLE-BUCKET2" } } ] }

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

示例角色权限策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET1" ] }, { "Effect": "Allow", "Action": [ "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET1/*" ] }, { "Effect": "Allow", "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-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 my-bucket \ --request-payment-configuration '{"Payer":"Requester"}'

此命令不生成任何输出。

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

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

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

此命令不生成任何输出。

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

Amazon CLI

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

aws s3api put-bucket-tagging --bucket my-bucket --tagging file://tagging.json

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

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

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

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

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

Amazon CLI

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

aws s3api put-bucket-versioning --bucket my-bucket --versioning-configuration Status=Enabled

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

aws s3api put-bucket-versioning --bucket my-bucket --versioning-configuration Status=Enabled --mfa "SERIAL 123456"

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

Amazon CLI

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

aws s3api put-bucket-website --bucket my-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

以下命令full control向两个 Amazon 用户(user1@example.comuser2@example.com)授予权限,向所有人read授予权限:

aws s3api put-object-acl --bucket MyBucket --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 my-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 my-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 my-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示例在指定对象confidential上设置带有键designation和值的标签。

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

此命令不生成任何输出。

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

aws s3api put-object-tagging \ --bucket my-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

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

aws s3api put-object --bucket text-content --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2

以下示例演示了如何上传视频文件(该视频文件是使用 Windows 文件系统语法指定的。):

aws s3api put-object --bucket text-content --key dir-1/big-video-file.mp4 --body e:\media\videos\f-sharp-3-data-services.mp4

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

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

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

Amazon CLI

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

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

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

此命令不生成任何输出。

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

Amazon CLI

示例 1:删除存储桶

以下rb命令删除存储桶。在此示例中,用户的存储桶是mybucket。请注意,存储桶必须为空才能删除:

aws s3 rb s3://mybucket

输出:

remove_bucket: mybucket

示例 2:强制删除存储桶

以下rb命令使用--force参数首先删除存储桶中的所有对象,然后移除存储桶本身。在此示例中,用户的存储桶为mybucket,其中的对象mybuckettest1.txttest2.txt

aws s3 rb s3://mybucket \ --force

输出:

delete: s3://mybucket/test1.txt delete: s3://mybucket/test2.txt remove_bucket: mybucket
  • 有关 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://mybucket/test2.txt

输出:

delete: s3://mybucket/test2.txt

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

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

aws s3 rm s3://mybucket \ --recursive

输出:

delete: s3://mybucket/test1.txt delete: s3://mybucket/test2.txt

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

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

aws s3 rm s3://mybucket/ \ --recursive \ --exclude "*.jpg"

输出:

delete: s3://mybucket/test1.txt

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

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

aws s3 rm s3://mybucket/ \ --recursive \ --exclude "another/*"

输出:

delete: s3://mybucket/test1.txt

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

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

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 my-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"

此命令不生成任何输出。

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

Amazon CLI

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

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

aws s3 sync . s3://mybucket

输出:

upload: test.txt to s3://mybucket/test.txt upload: test2.txt to s3://mybucket/test2.txt

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

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

在此示例中,用户将存储桶同步mybucket到存储桶mybucket2。存储桶mybucket包含对象test.txttest2.txt。存储桶不mybucket2包含任何对象:

aws s3 sync s3://mybucket s3://mybucket2

输出:

copy: s3://mybucket/test.txt to s3://mybucket2/test.txt copy: s3://mybucket/test2.txt to s3://mybucket2/test2.txt

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

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

aws s3 sync s3://mybucket .

输出:

download: s3://mybucket/test.txt to test.txt download: s3://mybucket/test2.txt to test2.txt

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

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

aws s3 sync . s3://mybucket \ --delete

输出:

upload: test.txt to s3://mybucket/test.txt upload: test2.txt to s3://mybucket/test2.txt delete: s3://mybucket/test3.txt

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

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

aws s3 sync . s3://mybucket \ --exclude "*.jpg"

输出:

upload: test2.txt to s3://mybucket/test2.txt

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

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

aws s3 sync s3://mybucket/ . \ --exclude "*another/*"

输出:

download: s3://mybucket/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 命令参考》中的 “同步”。

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

Amazon CLI

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

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

aws s3api upload-part-copy \ --bucket my-bucket \ --key "Map_Data_June.mp4" \ --copy-source "my-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 my-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 存储桶配置为静态网站

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

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

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

有关在 Amazon S3 中托管静态网站的信息,请参阅《亚马逊简单存储服务开发者指南》中的托管静态网站

  • 有关 API 的详细信息,请参阅《Amazon CLI 命令参考》中的 “网站”。