次の方法で共有


Azure Container Apps で規則ベースのルーティングでカスタム ドメインを使用する

HTTP ルート構成ではカスタム ドメインがサポートされているため、独自のドメイン名からコンテナー アプリにトラフィックをルーティングできます。

前提条件

  • 既存の Azure Container Apps 環境
  • 所有するカスタム ドメイン
  • ドメインの SSL 証明書 (自動証明書を使用する場合を除く)
  • 環境にデプロイされた Container Apps

カスタム ドメインの構成

ドメインをホストしている DNS プロバイダーを使用して、カスタム ドメインに適した DNS レコードを作成します。

  • ルート ドメイン (たとえば、 contoso.com) を使用している場合は、次の DNS レコードを作成します。

    レコード タイプ ホスト 価値
    A @ Container Apps 環境の IP アドレス。
    TXT asuid ドメイン検証コード。
  • サブドメイン (たとえば、 www.contoso.com) を使用している場合は、次の DNS レコードを作成します。

    レコード タイプ ホスト 価値
    A サブドメイン (例: www) Container Apps 環境の IP アドレス。
    TXT asuid.{subdomain} (例: asuid.www) ドメイン検証コード。

Container Apps 環境の IP アドレスとドメイン検証コードは、Container Apps 環境の カスタム DNS サフィックス設定 にあります。

カスタム ドメインを Container Apps 環境またはコンテナー アプリにバインドしないでください。 ドメインは、1 つのアプリ、ルート、または環境にのみバインドされます。

ルートの構成

customDomains セクションを含むように Container Apps YAML ファイルを更新します。 次の条件に基づいて、 bindingTypecertificateIdを含めます。

bindingType 値 説明
障害者 証明書は指定されていません。 ドメインは HTTP 経由でのみ使用でき、HTTPS は使用できません。
証明書は省略可能です。 このドメインに対してマネージド証明書が既に作成されている場合は、自動的にルートに追加されます。 それ以外の場合、ドメインは最初は HTTP 経由でのみ使用できます。 このドメインのマネージド証明書を作成するには、ルートの作成後に新しいマネージド証明書を作成します。 証明書が作成されると、ルートに自動的に追加されます。
SniEnabled 証明書が必要です。
証明書タイプ certificateId のフォーマット
無し 空白のままにする
マネージド /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/managedCertificates/{CertificateFriendlyName}
アンマネージド /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/certificates/{CertificateFriendlyName}

環境に証明書を追加するには、次のいずれかの方法を使用します。

証明書をコンテナー アプリにバインドしないでください。

次の例では、ルート構成を設定する方法を示します。

customDomains:
  - name: "<CUSTOM_DOMAIN_ENDPOINT>" 
    certificateId: "<CERTIFICATE_ID>"
    bindingType: "SniEnabled" # Can also be "Disabled", "Auto"
rules:
  - description: "Routing to App1"
    routes:
      - match:
          prefix: "/1"
        action:
          prefixRewrite: "/"
    targets:
      - containerApp: "<APP1_CONTAINER_APP_NAME>"
  - description: "Routing to App2"
    routes:
      - match:
          prefix: "/2"
        action:
          prefixRewrite: "/"
      - match:
          prefix: "/"
    targets:
      - containerApp: "<APP2_CONTAINER_APP_NAME>"

この構成では、HTTP トラフィックの 2 つのルーティング規則を定義します。

プロパティ 説明
customDomains.name 使用するドメイン名 (例: "app.contoso.com")
customDomains.certificateId 証明書のリソース ID ( bindingType: "Auto"では不要)
customDomains.bindingType SSL の処理方法: "SniEnabled" (サーバー名の表示)、"無効" (HTTP のみ)、または "自動" (自動証明書)
description ルールのわかりやすいラベル
routes.match.prefix 一致する URL パス プレフィックス。 たとえば、/api のようにします。
routes.action.prefixRewrite 転送前に一致したプレフィックスを何で置き換えるか。
targets.containerApp 一致するルート要求が送信されるコンテナー アプリの名前。

これらのルールを使用すると、カスタム ドメイン上のさまざまなパスを異なるコンテナー アプリにルーティングしながら、宛先アプリに到達する前に要求パスを変更できます。

ルートに影響する可能性がある一覧にないその他のプロパティには、次のようなものがあります。

プロパティ 説明
route.match.path 完全一致パスの定義。
route.match.pathSeparatedPrefix 任意のテキストではなく、'/' 境界上のルートと一致します。 たとえば、値を /product に設定すると、 /product/1では一致しますが、 /product1では一致しません。
route.match.caseSensitive ルート パターンと大文字と小文字の区別が一致するかどうかを制御します。
target.label コンテナー アプリ内の特定のラベル付きリビジョンにルーティングします。
target.revision コンテナー アプリ内の特定のリビジョンにルーティングします。

ルート構成を操作する

ルート構成を管理するには、次のコマンドを使用します。

次のコマンドを実行する前に、 <> で囲まれたプレースホルダーを実際の値に置き換えてください。

新しいルート構成を作成する

az containerapp env http-route-config createを使用して、新しいルート構成を作成します。

az containerapp env http-route-config create \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME> \
    --yaml <CONTAINER_APPS_CONFIG_FILE>

ルート構成を一覧表示する

az containerapp env http-route-config listを使用して、定義されているすべてのルート構成を一覧表示します。

az containerapp env http-route-config list \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME>

ルート構成を更新する

既存のルート構成を更新するには、 az containerapp env http-route-config update を使用します。

az containerapp env http-route-config update \
  --resource-group <RESOURCE_GROUP_NAME> \
  --name <ENVIRONMENT_NAME> \
  --http-route-config-name <CONFIGURATION_NAME> \
  --yaml <CONTAINER_APPS_CONFIG_FILE>

特定のルート構成を表示する

ルート構成の詳細を表示するには、 az containerapp env http-route-config show を使用します。

az containerapp env http-route-config show \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

ルート構成を削除する

ルート構成を削除するには、 az containerapp env http-route-config delete を使用します。

az containerapp env http-route-config delete \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

HTTP ルーティングを確認する

ルールベースのルーティングを使用してカスタム ドメインを構成した後:

  1. ブラウザーでカスタム ドメインに移動します。 たとえば、https://app.contoso.com/1 のようにします。

  2. 要求が最初のコンテナー アプリにルーティングされていることを確認します。

  3. パスを /2 に変更します。 たとえば、https://app.contoso.com/2 のようにします。

  4. 要求が 2 つ目のコンテナー アプリにルーティングされていることを確認します。

ヒント

問題がありますか。 GitHub の Azure Container Apps リポジトリでイシューを開いて、お知らせください。