Share via


Azure Stack Hub에서 Java와 함께 API 버전 프로필 사용

중요

Java SDK가 트랙 1에서 트랙 2로 업데이트되었습니다. 가능한 한 빨리 트랙 2 SDK로 마이그레이션하는 것이 좋습니다. 지침은 이 마이그레이션 가이드를 참조하세요.

Azure Stack Hub용 Java SDK Resource Manager 인프라를 빌드하고 관리하는 데 도움이 되는 도구를 제공합니다. SDK의 리소스 공급자에는 컴퓨팅, 네트워킹, 스토리지, 앱 서비스 및 Azure Key Vault 포함됩니다. GitHub에서 하이브리드 Java 샘플 리포지토리 를 찾을 수 있습니다. 이 문서는 환경을 설정하고, 올바른 자격 증명을 얻고, 리포지토리를 잡고, Azure Stack Hub에서 리소스 그룹을 만드는 데 도움이 됩니다.

Java SDK를 사용하면 진정한 하이브리드 클라우드 개발자 환경을 사용할 수 있습니다. Java SDK에서 POM.xml 의 버전 종속성을 전환하면 글로벌 Azure 리소스 간을 Azure Stack Hub의 리소스로 전환하여 하이브리드 클라우드 개발을 가능하게 합니다.

최신 버전의 서비스를 사용하려면 최신 프로필을 종속성으로 사용합니다.

기존 com.azure.resourcemanager 종속성을 가져와서 Azure 압정 허브의 리소스에 앱을 대상으로 지정하고 버전을 에서 x.y.zx.y.z-hybrid로 변경할 수 있습니다. Azure Stack Hub에 대한 지원을 제공하는 하이브리드 패키지는 버전 끝에 접미사를 사용합니다 -hybrid (예 1.0.0-hybrid: ). 버전과 연결된 엔드포인트의 정적 컬렉션을 가리킵니다.

최신 프로필을 얻으려면 기존 com.azure.resourcemanager 종속성을 사용하고 버전을 최신 버전으로 변경합니다. 최신 프로필 Java 패키지는 Azure에서 일관된 환경을 제공합니다. 패키지는 Azure com.azure.resourcemanager와 동일한 그룹 ID를 공유합니다. 아티팩트 ID 및 네임스페이스도 글로벌 Azure와 동일합니다. 이렇게 하면 Azure 앱을 Azure Stack Hub로 포팅하는 데 도움이 됩니다. 하이브리드 프로필의 파로 Azure Stack Hub에서 사용되는 엔드포인트에 대한 자세한 내용은 API 프로필 요약을 참조하세요.

프로필은 Maven 프로젝트의 파일에 종속성으로 지정됩니다 pom.xml . .NET과 마찬가지로 드롭다운 목록에서 올바른 클래스를 선택하면 프로필이 모듈을 자동으로 로드합니다.

개발 환경 설정

SDK를 실행하기 위한 환경을 준비하려면 Eclipse 또는 Visual Studio Code 같은 IDE를 사용할 수 있지만 Git, Java SDK 및 Apache Maven이 설치되어 있어야 합니다. Java용 Azure SDK 사용에서 개발 환경 설정의 필수 구성 요소에 대한 세부 정보를 찾을 수 있습니다.

  1. Git를 설치합니다. Git 설치 공식 지침은 시작 - Git 설치에서 확인할 수 있습니다.

  2. Java SDK를 설치하고 환경 변수를 Java 개발 키트에 대한 이진 파일의 위치로 설정합니다 JAVA_HOME . OpenJDK에 대한 다운로드 가능한 설치 미디어 지침을 찾을 수 있습니다. Java 개발자 키트 버전 8 이상을 설치합니다.

  3. Apache Maven을 설치합니다. Apache Maven 프로젝트에서 지침을 찾을 수 있습니다. Apache Maven 설치는 3.0 이상입니다.

Java 및 API 버전 프로필

