ListObjectVersions(GetBucketVersions)接口用于列出Bucket中包括刪除標記(Delete Marker)在內的所有Object的版本信息。
注意事項
調用ListObjectVersions(GetBucketVersions)接口返回Bucket中所有Object的所有版本。而調用ListObjects(GetBucket)接口僅返回Object的當前版本,且當前版本不能為刪除標記。
調用ListObjectVersions(GetBucketVersions)接口時不同Object之間按字母排序返回,同一個Object的不同版本則按從新到舊排序,與版本ID的字母序無關。
調用ListObjectVersions(GetBucketVersions)接口按照Put類請求次數計費。更多信息,請參見Put類請求。
請求語法
GET /?versions HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
當您在OSS ON云盒中調用該接口時,您需要將Host替換為云盒Endpoint。更多信息,請參見云盒Endpoint。
請求頭
此接口僅涉及公共請求頭。更多信息,請參見公共請求頭(Common Request Headers)。
請求參數
調用GetBucketVersions(ListObjectVersions)接口時,可通過設置prefix、key-marker、version-id-marker、delimiter和max-keys參數限制僅返回部分結果。
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
delimiter | 字符串 | 否 | / | 對Object名字進行分組的字符。所有Object名字包含指定的前綴(prefix),第一次出現delimiter字符之間的Object作為一組元素(即CommonPrefixes)。 如果將prefix設為文件夾名稱后,再把delimiter設置為正斜線(/),則只返回該文件夾下的文件,該文件夾下的子文件名在CommonPrefixes中返回,子文件夾下遞歸的文件和文件夾不顯示。 默認值:無 |
key-marker | 字符串 | 如果version-id-marker不為空,則key-marker不能為空 | example | 設定結果從key-marker之后按字母序開始返回,與version-id-marker組合使用。 參數的長度必須小于1024字節。 默認值:無 |
version-id-marker | 字符串 | 否 | CAEQMxiBgICbof2D0BYiIGRhZjgwMzJiMjA3MjQ0ODE5MWYxZDYwMzJlZjU1**** | 設定結果從key-marker對象的version-id-marker之后按新舊版本排序開始返回。如果version-id-marker未設定,則默認從key-marker按字母序排序的下一個Key的第一個版本開始返回。 默認值:無 有效值:版本ID |
max-keys | 字符串 | 否 | 100 | 限定此次返回Object的最大個數。 如果因為max-keys的設定無法一次完成列舉,返回結果會附加 取值:大于0小于1000 默認值:100 |
prefix | 字符串 | 否 | fun | 限定返回的Object Key必須以prefix作為前綴。
如果將prefix設為某個文件夾名,則列舉以此prefix開頭的文件,即該文件夾下遞歸的所有的文件和子文件夾。 默認值:無 |
encoding-type | 字符串 | 否 | URL | 對返回的內容進行編碼并指定編碼類型。 默認值:無 可選值:URL 重要 delimiter、marker、prefix、NextMarker以及Key使用UTF-8字符。如果delimiter、marker、prefix、NextMarker以及Key中包含XML 1.0標準不支持的控制字符,您可以通過指定encoding-type對返回結果中的Delimiter、Marker、Prefix、NextMarker以及Key進行編碼。 |
響應元素
名稱 | 類型 | 示例值 | 描述 |
ListVersionsResult | 容器 | 不涉及 | 保存ListObjectVersions(GetBucketVersions)請求結果的容器。 子節點:Name、Prefix、Marker、MaxKeys、Delimiter、IsTruncated、Nextmarker、Version、DeleteMarker 父節點:None |
CommonPrefixes | 字符串 | 不涉及 | 如果請求中指定了delimiter參數,則OSS返回的響應中包含CommonPrefixes元素。該元素標明以delimiter結尾,并有共同前綴的Object名稱的集合。 父節點:ListVersionsResult |
Delimiter | 字符串 | / | 用于對Object名字進行分組的字符。所有名字包含指定的前綴且第一次出現Delimiter字符之間的Object作為一組元素CommonPrefixes。 父節點:ListVersionsResult |
EncodingType | 字符串 | URL | 指明返回結果中編碼使用的類型。如果請求的參數中指定了encoding-type,則表示對返回結果中的Delimiter、Marker、Prefix、NextMarker和Key這些元素進行編碼。 父節點:ListVersionsResult |
IsTruncated | 字符串 | true | 指明是否已返回所有結果。
有效值:true、false 父節點:ListVersionsResult |
KeyMarker | 字符串 | example | 標識此次GetBucketVersions的起點Object。 父節點:ListVersionsResult |
VersionIdMarker | 字符串 | CAEQMxiBgICbof2D0BYiIGRhZjgwMzJiMjA3MjQ0ODE5MWYxZDYwMzJlZjU1**** | 與KeyMarker參數一同使用,以指定ListObjectVersions(GetBucketVersions)的起點。 父節點:ListVersionsResult |
NextKeyMarker | 字符串 | test | 如果本次沒有返回全部結果,響應請求中將包含NextKeyMarker元素,用于標明接下來請求的key-marker。 父節點:ListVersionsResult |
NextVersionIdMarker | 字符串 | CAEQGBiBgIC_jq7P9xYiIDRiZWJkNjY2Y2Q4NDQ5ZTI5ZGE5ODIxMTIyZThl**** | 如果本次沒有返回全部結果,響應請求中將包含NextVersionIdMarker元素,用于標明接下來請求的version-id-marker。 父節點:ListVersionsResult |
MaxKeys | 字符串 | 1000 | 響應請求內返回結果的最大數目。 父節點:ListVersionsResult |
Name | 字符串 | examplebucket-1250000000 | Bucket名稱。 父節點:ListVersionsResult |
Owner | 容器 | 不涉及 | 保存Bucket擁有者信息的容器。 父節點:ListVersionsResult |
Prefix | 字符串 | fun | 本次查詢結果的前綴。 父節點:ListVersionsResult |
Version | 容器 | 不涉及 | 保存除刪除標記以外的Object版本的容器。 父節點:ListVersionsResult |
DeleteMarker | 容器 | 不涉及 | 保存刪除標記的容器。 父節點:ListVersionsResult |
ETag | 字符串 | 250F8A0AE989679A22926A875F0A2**** | 每個Object生成時創建的ETag ,用于標識Object的內容。
說明 ETag值僅用于檢查Object內容是否發生變化。不建議使用ETag值作為Object內容的MD5數據完整性校驗的依據。 父節點:ListVersionsResult.Version |
Key | 字符串 | example | Object的名稱。 父節點:ListVersionsResult.Version、ListVersionsResult.DeleteMarker |
LastModified | 時間 | 2019-04-09T07:27:28.000Z | Object最后被修改的時間。 說明
父節點:ListVersionsResult.Version、ListVersionsResult.DeleteMarker |
TransitionTime | 時間 | 2024-04-23T07:21:42.000Z | Object通過生命周期規則轉儲為冷歸檔或者深度冷歸檔存儲類型的時間。 說明
父節點:ListVersionsResult.Version、ListVersionsResult.DeleteMarker |
VersionId | 字符串 | CAEQMxiBgMDNoP2D0BYiIDE3MWUxNzgxZDQxNTRiODI5OGYwZGMwNGY3MzZjN**** | Object的版本ID。 父節點:ListVersionsResult.Version、 ListVersionsResult.DeleteMarker |
IsLatest | 字符串 | true | Object是否為當前版本。 取值:
父節點:ListVersionsResult.Version、 ListVersionsResult.DeleteMarker |
Size | 字符串 | 93731 | Object的字節數。 父節點:ListVersionsResult.Version、ListVersionsResult.DeleteMarker |
StorageClass | 字符串 | Standard | Object的存儲類型。 父節點:ListVersionsResult.Version、ListVersionsResult.DeleteMarker |
DisplayName | 字符串 | 12345125285864390 | Object擁有者的名稱。 父節點:ListVersionsResult.Version.Owner、ListVersionsResult.DeleteMarker.Owner |
ID | 字符串 | 1234512528586**** | Bucket擁有者的用戶ID。 父節點:ListVersionsResult.Version.Owner、ListVersionsResult.DeleteMarker.Owner |
RestoreInfo | 字符串 | ongoing-request="true" | Object的解凍狀態。
|
此接口涉及的其他公共響應頭,例如x-oss-request-id
、Content-Type
等。更多信息,請參見公共響應頭(Common Response Headers)。
示例
未啟用版本控制
請求示例
GET /?versions HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 07:27:48 GMT Authorization: OSS qn6q**************:77Dv****************
返回示例
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: 1262 Connection: keep-alive Date: Thu, Tue, 09 Apr 2019 07:27:48 GMT Server: AliyunOSS x-oss-request-id: 534B371674E88A4D8906**** <ListVersionsResult> <Name>examplebucket-1250000000</Name> <Prefix/> <KeyMarker/> <VersionIdMarker/> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Version> <Key>example-object-1.jpg</Key> <VersionId/> <IsLatest>true</IsLatest> <LastModified>2019-08-5T12:03:10.000Z</LastModified> <ETag>5B3C1A2E053D763E1B669CC607C5A0FE1****</ETag> <Size>20</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>1250000000</ID> <DisplayName>1250000000</DisplayName> </Owner> <TransitionTime>2024-04-23T07:21:42.000Z</TransitionTime> </Version> <Version> <Key>example-object-2.jpg</Key> <VersionId/> <IsLatest>true</IsLatest> <LastModified>2019-08-9T12:03:09.000Z</LastModified> <ETag>5B3C1A2E053D763E1B002CC607C5A0FE1****</ETag> <Size>20</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>1250000000</ID> <DisplayName>1250000000</DisplayName> </Owner> </Version> <Version> <Key>example-object-3.jpg</Key> <VersionId/> <IsLatest>true</IsLatest> <LastModified>2019-08-10T12:03:08.000Z</LastModified> <ETag>4B3F1A2E053D763E1B002CC607C5AGTRF****</ETag> <Size>20</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>1250000000</ID> <DisplayName>1250000000</DisplayName> </Owner> </Version> </ListVersionsResult>
已開啟版本控制
假設在名為oss example的Bucket中有example和pic.jpg 2個Object,其中example這個Object有3個版本,從新到舊排序的版本ID依次為111222、000123(刪除標記)、222333 。pic.jpg這個Object僅有1個版本,其版本ID為232323 。
列舉文件時將key-marker設置為example,version-id-marker指定為111222 ,則按example 000123、example 222333、pic.jpg 232323的順序返回3個版本。
請求示例:
GET /?versions&key-marker=example&version-id-marker=CAEQMxiBgICbof2D0BYiIGRhZjgwMzJiMjA3MjQ0ODE5MWYxZDYwMzJlZjU1**** HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 07:27:48 GMT Authorization: OSS qn6q**************:77Dv****************
返回示例:
HTTP/1.1 200 OK x-oss-request-id: 5CAC4974B7AEADE01700**** Date: Tue, 09 Apr 2019 07:27:48 GMT Content-Type: application/xml Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <ListVersionsResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Name>oss-example</Name> <Prefix></Prefix> <KeyMarker>example</KeyMarker> <VersionIdMarker>CAEQMxiBgICbof2D0BYiIGRhZjgwMzJiMjA3MjQ0ODE5MWYxZDYwMzJlZjU1****</VersionIdMarker> <MaxKeys>100</MaxKeys> <Delimiter></Delimiter> <IsTruncated>false</IsTruncated> <DeleteMarker> <Key>example</Key> <VersionId>CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****</VersionId> <IsLatest>false</IsLatest> <LastModified>2019-04-09T07:27:28.000Z</LastModified> <Owner> <ID>1234512528586****</ID> <DisplayName>12345125285864390</DisplayName> </Owner> </DeleteMarker> <Version> <Key>example</Key> <VersionId>CAEQMxiBgMDNoP2D0BYiIDE3MWUxNzgxZDQxNTRiODI5OGYwZGMwNGY3MzZjN****</VersionId> <IsLatest>false</IsLatest> <LastModified>2019-04-09T07:27:28.000Z</LastModified> <ETag>"250F8A0AE989679A22926A875F0A2****"</ETag> <Type>Normal</Type> <Size>93731</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>1234512528586****</ID> <DisplayName>12345125285864390</DisplayName> </Owner> </Version> <Version> <Key>pic.jpg</Key> <VersionId>CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx****</VersionId> <IsLatest>true</IsLatest> <LastModified>2019-04-09T07:27:28.000Z</LastModified> <ETag>"3663F7B0B9D3153F884C821E7CF4****"</ETag> <Type>Normal</Type> <Size>574768</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>1234512528586****</ID> <DisplayName>12345125285864390</DisplayName> </Owner> </Version> </ListVersionsResult>
請求的Bucket包含歸檔或冷歸檔類型文件
假設examplebucket中包含文件exampleobject1.txt、exampleobject2.txt和exampleobject3.txt,其存儲類型均為冷歸檔存儲類型(ColdArchive)。這三個文件所處的狀態說明如下:
exampleobject1.txt未提交RestoreObject請求或者RestoreObject請求已過期。
exampleobject2.txt已提交RestoreObject請求,但解凍操作未完成。
exampleobject3.txt已提交RestoreObject請求,并且解凍操作已完成。
請求示例
GET / HTTP/1.1 Host: examplebucket.oss-cn-hangzhou.aliyuncs.com Date: Fri, 24 Feb 2012 08:43:27 GMT Authorization: OSS qn6q**************:77Dv****************
返回示例
HTTP/1.1 200 OK x-oss-request-id: 5CAC4974B7AEADE01700**** Date: Tue, 09 Apr 2019 07:27:48 GMT Content-Type: application/xml Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <ListVersionsResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Name>oss-example</Name> <Prefix></Prefix> <KeyMarker>example</KeyMarker> <VersionIdMarker>CAEQMxiBgICbof2D0BYiIGRhZjgwMzJiMjA3MjQ0ODE5MWYxZDYwMzJlZjU1****</VersionIdMarker> <MaxKeys>100</MaxKeys> <Delimiter></Delimiter> <IsTruncated>false</IsTruncated> <Version> <Key>exampleobject1.txt</Key> <VersionId>CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****</VersionId> <IsLatest>false</IsLatest> <LastModified>2019-04-09T07:27:28.000Z</LastModified> <Owner> <ID>1234512528586****</ID> <DisplayName>12345125285864390</DisplayName> </Owner> </Version> <Version> <Key>exampleobject2.txt</Key> <VersionId>CAEQMxiBgMDNoP2D0BYiIDE3MWUxNzgxZDQxNTRiODI5OGYwZGMwNGY3MzZjN****</VersionId> <IsLatest>false</IsLatest> <LastModified>2019-04-09T07:27:28.000Z</LastModified> <ETag>"250F8A0AE989679A22926A875F0A2****"</ETag> <Type>Normal</Type> <Size>93731</Size> <StorageClass>Standard</StorageClass> <RestoreInfo>ongoing-request="true"</RestoreInfo> <Owner> <ID>1234512528586****</ID> <DisplayName>12345125285864390</DisplayName> </Owner> </Version> <Version> <Key>exampleobject3.txt</Key> <VersionId>CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx****</VersionId> <IsLatest>true</IsLatest> <LastModified>2019-04-09T07:27:28.000Z</LastModified> <ETag>"3663F7B0B9D3153F884C821E7CF4****"</ETag> <Type>Normal</Type> <Size>574768</Size> <StorageClass>Standard</StorageClass> <RestoreInfo>ongoing-request="false", expiry-date="Thr, 24 Mon 2020 12:40:33 GMT"</RestoreInfo> <Owner> <ID>1234512528586****</ID> <DisplayName>12345125285864390</DisplayName> </Owner> </Version> </ListVersionsResult>
SDK
此接口所對應的各語言SDK如下:
錯誤碼
錯誤碼 | HTTP狀態碼 | 描述 |
NoSuchBucket | 404 | 請求的目標Bucket不存在。請檢查請求的Bucket名稱是否符合規范。 |
AccessDenied | 403 | 沒有訪問該Bucket的權限。只有Bucket擁有者以及被授予 |
InvalidArgument | 400 |
|