Amazon S3 示例使用 AWS CLI - AWS Command Line Interface

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon S3 示例使用 AWS CLI

下列程式碼範例說明如何透過 AWS Command Line Interface 搭配 Amazon S3 使用來執行動作和實作常見案例。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數,但您可以在其相關情境和跨服務範例中查看內容中的動作。

Scenarios (案例) 是向您展示如何呼叫相同服務中的多個函數來完成特定任務的程式碼範例。

每個範例都包含一個連結 GitHub,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例會示範如何使用abort-multipart-upload

AWS CLI

中止指定的分段上傳

下列abort-multipart-upload指令會中止儲存貯體multipart/01中金鑰的多部分上傳。my-bucket

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

AWS CLI

下列命令會完成值my-bucketmultipart/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

上述命令中的 multipart upload 選項採用 JSON 結構,該結構描述了應重新組合到完整檔案中的多部分上傳部分。在此範例中,file://前置詞用於從名為的本機資料夾中的檔案載入 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

AWS CLI

下列指令會將物件從複製bucket-1bucket-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 詳細資訊,請參閱AWS CLI 命令參考CopyObject中的。

下列程式碼範例會示範如何使用cp

AWS 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.txt物件test2.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.txt物件another/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)

將 ACL 設定為時,下列指cp令會將單一物件複製到指定的值區和金鑰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 所識別的所有使用者,並將完全控制權授與其標準 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 的編碼或將 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 的編碼或將 CRLF 添加到管道或重定向輸出。

下列cp命令會在本機下載 S3 物件,做為串流至標準輸出。下載為串流目前與--recursive參數不相容:

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

範例 14:上傳至 S3 存取點

