Bagikan melalui


Mengelola grup sumber daya dengan Azure SDK for Go

Dalam artikel ini, Anda mempelajari cara membuat dan mengelola grup sumber daya dengan pustaka manajemen Azure SDK for Go.

1. Siapkan sumber daya Azure

Untuk menyelesaikan langkah-langkah dalam artikel ini, Anda memerlukan sumber daya dan pengidentifikasi Azure berikut ini:

  • Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

  • Dapatkan ID langganan Azure.

  • Dapatkan ID penyewa Microsoft Entra.

  • Buat perwakilan layanan. Perhatikan ID aplikasi (klien) dan rahasia dari service principal. Pastikan Anda juga mengikuti instruksi untuk menetapkan peran Kontributor pada langganan Anda ke aplikasi. Peran Kontributor adalah peran administrator istimewa yang memberikan izin untuk mengelola semua sumber daya dalam langganan Anda.

Sebelum beralih ke bagian berikutnya, pastikan Anda telah mencatat ID langganan (Guid), ID penyewa (Guid), dan ID klien/aplikasi (Guid) dan rahasia untuk perwakilan layanan Anda.

2. Menyiapkan autentikasi

Pilih metode autentikasi yang sesuai dengan kebutuhan Anda. Kami menawarkan beberapa metode autentikasi bebas kredensial untuk aplikasi yang dihosting di lingkungan server dan lokal. Mengautentikasi aplikasi Go ke layanan Azure dengan menggunakan artikel Azure SDK for Go akan membantu Anda memutuskan mekanisme autentikasi mana yang paling cocok untuk skenario Anda.

3. Membuat grup sumber daya

  1. Buat direktori untuk menguji dan menjalankan kode Go sampel dan menjadikannya direktori saat ini.

  2. Jalankan init mod go untuk membuat modul di direktori saat ini.

    go mod init <module_path>
    

    Poin-poin penting:

    • Parameter <module_path> umumnya adalah lokasi dalam repositori GitHub - seperti github.com/<your_github_account_name>/<directory>.
    • Saat Anda membuat aplikasi baris perintah untuk pengujian dan tidak akan mempublikasikannya, <module_path> tidak perlu merujuk ke lokasi yang sebenarnya.
  3. Jalankan go get untuk mengunduh, membangun, dan menginstal modul Azure SDK untuk Go yang diperlukan.

    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
    

    Penting

    Paket untuk versi pustaka manajemen sumber daya Azure saat ini terletak di sdk/**/arm**. Paket untuk versi pustaka manajemen sebelumnya terletak di bawah /services. Jika Anda menggunakan versi yang lebih lama, lihat Panduan Migrasi Azure SDK for Go.

  4. Buat file bernama main.go dan tambahkan kode berikut. Setiap bagian kode dikomentari untuk menjelaskan tujuannya.

    package main
    
    // Import key modules.
    import (
        "context"
        "log"
    
        "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)
    }
    

    String location dan resourceGroupName diatur untuk menguji nilai. Jika perlu, ubah nilai tersebut menjadi sesuatu yang sesuai untuk lokasi dan langganan Anda.

  5. Jalankan go mod tidy untuk membersihkan dependensi dalam go.mod file berdasarkan kode sumber Anda.

    go mod tidy
    
  6. Jalankan go run untuk membuat dan menjalankan aplikasi.

    go run .
    

4. Verifikasi hasilnya

  1. Telusuri ke portal Microsoft Azure.

  2. Masuk dan pilih langganan Azure Anda.

  3. Di menu sebelah kiri, pilih Grup sumber daya.

  4. Grup sumber daya baru tercantum di antara grup sumber daya langganan Azure Anda.

5. Memperbarui grup sumber daya

  1. Kembali ke file Anda main.go .

  2. Sisipkan kode berikut tepat di atas fungsi main.

    // 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)
    }
    

Setelah Anda menambahkan kode, lanjutkan ke bagian berikutnya. Anda menjalankan kode di bagian selanjutnya.

6. Mencantumkan grup sumber daya langganan Azure

  1. Kembali ke file Anda main.go .

  2. Sisipkan kode berikut tepat di atas fungsi main.

    // 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
    }
    

Setelah Anda menambahkan kode, lanjutkan ke bagian berikutnya. Anda menjalankan kode di bagian selanjutnya.

7. Menghapus grup sumber daya

  1. Kembali ke file Anda main.go .

  2. Sisipkan kode berikut tepat di atas fungsi main.

    // 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
    }
    

Setelah Anda menambahkan kode, lanjutkan ke bagian berikutnya. Anda menjalankan kode di bagian selanjutnya.

8. Perbarui fungsi utama

Di bagian sebelumnya, Anda menambahkan kode untuk main.go membuat, memperbarui, dan menghapus grup sumber daya. Anda juga menambahkan kode untuk mencantumkan semua grup sumber daya dalam langganan Azure. Untuk menjalankan semua fungsi ini secara berurutan:

  1. Di main.go, ganti main fungsi dengan kode berikut:

    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. Jalankan kode dan amati output.

    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
    

    Nota

    Menghapus grup sumber daya mungkin memakan waktu beberapa menit.

Troubleshooting

Langkah selanjutnya