Go için Azure SDK ile kaynak gruplarını yönetme
Bu makalede, Go için Azure SDK yönetim kitaplığı ile kaynak grubu oluşturmayı ve yönetmeyi öğreneceksiniz.
1. Azure kaynaklarını ayarlama
Bu makaledeki adımları tamamlamak için aşağıdaki Azure kaynaklarına ve tanımlayıcılarına ihtiyacınız vardır:
Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Azure abonelik kimliğini alın.
Hizmet sorumlusu oluşturma. Hizmet sorumlusunun uygulama (istemci) kimliğini ve gizli dizisini not edin. Ayrıca, aboneliğinizdeki Katkıda Bulunan rolünü uygulamaya atamak için yönergeleri izlediğinizden emin olun. Katkıda Bulunan rolü, aboneliğinizdeki tüm kaynakları yönetme izni veren ayrıcalıklı bir yönetici rolüdür.
Sonraki bölüme geçmeden önce abonelik kimliğinizi (Guid), kiracı kimliğinizi (Guid) ve hizmet sorumlunuzun istemci/uygulama kimliğini (Guid) ve gizli dizisini not edin.
2. Kimlik doğrulama ortamı değişkenlerini ayarlama
Azure kimlik doğrulama bilgilerinizi kullanarak kodunuzun Azure'da kimlik doğrulaması gerçekleştirebilmesi için uygun ortam değişkenlerini ayarlayın.
Aşağıdaki ortam değişkenlerini ayarlayın. Yer tutucuları önceki bölümdeki uygun değerlerle değiştirin.
export AZURE_SUBSCRIPTION_ID="<azure_subscription_id>"
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"
3. Kaynak grubu oluşturma
Örnek Go kodunu test edip çalıştırmak ve geçerli dizin yapmak için bir dizin oluşturun.
Geçerli dizinde bir modül oluşturmak için go mod init komutunu çalıştırın.
go mod init <module_path>
Önemli noktalar:
<module_path>
parametresi genellikle GitHub deposundaki bir konumdur; örneğingithub.com/<your_github_account_name>/<directory>
.- Test olarak bir komut satırı uygulaması oluştururken ve uygulamayı yayımlamazsanız, öğesinin
<module_path>
gerçek bir konuma başvurması gerekmez.
go komutunu çalıştırarak gerekli Go için Azure SDK modüllerini indirin, derleyin ve yükleyin.
go get github.com/Azure/azure-sdk-for-go/sdk/azcore go get github.com/Azure/azure-sdk-for-go/sdk/azcore/to go get github.com/Azure/azure-sdk-for-go/sdk/azidentity go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources
Önemli
Azure kaynak yönetimi kitaplıklarının geçerli sürümünün paketleri içinde
sdk/**/arm**
bulunur. Yönetim kitaplıklarının önceki sürümünün paketleri altında/services
bulunur. Eski sürümü kullanıyorsanız Bkz . Go için Azure SDK Geçiş Kılavuzu.adlı
main.go
bir dosya oluşturun ve aşağıdaki kodu ekleyin. Kodun her bölümü amacını açıklamak için yorumlanır.package main // Import key modules. import ( "context" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "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/resources/armresources" ) // Define key global variables. var ( subscriptionId = os.Getenv("AZURE_SUBSCRIPTION_ID") location = "eastus" resourceGroupName = "myResourceGroup" // !! IMPORTANT: Change this to a unique name in your subscription. ctx = context.Background() ) // Define the function to create a resource group. func createResourceGroup(subscriptionId string, credential azcore.TokenCredential) (armresources.ResourceGroupsClientCreateOrUpdateResponse, error) { rgClient, _ := armresources.NewResourceGroupsClient(subscriptionId, credential, nil) param := armresources.ResourceGroup{ Location: to.Ptr(location), } return rgClient.CreateOrUpdate(ctx, resourceGroupName, param, nil) } // Define the standard 'main' function for an app that is called from the command line. func main() { // Create a credentials object. cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { log.Fatalf("Authentication failure: %+v", err) } // Call your function to create an Azure resource group. resourceGroup, err := createResourceGroup(subscriptionId, cred) if err != nil { log.Fatalf("Creation of resource group failed: %+v", err) } // Print the name of the new resource group. log.Printf("Resource group %s created", *resourceGroup.ResourceGroup.ID) }
Önemli noktalar:
subscriptionId
Değer ortam değişkenindenAZURE_SUBSCRIPTION_ID
alınır.location
veresourceGroupName
dizeleri, değerleri test etmek için ayarlanır. Gerekirse bu değerleri konumunuza ve aboneliğinize uygun bir değerle değiştirin.
Kaynak kodunuz temelinde dosyadaki
go.mod
bağımlılıkları temizlemek için go mod tidy komutunu çalıştırın.go mod tidy
go run
Uygulamayı derlemek ve çalıştırmak için komutunu çalıştırın.go run .
4. Sonuçları doğrulayın
Azure portala gidin.
Oturum açın ve Azure aboneliğinizi seçin.
Soldaki menüden Kaynak grupları'nı seçin.
Yeni kaynak grubu, Azure aboneliğinizin kaynak grupları arasında listelenir.
5. Kaynak grubunu güncelleştirme
Dosyanıza
main.go
dönün.Aşağıdaki kodu işlevin
main
hemen üstüne ekleyin.// Update the resource group by adding a tag to it. func updateResourceGroup(subscriptionId string, credential azcore.TokenCredential) (armresources.ResourceGroupsClientUpdateResponse, error) { rgClient, _ := armresources.NewResourceGroupsClient(subscriptionId, credential, nil) update := armresources.ResourceGroupPatchable{ Tags: map[string]*string{ "new": to.Ptr("tag"), }, } return rgClient.Update(ctx, resourceGroupName, update, nil) }
Kodu ekledikten sonra sonraki bölüme geçin. Kodu sonraki bir bölümde çalıştıracaksınız.
6. Azure aboneliğinin kaynak gruplarını listeleme
Dosyanıza
main.go
dönün.Aşağıdaki kodu işlevin
main
hemen üstüne ekleyin.// List all the resource groups of an Azure subscription. func listResourceGroups(subscriptionId string, credential azcore.TokenCredential) ([]*armresources.ResourceGroup, error) { rgClient, _ := armresources.NewResourceGroupsClient(subscriptionId, credential, nil) pager := rgClient.NewListPager(nil) var resourceGroups []*armresources.ResourceGroup for pager.More() { resp, err := pager.NextPage(ctx) if err != nil { return nil, err } if resp.ResourceGroupListResult.Value != nil { resourceGroups = append(resourceGroups, resp.ResourceGroupListResult.Value...) } } return resourceGroups, nil }
Kodu ekledikten sonra sonraki bölüme geçin. Kodu sonraki bir bölümde çalıştıracaksınız.
7. Kaynak grubunu silme
Dosyanıza
main.go
dönün.Aşağıdaki kodu işlevin
main
hemen üstüne ekleyin.// Delete a resource group. func deleteResourceGroup(subscriptionId string, credential azcore.TokenCredential) error { rgClient := armresources.NewResourceGroupsClient(subscriptionId, credential, nil) poller, err := rgClient.BeginDelete(ctx, resourceGroupName, nil) if err != nil { return err } if _, err := poller.PollUntilDone(ctx, nil); err != nil { return err } return nil }
Kodu ekledikten sonra sonraki bölüme geçin. Kodu sonraki bir bölümde çalıştıracaksınız.
8. Ana işlevi güncelleştirin
Önceki bölümlerde, bir kaynak grubu oluşturmak, güncelleştirmek ve silmek için 'a main.go
kod eklediniz. Ayrıca bir Azure aboneliğindeki tüm kaynak gruplarını listelemek için kod eklediniz. Tüm bu işlevleri sırayla çalıştırmak için:
içinde
main.go
işlevini aşağıdaki kodla değiştirinmain
:func main() { // Create a credentials object. cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { log.Fatalf("Authentication failure: %+v", err) } // Call your function to create an Azure resource group. resourceGroup, err := createResourceGroup(subscriptionId, cred) if err != nil { log.Fatalf("Creation of resource group failed: %+v", err) } // Print the name of the new resource group. log.Printf("Resource group %s created", *resourceGroup.ResourceGroup.ID) // Call your function to add a tag to your new resource group. updatedRG, err := updateResourceGroup(subscriptionId, cred) if err != nil { log.Fatalf("Update of resource group failed: %+v", err) } log.Printf("Resource Group %s updated", *updatedRG.ResourceGroup.ID) // Call your function to list all the resource groups. rgList, err := listResourceGroups(subscriptionId, cred) if err != nil { log.Fatalf("Listing of resource groups failed: %+v", err) } log.Printf("Your Azure subscription has a total of %d resource groups", len(rgList)) // Call your function to delete the resource group you created. if err := deleteResourceGroup(subscriptionId, cred); err != nil { log.Fatalf("Deletion of resource group failed: %+v", err) } log.Printf("Resource group deleted") }
Kodu çalıştırın ve çıkışı gözlemleyin.
go run .
2024/07/31 15:29:06 Resource group /subscriptions/<subscription ID>/resourceGroups/myResourceGroup created 2024/07/31 15:29:07 Resource Group /subscriptions/<subscription ID>/resourceGroups/myResourceGroup updated 2024/07/31 15:29:07 Your Azure subscription has a total of 8 resource groups 2024/07/31 15:30:25 Resource group deleted
Not
Kaynak grubunun silinmesi birkaç dakika sürebilir.
Sorun giderme
- Stack Overflow'a gönderilen önceki soruları denetleyin veya ve
Go
etiketleriniAzure
kullanarak yeni sorular sorun. - Karşılaşabileceğiniz tüm hatalar için bir GitHub Sorunu oluşturun