下列cp指令會將單一檔案 (mydoc.txt) 上傳至 key (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 詳細資訊,請參閱AWS CLI 命令參考中的 Cp

下列程式碼範例會示範如何使用create-bucket

AWS 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範例會建立區域my-bucket中名為的值eu-west-1區。位於以外的區域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 詳細資訊,請參閱AWS CLI 命令參考CreateBucket中的。

下列程式碼範例會示範如何使用create-multipart-upload

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

完成的文件將在存儲桶01中名為的文件夾multipart中命名my-bucket。儲存上傳 ID、金鑰和值區名稱,以便與upload-part指令搭配使用。

下列程式碼範例會示範如何使用delete-bucket-analytics-configuration

AWS CLI

若要刪除值區的分析設定

下列delete-bucket-analytics-configuration範例會移除指定值區和 ID 的分析設定。

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

此命令不會產生輸出。

下列程式碼範例會示範如何使用delete-bucket-cors

AWS CLI

下列指令會從名my-bucket為的值區刪除跨來源資源共用設定:

aws s3api delete-bucket-cors --bucket my-bucket
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考DeleteBucketCors中的。

下列程式碼範例會示範如何使用delete-bucket-encryption

AWS CLI

刪除值區的伺服器端加密組態

下列delete-bucket-encryption範例會刪除指定值區的伺服器端加密組態。

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

此命令不會產生輸出。

下列程式碼範例會示範如何使用delete-bucket-intelligent-tiering-configuration

AWS 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

AWS CLI

若要刪除值區的庫存組態

下列delete-bucket-inventory-configuration範例會刪除具有指定值區之識別碼的1詳細目錄組態。

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

此命令不會產生輸出。

下列程式碼範例會示範如何使用delete-bucket-lifecycle

AWS CLI

下列指令會從名為的值區刪除生命週期組態my-bucket

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

下列程式碼範例會示範如何使用delete-bucket-metrics-configuration

AWS CLI

若要刪除值區的指標組態

下列delete-bucket-metrics-configuration範例會移除指定值區和 ID 的指標組態。

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

此命令不會產生輸出。

下列程式碼範例會示範如何使用delete-bucket-ownership-controls

AWS CLI

移除值區的值區擁有權設定

下列delete-bucket-ownership-controls範例會移除值區的值區擁有權設定。

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

此命令不會產生輸出。

如需詳細資訊,請參Amazon S3 使用者指南中的對現有儲存貯體設定物件擁有權。

下列程式碼範例會示範如何使用delete-bucket-policy

AWS CLI

下列命令會從名為的值區刪除值區政策my-bucket

aws s3api delete-bucket-policy --bucket my-bucket

下列程式碼範例會示範如何使用delete-bucket-replication

AWS CLI

下列命令會從名為的值區刪除複寫組態my-bucket

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

下列程式碼範例會示範如何使用delete-bucket-tagging

AWS CLI

下列指令會從名為的值區刪除標記組態my-bucket

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

下列程式碼範例會示範如何使用delete-bucket-website

AWS CLI

下列指令會刪除名為的值區中的網站設定my-bucket

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

下列程式碼範例會示範如何使用delete-bucket

AWS CLI

下列指令會刪除名為的值區my-bucket

aws s3api delete-bucket --bucket my-bucket --region us-east-1
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考DeleteBucket中的。

下列程式碼範例會示範如何使用delete-object-tagging

AWS CLI

若要刪除物件的標籤組

下列delete-object-tagging範例會從物件中刪除具有指定索引鍵的標籤doc1.rtf

aws s3api delete-object-tagging \ --bucket my-bucket \ --key doc1.rtf

此命令不會產生輸出。

下列程式碼範例會示範如何使用delete-object

AWS CLI

下列指令會從名為的值區刪test.txt除名為的物件my-bucket

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

如果啟用了值區版本控制,輸出將包含刪除標記的版本 ID:

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

如需刪除物件的詳細資訊,請參閱 Amazon S3 開發人員指南中的刪除物件。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考DeleteObject中的。

下列程式碼範例會示範如何使用delete-objects

AWS 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 詳細資訊,請參閱AWS CLI 命令參考DeleteObjects中的。

下列程式碼範例會示範如何使用delete-public-access-block

AWS CLI

刪除值區的區塊公用存取設定

下列delete-public-access-block範例會移除指定值區上的區塊公用存取設定。

aws s3api delete-public-access-block \ --bucket my-bucket

此命令不會產生輸出。

下列程式碼範例會示範如何使用get-bucket-accelerate-configuration

AWS CLI

若要擷取值區的加速組態

下列get-bucket-accelerate-configuration範例會擷取指定值區的加速組態。

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

輸出:

{ "Status": "Enabled" }

下列程式碼範例會示範如何使用get-bucket-acl

AWS 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 詳細資訊,請參閱AWS CLI 命令參考GetBucketAcl中的。

下列程式碼範例會示範如何使用get-bucket-analytics-configuration

AWS 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

AWS 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 詳細資訊,請參閱AWS CLI 命令參考GetBucketCors中的。

下列程式碼範例會示範如何使用get-bucket-encryption

AWS CLI

擷取值區的伺服器端加密組態

下列get-bucket-encryption範例會擷取值區的伺服器端加密組態my-bucket

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

輸出:

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

下列程式碼範例會示範如何使用get-bucket-intelligent-tiering-configuration

AWS 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

AWS 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

AWS 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

AWS 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" } ] }

下列程式碼範例會示範如何使用get-bucket-location

AWS CLI

如果存在條件約束my-bucket,下列命令會擷取名為的值區的位置限制:

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

輸出:

{ "LocationConstraint": "us-west-2" }

下列程式碼範例會示範如何使用get-bucket-logging

AWS CLI

若要擷取值區的記錄狀態

下列get-bucket-logging範例會擷取指定值區的記錄狀態。

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

輸出:

{ "LoggingEnabled": { "TargetPrefix": "", "TargetBucket": "my-bucket-logs" } }
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考GetBucketLogging中的。

下列程式碼範例會示範如何使用get-bucket-metrics-configuration

AWS 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

AWS 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

AWS 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

AWS 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

AWS CLI

若要擷取值區的政策狀態,指出值區是否為公用

下列get-bucket-policy-status範例會擷取值區的政策狀態my-bucket

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

輸出:

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

下列程式碼範例會示範如何使用get-bucket-policy

AWS 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 詳細資訊,請參閱AWS CLI 命令參考GetBucketPolicy中的。

下列程式碼範例會示範如何使用get-bucket-replication

AWS 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

AWS CLI

若要擷取值區的請求付款組態

下列get-bucket-request-payment範例會擷取指定值區的要求者付費組態。

aws s3api get-bucket-request-payment \ --bucket my-bucket

輸出:

{ "Payer": "BucketOwner" }

下列程式碼範例會示範如何使用get-bucket-tagging

AWS CLI

下列命令會擷取名為的值區的標記組態my-bucket

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

輸出:

{ "TagSet": [ { "Value": "marketing", "Key": "organization" } ] }
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考GetBucketTagging中的。

下列程式碼範例會示範如何使用get-bucket-versioning

AWS CLI

下列指令會擷取名為的值區的版本設定my-bucket

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

輸出:

{ "Status": "Enabled" }

下列程式碼範例會示範如何使用get-bucket-website

AWS CLI

下列命令會擷取名為的值區的靜態網站組態my-bucket

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

輸出:

{ "IndexDocument": { "Suffix": "index.html" }, "ErrorDocument": { "Key": "error.html" } }
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考GetBucketWebsite中的。

下列程式碼範例會示範如何使用get-object-acl

AWS 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 詳細資訊,請參閱AWS CLI 命令參考GetObjectAcl中的。

下列程式碼範例會示範如何使用get-object-attributes

AWS 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

AWS CLI

擷取物件的「合法保留」狀態

下列get-object-legal-hold範例會擷取指定物件的「合法保留」狀態。

aws s3api get-object-legal-hold \ --bucket my-bucket-with-object-lock \ --key doc1.rtf

輸出:

{ "LegalHold": { "Status": "ON" } }

下列程式碼範例會示範如何使用get-object-lock-configuration

AWS 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

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

下列程式碼範例會示範如何使用get-object-tagging

AWS 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 詳細資訊,請參閱AWS CLI 命令參考GetObjectTagging中的。

下列程式碼範例會示範如何使用get-object-torrent

AWS 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 詳細資訊,請參閱AWS CLI 命令參考GetObjectTorrent中的。

下列程式碼範例會示範如何使用get-object

AWS 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 詳細資訊,請參閱AWS CLI 命令參考GetObject中的。

下列程式碼範例會示範如何使用get-public-access-block

AWS 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

AWS CLI

下列指令會驗證儲存貯體的存取權:my-bucket

aws s3api head-bucket --bucket my-bucket

如果存在值區且您可以存取該值區,則不會傳回任何輸出。否則,將顯示錯誤消息。例如:

A client error (404) occurred when calling the HeadBucket operation: Not Found
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考HeadBucket中的。

下列程式碼範例會示範如何使用head-object

AWS 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 詳細資訊,請參閱AWS CLI 命令參考HeadObject中的。

下列程式碼範例會示範如何使用list-bucket-analytics-configurations

AWS 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

AWS 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

AWS 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

AWS 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

AWS CLI

以下命令使用命list-buckets令顯示所有 Amazon S3 儲存貯體 (跨所有區域) 的名稱:

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

查詢選項會篩選儲存貯體名稱的list-buckets輸出。

如需有關儲存貯體的詳細資訊,請參閱 Amazon S3 開發人員指南中的使用 Amazon S3 儲存貯體

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考ListBuckets中的。

下列程式碼範例會示範如何使用list-multipart-uploads

AWS 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

AWS 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 } ] }

