オブジェクトはアルファベット順に一覧表示されています。 Bucket.ListObjects を使って、バケット内のオブジェクトを一覧表示します。 以下のパラメーターを使用します。

パラメーター 説明
delimiter オブジェクトをグループ化するために使用される区切り記号を指定します。 指定されたプレフィックスとスラッシュ (/) の最初の区切り記号の間のサブストリングは commonPrefixes です。
prefix 必須オブジェクトを一覧表示するために構成するプレフィックスを指定します。
maxKeys 一覧表示できるオブジェクトの最大数を指定します。 既定値は 100 です。 最大値は 1,000 です。
marker リストの最初のオブジェクトを指定します。

ListObjects の完全なコードについては、『GitHub』をご参照ください。

簡易リスト

既定のパラメーターを使用して、バケットのオブジェクトリストを取得できます。 既定では 100 個のオブジェクトを一覧表示できます。 次のコードを実行してバケット内のオブジェクトを一覧表示します。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func HandleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		HandleError(err)
	}

	// Obtain the bucket.
	bucketName := "<yourBucketName>"
	bucket, err := client.Bucket(bucketName)
	if err ! = nil {
		HandleError(err)
	}

	// List all objects.
	marker := ""
	for {
		lsRes, err := bucket.ListObjects(oss.Marker(marker))
		if err ! = nil {
			HandleError(err)
		}

		// Prints the object list. 100 records are returned by default. 
		for _, object := range lsRes.Objects {
			fmt.Println("Bucket: ", object.Key)
		}

		if lsRes.IsTruncated {
			marker = lsRes.NextMarker
		} else {
			break
		}
	}
}

指定された数のオブジェクトの一覧表示

次のコードを実行して、指定した数のオブジェクトを一覧表示します。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"

	// Obtain the bucket.
	bucket, err := client.Bucket(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Configure the maximum number of lthe listed object and list objects.
	lsRes, err := bucket.ListObjects(oss.MaxKeys(200))
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Print the results.
	fmt.Println("Objects:", lsRes.Objects)
	for _, object := range lsRes.Objects {
		fmt.Println("Object:", object.Key)
	}
}

指定したプレフィックスによるオブジェクトの一覧表示

指定されたプレフィックスを持つオブジェクトを一覧表示するには、次のコードを実行します。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"

	// Obtain the bucket.
	bucket, err := client.Bucket(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// List objects with a specified prefix. 100 objects are listed by default.
	lsRes, err := bucket.ListObjects(oss.Prefix("my-object-"))
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Print the results.
	fmt.Println("Objects:", lsRes.Objects)
	for _, object := range lsRes.Objects {
		fmt.Println("Object:", object.Key)
	}
}

"marker" によるオブジェクトの一覧表示

"marker" パラメーターは、リストの作成元のオブジェクトの名前を示します。 次のコードを実行して、リストの開始後にオブジェクト ("marker" で指定) を指定します。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"

	// Obtain the bucket.
	bucket, err := client.Bucket(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// List objects placed after the object (specified with marker). 100 objects are listed by default.
	lsRes, err := bucket.ListObjects(oss.Marker("my-object-xx"))
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Print the results.
	fmt.Println("Objects:", lsRes.Objects)
	for _, object := range lsRes.Objects {
		fmt.Println("Object:", object.Key)
	}
}

1 ページ以上のすべてのオブジェクトの一覧表示

次のコードを実行して、1 ページ 以上のすべてのオブジェクトを一覧表示します。 各ページに一覧表示されるオブジェクトの最大数は、"maxKeys" で指定されています。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"

	// Obtain the bucket.
	bucket, err := client.Bucket(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// List all objects on multiple pages. 200 objects are listed in one page.
	marker := oss.Marker("")
	for {
		lsRes, err := bucket.ListObjects(oss.MaxKeys(200), marker)
		if err ! = nil {
			fmt.Println("Error:", err)
			os.Exit(-1)
		}
		marker = oss.Marker(lsRes.NextMarker)

		fmt.Println("Objects:", lsRes.Objects)

		if ! lsRes.IsTruncated {
			break
		}
	}
}

" marker" による、1 ページ以上のオブジェクトの一覧表示

次のコードを実行して、1 つ以上のページで一覧表示を開始するオブジェクト ("marker" で指定) を指定します。各ページに一覧表示されるオブジェクトの最大数は、"maxKeys" で指定されます。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"

	// Obtain the bucket.
	bucket, err := client.Bucket(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// List objects placed after the object (specified with marker) on multiple pages. 200 objects are listed in one page.
	marker = oss.Marker("my-object-xx")
	for {
		lsRes, err := bucket.ListObjects(oss.MaxKeys(50), marker)
		if err ! = nil {
			fmt.Println("Error:", err)
			os.Exit(-1)
		}

		marker = oss.Marker(lsRes.NextMarker)

		fmt.Println("Objects:", lsRes.Objects)

		if ! lsRes.IsTruncated {
			break
		}
	}
}

1 つ以上のページに指定されたプレフィックスによるオブジェクトの一覧表示

次のコードを実行して、1 つ以上のページに指定されたプレフィックスでオブジェクトを一覧表示します。各ページに一覧表示されるオブジェクトの最大数は、"maxKeys" で指定されます。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"

	// Obtain the bucket.
	bucket, err := client.Bucket(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// List objects with a specified prefix on multiple pages. 80 objects are listed in one page.
	prefix := oss.Prefix("my-object-")
	marker := oss.Marker("")
	for {
		lsRes, err := bucket.ListObjects(oss.MaxKeys(80), marker, prefix)
		if err ! = nil {
			fmt.Println("Error:", err)
			os.Exit(-1)
		}

		prefix = oss.Prefix(lsRes.Prefix)
		marker = oss.Marker(lsRes.NextMarker)

		fmt.Println("Objects:", lsRes.Objects)

		if ! lsRes.IsTruncated {
			break
		}
	}
}