Azure Stack Hub의 .NET에서 API 버전 프로필 사용Use API version profiles with .NET in Azure Stack Hub

Azure Stack 허브에 대 한 .NET SDK 리소스 관리자는 인프라를 빌드하고 관리 하는 데 도움이 되는 도구를 제공 합니다.The .NET SDK for the Azure Stack Hub Resource Manager provides tools to help you build and manage your infrastructure. SDK의 리소스 공급자에는 계산, 네트워킹, 저장소, App Services 및 Key Vault있습니다.Resource providers in the SDK include Compute, Networking, Storage, App Services, and Key Vault. .NET SDK는 14 개의 NuGet 패키지를 포함 합니다.The .NET SDK includes 14 NuGet packages. 프로젝트를 컴파일할 때마다 이러한 패키지를 솔루션에 다운로드 해야 합니다.You must download these packages to your solution every time you compile your project. 그러나 앱에 대 한 메모리를 최적화 하기 위해 2019-03-01-하이브리드 또는 2018-03-01-하이브리드 버전에 사용할 리소스 공급자를 특별히 다운로드할 수 있습니다.However, you can specifically download which resource provider you'll use for the 2019-03-01-hybrid or 2018-03-01-hybrid versions in order to optimize the memory for your app. 각 패키지는 리소스 공급자, 해당 API 버전 및 자신이 속한 API 프로필로 구성 됩니다.Each package consists of a resource provider, the respective API version, and the API profile to which it belongs. .NET SDK의 API 프로필은 Azure Stack Hub의 글로벌 Azure 리소스와 리소스 간을 전환 하는 데 도움이 되는 하이브리드 클라우드 개발을 가능 하 게 합니다.API profiles in the .NET SDK enable hybrid cloud development by helping you switch between global Azure resources and resources on Azure Stack Hub.

.NET 및 API 버전 프로필.NET and API version profiles

API 프로필은 리소스 공급자와 API 버전의 조합입니다.An API profile is a combination of resource providers and API versions. API 프로필을 사용 하 여 리소스 공급자 패키지에서 각 리소스 종류의 가장 안정적인 최신 버전을 가져옵니다.Use an API profile to get the latest, most stable version of each resource type in a resource provider package.

  • 최신 버전의 모든 서비스를 활용 하려면 패키지의 최신 프로필을 사용 합니다.To make use of the latest versions of all the services, use the latest profile of the packages. 이 프로필은 Microsoft Azure. Management NuGet 패키지의 일부입니다.This profile is part of the Microsoft.Azure.Management NuGet package.

  • Azure Stack Hub와 호환 되는 서비스를 사용 하려면 다음 패키지 중 하나를 사용 합니다.To use the services compatible with Azure Stack Hub, use one of the following packages:

    • _> ResourceProvider. 2019 _ 03 _ 01. <0.9.0-nupkg.Microsoft.Azure.Management.Profiles.hybrid_2019_03_01.<ResourceProvider>.0.9.0-preview.nupkg
    • _> ResourceProvider. 2018 _ 03 _ 01. <0.9.0-nupkg.Microsoft.Azure.Management.Profiles.hybrid_2018_03_01.<ResourceProvider>.0.9.0-preview.nupkg

    위의 NuGet 패키지의 ResourceProvider 부분이 올바른 공급자로 변경 되었는지 확인 합니다.Ensure that the ResourceProvider portion of the above NuGet package is changed to the correct provider.

  • 최신 API 버전의 서비스를 사용 하려면 특정 NuGet 패키지의 최신 프로필을 사용 합니다.To use the latest API version of a service, use the Latest profile of the specific NuGet package. 예를 들어, 계산 서비스의 최신 API 버전을 사용 하려는 경우 계산 패키지의 최신 프로필을 사용 합니다.For example, if you want to use the latest-API version of the Compute service alone, use the latest profile of the Compute package. 최신 프로필은 Microsoft Azure. Management NuGet 패키지의 일부입니다.The latest profile is part of the Microsoft.Azure.Management NuGet package.

  • 특정 리소스 공급자에서 리소스 유형에 특정 API 버전을 사용 하려면 패키지 내에 정의 된 특정 API 버전을 사용 합니다.To use specific API versions for a resource type in a specific resource provider, use the specific API versions defined inside the package.