모든 서비스의 최신 버전을 사용하려면 최신 프로필을 종속성으로 사용합니다.

  • 최신 프로필을 사용하기 위해 종속성은 com.microsoft.azure입니다.

  • Azure Stack Hub에서 사용할 수 있는 지원되는 최신 서비스를 사용하려면 com.microsoft.azure.profile_2019_03_01_hybrid 프로필을 사용합니다.

    • 프로필은 Pom.xml 파일에서 종속성으로 지정되며, .NET과 마찬가지로 드롭다운 목록에서 올바른 클래스를 선택하면 모듈이 자동으로 로드됩니다.
  • 종속성은 다음과 같이 표시됩니다.

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  • 특정 리소스 공급자의 리소스 종류에 특정 API 버전을 사용하려면 Intellisense를 통해 정의된 특정 API 버전을 사용합니다.

동일한 앱에서 모든 옵션을 결합할 수 있습니다.

Azure Java SDK 설치

Java SDK를 설치하려면 다음 단계를 수행합니다.

  1. 공식 지침에 따라 Git을 설치합니다. 시작 - Git 설치를 참조하세요.

  2. 지침에 따라 Java SDKMaven을 설치합니다. 올바른 버전은 Java 개발자 키트 버전 8입니다. 올바른 버전의 Apache Maven은 3.0 이상입니다. 빠른 시작을 완료하려면 환경 변수를 JAVA_HOME Java 개발 키트의 설치 위치로 설정해야 합니다. 자세한 내용은 Java 및 Maven을 사용하여 첫 번째 함수 만들기를 참조하세요.

  3. 올바른 종속성 패키지를 설치하려면 Java 앱에서 Pom.xml 파일을 엽니다. 다음 코드와 같이 종속성을 추가합니다.

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  4. 설치해야 하는 패키지 집합은 사용하려는 프로필 버전에 따라 달라집니다. 프로필 버전의 패키지 이름은 다음과 같습니다.

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • 최신

Profiles

날짜가 포함된 프로필의 경우 다른 SDK 프로필 또는 버전을 사용하려면 의 com.microsoft.azure.profile<date>_hybrid날짜를 대체합니다. 예를 들어 2008 버전의 경우 프로필은 2019_03_01이고 문자열은 가 됩니다 com.microsoft.azure.profile_2019_03_01_hybrid. 경우에 따라 SDK 팀은 패키지의 이름을 변경하므로 문자열 날짜를 다른 날짜로 바꾸는 것만으로는 작동하지 않을 수 있습니다. 프로필 및 Azure Stack 버전의 연결은 다음 표를 참조하세요.

Azure Stack 버전 프로필
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Azure Stack Hub 및 API 프로필에 대한 자세한 내용은 API 프로필 요약을 참조하세요.

구독

아직 구독이 없는 경우 구독을 만들고 나중에 사용할 구독 ID를 저장합니다. 구독을 만드는 방법에 대한 자세한 내용은 이 문서를 참조하세요.

서비스 사용자

서비스 주체 및 관련 환경 정보를 만들고 어딘가에 저장해야 합니다. 역할이 있는 owner 서비스 주체가 권장되지만 샘플에 따라 역할로 contributor 충분할 수 있습니다. 필요한 값은 샘플 리포지토리 의 README를 참조하세요. 이러한 값은 JSON 파일(샘플에서 사용)과 같이 SDK 언어에서 지원하는 모든 형식으로 읽을 수 있습니다. 실행 중인 샘플에 따라 이러한 값을 모두 사용할 수 있는 것은 아닙니다. 업데이트된 샘플 코드 또는 자세한 내용은 샘플 리포지토리 를 참조하세요.

테넌트 ID

Azure Stack Hub의 디렉터리 또는 테넌트 ID를 찾으려면 이 문서의 지침을 따릅니다.

리소스 공급자 등록

이 문서에 따라 필수 리소스 공급자를 등록 합니다. 이러한 리소스 공급자는 실행하려는 샘플에 따라 필요합니다. 예를 들어 VM 샘플을 Microsoft.Compute 실행하려면 리소스 공급자 등록이 필요합니다.

Azure Stack 리소스 관리자 엔드포인트

