Az Azure SDK Go-kódtárainak áttekintése

A Go Azure SDK felügyeleti kódtárakat és adatsík-ügyfélkódtárakat is tartalmaz. Ez a cikk áttekintést nyújt, amelyből megtudhatja, hogy mik a kódtárak, hogyan illeszkednek a Azure munkafolyamatokhoz, és hol érdemes továbblépni a Go-specifikus mintákhoz.

Menedzsment könyvtárak

A felügyeleti kódtárak használatával építhet ki, konfigurálhat és szabályozhat Azure erőforrásokat. A bennük tárolt adatok helyett maguk az erőforrások kezelésére összpontosítanak. A felügyeleti kódtárak vezérlősík műveleteket hajtanak végre, amelyek Azure erőforrásokat és szolgáltatáskonfigurációkat kezelnek. A tipikus feladatok a következők:

  • Erőforráscsoportok, virtuális hálózatok vagy virtuális gépek létrehozása vagy frissítése.
  • Biztonsági beállítások, identitások, hozzáférési szabályzatok és diagnosztikák konfigurálása.
  • Azure erőforrások listázása, címkézése és törlése az előfizetések között.
  • Az üzembe helyezés, a karbantartás, a megfelelőség és a platformműveletek automatizálása.

A felügyeleti kódtárcsomagok nevei: armcompute, armnetworkés armkeyvault. Használjon felügyeleti kódtárakat az alkalmazás életciklusának beállítási, konfigurációs és szabályozási fázisai során. Részletes csomagdokumentációért keresse meg a csomagot a pkg.go.dev.

Ügyfélkönyvtárak

Akkor használja az ügyfélkódtárakat, ha a Go-alkalmazásnak egy már kiépített Azure szolgáltatáson belül kell adatokat vagy futtatókörnyezeti felületeket használnia. Az ügyfélkódtárak adatsík-műveleteket hajtanak végre, amelyek a szolgáltatásban tárolt vagy áthaladó adatokkal működnek. A tipikus feladatok a következők:

  • Blobok feltöltése és letöltése tárfiókból.
  • Üzenetek küldése és fogadása Service Bus vagy Event Hubs használatával.
  • Rekordok olvasása, írása vagy törlése az adatbázisban.
  • Titkos adatok lekérése a Key Vaultből.
  • Lekérdezések vagy műveletek végrehajtása kiépített erőforrásokon.

Az ügyféloldali kódtárcsomagok nevei: azblob, azstorage, azsecretsazservicebus, és azeventhubs. Használjon ügyfélkódtárakat, miután a mögöttes Azure szolgáltatást felügyeleti kódtárak használatával már kiépítette. Részletes csomagdokumentációért keresse meg a csomagot a pkg.go.dev.

Kezelési és ügyfélkönyvtárak használata

Egyetlen Go-megoldás felügyeleti és ügyfélkódtárakat is használhat a vezérlés és az adatsíkok között. Előfordulhat például, hogy a telepítés során felügyeleti kódtárat használ egy tárfiók (vezérlősík) létrehozásához, majd az alkalmazásban egy ügyfélkódtár használatával blobokat (adatsíkot) tölthet fel és tölthet le. A megkülönböztetés megértése segít kiválasztani a megfelelő tárat a munkafolyamat minden egyes feladatához.

Az egyes síkokra vonatkozó Go-specifikus mintákat és példákat az alábbi cikkekben talál:

Go-csomagok telepítése

A legtöbb projektben a verziószámozáshoz és a függőségkezeléshez telepíti a Go-csomagokat.

Go-csomag telepítéséhez futtassa a go get parancsot.

Például a armcompute csomag telepítéséhez futtassa a következő parancsot:

go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute

A legtöbb Go-alkalmazásban telepítse a következő csomagokat hitelesítésre:

  • github.com/Azure/azure-sdk-for-go/sdk/azcore/to
  • github.com/Azure/azure-sdk-for-go/sdk/azidentity

Csomagok importálása a Go-kódba

A csomagok letöltése után importálja őket az alkalmazásba a import következő utasítással:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
)

Hitelesítés az Azure szolgáltatásba

A Azure SDK kódtárakat használó go-alkalmazásoknak hitelesítenie kell magukat a Azure Identitástár Microsoft Entra ID használatával. Tokenalapú hitelesítés biztonságosabb és kezelhetőbb, mint a kapcsolati sztringek vagy kulcsok. Az ajánlott hitelesítő adatok attól függenek, hogy hol fut az alkalmazás: felügyelt identitások használata Azure által üzemeltetett alkalmazásokhoz, fejlesztői hitelesítő adatok vagy szolgáltatásnév a helyi fejlesztéshez, valamint szolgáltatásnév használata a legtöbb helyszíni forgatókönyv esetében.

Az alapértelmezett hitelesítési beállítás a DefaultAzureCredential, amely a cikkben korábban beállított környezeti változókat használja. A Go-kódban hozzon létre egy azidentity objektumot az alábbiak szerint:

cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
  // handle error
}

A hitelesítésről további információt a Go-hitelesítés Azure SDK című témakörben talál.

Erőforrás-kezelési ügyfél létrehozása

Miután lekérte a hitelesítő adatokat Azure Identitásból, hozzon létre egy ügyfelet a cél Azure szolgáltatáshoz való csatlakozáshoz.

Tegyük fel például, hogy csatlakozni szeretne a Azure Compute szolgáltatáshoz. A Compute csomag egy vagy több ügyfélből áll. Az ügyfél egy kapcsolódó API-kat csoportosít, amelyek hozzáférést biztosítanak a funkcióhoz a megadott előfizetésen belül. Hozzon létre egy vagy több ügyfelet a szükséges API-k eléréséhez.

