根據ListObjectsV2 - Amazon Simple Storage Service檔案,當我指定 aPrefix和 a時Delimiter,我應該在回應中獲得一個以 ETag 作為前綴的內容元素。
<Contents>
<Key>photos/2006/</Key>
<LastModified>2016-04-30T23:51:29.000Z</LastModified>
<ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag>
<Size>0</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
我嘗試使用 python sdk (boto3) 運行它。
client.list_objects_v2(Bucket='bucketname', Prefix = "folder1-folder2-", Delimiter = "-")
但是在回應字典中,我沒有找到內容鍵。根據示例中的回應,所有其他欄位都存在。
dict_keys(['ResponseMetadata', 'IsTruncated', 'Name', 'Prefix', 'Delimiter', 'MaxKeys', 'CommonPrefixes', 'EncodingType', 'KeyCount'])
這是 API 呼叫的回應中不再存在的東西嗎?或者這是 SDK 沒有顯示的東西。還有一個后續問題,如果是 sdk 方面的問題,我該如何進行 api 呼叫來回傳這個欄位。
uj5u.com熱心網友回復:
當提供 aPrefix和 a時Delimiter,其中的目錄Prefix以CommonPrefixes.
因此,如果有一個名為 的物件folder1-folder2-folder3-file.txt,那么您的回傳回應應該包含一個包含 的CommonPrefixes串列folder3-。
由于您使用的是 boto3,因此查看 boto3 檔案更容易list_objects_v2()。它顯示了如何在回應中提供欄位。
您可以像這樣訪問值:
response = s3_client.list_objects_v2(Bucket='bucketname', Prefix = "folder1-folder2-", Delimiter = "-")
# Objects
for object in response['Contents']:
print(object['Key'])
# Folders
for folder in response['CommonPrefixes']:
print(folder['Prefix'])
當用戶在 Amazon S3 管理控制臺中單擊創建檔案夾時,它會創建一個與“檔案夾”同名的零長度物件。這是因為 Amazon S3 實際上并不使用檔案夾,但它可以通過Delimiter和來模擬它們CommonPrefixes。通過創建一個長度為零的物件,它強制該檔案夾名稱顯示為CommonPrefix. list_objects()它還會導致零長度物件本身在API 呼叫中顯示為物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422517.html
標籤:
上一篇:使用HTMLimg標簽時來自Cloudfront的連續快取未命中,但通過Postman/瀏覽器請求獲得快取命中
下一篇:在這個例子中究竟發生了什么