ARM(Azure Resource Manager)은 관리자가 Azure 리소스를 배포, 관리 및 모니터링할 수 있는 관리 프레임워크입니다. Azure Resource Manager 이러한 작업을 단일 작업에서 개별적으로 처리하지 않고 그룹으로 처리할 수 있습니다. Resource Manager 엔드포인트에서 메타데이터 정보를 가져올 수 있습니다. 엔드포인트는 코드를 실행하는 데 필요한 정보가 포함된 JSON 파일을 반환합니다.

  • ASDK(Azure Stack Development Kit)의 ResourceManagerEndpointUrl 은 입니다 https://management.local.azurestack.external/.
  • 통합 시스템의 ResourceManagerEndpointUrl 은 입니다 https://management.region.<fqdn>/. 여기서 <fqdn> 는 정규화된 도메인 이름입니다.
  • 필요한 <ResourceManagerUrl>/metadata/endpoints?api-version=1.0메타데이터를 검색하려면 입니다. 사용 가능한 API 버전은 Azure rest API 사양을 참조하세요. 예를 들어 프로필 버전에서는 리소스 공급자 microsoft.resources2020-09-01 대해 를 api-version2019-10-01 로 변경할 수 있습니다.

JSON 샘플:

{
   "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"]
      }
}

Azure Stack Hub CA 루트 인증서 신뢰

ASDK(Azure Stack Development Kit)를 사용하는 경우 원격 머신에서 CA 루트 인증서를 신뢰해야 합니다. Azure Stack Hub 통합 시스템을 사용하여 CA 루트 인증서를 신뢰할 필요가 없습니다.

Windows

  1. Azure Stack Hub 자체 서명된 인증서를 데스크톱으로 내보냅니다.

  2. 명령 프롬프트에서 디렉터리를 로 변경합니다 %JAVA_HOME%\bin.

  3. 다음 명령 실행:

    .\keytool.exe -importcert -noprompt -file <location of the exported certificate here> -alias root -keystore %JAVA_HOME%\lib\security\cacerts -trustcacerts -storepass changeit
    

기존 API 프로필

  • com.microsoft.azure.profile_2019_03_01_hybrid: Azure Stack Hub용으로 빌드된 최신 프로필입니다. 1904 이상에 있는 한 서비스가 Azure Stack Hub와 가장 호환되도록 하려면 이 프로필을 사용합니다.

  • com.microsoft.azure.profile_2018_03_01_hybrid: Azure Stack Hub용으로 빌드된 프로필입니다. 서비스가 Azure Stack Hub 버전 1808 이상과 호환되도록 하려면 이 프로필을 사용합니다.

  • com.microsoft.azure: 모든 서비스의 최신 버전으로 구성된 프로필입니다. 모든 서비스의 최신 버전을 사용합니다.

Azure Stack Hub 및 API 프로필에 대한 자세한 내용은 API 프로필 요약을 참조하세요.

Azure Java SDK API 프로필 사용

다음 코드는 Azure Stack Hub에서 서비스 주체를 인증합니다. Azure Stack Hub와 관련된 테넌트 ID 및 인증 기반을 사용하여 토큰을 만듭니다.

AzureTokenCredentials credentials = new ApplicationTokenCredentials(client, tenant, key, AZURE_STACK)
                    .withDefaultSubscriptionID(subscriptionID);
Azure azureStack = Azure.configure()
                    .withLogLevel(com.microsoft.rest.LogLevel.BASIC)
                    .authenticate(credentials, credentials.defaultSubscriptionID());

이 코드를 사용하면 API 프로필 종속성을 사용하여 Azure Stack Hub에 앱을 성공적으로 배포할 수 있습니다.

Azure Stack Hub 환경 설정 함수 정의

Azure Stack Hub 클라우드를 올바른 엔드포인트에 등록하려면 다음 코드를 사용합니다.

// Get Azure Stack Hub cloud endpoints
final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);

AzureEnvironment AZURE_STACK = new AzureEnvironment(new HashMap<String, String>() {
                {
                    put("managementEndpointUrl", settings.get("audience"));
                    put("resourceManagerEndpointUrl", armEndpoint);
                    put("galleryEndpointUrl", settings.get("galleryEndpoint"));
                    put("activeDirectoryEndpointUrl", settings.get("login_endpoint"));
                    put("activeDirectoryResourceID", settings.get("audience"));
                    put("activeDirectoryGraphResourceID", settings.get("graphEndpoint"));
                    put("storageEndpointSuffix", armEndpoint.substring(armEndpoint.indexOf('.')));
                    put("keyVaultDnsSuffix", ".vault" + armEndpoint.substring(armEndpoint.indexOf('.')));
                }
            });

이전 코드의 호출은 getActiveDirectorySettings 메타데이터 엔드포인트에서 엔드포인트를 검색합니다. 호출의 환경 변수를 다음과 같이 명시합니다.

