このトピックでは、バージョン管理が有効なバケット内のオブジェクトをリストアップする方法について説明します。すべてのオブジェクト、指定した数のオブジェクト、または特定のプレフィックスを持つオブジェクトをリストアップできます。
注意事項
このトピックのサンプルコードでは、リージョン ID として中国 (杭州) リージョンの
cn-hangzhouを使用します。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから Object Storage Service (OSS) にアクセスする場合は、内部エンドポイントを使用してください。OSS がサポートするリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。オブジェクトをリストアップするには、
oss:ListObjectVersions権限が必要です。詳細については、「RAM ユーザーへのカスタムポリシーのアタッチ」をご参照ください。
サンプルコード
次のサンプルコードは、バケット内のすべてのオブジェクトのバージョン (削除マーカーを含む) をリストアップします。
import AlibabaCloudOSS
import Foundation
@main
struct Main {
static func main() async {
do {
// バケットのリージョンを指定します。たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。
let region = "cn-hangzhou"
// バケット名を指定します。
let bucket = "yourBucketName"
// オプション。OSS へのアクセスに使用するドメイン名を指定します。たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
let endpoint: String? = nil
// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
let credentialsProvider = EnvironmentCredentialsProvider()
// OSS クライアントのパラメーターを設定します。
let config = Configuration.default()
.withRegion(region) // バケットのリージョンを設定します。
.withCredentialsProvider(credentialsProvider) // アクセス認証情報を設定します。
// エンドポイントを設定します。
if let endpoint = endpoint {
config.withEndpoint(endpoint)
}
// OSS クライアントインスタンスを作成します。
let client = Client(config)
// 指定されたバケット内のすべてのオブジェクトのバージョンをリストアップします。
var isTruncated = false
var keyMarker: String?
var versionIdMarker: String?
repeat {
let result = try await client.listObjectVersions(
ListObjectVersionsRequest(
bucket: bucket,
keyMarker: keyMarker,
versionIdMarker: versionIdMarker
)
)
for version in result.versions ?? [] {
print("key: \(version.key ?? ""), version id: \(version.versionId ?? "")")
}
isTruncated = result.isTruncated ?? false
keyMarker = result.nextKeyMarker
versionIdMarker = result.nextVersionIdMarker
} while isTruncated
} catch {
// エラー出力。
print("Error: \(error)")
}
}
}
関連ドキュメント
オブジェクトバージョンのリストアップに関する完全なサンプルコードについては、GitHub の例をご参照ください。