동일한 응용 프로그램의 모든 옵션을 결합할 수 있습니다.You can combine all of the options in the same application.

Azure .NET SDK 설치Install the Azure .NET SDK

  • Git를 설치합니다.Install Git. 지침은 시작-Git 설치를 참조 하세요.For instructions, see Getting Started - Installing Git.

  • 올바른 NuGet 패키지를 설치 하려면 패키지 찾기 및 설치를 참조 하세요.To install the correct NuGet packages, see Finding and installing a package.

  • 설치 해야 하는 패키지는 사용 하려는 프로필 버전에 따라 달라 집니다.The packages that need to be installed depend on the profile version you want to use. 프로필 버전에 대 한 패키지 이름은 다음과 같습니다.The package names for the profile versions are:

    • _> ResourceProvider. 2019 _ 03 _ 01. <0.9.0-nupkg.Microsoft.Azure.Management.Profiles.hybrid_2019_03_01.<ResourceProvider>.0.9.0-preview.nupkg

    • _> ResourceProvider. 2018 _ 03 _ 01. <0.9.0-nupkg.Microsoft.Azure.Management.Profiles.hybrid_2018_03_01.<ResourceProvider>.0.9.0-preview.nupkg

  • Visual Studio Code에 대 한 올바른 NuGet 패키지를 설치 하려면 Nuget 패키지 관리자 지침을 다운로드 하려면 다음 링크를 참조 하세요.To install the correct NuGet packages for Visual Studio Code, see the following link to download the NuGet Package Manager instructions.

  • 사용할 수 없는 경우 구독을 만들고 나중에 사용할 구독 ID를 저장 합니다.If not available, create a subscription and save the subscription ID to be used later. 구독을 만드는 방법에 대 한 자세한 내용은 [Azure Stack Hub의 제안에 구독 만들기][]를 참조 하세요.For information about how to create a subscription, see Create subscriptions to offers in Azure Stack Hub.

  • 서비스 주체를 만들고 클라이언트 ID와 클라이언트 암호를 저장 합니다.Create a service principal and save the client ID and the client secret. Azure Stack Hub에 대 한 서비스 주체를 만드는 방법에 대 한 자세한 내용은 응용 프로그램에 Azure Stack 허브에 대 한 액세스 제공을 참조 하세요.For information about how to create a service principal for Azure Stack Hub, see Provide applications access to Azure Stack Hub. 클라이언트 ID는 서비스 사용자를 만들 때 응용 프로그램 ID 라고도 합니다.The client ID is also known as the application ID when creating a service principal.

  • 서비스 사용자에 게 구독에 대 한 참가자/소유자 역할이 있는지 확인 합니다.Make sure your service principal has the contributor/owner role on your subscription. 서비스 주체에 역할을 할당 하는 방법에 대 한 자세한 내용은 응용 프로그램에 Azure Stack 허브에 대 한 액세스 제공을 참조 하세요.For information about how to assign a role to service principal, see Provide applications access to Azure Stack Hub.

사전 요구 사항Prerequisites

Azure Stack Hub를 사용 하 여 .NET Azure SDK를 사용 하려면 다음 값을 제공 하 고 환경 변수를 사용 하 여 값을 설정 해야 합니다.To use the .NET Azure SDK with Azure Stack Hub, you must supply the following values, and then set the values with environment variables. 환경 변수를 설정 하려면 특정 운영 체제에 대 한 표 다음에 나오는 지침을 참조 하세요.To set the environmental variables, see the instructions following the table for your specific operating system.

Value 환경 변수Environment variables DescriptionDescription
테넌트 IDTenant ID AZURE_TENANT_ID Azure Stack Hub [테 넌 트 ID][]의 값입니다.The value of your Azure Stack Hub [tenant ID][].
클라이언트 IDClient ID AZURE_CLIENT_ID 이 문서의 이전 섹션에서 서비스 주체를 만들었을 때 저장 된 서비스 주체 앱 ID입니다.The service principal app ID saved when the service principal was created in the previous section of this article.
구독 IDSubscription ID AZURE_SUBSCRIPTION_ID [구독 ID][] 는 Azure Stack 허브의 제품에 액세스 하는 방법입니다.The [subscription ID][] is how you access offers in Azure Stack Hub.
클라이언트 암호Client Secret AZURE_CLIENT_SECRET 서비스 주체를 만들 때 저장 된 서비스 주체 앱 비밀입니다.The service principal app secret saved when the service principal was created.
리소스 관리자 끝점Resource Manager Endpoint ARM_ENDPOINT [Azure Stack 허브 리소스 관리자 끝점을][]참조 하세요.See [the Azure Stack Hub Resource Manager endpoint][].
위치Location RESOURCE_LOCATION Azure Stack 허브의 위치입니다.Location of Azure Stack Hub.