下列程式碼範例會示範如何使用list-objects-v2

AWS 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 詳細資訊,請參閱AWS CLI 命令參考中的 ListObjectsV2

下列程式碼範例會示範如何使用list-objects

AWS CLI

下列範例會使用list-objects命令來顯示指定值區中所有物件的名稱:

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

此範例使用--query引數將輸出篩選為每個物件的list-objects索引鍵值和大小

如需有關物件的詳細資訊,請參閱 Amazon S3 開發人員指南中的使用 Amazon S3 物件。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考ListObjects中的。

下列程式碼範例會示範如何使用list-parts

AWS CLI

以下命令列出了為多部分上傳而上傳的所有部分,並在存儲桶multipart/01my-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 詳細資訊,請參閱AWS CLI 命令參考ListParts中的。

下列程式碼範例會示範如何使用ls

AWS CLI

範例 1:列出所有使用者擁有的值區

以下ls命令列出了用戶擁有的所有存儲桶。在此範例中,使用者擁有值區mybucketmybucket2. 時間戳記是值區建立的日期,顯示在機器的時區中。此日期可能會在變更值區時變更,例如編輯值區政策。請注意s3://,如果用於 path 參數<S3Uri>,它將列出所有的存儲桶,以及。

aws s3 ls

輸出:

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

範例 2:列出值區中的所有前置字元和物件

以下ls命令列出指定值區和前綴下的對象和常用前綴。在此範例中,使用者擁有物件test.txt和的值區mybucketsomePrefix/test.txtLastWriteTimeLength是任意的。請注意,由於該ls命令與本地文件系統沒有交互,因此不需要 s3:// 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命令演示了使用-人類可讀和---summarize 選項相同的命令。 -人類可讀顯示文件大小以字節/MIB /KiB/ GIB/TIB/Pib/EiB 為單位。 --summarize 在結果列表的末尾顯示對象的總數和總大小:

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 詳細資訊,請參閱AWS CLI 命令參考中的 Ls

下列程式碼範例會示範如何使用mb

AWS 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 詳細資訊,請參閱AWS CLI 命令參考中的 Mb

