Aracılığıyla paylaş


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:

Sonraki bölüme geçmeden önce abonelik kimliğinizi (Guid), kiracı kimliğinizi (Guid) ve hizmet sorumlusunun istemci/uygulama kimliğini (Guid) ve gizli anahtarını kaydettiğinizden emin olun.

2. Kimlik doğrulamayı ayarlama

Gereksinimlerinize uygun bir kimlik doğrulama yöntemi seçin. Sunucu ve yerel ortamlarda barındırılan uygulamalar için birden çok kimlik bilgisi içermeyen kimlik doğrulama yöntemi sunuyoruz. Go uygulamalarının Azure hizmetlerinde kimlik doğrulamasını sağlamak için Go için Azure SDK'sını kullanma makalesi, senaryonuz için en uygun kimlik doğrulama mekanizmasına karar vermenize yardımcı olacaktır.

3. Kaynak grubu oluşturma

  1. Örnek Go kodunu test edip çalıştırmak ve geçerli dizin olarak ayarlamak için bir dizin oluşturun.

  2. Geçerli dizinde bir modül oluşturmak için go mod init çalıştırın.

    go mod init <module_path>
    

    Önemli noktalar:

    • <module_path> parametresi genellikle github.com/<your_github_account_name>/<directory>gibi bir GitHub deposundaki bir konumdur.
    • Bir test olarak bir komut satırı uygulaması oluştururken ve uygulamayı yayımlamayacaksanız, <module_path>'ın gerçek bir konuma atıfta bulunmasına gerek yoktur.
  3. go get komutunu çalıştırarak Go için gerekli olan 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üne yönelik paketler sdk/**/arm**konumunda bulunur. Yönetim kitaplıklarının önceki sürümünün paketleri /servicesaltında bulunur. Eski sürümü kullanıyorsanız Go için Azure SDK Geçiş Kılavuzubakın.

  4. main.go adlı 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    = "<your_subscription_id>"
    	location          = "<your_region>"
    	resourceGroupName = "<your_resource_group_name>" // !! 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ğeri AZURE_SUBSCRIPTION_ID ortam değişkeninden alınır.
    • location ve resourceGroupName dizeleri değerleri test etmek için ayarlanır. Gerekirse bu değerleri konumunuza ve aboneliğinize uygun bir değerle değiştirin.
  5. go mod tidy komutunu, kaynak kodunuz temelinde go.mod dosyasındaki bağımlılıkları temizlemek için çalıştırın.

    go mod tidy
    
  6. Uygulamayı derlemek ve çalıştırmak için go run çalıştırın.

    go run .
    

4. Sonuçları doğrulayın

  1. Azure portalgidin ve göz atın.

  2. Oturum açın ve Azure aboneliğinizi seçin.

  3. Sol menüde kaynak gruplarıseçin.

  4. Yeni kaynak grubu, Azure aboneliğinizin kaynak grupları arasında listelenir.

5. Kaynak grubunu güncelleştirme

  1. main.go dosyanıza dönün.

  2. aşağıdaki kodu main işlevinin 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

  1. main.go dosyanıza dönün.

  2. aşağıdaki kodu main işlevinin 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

  1. main.go dosyanıza dönün.

  2. aşağıdaki kodu main işlevinin 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 main.go kodu 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:

  1. main.goiçinde, main işlevini aşağıdaki kodla değiştirin:

    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")
    }
    
  2. 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

Sonraki adımlar

Go için Azure SDK'sını kullanma hakkında daha fazla bilgi edinin