Azure Stack Hub에 대 한 테 넌 트 ID를 찾으려면 이 문서의지침을 따르세요.To find the tenant ID for your Azure Stack Hub, follow the instructions in this article. 환경 변수를 설정 하려면 다음을 수행 합니다.To set your environment variables, do the following:

WindowsWindows

Windows 명령 프롬프트에서 환경 변수를 설정 하려면 다음 형식을 사용 합니다.To set the environment variables in a Windows command prompt, use the following format:

set Azure_Tenant_ID=Your_Tenant_ID

MacOS, Linux 및 Unix 기반 시스템MacOS, Linux, and Unix-based systems

Unix 기반 시스템에서 다음 명령을 사용 합니다.In Unix-based systems, use the following command:

export Azure_Tenant_ID=Your_Tenant_ID

Azure Stack 허브 리소스 관리자 끝점The Azure Stack Hub Resource Manager endpoint

Azure Resource Manager는 관리자가 Azure 리소스를 배포, 관리 및 모니터링할 수 있도록 하는 관리 프레임 워크입니다.Azure Resource Manager is a management framework that enables administrators to deploy, manage, and monitor Azure resources. 이러한 작업을 단일 작업으로 개별적으로 처리 하는 것이 아니라 그룹으로 처리할 수 Azure Resource Manager.Azure Resource Manager can handle these tasks as a group, rather than individually, in a single operation.

리소스 관리자 끝점에서 메타 데이터 정보를 가져올 수 있습니다.You can get the metadata info from the Resource Manager endpoint. 끝점은 코드를 실행 하는 데 필요한 정보가 포함 된 JSON 파일을 반환 합니다.The endpoint returns a JSON file with the info required to run your code.

다음 고려 사항에 유의하세요.Note the following considerations:

  • ASDK Azure Stack Development Kit의 ResourceManagerUrlhttps://management.local.azurestack.external/ 입니다.The ResourceManagerUrl in the Azure Stack Development Kit (ASDK) is: https://management.local.azurestack.external/.

  • 통합 시스템의 ResourceManagerUrl 는 이며 https://management.region.<fqdn>/ , 여기서은 정규화 된 <fqdn> 도메인 이름입니다.The ResourceManagerUrl in integrated systems is: https://management.region.<fqdn>/, where <fqdn> is your fully qualified domain name. 필요한 메타 데이터를 검색 하려면 <ResourceManagerUrl>/metadata/endpoints?api-version=1.0 :To retrieve the metadata required: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0.

샘플 JSON 파일:Sample JSON file:

{
   "galleryEndpoint": "https://portal.local.azurestack.external:30015/",
   "graphEndpoint": "https://graph.windows.net/",
   "portal Endpoint": "https://portal.local.azurestack.external/",
   "authentication": 
      {
         "loginEndpoint": "https://login.windows.net/",
         "audiences": ["https://management.yourtenant.onmicrosoft.com/3cc5febd-e4b7-4a85-a2ed-1d730e2f5928"]
      }
}

기존 API 프로필Existing API profiles

  • _ _> ResourceProvider 2019 03 _ 01. <0.9.0 nupkg: Azure Stack 허브 용으로 빌드된 최신 프로필입니다.Microsoft.Azure.Management.Profiles.hybrid_2019_03_01.<ResourceProvider>.0.9.0-preview.nupkg: Latest profile built for Azure Stack Hub. 1904 이상 버전을 사용 하는 경우 서비스에 대해이 프로필을 사용 하 여 Azure Stack 허브와 가장 잘 호환 됩니다.Use this profile for services to be most compatible with Azure Stack Hub, as long as you're on version 1904 or later.

  • _ _ ResourceProvider 2018 03 _ 01. <0.9.0>. nupkg: 버전의 서비스에 대해이 프로필을 사용 하 여 버전 1808 이상에 대 한 Azure Stack 허브와 호환 됩니다.Microsoft.Azure.Management.Profiles.hybrid_2018_03_01.<ResourceProvider>.0.9.0-preview.nupkg: Use this profile for services to be compatible with Azure Stack Hub for versions 1808 or later.

  • 최신: 모든 서비스의 최신 버전으로 구성 된 프로필입니다.Latest: Profile consisting of the latest versions of all services. 모든 서비스의 최신 버전을 사용 합니다.Use the latest versions of all the services. 이 프로필은 Microsoft Azure. Management NuGet 패키지의 일부입니다.This profile is part of the Microsoft.Azure.Management NuGet package.

