クイックスタート: Azure Database for PostgreSQL および Azure Cache for Redis と統合する

注意

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

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

このクイック スタートでは、Azure Spring Apps Enterprise プランで実行されているアプリで使用する Azure Database for PostgreSQL と Azure Cache for Redis をプロビジョニングして準備する方法について説明します。

この記事では、デモ目的でこれらのサービスを使用します。 この記事で後述する「サービス コネクタの作成」セクションと同様の手順を使用して、任意の任意のバッキング サービスにアプリケーションを接続できます。

前提条件

サービスの準備

アプリケーションに永続化を追加するには、Azure Cache for Redis と Azure Database for PostgreSQL フレキシブル サーバーを作成します。

次の手順では、Azure CLI を使用して、Azure Cache for Redis インスタンスと Azure Database for PostgreSQL フレキシブル サーバーをプロビジョニングする方法について説明します。

  1. 次のコマンドを使用して、リソースを保持する変数を作成します。 プレースホルダーは必ず、独自の値で置き換えてください。

    export REGION=<region>
    export RESOURCE_GROUP=<resource-group-name>
    export REDIS_CACHE_NAME=<redis-cache-name>
    export POSTGRES_SERVER_NAME=<postgres-server-name>
    export POSTGRES_USERNAME=<postgres-username>
    export POSTGRES_PASSWORD=<postgres-password>
    export AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME=<Azure-Spring-Apps-service-instance-name>
    
  2. 次のコマンドを使用して、Azure Cache for Redis のインスタンスを作成します:

    az redis create \
        --resource-group ${RESOURCE_GROUP} \
        --name ${REDIS_CACHE_NAME} \
        --location ${REGION} \
        --sku Basic \
        --vm-size c0
    

    注意

    Redis Cache の作成には約 20 分かかります。

  3. 次のコマンドを使用して、Azure Database for PostgreSQL フレキシブル サーバー インスタンスを作成します:

    az postgres flexible-server create \
        --resource-group ${RESOURCE_GROUP} \
        --name ${POSTGRES_SERVER_NAME} \
        --location ${REGION} \
        --admin-user ${POSTGRES_USERNAME} \
        --admin-password ${POSTGRES_PASSWORD} \
        --yes
    
  4. 他の Azure サービスから新しく作成されたフレキシブル サーバーへの接続を許可するには、次のコマンドを使用します:

    az postgres flexible-server firewall-rule create \
        --rule-name allAzureIPs \
        --name ${POSTGRES_SERVER_NAME} \
        --resource-group ${RESOURCE_GROUP} \
        --start-ip-address 0.0.0.0 \
        --end-ip-address 0.0.0.0
    
  5. 次のコマンドを使用して、新しく作成されたフレキシブル サーバーの uuid-ossp 拡張機能を有効にします:

    az postgres flexible-server parameter set \
        --resource-group ${RESOURCE_GROUP} \
        --name azure.extensions \
        --value uuid-ossp \
        --server-name ${POSTGRES_SERVER_NAME}
    
  6. 次のコマンドを使用して、Order Service アプリケーションのデータベースを作成します:

    az postgres flexible-server db create \
        --resource-group ${RESOURCE_GROUP} \
        --server-name ${POSTGRES_SERVER_NAME} \
        --database-name acmefit_order
    
  7. 次のコマンドを使用して、Catalog Service アプリケーションのデータベースを作成します:

    az postgres flexible-server db create \
        --resource-group ${RESOURCE_GROUP} \
        --server-name ${POSTGRES_SERVER_NAME} \
        --database-name acmefit_catalog
    

サービス コネクタを作成する

次の手順では、サービス コネクタを使用して、Azure Spring Apps Enterprise プランで実行されているアプリケーションを他の Azure サービスにバインドする方法を示します。

  1. 次のコマンドを使用して、Order Service アプリケーションの Azure Database for PostgreSQL にサービス コネクタを作成します:

    az spring connection create postgres-flexible \
        --resource-group ${RESOURCE_GROUP} \
        --target-resource-group ${RESOURCE_GROUP} \
        --connection order_service_db \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --app order-service \
        --deployment default \
        --server ${POSTGRES_SERVER_NAME} \
        --database acmefit_order \
        --secret name=${POSTGRES_USERNAME} secret=${POSTGRES_PASSWORD} \
        --client-type dotnet
    
  2. 次のコマンドを使用して、Catalog Service アプリケーションの Azure Database for PostgreSQL にサービス コネクタを作成します:

    az spring connection create postgres-flexible \
        --resource-group ${RESOURCE_GROUP} \
        --target-resource-group ${RESOURCE_GROUP} \
        --connection catalog_service_db \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --app catalog-service \
        --deployment default \
        --server ${POSTGRES_SERVER_NAME} \
        --database acmefit_catalog \
        --secret name=${POSTGRES_USERNAME} secret=${POSTGRES_PASSWORD} \
        --client-type springboot
    
  3. 次のコマンドを使用して、Cart Service アプリケーションの Azure Cache for Redis にサービス コネクタを作成します:

    az spring connection create redis \
        --resource-group ${RESOURCE_GROUP} \
        --target-resource-group ${RESOURCE_GROUP} \
        --connection cart_service_cache \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --app cart-service \
        --deployment default \
        --server ${REDIS_CACHE_NAME} \
        --database 0 \
        --client-type java
    
  4. 次のコマンドを使用して Catalog Service アプリケーションを再度読み込み、新しい接続プロパティを読み込みます:

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --name catalog-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  5. 次のコマンドを使用して、データベース接続情報を取得します。

    export POSTGRES_CONNECTION_STR=$(az spring connection show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --deployment default \
        --connection order_service_db \
        --app order-service \
        | jq '.configurations[0].value' -r)
    

    注意

    Nofsql 6.0 で SSL 検証例外が発生した場合は、必ず SSL モードを Require から VerifyFull に変更してください。 詳しくは、Npgsql 6.0 のリリース ノートをご覧ください。

  6. 次のコマンドを使用して、Order Service アプリケーションを更新します。

    az spring app update \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --env "DatabaseProvider=Postgres" "ConnectionStrings__OrderContext=${POSTGRES_CONNECTION_STR}"
    
  7. 次のコマンドを使用して、Redis 接続情報を取得し、Cart Service アプリケーションを更新します:

    export REDIS_CONN_STR=$(az spring connection show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --deployment default \
        --app cart-service \
        --connection cart_service_cache | jq -r '.configurations[0].value')
    
    export GATEWAY_URL=$(az spring gateway show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')
    
    az spring app update \
        --resource-group ${RESOURCE_GROUP} \
        --name cart-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --env "CART_PORT=8080" "REDIS_CONNECTIONSTRING=${REDIS_CONN_STR}" "AUTH_URL=https://${GATEWAY_URL}"
    

アプリケーションへのアクセス

Spring Cloud Gateway の URL を取得し、更新されたアプリケーションを調べます。 次のコマンドの出力を使用して、アプリケーションを調べることができます:

export GATEWAY_URL=$(az spring gateway show \
    --resource-group ${RESOURCE_GROUP} \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')

echo "https://${GATEWAY_URL}"

リソースをクリーンアップする

後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 不要になったら、リソース グループを削除します。これにより、リソース グループ内のリソースが削除されます。 Azure CLI を使用してリソース グループを削除するには、次のコマンドを使用します。

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

次のステップ

次のいずれかの省略可能なクイックスタートに進みます: