次の方法で共有


チュートリアル: Azure CLI を使用して Azure Front Door Standard/Premium の配信規則を追加およびカスタマイズする

適用対象: ✔️ Front Door Standard ✔️ Front Door Premium

Azure Front Door Standard/Premium は、高速で安全な最新のクラウド CDN です。 Azure Front Door では Microsoft グローバル エッジ ネットワークを使用し、インテリジェントな脅威保護と統合されます。 Azure Front Door Standard では、コンテンツ配信に焦点を当てています。 Azure Front Door Premium では、広範なセキュリティ機能とカスタマイズが追加されます。 このチュートリアルでは、Azure Front Door プロファイルの作成に焦点を当て、Web アプリの動作をより細かく制御する配信ルールを追加します。

このチュートリアルでは、以下の内容を学習します。

  • Azure Front Door プロファイルを作成する。
  • Web アプリの 2 つのインスタンスを作成する。
  • 新しいセキュリティ ポリシーを作成する。
  • Web アプリへの接続を確認する。
  • ルール セットを作成する。
  • ルールを作成し、ルール セットに追加する。
  • ルールにアクションまたは条件を追加する。

Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

Azure Front Door を作成する

リソース グループを作成する

このクイックスタートでは、2 つのリソース グループが必要です。 1 つは米国中部、もう 1 つは米国東部に必要です。

az group create を実行して、リソース グループを作成します。

az group create \
    --name myRGFDCentral \
    --___location centralus

az group create \
    --name myRGFDEast \
    --___location eastus

Azure Front Door プロファイルを作成する

az afd profile create を実行して、Azure Front Door プロファイルを作成します。

az afd profile create \
    --profile-name contosoafd \
    --resource-group myRGFDCentral \
    --sku Premium_AzureFrontDoor \
    --subscription mysubscription

Web アプリの 2 つのインスタンスを作成する

このチュートリアルには、別々の Azure リージョンで実行される、2 つの Web アプリケーション インスタンスが必要です。 どちらの Web アプリケーション インスタンスも "アクティブ/アクティブ " モードで実行されるため、どちらでもトラフィックに対応することができます。

まだ Web アプリがない場合は、次のスクリプトを使用して 2 つのサンプル Web アプリを設定します。

App Service プランを作成する

Web アプリを作成する前に、2 つの App Service プラン ( 米国中部 に 1 つ、米国 東部に 2 つ) が必要です。

az appservice plan create を実行して、App Service プランを作成します。

az appservice plan create \
    --name myAppServicePlanCentralUS \
    --resource-group myRGFDCentral

az appservice plan create \
    --name myAppServicePlanEastUS \
    --resource-group myRGFDEast

Web アプリを作成する

az webapp create を実行して、前の手順の各 App Service プランに Web アプリを作成します。 Web アプリ名は、グローバルに一意である必要があります。

az webapp list-runtimes を実行して、Web アプリ用の組み込みスタックの一覧を表示します。

az webapp create \
    --name WebAppContoso-001 \
    --resource-group myRGFDCentral \
    --plan myAppServicePlanCentralUS \
    --runtime "DOTNETCORE|2.1"

az webapp create \
    --name WebAppContoso-002 \
    --resource-group myRGFDEast \
    --plan myAppServicePlanEastUS \
    --runtime "DOTNETCORE|2.1"

次のステップで Front Door をデプロイするときにバックエンド アドレスを定義できるように、各 Web アプリの既定のホスト名をメモしておきます。

エンドポイントの追加

az afd endpoint create を実行して、プロファイルにエンドポイントを作成します。 作成エクスペリエンスを終了したら、プロファイルに複数のエンドポイントを作成できます。

az afd endpoint create \
    --resource-group myRGFDCentral \
    --endpoint-name contoso-frontend \
    --profile-name contosoafd \
    --origin-response-timeout-seconds 60 \
    --enabled-state Enabled

配信元グループを作成する

az afd origin-group create を実行して、2 つの Web アプリを含む配信元グループを作成します。

az afd origin-group create \
    --resource-group myRGFDCentral \
    --origin-group-name og1 \
    --profile-name contosoafd \
    --probe-request-type GET \
    --probe-protocol Http \
    --probe-interval-in-seconds 120 \
    --probe-path /test1/azure.txt \
    --sample-size 4 \
    --successful-samples-required 3 \
    --additional-latency-in-milliseconds 50

配信元をグループに追加する

az afd origin create を実行して、配信元を配信元グループに追加します。

az afd origin create \
    --resource-group myRGFDCentral \
    --host-name webappcontoso-1.azurewebsites.net
    --profile-name contosoafd \
    --origin-group-name og1 \
    --origin-name contoso1 \
    --origin-host-header webappcontoso-1.azurewebsites.net \
    --priority 1 \
    --weight 1000 \
    --enabled-state Enabled \
    --http-port 80 \
    --https-port 443

この手順を繰り返し、2 つ目の配信元を追加します。

