Bu konuda, Object Storage Service (OSS) paketindeki tüm nesnelerin, belirli bir ön eke sahip nesnelerin ve belirli bir dizindeki nesneler ile alt dizinlerin nasıl listeleneceği açıklanmaktadır.
Notlar
Bu konuda Çin (Hangzhou) bölgesinin genel uç noktası kullanılmıştır. OSS ile aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'ye erişmek istiyorsanız dahili bir uç nokta kullanın. OSS bölgeleri ve uç noktaları hakkında daha fazla bilgi için bkz. Bölgeler ve uç noktalar.
Bu konuda erişim kimlik bilgileri ortam değişkenlerinden alınır. Erişim kimlik bilgilerinin nasıl yapılandırılacağı hakkında daha fazla bilgi için bkz. Erişim kimlik bilgilerini yapılandırma.
Bu konu, bir OSS uç noktası kullanarak bir OSSClient örneği oluşturmayı gösterir. Özel bir etki alanı kullanmak veya Security Token Service (STS) kimlik bilgileriyle kimlik doğrulaması yapmak gibi alternatif yapılandırmalar için bkz. İstemciyi yapılandırma (Go SDK V1).
Nesneleri listelemek için
oss:ListObjectsiznine sahip olmanız gerekir. Daha fazla bilgi için bkz. Özel ilke atama.Go için OSS SDK 2.2.5 ve sonraki sürümleri RestoreInfo bilgilerinin döndürülmesini destekler.
Arka plan bilgileri
Bir paketteki en fazla 1.000 nesneyi tek seferde listelemek için ListObjectsV2 veya ListObjects işlemini çağırabilirsiniz. Farklı parametreler belirterek belirtilen bir başlangıç konumundan sonra tüm nesneleri listeleme, belirtilen bir dizindeki nesneleri ve alt dizinleri listeleme ve listeleme sonuçlarını sayfalandırma gibi çeşitli listeleme özelliklerini uygulayabilirsiniz. Bu iki işlem arasındaki temel farklar aşağıdaki gibidir:
ListObjectsV2 işlemini kullandığınızda, sonuçlara nesnelerin Owner bilgisini dahil edip etmeyeceğinizi belirtmek için
fetchOwnerparametresini kullanmanız gerekir.-
ListObjects işlemini kullandığınızda, nesnelerin Owner bilgisi varsayılan olarak sonuçlara dahil edilir.
NotSürüm oluşturmanın etkinleştirildiği paketlerde nesneleri listelemek için ListObjectsV2 işlemini kullanmanız gerekir.
Aşağıdaki bölümlerde ListObjectsV2 ve ListObjects yöntemlerini kullanarak nesneleri listelemeye yönelik parametreler açıklanmaktadır.
ListObjectsV2
Aşağıdaki tabloda ListObjectsV2 yöntemini kullanarak nesneleri listelemeye yönelik parametreler açıklanmaktadır.
|
Parametre |
Açıklama |
|
prefix |
Döndürülen nesne adlarının içermesi gereken ön ek. |
|
delimiter |
Nesne adlarını gruplamak için kullanılan bir karakter. Ön ekten delimiter öğesinin ilk oluşumuna kadar aynı dizeyi içeren tüm nesne adları tek bir öğe (commonPrefixes) olarak gruplanır. |
|
startAfter |
Bu listeleme işlemi için başlangıç noktası. |
|
fetchOwner |
Sonuçlara Owner bilgisinin dahil edilip edilmeyeceğini belirtir.
|
Daha fazla bilgi için bkz. ListObjectsV2.
ListObjects
Aşağıdaki tabloda ListObjects yöntemini kullanarak nesneleri listelemeye yönelik parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Daha fazla bilgi için bkz. ListObjects.
Örnekler
ListObjectsV2
Aşağıdaki örnek kod, bir paketteki 100 nesneyi listelemek için ListObjectsV2 yönteminin nasıl kullanılacağını gösterir.
package main
import (
"log"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Obtain access credentials from environment variables. Before you run this sample code, ensure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Failed to create credentials provider: %v", err)
}
// Create an OSSClient instance.
// Set yourEndpoint to the endpoint of the bucket. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, use the actual endpoint.
// Set yourRegion to the region of the bucket. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou. For other regions, use the actual region.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Failed to create OSS client: %v", err)
}
// Specify the bucket name.
bucketName := "yourBucketName" // Replace with the actual bucket name.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Failed to get bucket: %v", err)
}
// The initial continuation token.
continueToken := ""
for {
// List all objects.
lsRes, err := bucket.ListObjectsV2(oss.ContinuationToken(continueToken))
if err != nil {
log.Fatalf("Failed to list objects: %v", err)
}
// Print the results. By default, 100 records are returned at a time.
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)
}
// If more objects need to be listed, update the continuation token and continue the loop.
if lsRes.IsTruncated {
continueToken = lsRes.NextContinuationToken
} else {
break
}
}
log.Println("All objects have been listed.")
}
ListObjects
Aşağıdaki örnek kod, bir paketteki 100 nesneyi listelemek için ListObjects yönteminin nasıl kullanılacağını gösterir.
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Obtain access credentials from environment variables. Before you run this sample code, ensure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Failed to create credentials provider: %v", err)
}
// Create an OSSClient instance.
// Set yourEndpoint to the endpoint of the bucket. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, use the actual endpoint.
// Set yourRegion to the region of the bucket. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou. For other regions, use the actual region.
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider), oss.Region("yourRegion"), oss.AuthVersion(oss.AuthV4))
if err != nil {
log.Fatalf("Failed to create OSS client: %v", err)
}
// Specify the bucket name.
bucketName := "yourBucketName" // Replace with the actual bucket name.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Failed to get bucket: %v", err)
}
// List all objects.
marker := ""
for {
lsRes, err := bucket.ListObjects(oss.Marker(marker))
if err != nil {
log.Fatalf("Failed to list objects: %v", err)
}
// Print the results. By default, 100 records are returned at a time.
for _, object := range lsRes.Objects {
log.Printf("Object Name: %s\n", object.Key)
}
// If more objects need to be listed, update the marker and continue the loop.
if lsRes.IsTruncated {
marker = lsRes.NextMarker
} else {
break
}
}
log.Println("All objects have been listed.")
}
Yaygın senaryolar
Belirli sayıda nesneyi listeleme
Belirli bir ön eke sahip nesneleri listeleme
Belirtilen bir başlangıç noktasından sonraki nesneleri listeleme
Tüm nesneleri sayfa sayfa listeleme
Belirli bir ön eke sahip nesneleri sayfa sayfa listeleme
Belirli bir dizindeki tüm nesneler hakkında bilgi listeleme
Belirli bir dizindeki tüm alt dizinler hakkında bilgi listeleme
Nesneleri listeleme ve Owner bilgisi döndürme
Klasörler
SSS
Nesneleri listelerken son değiştirilme zamanına göre sıralayabilir miyim?
Hayır. Nesneleri son değiştirilme zamanına göre sıralamak için veri indeksleme özelliğini kullanın.
İlgili Konular
Nesneleri listelemeye yönelik tam örnek kod için GitHub örneğine bakın.
Nesneleri listelemeye yönelik API işlemleri hakkında daha fazla bilgi için bkz. ListObjectsV2 ve ListObjects.