ハイブリッド実装のための CDN API

段階的なヘッドレスロールアウトは、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

前提条件 

  1. Admin API の認可についてよく理解しておきます。
  2. スコープ sfcc.cdn-zones.rw をもつ Account Manager API クライアントが必要です。
  3. Managed Runtime で使用する eCDN ゾーンのゾーン ID を把握しておく必要があります。この情報を取得するには、CDN Zones API の getZonesInfo のエンドポイントを使用します。
  4. updateSecuritySettings を使用して、ゾーンで alwaysUseHttps を有効にします。Managed Runtime は HTTPS 経由のトラフィックのみをサポートします。
  5. SLAS API クライアントの redirect_uri をゾーンを含めるように設定します。
  6. Managed Runtime 環境へのアクセスを許可する IP のセットを制限している場合は、eCDN によって使用される CloudFlare IP を、許可される IP のセットに追加します。

トラフィックを Managed Runtime にルーティング 

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.com
    • 1 つの MRT 環境にマップされた複数のホスト名:

      • 例: http.host in {\"www.example.com\" \"prod.example.com\" \"us.example.com\"}example-production.mobify-storefront.com
  • 次のルーティング シナリオは、現在サポートされていません****。

    • 異なるパスに基づいて複数の MRT 環境にマップされた 1 つのホスト名

エクスプレッションの制約 

式は次の基準に基づいて検証されます。

  • http.hostは、一度だけ出現し、その後にeq演算子またはin演算子が続く必要があります。使用例については、上記を参照してください。
  • ホスト名はゾーンと一致する必要があります。つまり、eCDN ゾーンには、指定されたホスト名を対象とする有効な証明書が必要です。
  • 以下のフィールドがサポートされます。
    • http.host
    • http.request.uri.path
    • http.request.uri
    • http.cookie
  • 式の長さは最大 3072 文字です。
  • 最大 100 の式を 1 つのゾーンに関連付けることができます。

ルーティング構成の変更 

段階的なロールアウトを続行すると、より多くのリクエストを 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  }'

Managed Runtime Environment の変更 

既存のルールを更新して別のマネージ ランタイム環境にルーティングするには、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 にルーティング 

段階的ロールアウトを完了する場合、または新しいサイトを立ち上げる場合は、単一の式を使用してゾーンのすべてのトラフィックを Managed Runtime にルーティングすることを選択できます。

1http.host eq \"www.example.com\"

eCDN ルーティングのシミュレーション 

eCDN を利用できない環境では、composable-hybrid-dev-server を使用して eCDN ルーティングをシミュレートします。

その他の参照項目