このトピックでは、バージョン管理が有効なバケット内のオブジェクトを一覧表示する方法について説明します。たとえば、すべてのオブジェクト、指定されたプレフィックスを含む名前のオブジェクト、指定されたディレクトリ内のオブジェクトとサブディレクトリを一覧表示します。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
オブジェクトを一覧表示するには、
oss:ListObjectVersions
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
シナリオ
次の図は、examplebucketという名前のバケット内のディレクトリとオブジェクトを示しています。
examplebucket
└ ─ ─ 楽しい
└ ─ ─ exampleobject.jpg
└ ─ ─ examplefile.txt
└ ─ ─ destfolder
└ ─ ─ image1.jpg
└ ─ ─ image2.png
└ ─ ─ srcfile.txt
└ ─ ─ oss.jpg
次のセクションでは、条件を指定してさまざまなオブジェクトをリストする方法について説明します。
オブジェクトを一覧表示するときに設定できるパラメーターの詳細については、「ListObjectVersions (GetBucketVersions) 」をご参照ください。
バケット内の全オブジェクトのバージョン一覧表示
次のコードでは、指定したバケット内の削除マーカーを含むすべてのオブジェクトのバージョンを一覧表示する方法の例を示します。
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。
bucketName := "examplebucket"
bucket,err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// バケット内の削除マーカーを含むすべてのオブジェクトのバージョンを一覧表示します。
keyMarker := oss.KeyMarker("")
// VersionIdMarkerパラメーターは、リスト操作の開始位置を指定するためにKeyMarkerパラメーターとともに設定されます。
versionIdMarker := oss.VersionIdMarker("")
for {
lor, err := bucket.ListObjectVersions(keyMarker,versionIdMarker)
if err! =nil {
HandleError(err)
}
// オブジェクトのバージョンIDを表示します。
for _, dirName := range lor.ObjectVersions {
fmt.Println("Versionid:",dirName.VersionId)
fmt.Println("Key:",dirName.Key)
fmt.Println("Is Latest" 、dirName.IsLatest)
}
// リストされた削除マーカーのバージョンを表示します。
for _, marker := range lor.ObjectDeleteMarkers {
fmt.Println(marker.VersionId)
fmt.Println(marker.Key)
}
// 必要なバージョンがリストされているかどうかを確認します。 バージョンのリストが不完全な場合は、リスト操作が続行されます。 バージョンが完全にリストされると、リスト操作は停止します。
keyMarker = oss.KeyMarker(lor.NextKeyMarker)
versionIdMarker = oss.VersionIdMarker(lor.NextVersionIdMarker)
if! lor.IsTruncated {
break
}
}
}
エンドポイントの詳細については、「リージョンおよびエンドポイント」をご参照ください。 バケットの命名規則の詳細については、「バケット」をご参照ください。
レスポンス例:
Versionid: CAEQChiBgIDHzNPEthciIDYzZGQ5M2VjOTU2ODRmMzA4ZWM4ODk0NjVmMWEx ****
キー: 楽しい /
最新の真です
Versionid: CAEQChiBgID61tnEthciIDNmOGM2MTQ3ZjU1NTQ2MGFhYWJjNjQxMTQxZWZh ****
キー: fun/destfolder /
最新の真です
Versionid: CAEQChiBgMDczt3EthciIDEwYjliZmQ4MDNiMDQ2Njk4YWMxM2NhM2E5NzQ3 ****
キー: fun/destfolder/image1.jpg
最新の真です
Versionid: CAEQChiBgIDszt3EthciIGU5OWU0ZTllMGY3NTRmMmU5NzVjZmJkYmE3ZWYy ****
キー: fun/destfolder/image2.png
最新の真です
Versionid: CAEQChiBgICditzEthciIDBiNTg1ZTZkMDRlMzRjNDdiMjRjMTBlOGUzMTM0 ****
キー: fun/examplefile.txt
最新の真です
Versionid: CAEQChiBgMC.itzEthciIDEzNWVlYjNhYzNmMjQ4NWM5Nzc2NzllY2FiYmQ3 ****
キー: fun/exampleobject.jpg
最新の真です
Versionid: CAEQChiBgIDMgdbEthciIDUyMGI0NmZlNThkODQwY2ZhNmZhNTQ1Njk4ZTdj ****
キー: oss.jpg
最新の真です
Versionid: CAEQChiBgICIgdbEthciIDdlM2Q1YjYxZDIyZDQyMzI4MTRkNzVmYzdiMTBh ****
キー: srcfile.txt
最新の真
指定されたプレフィックスを名前に含むオブジェクトのバージョンを一覧表示する
次のコードでは、名前に指定されたプレフィックスが含まれるオブジェクトのバージョンを一覧表示する方法の例を示します。
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClientインスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。
bucketName := "examplebucket"
bucket,err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// Prefixパラメーターを指定して、名前にfunプレフィックスが含まれるオブジェクトのバージョンを一覧表示します。
プレフィックス:= oss. prefix ("fun")
keyMarker := oss.KeyMarker("")
versionIdMarker := oss.VersionIdMarker("")
for {
lor, err := bucket.ListObjectVersions(prefix,keyMarker,versionIdMarker)
if err! =nil {
HandleError(err)
}
// オブジェクトのバージョンIDを表示します。
for _, dirName := range lor.ObjectVersions {
fmt.Println("Versionid:",dirName.VersionId)
fmt.Println("Key:",dirName.Key)
fmt.Println("Is Latest" 、dirName.IsLatest)
}
// 必要なバージョンがリストされているかどうかを確認します。 バージョンのリストが不完全な場合は、リスト操作が続行されます。 バージョンが完全にリストされると、リスト操作は停止します。
keyMarker = oss.KeyMarker(lor.NextKeyMarker)
versionIdMarker = oss.VersionIdMarker(lor.NextVersionIdMarker)
if! lor.IsTruncated {
break
}
}
}
レスポンス例:
Versionid: CAEQChiBgIDHzNPEthciIDYzZGQ5M2VjOTU2ODRmMzA4ZWM4ODk0NjVmMWEx ****
キー: 楽しい /
最新の真です
Versionid: CAEQChiBgID61tnEthciIDNmOGM2MTQ3ZjU1NTQ2MGFhYWJjNjQxMTQxZWZh ****
キー: fun/destfolder /
最新の真です
Versionid: CAEQChiBgMDczt3EthciIDEwYjliZmQ4MDNiMDQ2Njk4YWMxM2NhM2E5NzQ3 ****
キー: fun/destfolder/image1.jpg
最新の真です
Versionid: CAEQChiBgIDszt3EthciIGU5OWU0ZTllMGY3NTRmMmU5NzVjZmJkYmE3ZWYy ****
キー: fun/destfolder/image2.png
最新の真です
Versionid: CAEQChiBgICditzEthciIDBiNTg1ZTZkMDRlMzRjNDdiMjRjMTBlOGUzMTM0 ****
キー: fun/examplefile.txt
最新の真です
Versionid: CAEQChiBgMC.itzEthciIDEzNWVlYjNhYzNmMjQ4NWM5Nzc2NzllY2FiYmQ3 ****
キー: fun/exampleobject.jpg
最新の真
指定した数のオブジェクトのバージョンを一覧表示する
次のコードは、指定した数のオブジェクトのバージョンを一覧表示する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClientインスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。
bucketName := "examplebucket"
bucket,err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// MaxKeysパラメーターを指定して、オブジェクト名のアルファベット順に最大4つのオブジェクトバージョンを一覧表示します。
maxkey := oss.MaxKeys (4)
keyMarker := oss.KeyMarker("")
versionIdMarker := oss.VersionIdMarker("")
for {
lor, err := bucket.ListObjectVersions(maxkey,keyMarker,versionIdMarker)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// オブジェクトのバージョンIDを表示します。
for _, dirName := range lor.ObjectVersions {
fmt.Println("Versionid:",dirName.VersionId)
fmt.Println("Key:",dirName.Key)
fmt.Println("Is Latest" 、dirName.IsLatest)
}
// 必要なバージョンがリストされているかどうかを確認します。 バージョンのリストが不完全な場合は、リスト操作が続行されます。 バージョンが完全にリストされると、リスト操作は停止します。
keyMarker = oss.KeyMarker(lor.NextKeyMarker)
versionIdMarker = oss.VersionIdMarker(lor.NextVersionIdMarker)
if! lor.IsTruncated {
break
}
}
}
レスポンス例:
Versionid: CAEQChiBgIDHzNPEthciIDYzZGQ5M2VjOTU2ODRmMzA4ZWM4ODk0NjVmMWEx ****
キー: 楽しい /
最新の真です
Versionid: CAEQChiBgID61tnEthciIDNmOGM2MTQ3ZjU1NTQ2MGFhYWJjNjQxMTQxZWZh ****
キー: fun/destfolder /
最新の真です
Versionid: CAEQChiBgMDczt3EthciIDEwYjliZmQ4MDNiMDQ2Njk4YWMxM2NhM2E5NzQ3 ****
キー: fun/destfolder/image1.jpg
最新の真です
Versionid: CAEQChiBgIDszt3EthciIGU5OWU0ZTllMGY3NTRmMmU5NzVjZmJkYmE3ZWYy ****
キー: fun/destfolder/image2.png
最新の真
すべてのオブジェクトのバージョンをページごとに一覧表示する
次のコードでは、すべてのオブジェクトのバージョンをページごとに一覧表示する方法の例を示します。
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClientインスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。
bucketName := "examplebucket"
bucket,err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// バケット内のすべてのオブジェクトのバージョンをページごとに一覧表示します。
keyMarker := oss.KeyMarker("")
// MaxKeysパラメーターを指定して、オブジェクト名のアルファベット順に最大4つのオブジェクトバージョンを一覧表示します。
maxkey := oss.MaxKeys (4)
versionIdMarker := oss.VersionIdMarker("")
for {
lor, err := bucket.ListObjectVersions(maxkey,keyMarker,versionIdMarker)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// オブジェクトのバージョンIDを表示します。
for _, dirName := range lor.ObjectVersions {
fmt.Println("Versionid:",dirName.VersionId)
fmt.Println("Key:",dirName.Key)
fmt.Println("Is Latest" 、dirName.IsLatest)
}
fmt.Println("---------------")
// 必要なバージョンがリストされているかどうかを確認します。 バージョンのリストが不完全な場合は、リスト操作が続行されます。 バージョンが完全にリストされると、リスト操作は停止します。
if lor.IsTruncated {
keyMarker = oss.KeyMarker(lor.NextKeyMarker)
versionIdMarker = oss.VersionIdMarker(lor.NextVersionIdMarker)
}else{
break
}
}
}
レスポンス例:
Versionid: CAEQChiBgIDHzNPEthciIDYzZGQ5M2VjOTU2ODRmMzA4ZWM4ODk0NjVmMWEx ****
キー: 楽しい /
最新の真です
Versionid: CAEQChiBgID61tnEthciIDNmOGM2MTQ3ZjU1NTQ2MGFhYWJjNjQxMTQxZWZh ****
キー: fun/destfolder /
最新の真です
Versionid: CAEQChiBgMDczt3EthciIDEwYjliZmQ4MDNiMDQ2Njk4YWMxM2NhM2E5NzQ3 ****
キー: fun/destfolder/image1.jpg
最新の真です
Versionid: CAEQChiBgIDszt3EthciIGU5OWU0ZTllMGY3NTRmMmU5NzVjZmJkYmE3ZWYy ****
キー: fun/destfolder/image2.png
最新の真です
---------------
Versionid: CAEQChiBgICditzEthciIDBiNTg1ZTZkMDRlMzRjNDdiMjRjMTBlOGUzMTM0 ****
キー: fun/examplefile.txt
最新の真です
Versionid: CAEQChiBgMC.itzEthciIDEzNWVlYjNhYzNmMjQ4NWM5Nzc2NzllY2FiYmQ3 ****
キー: fun/exampleobject.jpg
最新の真です
Versionid: CAEQChiBgIDMgdbEthciIDUyMGI0NmZlNThkODQwY2ZhNmZhNTQ1Njk4ZTdj ****
キー: oss.jpg
最新の真です
Versionid: CAEQChiBgICIgdbEthciIDdlM2Q1YjYxZDIyZDQyMzI4MTRkNzVmYzdiMTBh ****
キー: srcfile.txt
最新の真です
---------------
ディレクトリ内のオブジェクトの一覧表示
OSSはフラット構造を使用してオブジェクトを格納します。 ディレクトリは、名前がスラッシュ (/) で終わるゼロバイトのオブジェクトです。 ディレクトリをアップロードおよびダウンロードできます。 デフォルトでは、名前がスラッシュ (/) で終わるオブジェクトは、OSSコンソールにディレクトリとして表示されます。
ディレクトリごとにオブジェクトを一覧表示するには、リクエストに区切り文字とプレフィックスパラメーターを指定できます。
リクエストでプレフィックスをディレクトリ名に設定すると、プレフィックスを含む名前のオブジェクトとサブディレクトリが一覧表示されます。
リクエストでプレフィックスを指定し、区切り文字をスラッシュ (/) に設定すると、ディレクトリ内で指定されたプレフィックスで始まる名前のオブジェクトとサブディレクトリが一覧表示されます。 各サブディレクトリは、CommonPrefixesで単一の結果要素としてリストされます。 これらのサブディレクトリ内のオブジェクトおよびディレクトリはリストされません。
次の例では、シミュレートされたディレクトリにオブジェクトを一覧表示します。
バケットのルートディレクトリ内のオブジェクトのバージョンを一覧表示する
次のコードは、バケットのルートディレクトリにあるオブジェクトのバージョンを一覧表示する方法の例を示しています。
パッケージメイン import (import (import) "fmt" "os" 「github.com/aliyun/aliyun-oss-go-sdk/oss」 ) func HandleError (エラーエラー) { fmt.Println("Error:", err) os.Exit(-1) } func main() { // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // OSSClientインスタンスを作成します。 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // バケットの名前を指定します。 bucketName := "examplebucket" bucket,err := client.Bucket(bucketName) if err! =nil { HandleError(err) } // 区切り文字パラメーターをスラッシュ (/) に設定して、ルートディレクトリ内のオブジェクトのバージョンとサブディレクトリの名前を一覧表示します。 delimiter := oss.Delimiter("/") keyMarker := oss.KeyMarker("") versionIdMarker := oss.VersionIdMarker("") for { lor, err := bucket.ListObjectVersions(keyMarker,delimiter,versionIdMarker) if err! =nil { HandleError(err) } // オブジェクトのバージョンIDを表示します。 for _, dirName := range lor.ObjectVersions { fmt.Println("Versionid:",dirName.VersionId) fmt.Println("Key:",dirName.Key) fmt.Println("Is Latest" 、dirName.IsLatest) } // 名前がスラッシュ (/) で終わるディレクトリを表示します。 for _,common_prefix := range lor.CommonPrefixes { fmt.Println("common_prefix:",common_prefix) } // 必要なバージョンがリストされているかどうかを確認します。 バージョンのリストが不完全な場合は、リスト操作が続行されます。 バージョンが完全にリストされると、リスト操作は停止します。 if lor.IsTruncated { keyMarker = oss.KeyMarker(lor.NextKeyMarker) versionIdMarker = oss.VersionIdMarker(lor.NextVersionIdMarker) }else{ break } } }
レスポンス例:
Versionid: CAEQChiBgIDMgdbEthciIDUyMGI0NmZlNThkODQwY2ZhNmZhNTQ1Njk4ZTdj **** キー: oss.jpg 最新の真です Versionid: CAEQChiBgICIgdbEthciIDdlM2Q1YjYxZDIyZDQyMzI4MTRkNzVmYzdiMTBh **** キー: srcfile.txt 最新の真です common_prefix: 楽しい /
ディレクトリ内のオブジェクトとサブディレクトリの一覧表示
次のコードは、バケットのディレクトリ内のオブジェクトとサブディレクトリを一覧表示する方法の例を示しています。
パッケージメイン import (import (import) "fmt" "os" 「github.com/aliyun/aliyun-oss-go-sdk/oss」 ) func HandleError (エラーエラー) { fmt.Println("Error:", err) os.Exit(-1) } func main() { // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // OSSClientインスタンスを作成します。 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // バケットの名前を指定します。 bucketName := "examplebucket" bucket,err := client.Bucket(bucketName) if err! =nil { HandleError(err) } // Prefixパラメーターを設定して、funディレクトリ内のすべてのオブジェクトとサブディレクトリを一覧表示します。 区切り文字パラメーターをスラッシュ (/) に設定します。 プレフィックス:= oss. prefix ("fun/") delimiter := oss.Delimiter("/") keyMarker := oss.KeyMarker("") versionIdMarker := oss.VersionIdMarker("") for { lor, err := bucket.ListObjectVersions(prefix,delimiter,keyMarker,versionIdMarker) if err! =nil { HandleError(err) } // オブジェクトのバージョンIDを表示します。 for _, dirName := range lor.ObjectVersions { fmt.Println("Versionid:",dirName.VersionId) fmt.Println("Key:",dirName.Key) fmt.Println("Is Latest:",dirName.IsLatest) } // 名前がスラッシュ (/) で終わるディレクトリを表示します。 for _,common_prefix := range lor.CommonPrefixes { fmt.Println("common_prefix:",common_prefix) } // 必要なバージョンがリストされているかどうかを確認します。 バージョンのリストが不完全な場合は、リスト操作が続行されます。 バージョンが完全にリストされると、リスト操作は停止します。 if lor.IsTruncated { keyMarker = oss.KeyMarker(lor.NextKeyMarker) versionIdMarker = oss.VersionIdMarker(lor.NextVersionIdMarker) }else{ break } } }
レスポンス例:
Versionid: CAEQChiBgIDHzNPEthciIDYzZGQ5M2VjOTU2ODRmMzA4ZWM4ODk0NjVmMWEx **** キー: 楽しい / 最新です: true Versionid: CAEQChiBgICditzEthciIDBiNTg1ZTZkMDRlMzRjNDdiMjRjMTBlOGUzMTM0 **** キー: fun/examplefile.txt 最新です: true Versionid: CAEQChiBgMC.itzEthciIDEzNWVlYjNhYzNmMjQ4NWM5Nzc2NzllY2FiYmQ3 **** キー: fun/exampleobject.jpg 最新です: true common_prefix: fun/destfolder/