Omówienie bibliotek zarządzania zestawu Azure SDK dla języka Go
Jak wyjaśniono w artykule Co to jest zestaw Azure SDK dla języka Go?, zestaw Azure SDK dla języka Go zawiera zestaw bibliotek zarządzania i klienta. Biblioteki zarządzania udostępniają wiele funkcji, takich jak obsługa tożsamości platformy Azure, potok HTTP i obsługa błędów. Pełną listę bibliotek zarządzania można znaleźć na stronie modułu Azure SDK for Go.
W tym artykule przedstawiono podstawowe kroki korzystania z bibliotek zarządzania do interakcji z zasobami platformy Azure.
W większości projektów instalowane są pakiety Języka Go na potrzeby zarządzania wersjami i zależnościami.
Aby zainstalować pakiet Języka Go, użyj go get
polecenia .
Na przykład aby zainstalować armcompute
pakiet, uruchom następujące polecenie w wierszu polecenia:
go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute
W większości aplikacji języka Go instalujesz następujące pakiety na potrzeby uwierzytelniania:
- github.com/Azure/azure-sdk-for-go/sdk/azcore/to
- github.com/Azure/azure-sdk-for-go/sdk/azidentity
Po pobraniu pakiet zostanie zaimportowany do aplikacji za pomocą instrukcji import
:
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"
)
Aby uruchomić kod dla subskrypcji platformy Azure, musisz uwierzytelnić się na platformie Azure. Pakiet azidentity obsługuje wiele opcji uwierzytelniania na platformie Azure. Te opcje obejmują klienta/wpis tajny, certyfikat i tożsamość zarządzaną.
Domyślną opcją uwierzytelniania jest DefaultAzureCredential, która używa zmiennych środowiskowych ustawionych wcześniej w tym artykule. W kodzie języka Go utworzysz azidentity
obiekt w następujący sposób:
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
// handle error
}
Po utworzeniu poświadczeń z poziomu tożsamości platformy Azure utwórz klienta, aby nawiązać połączenie z docelową usługą platformy Azure.
Załóżmy na przykład, że chcesz nawiązać połączenie z usługą Azure Compute . Pakiet obliczeniowy składa się z co najmniej jednego klienta. Klient grupuje zestaw powiązanych interfejsów API, zapewniając dostęp do jego funkcji w ramach określonej subskrypcji. Aby uzyskać dostęp do potrzebnych interfejsów API, należy utworzyć co najmniej jednego klienta.
W poniższym fragmencie kodu armcompute. Typ NewVirtualMachinesClient służy do tworzenia klienta do zarządzania maszynami wirtualnymi:
client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
// handle error
}
Ten sam wzorzec jest używany do nawiązywania połączenia z innymi usługami platformy Azure. Na przykład zainstaluj pakiet armnetwork i utwórz klienta sieci wirtualnej w celu zarządzania zasobami sieci wirtualnej.
client, err := armnetwork.NewVirtualNetworksClient("<subscription ID>", cred, nil)
if err != nil {
// handle error
}
Przykładowy kod:
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("SubID", cred, nil)
if err != nil {
// handle error
}
}
Po utworzeniu wystąpienia klienci są używane do tworzenia wywołań interfejsu API względem zasobów platformy Azure. W przypadku scenariuszy zarządzania zasobami większość przypadków użycia to operacje CRUD (Tworzenie/odczyt/aktualizowanie/usuwanie).
Aby wyszukać operacje dla określonego typu, wykonaj następujące czynności:
- Przejdź do dokumentacji referencyjnej zestawu Azure SDK dla języka Go.
- Wyszukaj stronę pakietu. (Naciśnięcie <Ctrl+F> automatycznie rozwija wszystkie węzły na stronie wyszukiwania.
- Wybierz pakiet.
- Przeszukaj stronę pakietu pod kątem typu.
- Przeczytaj opis typu i informacje o jego użyciu w kodzie języka Go.
Możesz również ręcznie skompilować adres URL, dołączając nazwę pakietu do github.com/Azure/azure-sdk-for-go/sdk/
.
Jeśli na przykład szukasz dokumentacji referencyjnej compute/armcompute
, adres URL to github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute
.
W poniższym przykładzie pokazano, jak znaleźć dokumentację referencyjną dla operacji grupy zasobów platformy Azure:
- Przejdź do głównej dokumentacji referencyjnej zestawu Azure SDK dla języka Go w pkg.go.dev.
- Naciśnij <Ctrl+F> i wprowadź polecenie
resourcemanager/resources/armresources
. Podczas wpisywania terminu wyszukiwania zobaczysz bliskie dopasowanie do pakietu resources/armresources . - Wybierz odpowiedni pakiet dla aplikacji.
- Przeczytaj sekcje "Wprowadzenie" lub wyszukaj określoną operację. Na przykład wyszukiwanie terminu "resourcegroupsclient.create" (jeśli chcesz utworzyć grupę zasobów) prowadzi do funkcji CreateOrUpdate.
- Na tym etapie możesz dowiedzieć się, jak wykonać wywołanie interfejsu API w celu utworzenia grupy zasobów platformy Azure.
Ponieważ niektóre operacje mogą trwać długo, biblioteki zarządzania zawierają funkcje do obsługi długotrwałych operacji (LRO) za pośrednictwem wywołań asynchronicznych. Te nazwy funkcji zaczynają się od Begin
. Przykłady tego wzorca to BeginCreate
i BeginDelete
.
Ponieważ te funkcje są asynchroniczne, kod nie blokuje się, dopóki funkcja nie zakończy zadania. Zamiast tego funkcja natychmiast zwraca obiekt poller . Następnie kod wywołuje synchroniczną funkcję poller, która jest zwracana po zakończeniu oryginalnej funkcji asynchronicznej.
Poniższy fragment kodu przedstawia przykład tego wzorca.
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.
Kluczowe punkty:
- Funkcja
PollUntilDone
wymaga interwału sondowania, który określa, jak często należy spróbować uzyskać stan. - Interwał jest zwykle krótki. Zapoznaj się z dokumentacją dla określonego zasobu platformy Azure, aby zapoznać się z zalecanymi interwałami.
- Sekcja LRO na stronie Wskazówki dotyczące projektowania zestawu Azure SDK języka Go zawiera zaawansowany przykład przenoszenia i ogólne wskazówki dotyczące LRO.