Share via


Azure Database for PostgreSQL を Azure Spring Apps 内のアプリケーションにバインドする

Note

Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。

この記事の適用対象: ✔️ Java ✔️ C#

この記事の適用対象: ✔️ Basic または Standard ✔️ Enterprise

Azure Spring Apps では、Spring Boot アプリケーションを手動で構成せずに、選んだ Azure サービスをアプリケーションに自動的にバインドできます。 この記事では、アプリケーションを Azure Database for PostgreSQL インスタンスにバインドする方法について説明します。

この記事には、Microsoft Entra 認証と PostgreSQL 認証の 2 つの認証方法が含まれています。 [パスワードレス] タブには Microsoft Entra 認証が表示され、[パスワード] タブには PostgreSQL 認証が表示されます。

Microsoft Entra 認証は、Microsoft Entra ID で定義された ID を使用して Azure Database for PostgreSQL に接続するための仕組みです。 Microsoft Entra 認証を使用すると、データベース ユーザーの ID や他の Microsoft サービスを一元管理でき、アクセス許可の管理が容易になります。

PostgreSQL 認証では、PostgreSQL に格納されているアカウントが使用されます。 アカウントの資格情報としてパスワードを使用することを選択した場合、これらの資格情報はユーザー テーブルに格納されます。 これらのパスワードは PostgreSQL に格納されるため、パスワードのローテーションを自分で管理する必要があります。

前提条件

プロジェクトを準備する

プロジェクトを、次の手順を実行して準備します。

  1. プロジェクトの pom.xml ファイルに、次の依存関係を追加します。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId>
    </dependency>
    
  2. application.properties ファイルから、spring.datasource.* プロパティをすべて削除します。

  3. az spring app deploy を実行して現在のアプリを更新するか、az spring app deployment create を実行してこの変更のための新しいデプロイを作成します。

アプリを Azure Database for PostgreSQL インスタンスにバインドする

Note

接続を作成するには、次のいずれかの方法から 1 つのみを選択してください。 1 つの接続を持つテーブルを既に作成している場合、他のユーザーはテーブルにアクセスしたり変更したりすることはできません。 他の方法を試すと、アプリケーションは "アクセス許可が拒否されました" などのエラーをスローします。 この問題を解決するには、新しいデータベースに接続するか、既存のデータベースを削除して再作成します。

Note

既定では、Service Connector はアプリケーション レベルで作成されます。 接続をオーバーライドするには、デプロイで他の接続をもう一度作成します。

  1. Azure CLI 用 Service Connector パスワードレス拡張機能をインストールします。

    az extension add --name serviceconnector-passwordless --upgrade
    
  2. az spring connection create コマンドを使用して、Azure Spring Apps を、システム割り当てマネージド ID によって PostgreSQL データベースに接続するように構成します。

    az spring connection create postgres-flexible \
        --resource-group $AZ_SPRING_APPS_RESOURCE_GROUP \
        --service $AZ_SPRING_APPS_SERVICE_INSTANCE_NAME \
        --app $APP_NAME \
        --deployment $DEPLOYMENT_NAME \
        --target-resource-group $POSTGRES_RESOURCE_GROUP \
        --server $POSTGRES_SERVER_NAME \
        --database $DATABASE_NAME \
        --system-identity
    

前提条件

プロジェクトを準備する

プロジェクトを、次の手順を実行して準備します。

  1. プロジェクトの pom.xml ファイルに、次の依存関係を追加します。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId>
    </dependency>
    
  2. application.properties ファイルから、spring.datasource.* プロパティをすべて削除します。

  3. az spring app deploy を実行して現在のアプリを更新するか、az spring app deployment create を実行してこの変更のための新しいデプロイを作成します。

アプリを Azure Database for PostgreSQL インスタンスにバインドする

Note

サービス コネクタは、デプロイ レベルで作成されます。 そのため、別のデプロイが作成された場合は、接続をもう一度作成する必要があります。

  1. Azure CLI 用 Service Connector パスワードレス拡張機能をインストールします。

    az extension add --name serviceconnector-passwordless --upgrade
    
  2. az spring connection create コマンドを使用して、Azure Spring Apps を、システム割り当てマネージド ID によって PostgreSQL データベースに接続するように構成します。

    az spring connection create postgres \
        --resource-group $AZ_SPRING_APPS_RESOURCE_GROUP \
        --service $AZ_SPRING_APPS_SERVICE_INSTANCE_NAME \
        --app $APP_NAME \
        --deployment $DEPLOYMENT_NAME \
        --target-resource-group $POSTGRES_RESOURCE_GROUP \
        --server $POSTGRES_SERVER_NAME \
        --database $DATABASE_NAME \
        --system-identity
    

次のステップ

この記事では、Azure Spring Apps 内のアプリケーションを Azure Database for PostgreSQL インスタンスにバインドする方法について学習しました。 サービスをアプリケーションにバインドする方法の詳細については、「Azure Cosmos DB データベースを Azure Spring Apps アプリケーションにバインドする」を参照してください。