public static HashMap<String, String> getActiveDirectorySettings(String armEndpoint) {

    HashMap<String, String> adSettings = new HashMap<String, String>();
    try {

        // create HTTP Client
        HttpClient httpClient = HttpClientBuilder.create().build();

        // Create new getRequest with below mentioned URL
        HttpGet getRequest = new HttpGet(String.format("%s/metadata/endpoints?api-version=1.0",
                             armEndpoint));

        // Add additional header to getRequest which accepts application/xml data
        getRequest.addHeader("accept", "application/xml");

        // Execute request and catch response
        HttpResponse response = httpClient.execute(getRequest);

        // Check for HTTP response code: 200 = success
        if (response.getStatusLine().getStatusCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
        }

        String responseStr = EntityUtils.toString(response.getEntity());
        JSONObject responseJson = new JSONObject(responseStr);
        adSettings.put("galleryEndpoint", responseJson.getString("galleryEndpoint"));
        JSONObject authentication = (JSONObject) responseJson.get("authentication");
        String audience = authentication.get("audiences").toString().split("\"")[1];
        adSettings.put("login_endpoint", authentication.getString("loginEndpoint"));
        adSettings.put("audience", audience);
        adSettings.put("graphEndpoint", responseJson.getString("graphEndpoint"));

    } catch (ClientProtocolException cpe) {
        cpe.printStackTrace();
        throw new RuntimeException(cpe);
    } catch (IOException ioe) {
        ioe.printStackTrace();
        throw new RuntimeException(ioe);
    }
    return adSettings;
}

샘플 단위 테스트 프로젝트

  1. 다음 명령을 사용하여 리포지토리를 복제합니다.

    git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
    
  2. Azure 서비스 주체를 만들고 구독에 액세스할 역할을 할당합니다. 서비스 주체를 만드는 방법에 대한 지침은 Azure PowerShell 사용하여 인증서로 서비스 주체 만들기를 참조하세요.

  3. 다음과 같은 필수 환경 변수를 검색합니다.

    • AZURE_TENANT_ID
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_SUBSCRIPTION_ID
    • ARM_ENDPOINT
    • RESOURCE_LOCATION
  4. 명령 프롬프트를 사용하여 만든 서비스 주체에서 검색된 정보를 사용하여 다음 환경 변수를 설정합니다.

    • export AZURE_TENANT_ID={your tenant ID}
    • export AZURE_CLIENT_ID={your client ID}
    • export AZURE_CLIENT_SECRET={your client secret}
    • export AZURE_SUBSCRIPTION_ID={your subscription ID}
    • export ARM_ENDPOINT={your Azure Stack Hub Resource Manager URL}
    • export RESOURCE_LOCATION={location of Azure Stack Hub}

    Windows에서 내보내기 대신 집합을 사용합니다.

  5. 함수를 getActiveDirectorySettings 사용하여 Azure Resource Manager 메타데이터 엔드포인트를 검색합니다.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. Pom.xml 파일에서 다음 종속성을 추가하여 Azure Stack Hub에 대한 2019-03-01-hybrid 프로필을 사용합니다. 이 종속성은 컴퓨팅, 네트워킹, 스토리지, Key Vault 및 App Services 리소스 공급자에 대해 이 프로필과 연결된 모듈을 설치합니다.

    <dependency>
      <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
      <artifactId>azure</artifactId>
      <version>1.0.0-beta-1</version>
    </dependency>
    
  7. 환경 변수를 설정하기 위해 열려 있는 명령 프롬프트에서 다음 명령을 입력합니다.

    mvn clean compile exec:java
    

샘플

업데이트 날짜(트랙 2) 샘플 코드는 이 샘플 리포지토리 를 참조하세요. 트랙 1 샘플 코드는 이 샘플 리포지토리 를 참조하세요. 루트 README.md 는 일반적인 요구 사항을 설명하고 각 하위 디렉터리에는 해당 샘플을 실행하는 방법에 대한 고유한 README.md 특정 샘플이 포함되어 있습니다.

Azure Stack 버전 2008 또는 프로필 2019-03-01 에 적용되는 샘플은 여기를 참조하세요.

다음 단계

API 프로필에 대해 자세히 알아보세요.