Von Bedeutung
Java SDK がトラック 1 からトラック 2 に更新されました。 できるだけ早く track 2 SDK に移行することをお勧めします。 手順については、 この移行ガイドを参照してください。
Azure Stack Hub Resource Manager 用の Java SDK には、インフラストラクチャの構築と管理に役立つツールが用意されています。 SDK のリソース プロバイダーには、コンピューティング、ネットワーク、ストレージ、アプリ サービス、Azure Key Vault が含まれます。 ハイブリッド Java サンプル リポジトリは、GitHub にあります。 この記事は、環境の設定、適切な資格情報の取得、リポジトリの取得、Azure Stack Hub でのリソース グループの作成に役立ちます。
Java SDK を使用すると、真のハイブリッド クラウド開発者エクスペリエンスを実現できます。 Java SDK の POM.xml でバージョンの依存関係を切り替えると、グローバル Azure リソースを Azure Stack Hub 内のリソースに切り替えるのに役立つハイブリッド クラウド開発が可能になります。
最新バージョンのサービスを使用するには、依存関係として 最新 のプロファイルを使用します。
既存の com.azure.resourcemanager 依存関係を取得し、バージョンを x.y.z から x.y.z-hybrid に変更することで、アプリのターゲットを Azure のリソースに設定できます。 Azure Stack Hub のサポートを提供するハイブリッド パッケージでは、1.0.0-hybridなど、バージョンの最後に -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 がインストールされている必要があります。 開発環境のセットアップの前提条件の詳細については、Azure SDK for Java の使用に関するページを参照してください。
Git をインストールします。 Git をインストールする公式の手順については、「 作業の開始 - Git のインストール」を参照してください。
Java SDK をインストールし、
JAVA_HOME環境変数を Java Development Kit のバイナリの場所に設定します。 OpenJDK のダウンロード可能なインストール メディアの手順を確認できます。 Java Developer Kit のバージョン 8 以上をインストールします。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 をインストールするには、次の手順に従います。
公式の指示に従って Git をインストールします。 「 作業の開始 - Git のインストール」を参照してください。
指示に従って 、Java SDK と Maven をインストールします。 正しいバージョンは Java Developer Kit のバージョン 8 です。 Apache Maven の正しいバージョンは 3.0 以上です。 クイック スタートを完了するには、
JAVA_HOME環境変数を Java 開発キットのインストール場所に設定する必要があります。 詳細については、「 Java と Maven を使用して最初の関数を作成する」を参照してください。適切な依存関係パッケージをインストールするには、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>インストールする必要があるパッケージのセットは、使用するプロファイルのバージョンによって異なります。 プロファイル バージョンのパッケージ名は次のとおりです。
- com.microsoft.azure.profile_2019_03_01_hybrid
-
com.microsoft.azure
- 最新
プロフィール
日付を含むプロファイルの場合、別の 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 Resource Manager エンドポイント
Azure Resource Manager (ARM) は、管理者が Azure リソースをデプロイ、管理、監視できるようにする管理フレームワークです。 Azure Resource Manager では、これらのタスクを 1 回の操作で個別に処理するのではなく、グループとして処理できます。 Resource Manager エンドポイントからメタデータ情報を取得できます。 エンドポイントは、コードの実行に必要な情報を含む JSON ファイルを返します。
- Azure Stack Development Kit (ASDK) の ResourceManagerEndpointUrl は、
https://management.local.azurestack.external/です。 - 統合システムの ResourceManagerEndpointUrl は
https://management.region.<fqdn>/で、<fqdn>は完全修飾ドメイン名です。 - 必要なメタデータを取得するには:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0。 使用可能な API バージョンについては、 Azure rest API の仕様を参照してください。 たとえば、2020-09-01プロファイル バージョンでは、リソース プロバイダーのapi-versionの2019-10-01をmicrosoft.resourcesに変更できます。
サンプル 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 ルート証明書を信頼する
Azure Stack Development Kit (ASDK) を使用している場合は、リモート コンピューター上の CA ルート証明書を信頼する必要があります。 Azure Stack Hub 統合システムで CA ルート証明書を信頼する必要はありません。
ウィンドウズ
Azure Stack Hub の自己署名証明書をデスクトップにエクスポートします。
コマンド プロンプトで、ディレクトリを
%JAVA_HOME%\binに変更します。次のコマンドを実行します。
.\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 でサービス プリンシパルを認証します。 テナント ID と認証ベース (Azure Stack Hub に固有) を使用してトークンを作成します。
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;
}
単体テスト プロジェクトのサンプル
次のコマンドを使用してリポジトリを複製します。
git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybridAzure サービス プリンシパルを作成し、サブスクリプションにアクセスするためのロールを割り当てます。 サービス プリンシパルを作成する手順については、「 Azure PowerShell を使用して証明書を使用してサービス プリンシパルを作成する」を参照してください。
次の必須環境変数を取得します。
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_SUBSCRIPTION_IDARM_ENDPOINTRESOURCE_LOCATION
コマンド プロンプトを使用して作成したサービス プリンシパルから取得した情報を使用して、次の環境変数を設定します。
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 では、エクスポートの代わりに set を使用 します。
getActiveDirectorySettings関数を使用して、Azure Resource Manager メタデータ エンドポイントを取得します。// Get Azure Stack Hub cloud endpoints final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);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>環境変数を設定するために開いたコマンド プロンプトで、次のコマンドを入力します。
mvn clean compile exec:java
サンプル
最新の (トラック 2) サンプル コードについては、 このサンプル リポジトリ を参照してください。 トラック 1 サンプル コードについては、 このサンプル リポジトリ を参照してください。 ルート README.md には一般的な要件が記述されており、各サブディレクトリには、そのサンプルを実行する方法に関する独自の README.md を持つ特定のサンプルが含まれています。
次のステップ
API プロファイルの詳細については、以下をご覧ください。