Azure SDK for Java を使用する

オープン ソースの Azure SDK for Java は、Java アプリケーション コードからの Azure リソースのプロビジョニング、管理、および使用を簡素化します。

重要な詳細

  • Azure ライブラリを使用して、ローカルまたはクラウドで実行JavaコードからAzure サービスと通信します。
  • ライブラリはJava 8 以降をサポートしており、Java 8 ベースラインと最新のJava長期サポート リリースの両方に対してテストされます。
  • ライブラリには、Java モジュールの完全なサポートが含まれています。つまり、Java モジュールの要件に完全に準拠しており、関連するすべてのパッケージをエクスポートして使用できます。
  • Azure SDK for Java は、特定の Azure サービスに関連する多数の個々の Java ライブラリのみで構成されています。 SDK には他のツールは含まれていません。
  • SDK には、個別の "管理" ライブラリと "クライアント" ライブラリがあります ("管理プレーン" ライブラリと "データ プレーン" ライブラリとも呼ばれます)。 各セットは異なる目的を果たし、さまざまな種類のコードで使用されます。 詳細については、この記事で後述する以下のセクションを参照してください。
  • ライブラリのドキュメントは、Azure サービス別に整理された Java リファレンスのAzure、またはパッケージ名で整理された Java API ブラウザーにあります。

その他の詳細

  • Java ライブラリのAzure SDKは、基になる Azure REST API の上に構築されているため、使い慣れたJavaパラダイムを通じてこれらの API を使用できます。 ただし、必要に応じて、Java コードから REST API を直接使用できます。
  • Azure ライブラリのソース コードは、GitHub リポジトリにあります。 オープンソースプロジェクトとして、貢献は歓迎されています!
  • JavaのAzure SDKは、認証プロトコル、ログ記録、トレース、トランスポート プロトコル、バッファー応答、再試行などの一般的なクラウド パターンを共有するように更新されています。
    • この共有機能は、azure-core ライブラリに含まれています。
  • ライブラリに適用されるガイドラインの詳細については、「Java Azure SDK設計ガイドライン」を参照してください。

Azure SDK for Java でサポートされているプラットフォーム

JavaのAzure SDKにはJava 8 以降のサポートが付属していますが、開発中および運用環境へのリリース時には常に最新のJava長期サポート (LTS) リリースを使用します。 最新の LTS リリースを使用すると、バグ修正、パフォーマンスの向上、セキュリティ修正など、Java 内で最新の機能強化を利用できるようになります。 また、Azure SDK for Java には、Java の以降のリリースに対する追加のサポートが含まれています。 この追加サポートにより、パフォーマンスが向上し、サポートされている Java 8 ベースラインを超える JDK 固有の機能強化が含まれます。

Azure SDK for Java は、Windows、Linux、および macOS でテストおよびサポートされています。 JDK がサポートする他のプラットフォームではテストされず、Android デプロイはサポートされません。 Android デバイスにデプロイするためのソフトウェアを開発し、Azure サービスを利用する開発者向けに、Android SDK for Android プロジェクト で利用できる Android 固有のライブラリがあります。

クライアント ライブラリで Azure リソースに接続して使用する

クライアント (または "データ プレーン") ライブラリは、既にプロビジョニングされているサービスと対話する Java アプリケーション コードを記述するのに役立ちます。 クライアント ライブラリは、クライアント API をサポートするサービスにのみ存在します。 Maven グループ ID が com.azureされているため、それらを識別できます。

すべての Azure Java クライアント ライブラリは、クライアントのインスタンスを作成する Java ビルダー クラスを提供するのと同じ API 設計パターンに従います。 このパターンでは、クライアントの定義とインスタンス化が操作から分離されるため、クライアントは不変で使いやすくなっています。 さらに、すべてのクライアント ライブラリは、いくつかの重要なパターンに従います。

  • 同期 API と非同期 API の両方をサポートするクライアント ライブラリでは、これらの API を個別のクラスで提供する必要があります。 この要件の意味は、このような場合、たとえば、同期 API の KeyVaultClient と非同期 API の KeyVaultAsyncClient があることです。

  • 同期 API と非同期 API の両方を構築する役割を担う 1 つのビルダー クラスがあります。 ビルダーには同期クライアント クラスと同様の名前が付けられ、Builder 含まれています。 たとえば、KeyVaultClientBuilderします。 このビルダーには、必要に応じてクライアント インスタンスを作成するための buildClient() メソッドと buildAsyncClient() メソッドがあります。