下列程式碼範例會示範如何使用mv

AWS 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

當 ACL 設定為時,下列指mv令會將單一物件移至指定的值區和索引鍵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 詳細資訊,請參閱命AWS CLI令參考中的 Mv。

下列程式碼範例會示範如何使用presign

AWS CLI

範例 1:建立具有連結至 S3 儲存貯體中物件之預設 1 小時存留時間的預先簽署 URL

下列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:建立具有連結至 S3 儲存貯體中物件的自訂存留期的預先簽署 URL

下列presign命令會針對指定儲存貯體和金鑰產生預先簽署的 URL,該 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 詳細資訊,請參閱AWS CLI 命令參考中的預先簽署

下列程式碼範例會示範如何使用put-bucket-accelerate-configuration

AWS CLI

若要設定值區的加速組態

下列put-bucket-accelerate-configuration範例會啟用指定值區的加速組態。

aws s3api put-bucket-accelerate-configuration \ --bucket my-bucket \ --accelerate-configuration Status=Enabled

此命令不會產生輸出。

下列程式碼範例會示範如何使用put-bucket-acl

AWS CLI

此範例授full control予兩位 AWS 使用者 (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 詳細資訊,請參閱AWS CLI 命令參考PutBucketAcl中的。

下列程式碼範例會示範如何使用put-bucket-analytics-configuration

AWS CLI

若要設定值區的分析組態

下列put-bucket-analytics-configuration範例會針對指定值區設定分析。

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

此命令不會產生輸出。

下列程式碼範例會示範如何使用put-bucket-cors

AWS CLI

下列範例會啟用PUTPOST、和來自 www.example.comDELETE要求,並啟用來自任何網域的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 詳細資訊,請參閱AWS CLI 命令參考PutBucketCors中的。

下列程式碼範例會示範如何使用put-bucket-encryption

AWS 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

AWS 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

AWS 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

AWS 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。如需有關可接受的時間戳記格式的資訊,請參閱 AWS CLI 使用者指南中的指定參數值。

下列程式碼範例會示範如何使用put-bucket-lifecycle

AWS 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 刪除檔案。如需有關可接受的時間戳記格式的資訊,請參閱 AWS CLI 使用者指南中的指定參數值。

上述範例中的每個規則都會指定套用的策略 (TransitionExpiration) 和檔案前置詞 (資料夾名稱)。您也可以指定空白字首來建立套用至整個儲存貯體的規則:

{ "Rules": [ { "ID": "Move to Glacier after sixty days (all objects in bucket)", "Prefix": "", "Status": "Enabled", "Transition": { "Days": 60, "StorageClass": "GLACIER" } } ] }

下列程式碼範例會示範如何使用put-bucket-logging

AWS 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/" } }

需要此put-bucket-policy命令才能將s3:PutObject權限授與記錄服務主體。

如需詳細資訊,請參閱 Amazon S3 使用者指南中的 Amazon S3 伺服器存取記錄

範例 2:若要設定值區政策,以便只記錄單一使用者的存取權

下列put-bucket-logging範例會設定的記錄原則MyBucket。 AWS 使用者 bob@example.com 將擁有對記錄檔的完全控制權,而且沒有其他人擁有任何存取權。首先,授與 S3 許可put-bucket-acl

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 的日誌傳遞系統必要的權限(寫入和讀取 ACP 權限)。

如需詳細資訊,請參閱 Amazon S3 開發人員指南中的 Amazon S3 伺服器存取日誌

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考PutBucketLogging中的。

下列程式碼範例會示範如何使用put-bucket-metrics-configuration

AWS CLI

若要設定值區的指標組態

下列put-bucket-metrics-configuration範例會為指定值區設定識別碼為 123 的度量組態。

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

此命令不會產生輸出。

下列程式碼範例會示範如何使用put-bucket-notification-configuration

AWS 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

AWS CLI

會將通知設定套用至名為下my-bucket列名稱的值區:

aws s3api put-bucket-notification --bucket my-bucket --notification-configuration file://notification.json

該檔案notification.json是指定要監視的 SNS 主題和事件類型的目前資料夾中的 JSON 文件:

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

AWS 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

AWS CLI

此範例允許所有使用者擷取中的物件,MyBucket但中的物件除外MySecretFolder。它還授予putdelete權限給帳戶的 root 用 AWS 戶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 詳細資訊,請參閱AWS CLI 命令參考PutBucketPolicy中的。

下列程式碼範例會示範如何使用put-bucket-replication

AWS 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 簡易儲存服務主控台使用者指南中的主題標題。

下列程式碼範例會示範如何使用put-bucket-request-payment

AWS 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

AWS 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 詳細資訊,請參閱AWS CLI 命令參考PutBucketTagging中的。

下列程式碼範例會示範如何使用put-bucket-versioning

AWS 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

AWS 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 詳細資訊,請參閱AWS CLI 命令參考PutBucketWebsite中的。

下列程式碼範例會示範如何使用put-object-acl

AWS CLI

下列命令會授full control予兩位 AWS 使用者 (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 詳細資訊,請參閱AWS CLI 命令參考PutObjectAcl中的。

下列程式碼範例會示範如何使用put-object-legal-hold

AWS 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

此命令不會產生輸出。

下列程式碼範例會示範如何使用put-object-lock-configuration

AWS 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

AWS CLI

若要設定物件的物件保留組態

下列put-object-retention範例會設定指定物件的物件保留組態,直到 2025-01-01 為止。

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

此命令不會產生輸出。

下列程式碼範例會示範如何使用put-object-tagging

AWS 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 詳細資訊,請參閱AWS CLI 命令參考PutObjectTagging中的。

下列程式碼範例會示範如何使用put-object

AWS 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 詳細資訊,請參閱AWS CLI 命令參考PutObject中的。

下列程式碼範例會示範如何使用put-public-access-block

AWS 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

AWS CLI

範例 1:刪除值區

下列rb指令會移除值區。在此範例中,使用者的值區為mybucket。請注意,值區必須為空,才能移除:

aws s3 rb s3://mybucket

輸出:

remove_bucket: mybucket

範例 2:強制刪除值區

下列rb命令會使用--force參數先移除值區中的所有物件,然後移除值區本身。在此範例中,使用者的值區為mybucket且中mybucket的物件為test1.txttest2.txt

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

輸出:

delete: s3://mybucket/test1.txt delete: s3://mybucket/test2.txt remove_bucket: mybucket
  • 有關 API 的詳細信息,請參閱AWS CLI 命令參考中的 Rb

下列程式碼範例會示範如何使用restore-object

AWS CLI

若要建立物件的還原要求

下列restore-object範例會將儲存貯體的指定 Amazon S3 Glacier 物件還原 10 天。my-glacier-bucket

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

此命令不會產生輸出。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考RestoreObject中的。

下列程式碼範例會示範如何使用rm

AWS CLI

範例 1:刪除 S3 物件

以下rm命令刪除單個 s3 對象:

aws s3 rm s3://mybucket/test2.txt

輸出:

delete: s3://mybucket/test2.txt

範例 2:刪除值區中的所有內容

當與參--recursive數一起傳遞時,下列rm命令會遞迴刪除指定值區和前置詞下的所有物件。在此範例中,值區mybucket包含以下test1.txt物件test2.txt

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

輸出:

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

範例 3:刪除值區中的所有內容,「.jpg」檔案除外

當與參數一起傳遞時,以下rm命令會遞歸地刪除指定值區和前綴下的所有對象,--recursive同時使用參數排除某些對象。--exclude在此範例中,值區mybucket具有以下test1.txt物件test2.jpg

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

輸出:

delete: s3://mybucket/test1.txt

範例 4:刪除值區中的所有內容,指定前置詞下的物件除外

當與參數一起傳遞時,以下rm命令會遞歸地刪除指定存儲桶和前綴下的所有對象,--recursive同時使用參數排除特定前綴下的所有對象--exclude。在此範例中,值區mybucket具有以下test1.txt物件another/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 詳細資訊,請參閱AWS CLI 命令參考中的 Rm

下列程式碼範例會示範如何使用select-object-content

AWS CLI

根據 SQL 陳述式篩選 Amazon S3 物件的內容

下列select-object-content範例會my-data-file.csv使用指定的 SQL 陳述式篩選物件,並將輸出傳送至檔案。

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

AWS 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 下載物件時,本機檔案的上次修改時間會變更為 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 詳細資訊,請參閱AWS CLI 命令參考中的同步

下列程式碼範例會示範如何使用upload-part-copy

AWS 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 詳細資訊,請參閱AWS CLI 命令參考UploadPartCopy中的。

下列程式碼範例會示範如何使用upload-part

AWS 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 詳細資訊,請參閱AWS CLI 命令參考UploadPart中的。

下列程式碼範例會示範如何使用website

AWS 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 中託管靜態網站的相關資訊,請參閱 Amazon 簡單儲存服務開發人員指南中的託管靜態網站

  • 如需 API 詳細資訊,請參閱AWS CLI 指令參考中的網站