この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
段階的なヘッドレスロールアウトは、Storefront Reference Architecture (SFRA) やコンポーザブルストアフロントなどの複数のストアフロントの技術を使用して、単一の買い物体験を提供する手法です。
埋め込み CDN (eCDN) ゾーンは、トラフィックを SFRA と Managed Runtime の両方に同時にルーティングできるため、コンポーザブルストアフロントを段階的にロールアウトできます。
このガイドでは、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 のドメインでホストされている 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 つの MRT 環境にマップされた 1 つのホスト名:
http.host eq \"www.example.com\" → example-production.mobify-storefront.com1 つの 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 にルーティングできます。
ルーティング式を変更するには、getMrtRule を使用して、更新する式に関連付けられたルールセットとルールの 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 }'既存の管理対象ランタイム環境にルーティング規則を追加するには、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 }'新しい管理対象ランタイム環境のルーティング規則を追加するには、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 }'既存のルールを更新して別のマネージ ランタイム環境にルーティングするには、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"次に、マネージ ランタイムのルーティング規則を削除するには、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"すべてのマネージ ランタイム ルーティング規則を削除する場合は、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\"eCDN を利用できない環境では、composable-hybrid-dev-server を使用して eCDN ルーティングをシミュレートします。