これらの規則により、Client で終わるすべてのクラスは不変であり、Azure サービスと対話する操作を提供します。 ClientBuilder で終わるすべてのクラスは、特定のクライアントの種類のインスタンスを構成して作成する操作を提供します。

クライアント ライブラリの例

次のコード例は、同期 Key Vault KeyClientを作成する方法を示しています。

KeyClient client = new KeyClientBuilder()
        .endpoint(<your Key Vault URL>)
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

次のコード例は、非同期 Key Vault KeyAsyncClientを作成する方法を示しています。

KeyAsyncClient client = new KeyClientBuilder()
        .endpoint(<your Key Vault URL>)
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildAsyncClient();

各クライアント ライブラリの操作の詳細については、SDK GitHub リポジトリのライブラリのプロジェクト ディレクトリにある README.md ファイルを参照してください。 その他のコード スニペットについては、リファレンス ドキュメントのAzure サンプルを参照してください。

管理ライブラリを使用して Azure リソースをプロビジョニングおよび管理する

管理ライブラリ(または「管理プレーン」ライブラリ)は、Java アプリケーション コードを使用して Azure リソースを作成、プロビジョニング、およびそのほかの管理を行うのに役立ちます。 これらのライブラリは、com.azure.resourcemanager Maven グループ ID にあります。 すべての Azure サービスには、対応する管理ライブラリがあります。

管理ライブラリを使用すると、Azure portal または Azure CLI で実行できるのと同じタスクを実行するための構成スクリプトと配置スクリプトを記述できます。

すべての Azure Java 管理ライブラリは、サービス API として *Manager クラスを提供します。たとえば、Azure コンピューティング サービスの ComputeManager や、一般的なサービスの集計に AzureResourceManager します。

管理ライブラリの例

次のコード例は、ComputeManagerを作成する方法を示しています。

ComputeManager computeManager = ComputeManager
    .authenticate(
        new DefaultAzureCredentialBuilder().build(),
        new AzureProfile(AzureEnvironment.AZURE));

次のコード例は、新しい仮想マシンをプロビジョニングする方法を示しています。

VirtualMachine virtualMachine = computeManager.virtualMachines()
    .define(<your virtual machine>)
    .withRegion(Region.US_WEST)
    .withExistingResourceGroup(<your resource group>)
    .withNewPrimaryNetwork("10.0.0.0/28")
    .withPrimaryPrivateIPAddressDynamic()
    .withoutPrimaryPublicIPAddress()
    .withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_18_04_LTS)
    .withRootUsername(<virtual-machine username>)
    .withSsh(<virtual-machine SSH key>)
    .create();

次のコード例は、既存の仮想マシンを取得する方法を示しています。

VirtualMachine virtualMachine = computeManager.virtualMachines()
    .getByResourceGroup(<your resource group>, <your virtual machine>);

次のコード例は、仮想マシンを更新し、新しいデータ ディスクを追加する方法を示しています。

virtualMachine.update()
    .withNewDataDisk(10)
    .apply();

各管理ライブラリの操作の詳細については、SDK GitHub リポジトリにあるライブラリのプロジェクト ディレクトリにある README.md ファイルを参照してください。 その他のコード スニペットについては、リファレンス ドキュメントのAzure サンプルを参照してください。

ヘルプを取得して SDK チームと連絡を取る

  • Azure SDK for Java のドキュメントを参照してください。
  • Stack Overflowに関する質問をコミュニティに投稿します。
  • GitHub リポジトリで SDK に対する問題を開きます。
  • Twitter で @AzureSDK をメンションします。

次の手順

JavaのAzure SDKを理解したら、ライブラリを使用する際の生産性を高めるのに役立つ多くの横断的な概念について説明します。 次の記事では、適切な開始点を示します。