az afd origin create \
    --resource-group myRGFDCentral \
    --host-name webappcontoso-2.azurewebsites.net
    --profile-name contosoafd \
    --origin-group-name og1 \
    --origin-name contoso2 \
    --origin-host-header webappcontoso-2.azurewebsites.net \
    --priority 1 \
    --weight 1000 \
    --enabled-state Enabled \
    --http-port 80 \
    --https-port 443

ルートを追加する

az afd route create を実行して、フロントエンド エンドポイントを配信元グループにマッピングします。 このルートは、エンドポイントからの要求を og1 に転送します。

az afd route create \
    --resource-group myRGFDCentral \
    --endpoint-name contoso-frontend \
    --profile-name contosoafd \
    --route-name route1 \
    --https-redirect Enabled \
    --origin-group og1 \
    --supported-protocols Https \
    --link-to-default-___domain Enabled \
    --forwarding-protocol MatchRequest

新しいセキュリティ ポリシーを作成する

WAF ポリシーを作成する

az network front-door waf-policy create を実行して、リソース グループの 1 つについての WAF ポリシーを作成します。

Front Door 用の新しい WAF ポリシーを作成します。 この例では、有効化され、保護モードになるポリシーを作成します。

az network front-door waf-policy create
    --name contosoWAF /
    --resource-group myRGFDCentral /
    --sku Premium_AzureFrontDoor
    --disabled false /
    --mode Prevention

Detection モードを選択した場合、WAF は要求をブロックしません。

セキュリティ ポリシーを作成する

az afd security-policy create を実行して、WAF ポリシーをエンドポイントの既定のドメインに適用します。

az afd security-policy create \
    --resource-group myRGFDCentral \
    --profile-name contosoafd \
    --security-policy-name contososecurity \
    --domains /subscriptions/mysubscription/resourcegroups/myRGFDCentral/providers/Microsoft.Cdn/profiles/contosoafd/afdEndpoints/contoso-frontend.z01.azurefd.net \
    --waf-policy /subscriptions/mysubscription/resourcegroups/myRGFDCentral/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/contosoWAF

Azure Front Door を確認する

Azure Front Door Standard/Premium プロファイルを作成する際、グローバルに構成がデプロイされるまでに数分かかります。 完了したら、作成したフロントエンド ホストにアクセスできます。 ブラウザーで contoso-frontend.z01.azurefd.net にアクセスしてください。 要求は、配信元グループ内で指定したサーバーから最も近いサーバーに自動的にルーティングされます。

即時グローバル フェールオーバーをテストするには、次の手順を使用します。

  1. ブラウザーを開き、フロントエンド アドレス ( contoso-frontend.azurefd.net) に移動します。

  2. Azure portal で、App Services を検索して選択します。 下へスクロールして、いずれかの Web アプリを探します (この例では WebAppContoso-1)。

  3. Web アプリを選択し、 [停止][はい] の順に選択して確認します。

  4. ブラウザーを更新します。 同じ情報ページが表示されるはずです。

    ヒント

    これらのアクションには多少の遅延があります。 場合によっては、再度、最新の情報に更新する必要があります。

  5. もう一方の Web アプリを探し、同様に停止します。

  6. ブラウザーを更新します。 今回はエラー メッセージが表示されます。

    Web アプリの両方のインスタンスが停止

ルール セットを作成する

ルール セットを作成して、エッジでの HTTP 要求の処理方法をカスタマイズします。 ルール セットに追加された配信ルールにより、Web アプリケーションの動作をより細かく制御できます。 az afd rule-set create を実行して、Azure Front Door プロファイルにルール セットを作成します。

az afd rule-set create \
    --profile-name contosoafd \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules

配信ルールを作成してルール セットに追加する

ルール セット内に新しい配信ルールを作成します。 az afd rule create を実行して、ルール セット内に新しい配信ルールを作成します。 この例では、http から https へのリダイレクトのルールを作成します。

az afd rule create \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules \
    --profile-name contosoafd \
    --order 1 \
    --match-variable RequestScheme \
    --operator Equal \
    --match-values HTTP \
    --rule-name "redirect" \
    --action-name "UrlRedirect" \
    --redirect-protocol Https \
    --redirect-type Moved

配信ルールにアクションまたは条件を追加する

新しい配信ルールをさらにカスタマイズする必要がある場合があります。 作成後に、必要に応じてアクションまたは条件を追加できます。 az afd rule action add または az afd rule condition add を実行して、ルールを更新します。

アクションを追加する

az afd rule action add \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules \
    --profile-name contosoafd \
    --rule-name redirect \
    --action-name "CacheExpiration" \
    --cache-behavior BypassCache

条件を追加する

az afd rule condition add \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules \
    --profile-name contosoafd \
    --rule-name redirect \
    --match-variable RemoteAddress \
    --operator GeoMatch \
    --match-values "TH"

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

Front Door のリソースが不要な場合は、両方のリソース グループを削除します。 リソース グループを削除すると、Front Door とそのすべての関連リソースも削除されます。

az group delete を実行します。

az group delete \
    --name myRGFDCentral

az group delete \
    --name myRGFDEast