Az alábbi kód a armcompute függvényt használja. NewVirtualMachinesClient típus virtuális gépek kezelésére szolgáló ügyfél létrehozásához:

client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

Az Azure erőforrások Go-val való kezelésével kapcsolatos további információkért lásd: A Go Azure SDK használata vezérlősík-műveletekhez.

Ugyanezzel a mintával csatlakozhat más Azure szolgáltatásokhoz. Telepítse például a armnetwork csomagot, és hozzon létre egy virtual network ügyfelet a virtuális hálózati erőforrások kezeléséhez.

client, err := armnetwork.NewVirtualNetworksClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

Kódminta:

package main

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
)

func main() {
    cred, err := azidentity.NewDefaultAzureCredential(nil)
    if err != nil {
        // handle error
    }
    client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
    if err != nil {
        // handle error
    }
}

A Go for Azure-szolgáltatásokhoz készült Azure SDK használatáról további információt a A Go Azure SDK használata adatsík-műveletekhez című témakörben talál.

A Go-nyelvhez készült Azure SDK tárház használata

Miután példányosított egy ügyfelet, api-hívásokat kezdeményezhet a Azure-erőforrásokhoz. Erőforrás-kezelési forgatókönyvek esetén a legtöbb használati eset CRUD (létrehozás, olvasás, frissítés, törlés) művelet.

Ha adott típushoz szeretne műveleteket találni, böngéssze a forrást az Azure SDK for Go GitHub-adattárban. Az SDK-forrás a sdk/ könyvtárban van rendszerezve, a felügyeleti kódtárak a sdk/resourcemanager/ és az ügyfélkódtárak szolgáltatásspecifikus mappákban, például sdk/storage/ és sdk/security/keyvault/.

Egy adott típus forrásának megkereséséhez kövesse az alábbi lépéseket:

  1. Lépjen az Azure SDK for Go adattárhoz a GitHubon.
  2. Navigáljon a sdk/resourcemanager/ könyvtárak kezeléséhez, vagy a sdk/ ügyfélkönyvtárak eléréséhez.
  3. Nyissa meg a szolgáltatásmappát, majd a csomagmappát. Például: sdk/resourcemanager/compute/armcompute/.
  4. Keresse meg a szükséges típust tartalmazó forrásfájlt. Az ügyféltípusok és metódusaik általában az ügyfélről elnevezett fájlokban találhatók, például virtualmachines_client.go.
  5. A használati információkért olvassa el a típus megjegyzéseit és metódusaláírásait.

Az URL-címet közvetlenül is létrehozhatja. Az erőforráscsoport műveleti forrásának megkereséséhez például lépjen a https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/resourcemanager/resources/armresources.

Ez a példa bemutatja, hogyan keresheti meg Azure erőforráscsoport-műveletek forrását:

  1. Nyissa meg a GitHubon található Azure SDK Go-repozitóriumot.
  2. Navigáljon sdk/resourcemanager/resources/armresources/.
  3. Nyissa meg a resource_groups_client.go elemet a ResourceGroupsClient típusának és CreateOrUpdate metódusának megkereséséhez.
  4. A metódus megjegyzéseit és paramétereit elolvasva megtudhatja, hogyan kezdeményezheti az API-hívást.

A létrehozott referenciadokumentációhoz keresse meg a csomagot a pkg.go.dev.

Hosszú ideig futó műveletek

Egyes műveletek végrehajtása hosszú időt vesz igénybe. Ezeknek a műveleteknek a kezeléséhez a felügyeleti kódtárak olyan függvényeket biztosítanak, amelyek aszinkron hívásokon keresztül támogatják a hosszú ideig futó műveleteket (LRO). Ezek a függvénynevek a Begin kezdetűek, például BeginCreate és BeginDelete.

Mivel ezek a függvények aszinkronok, a kód nem blokkol, amíg a függvény befejezi a feladatát. Ehelyett a függvény azonnal visszaad egy poller objektumot. A kód ezután meghív egy szinkron poller függvényt, amely az eredeti aszinkron függvény befejeződésekor ad vissza.

Az alábbi kódrészlet erre a mintára mutat példát.

ctx := context.Background()
// Call an asynchronous function to create a client. The return value is a poller object.
poller, err := client.BeginCreate(ctx, "resource_identifier", "additional_parameter")

if err != nil {
    // handle error...
}

// Call the poller object's PollUntilDone function that will block until the poller object
// has been updated to indicate the task has completed.
resp, err = poller.PollUntilDone(ctx, nil)
if err != nil {
    // handle error...
}

// Print the fact that the LRO completed.
fmt.Printf("LRO done")

// Work with the response ("resp") object.

Főbb pontok:

  • A PollUntilDone függvényhez lekérdezési időköz szükséges, amely meghatározza, hogy milyen gyakran próbálja meg lekérni az állapotot. A interval alapértelmezett értéke 30 másodperc ha a beállításparaméterhez nil ad át, de igény szerint módosíthatja.
  • Az időköz általában rövid. A javasolt időközökért tekintse meg az adott Azure erőforrás dokumentációját.
  • A Go Azure SDK Tervezési irányelvek lap LRO szakasza egy fejlettebb példával és általános irányelvekkel rendelkezik az LRO-hoz.

További információért a mintákról lásd az Azure SDK for Go közös használati mintáit.

Következő lépések

A hitelesítéssel, az ügyfélkonstrukcióval, a hosszú időt igénybe vevő művelettel és a szolgáltatás végigjárási mintáival kapcsolatos további információkért tekintse meg a réteg-specifikus cikkeket.

Példákért lásd az Azure SDK Go-mintákat a GitHub-on.