Topik ini menjelaskan cara mendaftar semua objek, objek dengan awalan tertentu, serta objek dan subdirektori dalam direktori tertentu di bucket Object Storage Service (OSS).
Catatan penggunaan
Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.
Kredensial akses pada topik ini diperoleh dari variabel lingkungan. Untuk informasi selengkapnya mengenai cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.
Instans OSSClient pada topik ini dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Konfigurasi klien (Go SDK V1).
Untuk mendaftar objek, Anda harus memiliki izin
oss:ListObjects. Untuk informasi selengkapnya, lihat Berikan izin kustom kepada RAM user.OSS SDK untuk Go versi 2.2.5 dan yang lebih baru mendukung pengembalian informasi RestoreInfo.
Informasi latar belakang
Anda dapat memanggil operasi ListObjectsV2 atau ListObjects untuk mendaftar hingga 1.000 objek dalam satu bucket sekaligus. Dengan menentukan parameter yang berbeda, Anda dapat menerapkan berbagai fitur pendaftaran, seperti mendaftar semua objek setelah posisi awal tertentu, mendaftar objek dan subdirektori dalam direktori tertentu, serta melakukan paginasi pada hasil pendaftaran. Perbedaan utama antara kedua operasi tersebut adalah sebagai berikut:
Saat menggunakan operasi
ListObjectsV2fetchOwneruntuk menentukan apakah informasi Pemilik objek disertakan dalam hasil.Saat Anda menggunakan operasi
ListObjects, informasi Pemilik dari objek-objek tersebut disertakan dalam hasil secara default.CatatanUntuk bucket yang telah mengaktifkan Pengendalian versi, Anda harus menggunakan operasi ListObjectsV2 untuk mendaftar objek.
Bagian berikut menjelaskan parameter untuk mendaftar objek menggunakan metode ListObjectsV2 dan ListObjects.
ListObjectsV2
Tabel berikut menjelaskan parameter untuk mendaftar objek menggunakan metode ListObjectsV2.
Parameter | Deskripsi |
prefix | Awalan yang harus dimiliki oleh nama objek yang dikembalikan. |
delimiter | Karakter untuk mengelompokkan nama objek. Semua nama objek yang memiliki string yang sama dari awalan hingga kemunculan pertama delimiter dikelompokkan sebagai satu elemen (commonPrefixes). |
startAfter | Titik awal untuk operasi pendaftaran ini. |
fetchOwner | Menentukan apakah informasi Pemilik disertakan dalam hasil.
|
Untuk informasi selengkapnya, lihat ListObjectsV2.
ListObjects
Tabel berikut menjelaskan parameter untuk mendaftar objek menggunakan metode ListObjects.
Parameter | Deskripsi |
delimiter | Karakter untuk mengelompokkan nama objek. Semua nama objek yang memiliki string yang sama dari awalan hingga kemunculan pertama delimiter dikelompokkan sebagai satu elemen (commonPrefixes). |
prefix | Awalan yang harus dimiliki oleh nama objek yang dikembalikan. |
maxKeys | Jumlah maksimum objek yang dikembalikan. Nilai default adalah 100. Nilai maksimum adalah 1000. |
marker | Titik awal untuk operasi pendaftaran ini. |
Untuk informasi selengkapnya, lihat ListObjects.
Contoh
ListObjectsV2
Kode contoh berikut menunjukkan cara menggunakan metode ListObjectsV2 untuk mendaftar 100 objek dalam sebuah bucket.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Token kelanjutan awal.
continueToken := ""
for {
// Daftar semua objek.
lsRes, err := bucket.ListObjectsV2(oss.ContinuationToken(continueToken))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass)
}
// Jika masih ada objek yang perlu didaftar, perbarui token kelanjutan dan lanjutkan loop.
if lsRes.IsTruncated {
continueToken = lsRes.NextContinuationToken
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
ListObjects
Kode contoh berikut menunjukkan cara menggunakan metode ListObjects untuk mendaftar 100 objek dalam sebuah bucket.
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Daftar semua objek.
marker := ""
for {
lsRes, err := bucket.ListObjects(oss.Marker(marker))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
for _, object := range lsRes.Objects {
log.Printf("Object Name: %s\n", object.Key)
}
// Jika masih ada objek yang perlu didaftar, perbarui marker dan lanjutkan loop.
if lsRes.IsTruncated {
marker = lsRes.NextMarker
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
Skenario umum
Mendaftar jumlah objek tertentu
ListObjectsV2
Kode contoh berikut menunjukkan cara menggunakan metode ListObjectsV2 untuk mendaftar jumlah objek tertentu.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Atur MaxKeys untuk menentukan jumlah maksimum objek yang akan didaftar, lalu daftar objek tersebut.
maxKeys := 200
continueToken := ""
for {
lsRes, err := bucket.ListObjectsV2(oss.MaxKeys(maxKeys), oss.StartAfter(continueToken))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s, Owner ID: %s, Owner DisplayName: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass, object.Owner.ID, object.Owner.DisplayName)
}
// Jika masih ada objek yang perlu didaftar, perbarui token kelanjutan dan lanjutkan loop.
if lsRes.IsTruncated {
continueToken = lsRes.ContinuationToken
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
ListObjects
Kode contoh berikut menunjukkan cara menggunakan metode ListObjects untuk mendaftar jumlah objek tertentu.
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Atur jumlah maksimum objek yang akan didaftar, lalu daftar objek tersebut.
maxKeys := 200
lsRes, err := bucket.ListObjects(oss.MaxKeys(maxKeys))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
log.Printf("Ditemukan %d objek:\n", len(lsRes.Objects))
for _, object := range lsRes.Objects {
log.Printf("Object: %s\n", object.Key)
}
if lsRes.IsTruncated {
log.Printf("Masih ada objek lain. NextMarker: %s\n", lsRes.NextMarker)
} else {
log.Println("Semua objek telah didaftar.")
}
}
Mendaftar objek dengan awalan tertentu
ListObjectsV2
Kode contoh berikut menunjukkan cara menggunakan metode ListObjectsV2 untuk mendaftar objek dengan awalan tertentu.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Atur parameter Prefix untuk mendaftar objek yang namanya diawali dengan my-object-.
prefix := "my-object-"
lsRes, err := bucket.ListObjectsV2(oss.Prefix(prefix))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
log.Printf("Ditemukan %d objek dengan awalan '%s':\n", len(lsRes.Objects), prefix)
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s, Owner ID: %s, Owner DisplayName: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass, object.Owner.ID, object.Owner.DisplayName)
}
if lsRes.IsTruncated {
log.Printf("Masih ada objek lain. Next Continuation Token: %s\n", lsRes.NextContinuationToken)
} else {
log.Println("Semua objek telah didaftar.")
}
}
ListObjects
Kode contoh berikut menunjukkan cara menggunakan metode ListObjects untuk mendaftar objek dengan awalan tertentu.
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Daftar objek dengan awalan yang ditentukan. Secara default, 100 objek didaftar.
prefix := "my-object-"
lsRes, err := bucket.ListObjects(oss.Prefix(prefix))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
log.Printf("Ditemukan %d objek dengan awalan '%s':\n", len(lsRes.Objects), prefix)
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s\n", object.Key)
}
if lsRes.IsTruncated {
log.Printf("Masih ada objek lain. Next Marker: %s\n", lsRes.NextMarker)
} else {
log.Println("Semua objek telah didaftar.")
}
}
Mendaftar objek setelah titik awal tertentu
ListObjectsV2
Anda dapat mengatur parameter StartAfter untuk menentukan titik awal pendaftaran. Semua objek yang berada dalam urutan leksikografis setelah nilai StartAfter akan dikembalikan.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Tentukan untuk mendaftar objek setelah StartAfter. Secara default, 100 objek didaftar.
startAfter := "my-object-"
lsRes, err := bucket.ListObjectsV2(oss.StartAfter(startAfter))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
log.Printf("Ditemukan %d objek yang dimulai setelah '%s':\n", len(lsRes.Objects), startAfter)
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s, Owner ID: %s, Owner DisplayName: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass, object.Owner.ID, object.Owner.DisplayName)
}
if lsRes.IsTruncated {
log.Printf("Masih ada objek lain. Next Continuation Token: %s\n", lsRes.NextContinuationToken)
} else {
log.Println("Semua objek telah didaftar.")
}
}
ListObjects
Anda dapat mengatur parameter Marker untuk menentukan titik awal pendaftaran. Semua objek yang berada dalam urutan leksikografis setelah nilai Marker akan dikembalikan.
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Inisialisasi marker.
marker := ""
// Loop untuk mendaftar semua objek.
for {
lsRes, err := bucket.ListObjects(oss.Marker(marker))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
log.Printf("Ditemukan %d objek:\n", len(lsRes.Objects))
for _, object := range lsRes.Objects {
log.Printf("Object: %s\n", object.Key)
}
// Jika hasil terpotong, perbarui marker dan lanjutkan loop.
if lsRes.IsTruncated {
marker = lsRes.NextMarker
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
Mendaftar semua objek per halaman
ListObjectsV2
Anda dapat menggunakan metode ListObjectsV2 untuk mendaftar semua objek dalam bucket secara per halaman. Anda dapat mengatur MaxKeys untuk menentukan jumlah objek yang didaftar pada setiap halaman.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Daftar semua objek per halaman. Daftar 100 objek per halaman.
continueToken := ""
for {
lsRes, err := bucket.ListObjectsV2(oss.MaxKeys(100), oss.ContinuationToken(continueToken))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
log.Printf("Ditemukan %d objek:\n", len(lsRes.Objects))
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass)
}
// Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop.
if lsRes.IsTruncated {
continueToken = lsRes.NextContinuationToken
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
ListObjects
Anda dapat menggunakan metode ListObjects untuk mendaftar semua objek dalam bucket secara per halaman. Anda dapat mengatur MaxKeys untuk menentukan jumlah objek yang didaftar pada setiap halaman.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Daftar semua objek per halaman. Daftar 100 objek per halaman.
marker := ""
for {
lsRes, err := bucket.ListObjects(oss.MaxKeys(100), oss.Marker(marker))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
log.Printf("Ditemukan %d objek:\n", len(lsRes.Objects))
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass)
}
// Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop.
if lsRes.IsTruncated {
marker = lsRes.NextMarker
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
Mendaftar objek dengan awalan tertentu per halaman
ListObjectsV2
Anda dapat menggunakan metode ListObjectsV2 untuk mendaftar objek dengan awalan tertentu secara per halaman. Anda dapat mengatur MaxKeys untuk menentukan jumlah objek yang didaftar pada setiap halaman.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Daftar objek dengan awalan tertentu per halaman. Daftar 80 objek per halaman.
prefix := "my-object-"
continueToken := ""
for {
lsRes, err := bucket.ListObjectsV2(oss.Prefix(prefix), oss.MaxKeys(80), oss.ContinuationToken(continueToken))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
log.Printf("Ditemukan %d objek dengan awalan '%s':\n", len(lsRes.Objects), prefix)
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass)
}
// Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop.
if lsRes.IsTruncated {
continueToken = lsRes.NextContinuationToken
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
ListObjects
Anda dapat menggunakan metode ListObjects untuk mendaftar objek dengan awalan tertentu secara per halaman. Anda dapat mengatur MaxKeys untuk menentukan jumlah objek yang didaftar pada setiap halaman.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Daftar objek dengan awalan yang ditentukan per halaman. Daftar 80 objek per halaman.
prefix := "my-object-"
marker := ""
for {
lsRes, err := bucket.ListObjects(oss.MaxKeys(80), oss.Marker(marker), oss.Prefix(prefix))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
log.Printf("Ditemukan %d objek dengan awalan '%s':\n", len(lsRes.Objects), prefix)
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass)
}
// Jika hasil terpotong, perbarui marker dan lanjutkan loop.
if lsRes.IsTruncated {
marker = lsRes.NextMarker
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
Mendaftar informasi semua objek dalam direktori tertentu
ListObjectsV2
Anda dapat menggunakan metode ListObjectsV2 untuk mendaftar informasi semua objek dalam direktori tertentu (awalan), termasuk ukuran objek, waktu modifikasi terakhir, dan nama objek.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Daftar objek dengan awalan yang ditentukan per halaman. Secara default, 100 catatan dikembalikan sekaligus.
continueToken := ""
prefix := "fun"
for {
lsRes, err := bucket.ListObjectsV2(oss.Prefix(prefix), oss.ContinuationToken(continueToken))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya.
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass)
}
// Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop.
if lsRes.IsTruncated {
continueToken = lsRes.NextContinuationToken
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
ListObjects
Anda dapat menggunakan metode ListObjects untuk mendaftar informasi semua objek dalam direktori tertentu (awalan), termasuk ukuran objek, waktu modifikasi terakhir, dan nama objek.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Telusuri objek.
marker := ""
prefix := "test"
for {
lor, err := bucket.ListObjects(oss.Marker(marker), oss.Prefix(prefix))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya.
for _, object := range lor.Objects {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
object.Key, object.Type, object.Size, object.ETag, object.LastModified.Format(time.RFC3339), object.StorageClass)
}
// Jika hasil terpotong, perbarui marker dan lanjutkan loop.
if lor.IsTruncated {
marker = lor.NextMarker
} else {
break
}
}
log.Println("Semua objek telah didaftar.")
}
Mendaftar informasi semua subdirektori dalam direktori tertentu
ListObjectsV2
Kode contoh berikut menunjukkan cara menggunakan metode ListObjectsV2 untuk mendaftar informasi semua subdirektori dalam direktori tertentu (awalan).
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Daftar folder dengan awalan yang ditentukan per halaman. Secara default, 100 catatan dikembalikan sekaligus.
continueToken := ""
prefix := ""
for {
lsRes, err := bucket.ListObjectsV2(oss.Prefix(prefix), oss.ContinuationToken(continueToken), oss.Delimiter("/"))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya.
for _, dirName := range lsRes.CommonPrefixes {
log.Println("Directory Name:", dirName)
}
// Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop.
if lsRes.IsTruncated {
continueToken = lsRes.NextContinuationToken
} else {
break
}
}
log.Println("Semua direktori telah didaftar.")
}
ListObjects
Kode contoh berikut menunjukkan cara menggunakan metode ListObjects untuk mendaftar informasi semua subdirektori dalam direktori tertentu (awalan).
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Daftar folder dengan awalan yang ditentukan per halaman. Secara default, 100 catatan dikembalikan sekaligus.
marker := ""
prefix := "yourDirPrefix" // Ganti dengan awalan yang sebenarnya.
for {
lor, err := bucket.ListObjects(oss.Marker(marker), oss.Prefix(prefix), oss.Delimiter("/"))
if err != nil {
log.Fatalf("Gagal mendaftar objek: %v", err)
}
// Cetak hasilnya.
for _, dirName := range lor.CommonPrefixes {
log.Println("Directory Name:", dirName)
}
// Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop.
if lor.IsTruncated {
marker = lor.NextMarker
} else {
break
}
}
log.Println("Semua direktori telah didaftar.")
}
Mendaftar objek dan mengembalikan informasi Pemilik
Kode contoh berikut menunjukkan cara menggunakan metode ListObjectsV2 untuk mendaftar objek dan mengembalikan informasi Pemiliknya.
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Tentukan nama bucket.
bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Peroleh informasi Pemilik dan daftar objek tersebut.
lsRes, err := bucket.ListObjectsV2(oss.FetchOwner(true))
if err != nil {
log.Fatalf("Gagal mendaftar objek dengan informasi pemilik: %v", err)
}
// Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus.
for _, object := range lsRes.Objects {
log.Printf("Object Key: %s, Owner ID: %s, Display Name: %s\n",
object.Key, object.Owner.ID, object.Owner.DisplayName)
}
log.Println("Semua objek telah didaftar.")
}
Folder
OSS menggunakan struktur datar untuk menyimpan objek. Semua elemen disimpan sebagai objek. Membuat folder sama dengan membuat objek berukuran nol byte yang diakhiri dengan garis miring (/). Konsol OSS menampilkan objek yang namanya diakhiri dengan garis miring (/) sebagai folder. Untuk kode contoh lengkap pembuatan folder, lihat contoh GitHub.
Anda dapat menggunakan parameter delimiter dan prefix untuk mensimulasikan fitur direktori:
Jika Anda mengatur parameter `prefix` ke nama folder, objek yang namanya diawali dengan awalan tersebut akan didaftar. Ini akan mendaftar secara rekursif semua objek dan subdirektori di dalam folder tersebut.
Jika Anda mengatur parameter `prefix` dan mengatur parameter `delimiter` ke garis miring (/), hanya objek dan subdirektori di tingkat atas folder yang didaftar. Subdirektori dikembalikan dalam elemen `CommonPrefixes`, sedangkan objek dan folder di dalam subdirektori tersebut tidak didaftar.
Asumsikan sebuah bucket berisi objek oss.jpg, fun/test.jpg, fun/movie/001.avi, dan fun/movie/007.avi, dan pemisah folder adalah garis miring (/). Contoh berikut menunjukkan cara mendaftar objek dengan mensimulasikan direktori.
Mendaftar semua objek dalam bucket
ListObjectsV2
Kode contoh berikut menunjukkan cara menggunakan ListObjectsV2 untuk mendaftar semua objek dalam bucket.
package main import ( "log" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { log.Fatalf("Gagal membuat penyedia kredensial: %v", err) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai. // Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4)) if err != nil { log.Fatalf("Gagal membuat klien OSS: %v", err) } // Tentukan nama bucket. bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya. bucket, err := client.Bucket(bucketName) if err != nil { log.Fatalf("Gagal mendapatkan bucket: %v", err) } // Daftar semua objek dalam bucket yang ditentukan. startAfter := "" continueToken := "" for { lsRes, err := bucket.ListObjectsV2(oss.StartAfter(startAfter), oss.ContinuationToken(continueToken)) if err != nil { log.Fatalf("Gagal mendaftar objek: %v", err) } // Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus. for _, object := range lsRes.Objects { log.Printf("Object Key: %s\n", object.Key) } // Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop. if lsRes.IsTruncated { startAfter = lsRes.StartAfter continueToken = lsRes.NextContinuationToken } else { break } } log.Println("Semua objek telah didaftar.") }ListObjects
Kode contoh berikut menunjukkan cara menggunakan metode ListObjects untuk mendaftar semua objek dalam bucket.
package main import ( "log" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { log.Fatalf("Gagal membuat penyedia kredensial: %v", err) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai. // Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4)) if err != nil { log.Fatalf("Gagal membuat klien OSS: %v", err) } // Tentukan nama bucket. bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya. bucket, err := client.Bucket(bucketName) if err != nil { log.Fatalf("Gagal mendapatkan bucket: %v", err) } // Daftar semua objek dalam bucket yang ditentukan. marker := "" for { lsRes, err := bucket.ListObjects(oss.Marker(marker)) if err != nil { log.Fatalf("Gagal mendaftar objek: %v", err) } // Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus. for _, object := range lsRes.Objects { log.Printf("Object Key: %s\n", object.Key) } // Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop. if lsRes.IsTruncated { marker = lsRes.NextMarker } else { break } } log.Println("Semua objek telah didaftar.") }Hasil berikut dikembalikan saat Anda menggunakan dua metode di atas untuk mendaftar semua objek dalam bucket.
Objects: fun/movie/001.avi fun/movie/007.avi fun/test.jpg oss.jpg CommonPrefixes:
Mendaftar semua objek dalam direktori tertentu
ListObjectsV2
Kode contoh berikut menunjukkan cara menggunakan metode ListObjectsV2 untuk mendaftar semua objek dalam direktori tertentu.
package main import ( "log" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { log.Fatalf("Gagal membuat penyedia kredensial: %v", err) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai. // Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4)) if err != nil { log.Fatalf("Gagal membuat klien OSS: %v", err) } // Tentukan nama bucket. bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya. bucket, err := client.Bucket(bucketName) if err != nil { log.Fatalf("Gagal mendapatkan bucket: %v", err) } // Daftar semua objek dalam direktori yang ditentukan. prefix := "aaa/db-init" continueToken := "" for { lsRes, err := bucket.ListObjectsV2(oss.Prefix(prefix), oss.ContinuationToken(continueToken)) if err != nil { log.Fatalf("Gagal mendaftar objek: %v", err) } // Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus. for _, object := range lsRes.Objects { log.Printf("Object Key: %s\n", object.Key) } // Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop. if lsRes.IsTruncated { continueToken = lsRes.NextContinuationToken } else { break } } log.Println("Semua objek telah didaftar.") }ListObjects
Kode contoh berikut menunjukkan cara menggunakan metode ListObjects untuk mendaftar semua objek dalam direktori tertentu.
package main import ( "log" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { log.Fatalf("Gagal membuat penyedia kredensial: %v", err) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai. // Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4)) if err != nil { log.Fatalf("Gagal membuat klien OSS: %v", err) } // Tentukan nama bucket. bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya. bucket, err := client.Bucket(bucketName) if err != nil { log.Fatalf("Gagal mendapatkan bucket: %v", err) } // Daftar semua objek dalam direktori yang ditentukan. prefix := "aaa/db-init" // Ganti dengan awalan yang sebenarnya. marker := "" for { lsRes, err := bucket.ListObjects(oss.Prefix(prefix), oss.Marker(marker)) if err != nil { log.Fatalf("Gagal mendaftar objek: %v", err) } // Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus. for _, object := range lsRes.Objects { log.Printf("Object Key: %s\n", object.Key) } // Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop. if lsRes.IsTruncated { marker = lsRes.NextMarker } else { break } } log.Println("Semua objek telah didaftar.") }Hasil berikut dikembalikan saat Anda menggunakan dua metode di atas untuk mendaftar semua objek dalam direktori yang ditentukan.
Objects: fun/movie/001.avi fun/movie/007.avi fun/test.jpg CommonPrefixes:
Mendaftar objek dan subdirektori dalam direktori
ListObjectsV2
Kode contoh berikut menunjukkan cara menggunakan metode ListObjectsV2 untuk mendaftar objek dan subdirektori dalam direktori.
package main import ( "log" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { log.Fatalf("Gagal membuat penyedia kredensial: %v", err) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai. // Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4)) if err != nil { log.Fatalf("Gagal membuat klien OSS: %v", err) } // Tentukan nama bucket. bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya. bucket, err := client.Bucket(bucketName) if err != nil { log.Fatalf("Gagal mendapatkan bucket: %v", err) } // Daftar objek dan subdirektori dalam direktori yang ditentukan. prefix := "" // Atur awalan sesuai kebutuhan. delimiter := "/" continueToken := "" for { lsRes, err := bucket.ListObjectsV2(oss.Prefix(prefix), oss.Delimiter(delimiter), oss.ContinuationToken(continueToken)) if err != nil { log.Fatalf("Gagal mendaftar objek: %v", err) } // Cetak hasilnya. Secara default, 100 catatan dikembalikan sekaligus. for _, object := range lsRes.Objects { log.Printf("Object Key: %s\n", object.Key) } // Cetak subdirektori. for _, commonPrefix := range lsRes.CommonPrefixes { log.Printf("Common Prefix: %s\n", commonPrefix) } // Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop. if lsRes.IsTruncated { continueToken = lsRes.NextContinuationToken } else { break } } log.Println("Semua objek dan subdirektori telah didaftar.") }ListObjects
Kode contoh berikut menunjukkan cara menggunakan metode ListObjects untuk mendaftar objek dan subdirektori dalam direktori.
package main import ( "log" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { log.Fatalf("Gagal membuat penyedia kredensial: %v", err) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai. // Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4)) if err != nil { log.Fatalf("Gagal membuat klien OSS: %v", err) } // Tentukan nama bucket. bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya. bucket, err := client.Bucket(bucketName) if err != nil { log.Fatalf("Gagal mendapatkan bucket: %v", err) } // Daftar objek dan subdirektori dalam direktori yang ditentukan. prefix := "aaa/db-init/" // Ganti dengan awalan yang sebenarnya. marker := "" delimiter := "/" for { lsRes, err := bucket.ListObjects(oss.Prefix(prefix), oss.Marker(marker), oss.Delimiter(delimiter)) if err != nil { log.Fatalf("Gagal mendaftar objek: %v", err) } // Cetak daftar objek. for _, object := range lsRes.Objects { log.Printf("Object Key: %s\n", object.Key) } // Cetak daftar subdirektori. for _, commonPrefix := range lsRes.CommonPrefixes { log.Printf("Common Prefix: %s\n", commonPrefix) } // Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop. if lsRes.IsTruncated { marker = lsRes.NextMarker } else { break } } log.Println("Semua objek dan subdirektori telah didaftar.") }Hasil berikut dikembalikan saat Anda menggunakan dua metode di atas untuk mendaftar objek dan subdirektori dalam direktori yang ditentukan.
Objects: fun/test.jpg CommonPrefixes: fun/movie/
Memperoleh ukuran objek dalam direktori tertentu
ListObjectsV2
Kode contoh berikut menunjukkan cara menggunakan metode ListObjectsV2 untuk memperoleh ukuran objek dalam direktori tertentu.
package main import ( "log" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { log.Fatalf("Gagal membuat penyedia kredensial: %v", err) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai. // Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4)) if err != nil { log.Fatalf("Gagal membuat klien OSS: %v", err) } // Dapatkan bucket. bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya. bucket, err := client.Bucket(bucketName) if err != nil { log.Fatalf("Gagal mendapatkan bucket: %v", err) } // Dapatkan ukuran objek dalam direktori yang ditentukan. prefix := "/fun" // Ganti dengan awalan yang sebenarnya. continueToken := "" for { lsRes, err := bucket.ListObjectsV2(oss.Prefix(prefix), oss.ContinuationToken(continueToken)) if err != nil { log.Fatalf("Gagal mendaftar objek: %v", err) } // Cetak daftar objek dan ukurannya. for _, object := range lsRes.Objects { log.Printf("Object Key: %s, Size: %d Byte(s)\n", object.Key, object.Size) } // Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop. if lsRes.IsTruncated { continueToken = lsRes.NextContinuationToken } else { break } } log.Println("Semua objek telah didaftar beserta ukurannya.") }ListObjects
Kode contoh berikut menunjukkan cara menggunakan metode ListObjects untuk memperoleh ukuran objek dalam direktori tertentu.
package main import ( "log" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { log.Fatalf("Gagal membuat penyedia kredensial: %v", err) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai. // Setel yourRegion ke wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai. client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4)) if err != nil { log.Fatalf("Gagal membuat klien OSS: %v", err) } // Tentukan nama bucket. bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya. bucket, err := client.Bucket(bucketName) if err != nil { log.Fatalf("Gagal mendapatkan bucket: %v", err) } // Dapatkan ukuran objek dalam direktori yang ditentukan. prefix := "test/" // Ganti dengan awalan yang sebenarnya. marker := "" for { lsRes, err := bucket.ListObjects(oss.Prefix(prefix), oss.Marker(marker)) if err != nil { log.Fatalf("Gagal mendaftar objek: %v", err) } // Cetak daftar objek dan ukurannya. for _, object := range lsRes.Objects { log.Printf("Object Key: %s, Size: %d Byte(s)\n", object.Key, object.Size) } // Jika hasil terpotong, perbarui token kelanjutan dan lanjutkan loop. if lsRes.IsTruncated { marker = lsRes.NextMarker } else { break } } log.Println("Semua objek telah didaftar beserta ukurannya.") }
FAQ
Bisakah saya mengurutkan objek berdasarkan waktu modifikasi terakhir saat mendaftarkannya?
Tidak. Jika Anda perlu mengurutkan objek berdasarkan waktu modifikasi terakhirnya, gunakan pengindeksan data.
Referensi
Untuk kode contoh lengkap pendaftaran objek, lihat contoh GitHub.
Untuk informasi selengkapnya mengenai operasi API untuk mendaftar objek, lihat ListObjectsV2 dan ListObjects.