Visão geral das bibliotecas de gerenciamento do SDK do Azure para Go
Conforme explicado no artigo O que é o SDK do Azure para Go?, o SDK do Azure para Go contém um conjunto de bibliotecas de cliente e gerenciamento. As bibliotecas de gerenciamento compartilham muitos recursos, como suporte ao Azure Identity, pipeline HTTP e tratamento de erros. Você pode encontrar a lista completa das bibliotecas de gerenciamento na página do módulo SDK do Azure para Go.
Neste artigo, você aprenderá as etapas básicas de como usar as bibliotecas de gerenciamento para interagir com os recursos do Azure.
Instalando pacotes Go
Na maioria dos projetos, você instala os pacotes Go para controle de versão e gerenciamento de dependência.
Para instalar um pacote Go, use o go get
comando.
Por exemplo, para instalar o armcompute
pacote, execute o seguinte na linha de comando:
go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute
Na maioria dos aplicativos Go, você instala os seguintes pacotes para autenticação:
- github.com/Azure/azure-sdk-for-go/sdk/azcore/to
- github.com/Azure/azure-sdk-for-go/sdk/azidentity
Importar pacotes para o seu código Go
Uma vez baixado, o pacote é importado para seu aplicativo por meio da import
instrução:
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"
)
Autenticando no Azure
Para executar código em uma assinatura do Azure, você precisa se autenticar no Azure. O pacote azidentity dá suporte a várias opções para autenticar no Azure. Essas opções incluem cliente/segredo, certificado e identidade gerenciada.
A opção de autenticação padrão é DefaultAzureCredential, que usa as variáveis de ambiente definidas anteriormente neste artigo. No código Go, você cria um azidentity
objeto da seguinte maneira:
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
// handle error
}
Criando um cliente de gerenciamento de recursos
Depois de ter uma credencial da Identidade do Azure, crie um cliente para se conectar ao serviço do Azure de destino.
Por exemplo, digamos que você queira se conectar ao serviço de computação do Azure. O pacote Compute consiste em um ou mais clientes. Um cliente agrupa um conjunto de APIs relacionadas, fornecendo acesso à sua funcionalidade dentro da assinatura especificada. Você cria um ou mais clientes para acessar as APIs necessárias.
No trecho de código a seguir, o armcompute. NewVirtualMachinesClient tipo é usado para criar um cliente para gerenciar máquinas virtuais:
client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
// handle error
}
O mesmo padrão é usado para se conectar a outros serviços do Azure. Por exemplo, instale o pacote armnetwork e crie um cliente de rede virtual para gerenciar recursos de rede virtual (VNET).
client, err := armnetwork.NewVirtualNetworksClient("<subscription ID>", cred, nil)
if err != nil {
// handle error
}
Exemplo de código:
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
}
}
Usando a documentação de referência do SDK do Azure para Go
Depois de instanciados, os clientes são usados para fazer chamadas de API em seus recursos do Azure. Para cenários de gerenciamento de recursos, a maioria dos casos de uso são operações CRUD (Create/Read/Update/Delete).
Para procurar as operações para um tipo específico, execute as seguintes etapas:
- Navegue até a documentação de referência do SDK do Azure para Go.
- Pesquise o pacote na página. (Prensagem <Ctrl+F> expande automaticamente todos os nós na página para pesquisa.)
- Selecione o pacote.
- Pesquise o tipo na página do pacote.
- Leia a descrição do tipo e as informações sobre o seu uso no seu código Go.
Você também pode criar manualmente a URL anexando o nome do pacote ao github.com/Azure/azure-sdk-for-go/sdk/
.
Por exemplo, se você estiver procurando a compute/armcompute
documentação de referência, o URL será github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute
.
O exemplo a seguir mostra como localizar a documentação de referência para operações de grupo de recursos do Azure:
- Navegue até a documentação de referência principal do SDK do Azure para Go no pkg.go.dev.
- Selecione <Ctrl+F> e digite
resourcemanager/resources/armresources
. Ao digitar o termo de pesquisa, você verá uma correspondência estreita com o pacote resources/armresources . - Selecione o pacote apropriado para sua aplicação.
- Leia as seções "Introdução" ou procure uma operação específica. Por exemplo, pesquisar o termo "resourcegroupsclient.create" (se você quiser criar um grupo de recursos) leva você à função CreateOrUpdate.
- Neste ponto, você pode ler como fazer a chamada de API para criar um grupo de recursos do Azure.
Operações de longa duração
Como algumas operações podem levar muito tempo para serem concluídas, as bibliotecas de gerenciamento contêm funções para dar suporte a operações de longa execução (LRO) por meio de chamadas assíncronas. Esses nomes de função começam com Begin
. Exemplos deste padrão são BeginCreate
e BeginDelete
.
Como essas funções são assíncronas, seu código não é bloqueado até que a função termine sua tarefa. Em vez disso, a função retorna um objeto poller imediatamente. Em seguida, o código chama uma função de poller síncrono que retorna quando a função assíncrona original é concluída.
O trecho de código a seguir mostra um exemplo desse padrão.
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.
Pontos principais:
- A
PollUntilDone
função requer um intervalo de sondagem que especifica com que frequência deve tentar obter o status. - O intervalo é normalmente curto. Consulte a documentação do recurso específico do Azure para obter os intervalos recomendados.
- A seção LRO da página Go Azure SDK Design Guidelines tem um exemplo avançado de movimentação e diretrizes gerais para LRO.