Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
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
Buat direktori untuk menguji dan menjalankan kode Go sampel dan menjadikannya direktori saat ini.
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 - sepertigithub.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.
- Parameter
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/armresourcesPenting
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.Buat file bernama
main.godan 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
locationdanresourceGroupNamediatur untuk menguji nilai. Jika perlu, ubah nilai tersebut menjadi sesuatu yang sesuai untuk lokasi dan langganan Anda.Jalankan go mod tidy untuk membersihkan dependensi dalam
go.modfile berdasarkan kode sumber Anda.go mod tidyJalankan
go rununtuk membuat dan menjalankan aplikasi.go run .
4. Verifikasi hasilnya
Telusuri ke portal Microsoft Azure.
Masuk dan pilih langganan Azure Anda.
Di menu sebelah kiri, pilih Grup sumber daya.
Grup sumber daya baru tercantum di antara grup sumber daya langganan Azure Anda.
5. Memperbarui grup sumber daya
Kembali ke file Anda
main.go.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
Kembali ke file Anda
main.go.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
Kembali ke file Anda
main.go.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:
Di
main.go, gantimainfungsi 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") }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 deletedNota
Menghapus grup sumber daya mungkin memakan waktu beberapa menit.
Troubleshooting
- Periksa pertanyaan sebelumnya yang diposting ke Stack Overflow atau ajukan
Azurepertanyaan baru menggunakan tag danGo. - Untuk kesalahan apa pun yang Anda temui, ajukan Masalah GitHub