Azure Stack 허브 및 API 프로필에 대 한 자세한 내용은 [api 프로필 요약][]을 참조 하세요.For more information about Azure Stack Hub and API profiles, see the [Summary of API profiles][].

Azure .NET SDK API 프로필 사용Azure .NET SDK API profile usage

다음 코드를 사용 하 여 리소스 관리 클라이언트를 인스턴스화합니다.Use the following code to instantiate a resource management client. 다른 리소스 공급자 클라이언트 (예: 계산, 네트워크 및 저장소)를 인스턴스화하는 데 비슷한 코드를 사용할 수 있습니다.Similar code can be used to instantiate other resource provider clients (such as Compute, Network, and Storage).

var client = new ResourceManagementClient(armEndpoint, credentials)
{
    SubscriptionId = subscriptionId;
};

credentials이 코드의 매개 변수는 클라이언트를 인스턴스화하는 데 필요 합니다.The credentials parameter in this code is required to instantiate a client. 다음 코드는 테 넌 트 ID 및 서비스 주체로 인증 토큰을 생성 합니다.The following code generates an authentication token by the tenant ID and the service principal:

var azureStackSettings = getActiveDirectoryServiceSettings(armEndpoint);
var credentials = ApplicationTokenProvider.LoginSilentAsync(tenantId, servicePrincipalId, servicePrincipalSecret, azureStackSettings).GetAwaiter().GetResult();

getActiveDirectoryServiceSettings코드의 호출은 메타 데이터 끝점에서 Azure Stack 허브 끝점을 검색 합니다.The getActiveDirectoryServiceSettings call in the code retrieves Azure Stack Hub endpoints from the metadata endpoint. 호출에서 환경 변수를 명시 합니다.It states the environment variables from the call that's made:

public static ActiveDirectoryServiceSettings getActiveDirectoryServiceSettings(string armEndpoint)
{
    var settings = new ActiveDirectoryServiceSettings();
    try
    {
        var request = (HttpWebRequest)HttpWebRequest.Create(string.Format("{0}/metadata/endpoints?api-version=1.0", armEndpoint));
        request.Method = "GET";
        request.UserAgent = ComponentName;
        request.Accept = "application/xml";
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (StreamReader sr = new StreamReader(response.GetResponseStream()))
            {
                var rawResponse = sr.ReadToEnd();
                var deserialized = JObject.Parse(rawResponse);
                var authenticationObj = deserialized.GetValue("authentication").Value<JObject>();
                var loginEndpoint = authenticationObj.GetValue("loginEndpoint").Value<string>();
                var audiencesObj = authenticationObj.GetValue("audiences").Value<JArray>();
                settings.AuthenticationEndpoint = new Uri(loginEndpoint);
                settings.TokenAudience = new Uri(audiencesObj[0].Value<string>());
                settings.ValidateAuthority = loginEndpoint.TrimEnd('/').EndsWith("/adfs", StringComparison.OrdinalIgnoreCase) ? false : true;
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(String.Format("Could not get AD service settings. Exception: {0}", ex.Message));
    }
    return settings;
}

이러한 단계를 통해 API 프로필 NuGet 패키지를 사용 하 여 응용 프로그램을 Azure Stack 허브에 성공적으로 배포할 수 있습니다.These steps enable you to use the API profile NuGet packages to deploy your application successfully to Azure Stack Hub.

API 프로필을 사용 하는 샘플Samples using API Profiles

.NET 및 Azure Stack Hub API 프로필을 사용 하 여 솔루션을 만들기 위한 참조로 다음 샘플을 사용할 수 있습니다.You can use the following samples as a reference for creating solutions with .NET and the Azure Stack Hub API profiles:

다음 단계Next steps

API 프로필에 대해 자세히 알아보세요.Learn more about API profiles: