この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
段階的なヘッドレスロールアウトは、Storefront Reference Architecture (SFRA) やコンポーザブルストアフロントなどの複数のストアフロントの技術を使用して、単一の買い物体験を提供する手法です。
埋め込み CDN (eCDN) は、Production (本番) や Staging (ステージング) などのプライマリインスタンスグループ (PIG) 環境で使用でき、SFRA と Managed Runtime (MRT) の両方に同時にトラフィックをルーティングできるため、コンポーザブルストアフロントを段階的にロールアウトできます。On-Demand Sandbox (ODS) やローカル開発サーバーなどのセカンダリインスタンスグループ (SIG) 環境では、eCDN は使用できません。この場合は、ハイブリッドプロキシを使用してトラフィックを SFRA にルーティングします。

ODS やローカル開発サーバーなどの SIG インスタンスでは、PWA Kit v3.14.0 以降の pwa-kit-runtime パッケージでハイブリッドプロキシ機能を有効にすることで、PWA Kit と SFRA または SiteGenesis を使用するハイブリッド買い物客アプリを開発およびテストできます。
詳細については、ハイブリッド認証の手順 2: ローカルでのハイブリッド設定 (SIG インスタンス) を参照してください。
PIG インスタンスでは、eCDN ゾーンでトラフィックを SFRA と MRT の両方に同時にルーティングできるため、コンポーザブルストアフロントを段階的にロールアウトできます。
この図は、eCDN が PIG インスタンスのハイブリッドアプリケーションの受信ページリクエストをルーティングする際の、リクエストとレスポンスのシーケンスを示しています。リクエストが MRT ルールに一致する場合は、MRT に転送されます。一方、MRT ルールに一致しない場合は、B2C Commerce インスタンスに送信され、その後レスポンスが返されます。

このガイドでは、Commerce API CDN ゾーンを使用してトラフィックを Managed Runtime にルーティングする方法について説明します。また、Business Manager を使用してトラフィックを Managed Runtime にルーティングすることもできます。Business Manager での MRT ルーティングルールの構成を参照してください。
このガイドのコマンドを実行する前に、プレースホルダーを実際の値に置き換えてください。プレースホルダーは、$PLACEHOLDER のような形式で記載されています。
このガイド全体を通して、例として使用するストアフロントの本番 URL は https://www.example.com です。
このページ内のリンクには、既存のお客様のみがアクセスできるものがあります。Commerce Cloud リポジトリにアクセスする方法については Salesforce Commerce Cloud GitHub リポジトリとアクセスを参照してください。
Tip
sfcc.cdn-zones.rw スコープをもつ Account Manager API クライアントが必要です。alwaysUseHttps を有効にします。Managed Runtime は HTTPS 経由のトラフィックのみをサポートします。redirect_uri にゾーンを含めるように設定します。createMrtRules エンドポイントを使用すると、トラフィックを Managed Runtime 環境にルーティングするルールを作成できます。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/mrtrules" \
2 --header "Authorization: Bearer $TOKEN" \
3 --header 'Content-Type: application/json' \
4 --data '{
5 "mrtHostname": "example-production.mobify-storefront.com",
6 "expressions": [
7 "http.host eq \"www.example.com\" and http.request.uri.path matches \"^/products\""
8 ]
9 }'リクエストボディで指定するデータを調べてみましょう。
mrtHostname の値は、トラフィックルーティング先となる Managed Runtime 環境のドメインです。この値は、mobify-storefront.com ドメインまたは exp-delivery.com ドメインでホストされている Managed Runtime 環境を参照している必要があります。指定した値が既存のルールですでに使用されている場合、リクエストは失敗します。
サポートされるルーティング先は Managed Runtime のみです。
Note
expressions の値は、どのリクエストが Managed Runtime にルーティングされるかを制御する Cloudflare ルール式の配列です。ほとんどの実装において、単一のルーティング式で十分です。
指定した式に加え、次のデフォルトのルーティングルールが使用されます。
1(
2 http.request.uri.path matches "^/callback.*" or
3 http.request.uri.path matches "^/mobify.*" or
4 http.request.uri.path matches "^/worker\.js.*"
5)ルーティングの変更はすぐに適用され、式に一致する URL に移動すると、 Managed Runtime から取得されたコンテンツが返されます。
次のルーティングシナリオがサポートされています。
1 つのホスト名を 1 つの MRT 環境にマッピングするシナリオ:
http.host eq \"www.example.com\" → example-production.mobify-storefront.com複数のホスト名を 1 つの MRT 環境にマッピングするシナリオ:
http.host in {\"www.example.com\" \"prod.example.com\" \"us.example.com\"} → example-production.mobify-storefront.com次のルーティングシナリオは、現在サポートされていません。
次の基準に基づいて式が検証されます。
http.host は、一度だけ出現し、その後に eq 演算子または in 演算子が続く必要があります。使用例については、前述の例を参照してください。http.hosthttp.request.uri.pathhttp.request.urihttp.cookie段階的なロールアウトを続行すると、より多くのリクエストを Managed Runtime にルーティングできます。
ルーティング式を変更するには、getMrtRules を使用して、更新する式に関連付けられているルールセットとルールの ID を取得します。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/mrtrules" \
2--header "Authorization: Bearer $TOKEN"次に、updateMrtRule を使用して式を更新します。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/mrtrules/$RULESET/rules/$RULE" \
2--request 'PATCH' \
3--header "Authorization: Bearer $TOKEN" \
4--header 'Content-Type: application/json' \
5--data '{
6 "expression": "http.host eq \"www.example.com\" and (http.request.uri.path matches \"^/products\" or http.request.uri.path matches \"^/categories\")"
7 }'既存の Managed Runtime 環境にルーティングルールを追加するには、updateMrtRuleset を使用して、mrtHostname および追加のルーティング式を指定します。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/mrtrules" \
2 --request 'PATCH' \
3 --header "Authorization: Bearer $TOKEN" \
4 --header 'Content-Type: application/json' \
5 --data '{
6 "mrtHostname": "example-production.mobify-storefront.com",
7 "expressions": ["http.host eq \"www.example.com\" and http.request.uri.path matches \"^/home\""]
8 }'新しい Managed Runtime のルーティングルールを追加するには、createMrtRules エンドポイントを使用し、新しい mrtHostname 値を指定します。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/mrtrules" \
2--header "Authorization: Bearer $TOKEN" \
3--header 'Content-Type: application/json' \
4--data '{
5 "mrtHostname": "example-development.mobify-storefront.com",
6 "expressions": [
7 "http.host eq \"dev.example.com\" and http.request.uri.path matches \"^/products\""
8 ]
9 }'既存のルールを更新して別の Managed Runtime 環境にルーティングするには、updateMrtRuleset を使用して、oldMrtHostname と、新しいルーティング先であるmrtHostname を指定します。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/mrtrules" \
2 --request 'PATCH' \
3 --header "Authorization: Bearer $TOKEN" \
4 --header 'Content-Type: application/json' \
5 --data '{
6 "oldMrtHostname": "example-old.mobify-storefront.com",
7 "mrtHostname": "example-new.mobify-storefront.com"
8 }'サードパーティの CDN に切り替える場合、または eCDN から MRT への特定のパスをルーティングする必要がなくなった場合は、ルーティングを無効にすることができます。
ルーティングを無効にするには、getMrtRules を使用して、削除する構成の ID を取得します。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/mrtrules" \
2--header "Authorization: Bearer $TOKEN"次に、Managed Runtime のルーティングルールを削除するには、deleteMrtRule を使用して、getMrtRules で返された該当の ID を指定します。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/mrtrules/$RULESET/rules/$RULE" \
2--request 'DELETE' \
3--header "Authorization: Bearer $TOKEN"すべての Managed Runtime ルーティングルールを削除する場合は、deleteMrtRuleset を使用します。
1`curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/mrtrules/$RULESET" \`
2--request 'DELETE' \
3--header "Authorization: Bearer $TOKEN"段階的ロールアウトを完了する場合、または新しいサイトを立ち上げる場合は、単一の式を使用してゾーンのすべてのトラフィックを Managed Runtime にルーティングできます。
1http.host eq \"www.example.com\"