Rövid útmutató: Azure Blob Storage ügyfélkódtár Go-hoz

Első lépések a Go azure Blob Storage ügyfélkódtárá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

Beállítás

Ez a szakasz végigvezeti egy projekt előkészítésén a Go Azure Blob Storage ügyfélkódtárával való együttműködésre.

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 Rendszergazda istrator 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.

  1. Az Azure Portalon keresse meg a tárfiókot a fő keresősávon vagy a bal oldali navigációs sávon.

  2. 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.

  3. A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelések lapot.

  4. 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 screenshot showing how to assign a role.

  5. 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.

  6. 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.

  7. 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.

  8. 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:

  1. 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
    
  2. Go-alkalmazásban 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)

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)

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)
	}
}

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())

Clean up resources

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)

Következő lépések

Ebben a rövid útmutatóban megtanulta, hogyan tölthet fel, tölthet le és listázhat blobokat a Go használatával.

A Blob Storage-mintaalkalmazások megtekintéséhez folytassa a következőekkel:

  • További információért tekintse meg a Go-hoz készült Azure Blob Storage ügyfélkódtárat.
  • Oktatóanyagok, minták, rövid útmutatók és egyéb dokumentációkért látogasson el az Azure for Go Developers webhelyére.