Blobok listázása a Go használatával
Ez a cikk bemutatja, hogyan listázhatja a blobokat a Go-hoz készült Azure Storage-ügyfélmodullal.
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen
- Azure Storage-fiók – tárfiók létrehozása
- Go 1.18+
Saját környezet beállítása
Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be egy projektet a Go Azure Blob Storage-ügyfélmoduljának használatára. A lépések közé tartozik a modul telepítése, az elérési utak hozzáadása import
és egy engedélyezett ügyfélobjektum létrehozása. További részletekért tekintse meg az Azure Blob Storage és a Go használatának első lépéseit.
Modulok telepítése
Telepítse az azblob modult a következő paranccsal:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
A Microsoft Entra-azonosítóval való hitelesítéshez (ajánlott) telepítse a azidentity
modult a következő paranccsal:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Importálási útvonalak hozzáadása
A kódfájlban adja hozzá a következő importálási útvonalakat:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Ezek az importálási útvonalak az első lépésekhez szükséges minimumot jelölik. A cikkben szereplő néhány példakód további importálási útvonalakat igényelhet. További részletekért és példahasználatért tekintse meg a kódmintákat.
Ügyfélobjektum létrehozása
Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy ügyfélobjektumot az azblob használatával . NewClient. Az alábbi példa bemutatja, hogyan hozhat létre ügyfélobjektumot DefaultAzureCredential
engedélyezés céljából:
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
Engedélyezés
Az engedélyezési mechanizmusnak rendelkeznie kell a blob feltöltéséhez szükséges engedélyekkel. A Microsoft Entra-azonosítóval való engedélyezéshez (ajánlott) az Azure RBAC beépített storage-blobadat-olvasó vagy újabb szerepkörre van szüksége. További információkért tekintse meg a Blobok listázása (REST API) engedélyezési útmutatóját.
Tudnivalók a bloblista beállításairól
Ha blobokat listáz a kódból, számos lehetőséget megadhat az eredmények Azure Storage-ból való visszaadására. Megadhatja az egyes találathalmazokban visszaadandó eredmények számát, majd lekérheti a következő halmazokat. Megadhat egy előtagot, amely visszaadja azokat a blobokat, amelyeknek a neve ezzel a karakterrel vagy sztringgel kezdődik. A blobokat egy lapos listaszerkezetben vagy hierarchikusan is listázhatja. A hierarchikus lista a blobokat úgy adja vissza, mintha mappákba rendezték volna őket.
Ha egy tárolóban lévő blobokat egy egyszerű listaelem használatával szeretné listázni, hívja meg a következő metódust:
Ha hierarchikus listaelem használatával szeretné listázni a tárolóban lévő blobokat, hívja meg a következő metódust egy tárolóügyfél-objektumból:
Az eredmény visszaadott értékének kezelése
Alapértelmezés szerint egy listaművelet legfeljebb 5000 eredményt ad vissza egyszerre. Kisebb eredményhalmaz visszaadásához adjon meg egy nemzero értéket a MaxResults
ListBlobsFlatOptions vagy a ListBlobsHierarchyOptions mezőhöz.
Eredmények szűrése előtaggal
A visszaadott blobok listájának szűréséhez adjon meg egy sztringet vagy karaktert a Prefix
ListBlobsFlatOptions vagy a ListBlobsHierarchyOptions mezőhöz. Az előtag sztringje egy vagy több karaktert tartalmazhat. Az Azure Storage ezután csak azokat a blobokat adja vissza, amelyeknek a neve ezzel az előtaggal kezdődik.
Blob metaadatainak vagy egyéb adatainak belefoglalása
Ha blob-metaadatokat szeretne hozzáadni az eredményekhez, állítsa be a mezőt true
a Metadata
ListBlobsInclude részeként. Az Azure Storage minden visszaadott blob metaadatait tartalmazza, így nem kell külön lekérnie a blob metaadatait.
A pillanatképeket, verziókat, blobindexcímkéket és az eredményekkel kapcsolatos egyéb információkat a ListBlobsInclude webhelyen találja.
Egybesimított lista és hierarchikus lista
Az Azure Storage-blobok hierarchikus paradigma helyett egy lapos paradigma szerint vannak rendszerezve (például egy klasszikus fájlrendszerben). A blobokat azonban virtuális könyvtárakba rendezheti a mappastruktúra utánzásához. A virtuális címtár a blob nevének része, és a határoló karakter jelzi.
A blobok virtuális könyvtárakba rendezéséhez használjon elválasztó karaktert a blob nevében. Az alapértelmezett elválasztó karakter egy perjel (/), de bármely karaktert megadhat elválasztóként.
Ha elválasztójel használatával nevezi el a blobokat, választhatja, hogy hierarchikusan listázni szeretné a blobokat. Hierarchikus listázási művelet esetén az Azure Storage visszaadja a szülőobjektum alatti virtuális könyvtárakat és blobokat. A listázási műveletet rekurzívan hívhatja meg a hierarchia átjárásához, hasonlóan ahhoz, ahogyan egy klasszikus fájlrendszert programozott módon léptetne át.
Feljegyzés
A blob-pillanatképek nem szerepelhetnek hierarchikus listaelem-műveletben.
Egyszerű lista használata
A listázási művelet alapértelmezés szerint egy egyszerű lista blobjait adja vissza. Egy egyszerű lista esetében a blobokat nem a virtuális címtár rendezi.
Az alábbi példa a megadott tárolóban lévő blobokat sorolja fel egy egyszerű listaelem használatával. Ez a példa blob-pillanatképeket és blobverziókat is tartalmaz, ha léteznek:
func listBlobsFlat(client *azblob.Client, containerName string) {
// List the blobs in the container
pager := client.NewListBlobsFlatPager(containerName, &azblob.ListBlobsFlatOptions{
Include: azblob.ListBlobsInclude{Snapshots: true, Versions: true},
})
fmt.Println("List blobs flat:")
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, blob := range resp.Segment.BlobItems {
fmt.Println(*blob.Name)
}
}
}
A mintakimenet a következőhöz hasonló:
List blobs flat:
file4.txt
folderA/file1.txt
folderA/file2.txt
folderA/folderB/file3.txt
Az alábbi példa egy adott előtaggal kezdődő tárolóban lévő blobokat sorolja fel:
func listBlobsFlatOptions(client *azblob.Client, containerName string, prefix string) {
// List the blobs in the container with a prefix
pager := client.NewListBlobsFlatPager(containerName, &azblob.ListBlobsFlatOptions{
Prefix: to.Ptr(prefix),
})
fmt.Println("List blobs with prefix:")
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, blob := range resp.Segment.BlobItems {
fmt.Println(*blob.Name)
}
}
}
A "minta" előtagsztringjének átadásakor a kimenet a következőhöz hasonló:
List blobs with prefix:
sample-blob1.txt
sample-blob2.txt
sample-blob3.txt
Feljegyzés
A megjelenített mintakimenet feltételezi, hogy egy egyszerű névtérrel rendelkező tárfiókkal rendelkezik. Ha engedélyezte a tárfiók hierarchikus névtér funkcióját, a címtárak nem virtuálisak. Ehelyett konkrét, független objektumok. Ennek eredményeképpen a címtárak nulla hosszúságú blobként jelennek meg a listában.
A hierarchikus névtér használatakor alternatív listabeállítást a NewListPathsPager című témakörben talál.
Hierarchikus lista használata
Ha hierarchikusan meghív egy listázási műveletet, az Azure Storage a hierarchia első szintjén adja vissza a virtuális könyvtárakat és blobokat.
A blobok hierarchikus listázásához használja a következő módszert:
Az alábbi példa a megadott tárolóban lévő blobokat sorolja fel hierarchikus listaelem használatával. Ebben a példában az előtag paramétere kezdetben üres sztringre van állítva a tároló összes blobjának listázásához. A példa ezután rekurzívan meghívja a listázási műveletet a virtuális címtár hierarchiájának és a listabloboknak a bejárásához.
func listBlobsHierarchy(client *azblob.Client, containerName string, prefix string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
pager := containerClient.NewListBlobsHierarchyPager("/", &container.ListBlobsHierarchyOptions{
Prefix: to.Ptr(prefix),
MaxResults: to.Ptr(int32(1)), // MaxResults set to 1 for demonstration purposes
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
if resp.Segment.BlobPrefixes != nil {
for _, prefix := range resp.Segment.BlobPrefixes {
fmt.Println("Virtual directory prefix:", *prefix.Name)
// Recursively list blobs in the prefix
listBlobsHierarchy(client, containerName, *prefix.Name)
}
}
for _, blob := range resp.Segment.BlobItems {
fmt.Println("Blob:", *blob.Name)
}
}
}
A mintakimenet a következőhöz hasonló:
Virtual directory prefix: folderA/
Blob: folderA/file1.txt
Blob: folderA/file2.txt
Blob: folderA/file3.txt
Virtual directory prefix: folderA/folderB/
Blob: folderA/folderB/file1.txt
Blob: folderA/folderB/file2.txt
Blob: folderA/folderB/file3.txt
Feljegyzés
Az útmutatóban szereplő kódminták az Azure Blob Storage és a Go használatának megkezdéséhez nyújtanak segítséget. Az alkalmazás igényeinek megfelelően módosítania kell a hibakezelést és Context
az értékeket.
Források
Ha többet szeretne megtudni arról, hogyan listázhatja a blobokat a Go-hoz készült Azure Blob Storage-ügyfélmodullal, tekintse meg az alábbi erőforrásokat.
Kódminták
- Kódminták megtekintése ebből a cikkből (GitHub)
REST API-műveletek
Az Azure SDK for Go olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát ismert Go-paradigmákon keresztül. A blobok felsorolására szolgáló ügyfélkódtár-metódusok a következő REST API-műveletet használják:
- Blobok listázása (REST API)
Ügyfélmodul erőforrásai
Lásd még
Kapcsolódó tartalom
- Ez a cikk a Blob Storage Go-hoz készült fejlesztői útmutatójának része. További információkért tekintse meg a Go-alkalmazás buildeléséhez kapcsolódó fejlesztői útmutatók teljes listáját.