Rövid útmutató: Azure Blob Storage ügyfélmodul Go-hoz
Ismerkedés a Go Azure Blob Storage ügyfélmoduljával a blobok és tárolók kezeléséhez. Az alábbi lépések végrehajtásával telepítheti a csomagot, és kipróbálhatja az alapműveletek példakódját.
API-referenciadokumentáció Kódtár forráskódcsomagja | (pkg.go.dev) |
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+
Beállítás
Ez a szakasz végigvezeti egy projekt előkészítésén a Go-hoz készült Azure Blob Storage-ügyfélmodullal való együttműködéshez.
A mintaalkalmazás letöltése
A rövid útmutatóban használt mintaalkalmazás egy egyszerű Go-alkalmazás.
A git használatával töltse le az alkalmazás egy másolatát a fejlesztői környezetbe.
git clone https://github.com/Azure-Samples/storage-blobs-go-quickstart
Ez a parancs a helyi git mappába klónozza az adattárat. A Blob Storage Go-mintájának megnyitásához keresse meg a fájl nevét storage-quickstart.go
.
A csomagok telepítése
Ha blob- és tárolóerőforrásokat szeretne használni egy tárfiókban, telepítse az azblob csomagot az alábbi 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 az azidentitás modult az alábbi paranccsal:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Hitelesítés az Azure-ban és a blobadatokhoz való hozzáférés engedélyezése
Az Azure Blob Storage-ba irányuló alkalmazáskéréseket engedélyezni kell. Az Azure Identity-ügyfélkódtár használata DefaultAzureCredential
és az Azure Identity-ügyfélkódtár használata ajánlott módszer az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatok implementálásához a kódban, beleértve a Blob Storage-t is.
Az Azure Blob Storage-ra irányuló kéréseket a fiók hozzáférési kulcsával is engedélyezheti. Ezt a megközelítést azonban körültekintően kell alkalmazni. A fejlesztőknek szorgalmasnak kell lenniük, hogy soha ne tegyék elérhetővé a hozzáférési kulcsot nem biztonságos helyen. Bárki, aki rendelkezik a hozzáférési kulccsal, engedélyezheti a tárfiókra irányuló kérelmeket, és hatékonyan hozzáférhet az összes adathoz.
DefaultAzureCredential
továbbfejlesztett felügyeleti és biztonsági előnyöket kínál a fiókkulcson keresztül a jelszó nélküli hitelesítés engedélyezéséhez. Az alábbi példában mindkét lehetőség látható.
DefaultAzureCredential
Egy hitelesítőadatlánc-implementáció, amelyet a Go-hoz készült Azure Identity-ügyfélkódtár biztosít.
DefaultAzureCredential
több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust használja futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi és éles környezetben) környezetspecifikus kód implementálása nélkül.
Ha többet szeretne megtudni a hitelesítő adatokat kereső sorrendről és helyekről DefaultAzureCredential
, tekintse meg az Azure Identity Library áttekintését.
Az alkalmazás például hitelesítheti az Azure CLI bejelentkezési hitelesítő adataival a helyi fejlesztés során. Miután üzembe helyezték az Azure-ban, az alkalmazás használhat felügyelt identitást. A környezetek közötti váltáshoz nincs szükség kódmódosításra.
Szerepkörök hozzárendelése a Microsoft Entra felhasználói fiókjához
Helyi fejlesztéskor győződjön meg arról, hogy a blobadatokhoz hozzáférő felhasználói fiók rendelkezik a megfelelő engedélyekkel. A blobadatok olvasásához és írásához tárolóblobadatok közreműködője szükséges. A szerepkör hozzárendeléséhez hozzá kell rendelnie a Felhasználói hozzáférés rendszergazdája szerepkört, vagy egy másik szerepkört, amely tartalmazza a Microsoft.Authorization/roleAssignments/write műveletet. Azure RBAC-szerepköröket rendelhet egy felhasználóhoz az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával. A szerepkör-hozzárendelések elérhető hatóköreiről a hatókör áttekintési oldalán tudhat meg többet.
Ebben a forgatókönyvben engedélyeket rendel hozzá a felhasználói fiókjához, amely a tárfiókra terjed ki, hogy kövesse a minimális jogosultság elvét. Ez a gyakorlat csak a minimálisan szükséges engedélyeket biztosítja a felhasználóknak, és biztonságosabb éles környezeteket hoz létre.
Az alábbi példa a Storage Blob Data Contributor szerepkört rendeli hozzá a felhasználói fiókjához, amely olvasási és írási hozzáférést biztosít a tárfiók blobadataihoz.
Fontos
A szerepkör-hozzárendelés propagálása a legtöbb esetben egy-két percet vesz igénybe az Azure-ban, de ritkán akár nyolc percet is igénybe vehet. Ha hitelesítési hibákat kap a kód első futtatásakor, várjon néhány percet, és próbálkozzon újra.
Az Azure Portalon keresse meg a tárfiókot a fő keresősávon vagy a bal oldali navigációs sávon.
A tárfiók áttekintési lapján válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben.
A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelések lapot.
Válassza a +Hozzáadás lehetőséget a felső menüből, majd a szerepkör-hozzárendelés hozzáadása lehetőséget az eredményül kapott legördülő menüből.
A keresőmezővel szűrheti az eredményeket a kívánt szerepkörre. Ebben a példában keresse meg a Storage Blob-adatszolgáltatót, és válassza ki a megfelelő eredményt, majd válassza a Tovább gombot.
A Hozzáférés hozzárendelése területen válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget, majd válassza a + Tagok kijelölése lehetőséget.
A párbeszédpanelen keresse meg a Microsoft Entra-felhasználónevet (általában a user@domain e-mail-címét), majd válassza a Párbeszédpanel alján található Kiválasztás lehetőséget.
Válassza a Véleményezés + hozzárendelés lehetőséget a végső lapra való ugráshoz, majd a folyamat befejezéséhez a Véleményezés + hozzárendelés lehetőséget.
Jelentkezzen be, és csatlakoztassa az alkalmazáskódot az Azure-hoz a DefaultAzureCredential használatával
A tárfiókban lévő adatokhoz való hozzáférést az alábbi lépések végrehajtásával engedélyezheti:
Győződjön meg arról, hogy ugyanazzal a Microsoft Entra-fiókkal van hitelesítve, amelyhez a szerepkört hozzárendelte a tárfiókban. Az alábbi példa bemutatja, hogyan hitelesíthető az Azure CLI-vel:
az login
Go-alkalmazásokban való használathoz
DefaultAzureCredential
telepítse az azidentitás modult az alábbi paranccsal:go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Az Azure CLI-hitelesítés nem ajánlott az Azure-ban futó alkalmazásokhoz. Az Azure-ban való üzembe helyezéskor ugyanazzal a kóddal engedélyezheti az Azure Storage-ra irányuló kéréseket egy Azure-ban futó alkalmazásból. Azonban engedélyeznie kell a felügyelt identitást az azure-beli alkalmazásban, és konfigurálnia kell a tárfiókot, hogy lehetővé tegye a felügyelt identitás csatlakoztatását. Az Azure-szolgáltatások közötti kapcsolat konfigurálásával kapcsolatos részletes utasításokért tekintse meg az Azure által üzemeltetett alkalmazások hitelesítési útmutatójában.
A különböző hitelesítési módszerekkel kapcsolatos további információkért tekintse meg az Azure-hitelesítést az Azure SDK for Go használatával.
Minta futtatása
A példakód a következő műveleteket hajtja végre:
- Létrehoz egy ügyfélobjektumot, amely jogosult az adathozzáféréshez az
DefaultAzureCredential
- Tároló létrehozása tárfiókban
- Blob feltöltése a tárolóba
- A tárolóban lévő blobok listája
- A blobadatok letöltése pufferbe
- Törli az alkalmazás által létrehozott blob- és tárolóerőforrásokat
A minta futtatása előtt nyissa meg a storage-quickstart.go fájlt. Cserélje le <storage-account-name>
az Azure Storage-fiók nevére.
Ezután futtassa az alkalmazást a következő paranccsal:
go run storage-quickstart.go
Az alkalmazás kimenete a következő példához hasonló:
Azure Blob storage quick start sample
Creating a container named quickstart-sample-container
Uploading a blob named sample-blob
Listing the blobs in the container:
sample-blob
Blob contents:
Hello, world! This is a blob.
Press enter key to delete resources and exit the application.
Cleaning up.
Deleting the blob sample-blob
Deleting the container quickstart-sample-container
Amikor lenyomja az enter billentyűt a parancssorban, a mintaprogram törli az alkalmazás által létrehozott blob- és tárolóerőforrásokat.
Tipp.
Az Azure Storage Explorert vagy egy ahhoz hasonló eszközt is használhat, ha szeretné a fájlt megtekinteni a blobtárolóban. Az Azure Storage Explorer egy ingyenes, platformfüggetlen eszköz, amellyel elérheti a tárfiókjával kapcsolatos információkat.
A mintakód értelmezése
Ezután végigvezetjük a mintakódot, hogy megértsük, hogyan működik.
Hozzáférés engedélyezése és ügyfélobjektum létrehozása
Bármely Azure-erőforrás SDK-val való használata egy ügyfélobjektum létrehozásával kezdődik. Az ügyfélobjektum létrehozásához a kódminta meghívja az azblobot. NewClient a következő értékekkel:
- serviceURL – a tárfiók URL-címe
-
cred – a modulon keresztül
azidentity
beszerzett Microsoft Entra-hitelesítő adatok - beállítások – ügyfélbeállítások; nulla érték megadása az alapértelmezett értékek elfogadásához
Az alábbi példakód egy ügyfélobjektumot hoz létre a tároló- és bloberőforrások tárfiókban való használatához:
// TODO: replace <storage-account-name> with your actual storage account name
url := "https://<storage-account-name>.blob.core.windows.net/"
ctx := context.Background()
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(url, credential, nil)
handleError(err)
Tároló létrehozása
A kódminta létrehoz egy új tárolóerőforrást a tárfiókban. Ha már létezik ilyen nevű tároló, a rendszer létrehoz egy ResourceExistsError
tárolót.
Fontos
A tárolók nevei csak kisbetűket tartalmazhatnak. A tárolók és blobok elnevezési követelményeiről további információt a tárolók, blobok és metaadatok elnevezésével és hivatkozásával kapcsolatban talál.
Az alábbi példakód létrehoz egy gyorsindítási mintatároló nevű új tárolót a tárfiókban:
// Create the container
containerName := "quickstart-sample-container"
fmt.Printf("Creating a container named %s\n", containerName)
_, err = client.CreateContainer(ctx, containerName, nil)
handleError(err)
A tárolók létrehozásával és további kódmintákkal kapcsolatos további információkért tekintse meg a Blob-tároló létrehozása a Go használatával című témakört.
Blobok feltöltése a tárolóba
A kódminta létrehoz egy bájttömböt néhány adattal, és pufferként tölti fel az adatokat egy új bloberőforrásba a megadott tárolóban.
Az alábbi példakód feltölti a blobadatokat a megadott tárolóba az UploadBuffer metódus használatával:
data := []byte("\nHello, world! This is a blob.\n")
blobName := "sample-blob"
// Upload to data to blob storage
fmt.Printf("Uploading a blob named %s\n", blobName)
_, err = client.UploadBuffer(ctx, containerName, blobName, data, &azblob.UploadBufferOptions{})
handleError(err)
Ha többet szeretne megtudni a blobok feltöltéséről, és további kódmintákat szeretne megismerni, olvassa el a Blob feltöltése a Go használatával című témakört.
Tárolóban lévő blobok kilistázása
A kódminta felsorolja a megadott tárolóban lévő blobokat. Ez a példa a NewListBlobsFlatPagert használja, amely egy lapozót ad vissza a blobokhoz a megadott jelölőtől kezdve. Itt egy üres jelölőt használunk az enumerálás kezdetétől kezdve, és a lapozást addig folytatjuk, amíg nincs több eredmény. Ez a metódus lexikográfiai sorrendben adja vissza a blobneveket.
Az alábbi példakód a megadott tárolóban lévő blobokat sorolja fel:
// List the blobs in the container
fmt.Println("Listing the blobs in the container:")
pager := client.NewListBlobsFlatPager(containerName, &azblob.ListBlobsFlatOptions{
Include: azblob.ListBlobsInclude{Snapshots: true, Versions: true},
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, blob := range resp.Segment.BlobItems {
fmt.Println(*blob.Name)
}
}
Ha többet szeretne megtudni a blobok listázásáról, és további példakódokkal szeretne megismerkedni, olvassa el a Blobok listázása a Go használatával című témakört.
A blob letöltése
A kódminta letölt egy blobot a DownloadStream metódussal, és létrehoz egy újrapróbálkozási olvasót az adatok olvasásához. Ha egy kapcsolat olvasás közben meghiúsul, az újrapróbálkozási olvasó más kéréseket is intéz a kapcsolat újbóli létrehozásához és az olvasás folytatásához. Az újrapróbálkozási beállításokat a RetryReaderOptions szerkezet használatával adhatja meg.
Az alábbi példakód letölt egy blobot, és a tartalmat a konzolra írja:
// Download the blob
get, err := client.DownloadStream(ctx, containerName, blobName, nil)
handleError(err)
downloadedData := bytes.Buffer{}
retryReader := get.NewRetryReader(ctx, &azblob.RetryReaderOptions{})
_, err = downloadedData.ReadFrom(retryReader)
handleError(err)
err = retryReader.Close()
handleError(err)
// Print the contents of the blob we created
fmt.Println("Blob contents:")
fmt.Println(downloadedData.String())
Ha többet szeretne megtudni a blobok letöltéséről, és további példakódokkal szeretne megismerkedni, olvassa el a Blob letöltése a Go használatával című témakört.
Az erőforrások eltávolítása
Ha már nincs szüksége az ebben a rövid útmutatóban feltöltött blobokra, törölheti az egyes blobokat a DeleteBlob metódussal, vagy a teljes tárolót és annak tartalmát a DeleteContainer metódussal.
// Delete the blob
fmt.Printf("Deleting the blob " + blobName + "\n")
_, err = client.DeleteBlob(ctx, containerName, blobName, nil)
handleError(err)
// Delete the container
fmt.Printf("Deleting the container " + containerName + "\n")
_, err = client.DeleteContainer(ctx, containerName, nil)
handleError(err)
Ha többet szeretne megtudni a blobok és tárolók törléséről, és további példakódokkal szeretne megismerkedni, olvassa el a Blob törlése a Go és a Tároló törlése a Go használatával című témakört.