다음을 통해 공유


Go용 Azure SDK 관리 라이브러리 개요

Go용 Azure SDK란?문서에 설명된 대로 Azure SDK for Go에는 관리 및 클라이언트 라이브러리 집합이 포함되어 있습니다. 관리 라이브러리는 Azure ID 지원, HTTP 파이프라인 및 오류 처리와 같은 많은 기능을 공유합니다. Go용 Azure SDK 모듈 페이지에서 관리 라이브러리 의 전체 목록을 찾을 수 있습니다.

이 문서에서는 관리 라이브러리를 사용하여 Azure 리소스와 상호 작용하는 방법의 기본 단계를 알아봅니다.

Go 패키지 설치

대부분의 프로젝트에서는 버전 관리 및 종속성 관리를 위해 Go 패키지를 설치합니다.

Go 패키지를 설치하려면 명령을 사용합니다 go get .

예를 들어 패키지를 설치 armcompute 하려면 명령줄에서 다음을 실행합니다.

go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute

대부분의 Go 앱에서는 인증을 위해 다음 패키지를 설치합니다.

  • github.com/Azure/azure-sdk-for-go/sdk/azcore/to
  • github.com/Azure/azure-sdk-for-go/sdk/azidentity

Go 코드로 패키지 가져오기

다운로드되면 import 문을 통해 패키지를 앱으로 가져옵니다.

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"
)

Azure에 인증

Azure 구독에 대해 코드를 실행하려면 Azure에 인증해야 합니다. azidentity 패키지는 Azure에 인증하는 여러 옵션을 지원합니다. 이러한 옵션에는 클라이언트/비밀, 인증서 및 관리 ID가 포함됩니다.

기본 인증 옵션은 이 문서의 앞부분에서 설정한 환경 변수를 사용하는 DefaultAzureCredential입니다. Go 코드에서는 다음과 같이 개체를 azidentity 만듭니다.

cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
  // handle error
}

리소스 관리 클라이언트 만들기

Azure ID의 자격 증명이 있으면 대상 Azure 서비스에 연결할 클라이언트를 만듭니다.

예를 들어 Azure Compute 서비스에 연결하려는 경우를 가정해 보겠습니다. 컴퓨팅 패키지하나 이상의 클라이언트로 구성됩니다. 클라이언트는 지정된 구독 내에서 해당 기능에 대한 액세스를 제공하는 관련 API 집합을 그룹화합니다. 필요한 API에 액세스하기 위해 하나 이상의 클라이언트를 만듭니다.

다음 코드 조각 에서 armcompute입니다. NewVirtualMachinesClient 형식 은 가상 머신을 관리하는 클라이언트를 만드는 데 사용됩니다.

client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

동일한 패턴은 다른 Azure 서비스와 연결하는 데 사용됩니다. 예를 들어 armnetwork 패키지를 설치하고 VNET(가상 네트워크) 리소스를 관리하는 VirtualNetwork 클라이언트를 만듭니 다.

client, err := armnetwork.NewVirtualNetworksClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

코드 샘플:

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

Go용 Azure SDK 참조 설명서 사용

인스턴스화된 클라이언트는 Azure 리소스에 대한 API 호출을 수행하는 데 사용됩니다. 리소스 관리 시나리오에서 대부분의 사용 사례는 CRUD(만들기/읽기/업데이트/삭제) 작업입니다.

특정 형식에 대한 작업을 조회하려면 다음 단계를 수행합니다.

  1. Go용 Azure SDK 참조 설명서로 이동합니다.
  2. 패키지를 검색합니다. (누르기 <Ctrl+F> 는 검색을 위해 페이지의 모든 노드를 자동으로 확장합니다.)
  3. 패키지를 선택합니다.
  4. 패키지의 페이지에서 형식을 검색합니다.
  5. Go 코드에서 형식의 설명 및 사용량에 대한 정보를 읽습니다.

패키지 이름을 추가하여 URL을 수동으로 빌드할 수도 있습니다 github.com/Azure/azure-sdk-for-go/sdk/.

예를 들어 compute/armcompute 참조 설명서를 찾는 경우 URL은 github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute입니다.

다음 예제에서는 Azure 리소스 그룹 작업에 대한 참조 설명서를 찾는 방법을 보여 줍니다.

  1. pkg.go.dev 대한 기본 Azure SDK for Go 참조 설명서를 찾습니다.
  2. Ctrl+F>를 클릭하고 <를 입력합니다resourcemanager/resources/armresources. 검색어를 입력하면 리소스/armresources 패키지와 거의 일치하는 항목이 표시됩니다 .
  3. 애플리케이션에 적합한 패키지를 선택합니다.
  4. "시작" 섹션을 읽거나 특정 작업을 검색합니다. 예를 들어 "resourcegroupsclient.create"(리소스 그룹을 만들려는 경우)라는 용어를 검색하면 CreateOrUpdate 함수연결됩니다.
  5. 이 시점에서 API를 호출하여 Azure 리소스 그룹을 만드는 방법을 읽을 수 있습니다.

장기 실행 작업

일부 작업은 완료하는 데 시간이 오래 걸릴 수 있기 때문에 관리 라이브러리에는 비동기 호출을 통해 LRO(장기 실행 작업)를 지원하는 함수가 포함되어 있습니다. 이러한 함수 이름은 Begin으로 시작합니다. 이 패턴의 예는 다음과 같습니다 BeginCreateBeginDelete.

이러한 함수는 비동기이므로 함수가 작업을 완료할 때까지 코드가 차단되지 않습니다. 대신 이 함수는 폴러 개체를 즉시 반환합니다. 그런 다음 코드는 원래 비동기 함수가 완료될 때 반환되는 동기 폴러 함수를 호출합니다.

다음은 이 패턴의 예제를 보여주는 코드 조각입니다.

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.

주요 정보:

  • 이 함수에는 PollUntilDone 상태를 가져오는 빈도를 지정하는 폴링 간격이 필요합니다.
  • 간격은 일반적으로 짧습니다. 권장되는 간격은 특정 Azure 리소스에 대한 설명서를 참조하세요.
  • Go Azure SDK 디자인 지침 페이지의 LRO 섹션에는 LRO에 대한 이동 고급 예제 및 일반 지침이 있습니다.

다음 단계