Azure SDK クライアントの自動構成

Spring Boot を使用すると、Spring Cloud Azure 開発エクスペリエンスが簡素化されます。 Spring Cloud Azure Starters は、アプリケーションに含めるのに便利な依存関係記述子のセットです。 スターターはオブジェクトのインスタンス化と構成ロジックを処理するため、処理する必要はありません。 すべてのスターターは、Azure クラウド環境や認証情報など、構成の重要なビットを提供するために spring-cloud-azure-starter に依存します。 これらは、次の例に示すように、YAML ファイルなどのプロパティとして構成できます。

spring:
  cloud:
    azure:
      profile:
        tenant-id: <tenant>
        cloud-type: Azure
      credential:
        client-id: ${AZURE_CLIENT_ID}

手記

cloud プロパティは省略可能です。

tenant-id に使用できる値は、common、organizations、consumers、またはテナント ID です。 これらの値の詳細については、「エラー AADSTS50020 - ID プロバイダーのユーザー アカウントがテナントに存在しない」の「間違ったエンドポイント (個人用アカウントと organization アカウント) を使用しました」セクションを参照してください。 シングルテナント アプリの変換の詳細については、「Microsoft Entra IDでのシングルテナント アプリをマルチテナントに変換する」を参照してください。

これらのプロパティは省略可能です。 指定しない場合、Spring Boot は自動的に検索を試みます。 Spring Boot がこれらのプロパティを検索する方法の詳細については、ドキュメントを参照してください。

依存関係のセットアップ

Spring Cloud Azure スターターは、2 つの方法で使用できます。 最初の方法は、次の例に示すように、spring-cloud-azure-starter 依存関係を持つ Azure SDK を使用する方法です。

<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-cosmos</artifactId>
</dependency>
<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-starter</artifactId>
</dependency>

2 つ目の方法は、Azure SDK依存関係を追加しないようにし、代わりに各サービスの Spring Cloud Azure Starter を直接含める方法です。 たとえば、Azure Cosmos DBでは、次の依存関係を追加します。

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-starter-cosmos</artifactId>
</dependency>

ヒント

サポートされているスターターの一覧については、「Spring Cloud Azure 開発者ガイド」の「Starter の依存関係」セクションを参照してください。

構成

手記

セキュリティ プリンシパルを使用して、Azure リソースにアクセスするためのMicrosoft Entra IDで認証と承認を行う場合は、セキュリティ プリンシパルに、Azure リソースにアクセスするための十分なアクセス許可があることを確認します。 詳細については、「Microsoft Entra IDを使用してアクセスを承認する」を参照してください。

各Azure サービスの構成プロパティは、プレフィックス spring.cloud.azure.<azure-service>の下にあります。

ヒント

Spring Cloud Azure のすべての構成プロパティの一覧については、「Spring Cloud Azure 構成プロパティ参照してください。

基本的な使用方法

application.yaml ファイルに次のプロパティを追加して、Azure Cosmos DB クライアントを自動構成します。

spring:
  cloud:
    azure:
      cosmos:
        database: ${AZURE_COSMOS_DATABASE_NAME}
        endpoint: ${AZURE_COSMOS_ENDPOINT}
        consistency-level: eventual
        connection-mode: direct

その後、次の例に示すように、 CosmosClient と CosmosAsyncClient の両方をコンテキストで使用でき、それらを自動接続できます。

class Demo {
@Autowired
private CosmosClient cosmosClient;

    @Override
    public void run() {
        User item = User.randomUser();
        CosmosContainer container = cosmosClient.getDatabase(databaseName).getContainer(containerName);
        container.createItem(item);
    }
}

サンプル

GitHub の azure-spring-boot-samples リポジトリを参照してください。