CDN でのトラフィックの設定 cdn-configuring-cloud
AEM as a Cloud Service では、受信リクエストまたは送信応答の特性を変更する、アドビが管理する CDN レイヤーで設定可能な機能のコレクションを提供します。このページで詳しく説明する次のルールは、次の動作を実現するために宣言できます。
- リクエスト変換 - ヘッダー、パスおよびパラメーターなど、受信リクエストの側面を変更します。
- 応答変換 - クライアント(web ブラウザーなど)に戻る途中のヘッダーを変更します。
- クライアントサイドのリダイレクト - ブラウザーのリダイレクトをトリガーします。この機能はまだ一般提供(GA)されていませんが、早期導入者が使用できます。
- 接触チャネルセレクター - 別の接触チャネルバックエンドにプロキシ処理します。
また、CDN で許可または拒否するトラフィックを制御するトラフィックフィルタールール(WAF を含む)も CDN で設定できます。この機能は既にリリースされています。詳しくは、WAF ルールを含むトラフィックフィルタールールページを参照してください。
さらに、CDN でその接触チャネルに接続できない場合は、自己ホスト型のカスタムエラーページ(その後レンダリングされる)を参照するルールを書き込むことができます。詳しくは、CDN エラーページの設定の記事を参照してください。
すべてのルールは、ソース管理の設定ファイルで宣言され、Cloud Manager の設定パイプラインを使用してデプロイされます。トラフィックフィルタールールを含む設定ファイルの累積サイズが 100KB を超えることはできません。
評価の順序 order-of-evaluation
機能的には、前述の様々な機能が次のシーケンスで評価されます。
設定 initial-setup
CDN でトラフィックを設定する前に、次のことを行う必要があります。
- Git プロジェクトの最上位フォルダーに次のフォルダーとファイル構造を作成します。
config/
cdn.yaml
-
cdn.yaml
設定ファイルには、メタデータと以下の例で説明するルールの両方を含める必要があります。kind
パラメーターはCDN
に設定し、バージョンはスキーマバージョン(現在1
)に設定する必要があります。 -
Cloud Manager でターゲットデプロイメント設定パイプラインを作成します。実稼動パイプラインの設定および実稼動以外のパイプラインの設定を参照してください。
備考
- RDE は現在、設定パイプラインをサポートしていません。
yq
を使用すると、設定ファイル(例:yq cdn.yaml
)の YAML 形式をローカルで検証できます。
構文 configuration-syntax
以下の節で説明するルールタイプは、共通の構文を共有しています。
ルールは、名前、条件付きの「when 句」およびアクションで参照されます。
when 句は、ドメイン、パス、クエリ文字列、ヘッダー、Cookie などのプロパティに基づいて、ルールを評価するかどうかを決定します。構文は、すべてのルールタイプで共通です。詳しくは、「トラフィックフィルタールール」記事の条件の構造の節を参照してください。
アクションノードの詳細は、ルールタイプによって異なります。概要については、以下の個々の節で説明します。
リクエスト変換 request-transformations
リクエスト変換ルールを使用すると、受信リクエストを変更できます。このルールは、正規表現を含む様々な一致条件に基づいて、パス、クエリパラメーターおよびヘッダー(Cookie を含む)の設定、設定解除および変更をサポートします。また、変数を設定して、後の評価シーケンスで参照することもできます。
ユースケースは多様で、アプリケーションの簡素化やレガシー URL のマッピング用の URL の書き換えが含まれます。
前述したように、設定ファイルにはサイズ制限があるので、より大きな要件を持つ組織では apache/dispatcher
レイヤーでルールを定義する必要があります。
設定例:
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev", "stage", "prod"]
data:
requestTransformations:
removeMarketingParams: true
rules:
- name: set-header-rule
when:
reqProperty: path
like: /set-header
actions:
- type: set
reqHeader: x-some-header
value: some value
- name: unset-header-rule
when:
reqProperty: path
like: /unset-header
actions:
- type: unset
reqHeader: x-some-header
- name: unset-matching-query-params-rule
when:
reqProperty: path
equals: /unset-matching-query-params
actions:
- type: unset
queryParamMatch: ^removeMe_.*$
- name: unset-all-query-params-except-exact-two-rule
when:
reqProperty: path
equals: /unset-all-query-params-except-exact-two
actions:
- type: unset
queryParamMatch: ^(?!leaveMe$|leaveMeToo$).*$
- name: multi-action
when:
reqProperty: path
like: /multi-action
actions:
- type: set
reqHeader: x-header1
value: body set by transformation rule
- type: set
reqHeader: x-header2
value: '201'
- name: replace-html
when:
reqProperty: path
like: /mypath
actions:
- type: transform
reqProperty: path
op: replace
match: \.html$
replacement: ""
アクション
次の表に、使用可能なアクションを示します。
アクションは連結できます。次に例を示します。
actions:
- type: transform
reqProperty: path
op: replace
match: \.html$
replacement: ""
- type: transform
reqProperty: path
op: tolower
変数 variables
変数は、リクエストの変換時に設定し、後で評価シーケンスで参照することができます。詳しくは、評価の順序を参照してください。
設定例:
kind: "CDN"
version: "1"
metadata:
envTypes: ["prod", "dev"]
data:
requestTransformations:
rules:
- name: set-variable-rule
when:
reqProperty: path
equals: /set-variable
actions:
- type: set
var: some_var_name
value: some_value
responseTransformations:
rules:
- name: set-response-header-while-variable
when:
var: some_var_name
equals: some_value
actions:
- type: set
respHeader: x-some-header
value: some header value
応答変換 response-transformations
応答変換ルールを使用すると、CDN の送信応答のヘッダーを設定および設定解除できます。また、リクエスト変換ルールで以前に設定された変数を参照するには、上記の例を参照してください。
設定例:
kind: "CDN"
version: "1"
metadata:
envTypes: ["prod", "dev"]
data:
responseTransformations:
rules:
- name: set-response-header-rule
when:
reqProperty: path
like: /set-response-header
actions:
- type: set
value: value-set-by-resp-rule
respHeader: x-resp-header
- name: unset-response-header-rule
when:
reqProperty: path
like: /unset-response-header
actions:
- type: unset
respHeader: x-header1
# Example: Multi-action on response header
- name: multi-action-response-header-rule
when:
reqProperty: path
like: /multi-action-response-header
actions:
- type: set
respHeader: x-resp-header-1
value: value-set-by-resp-rule-1
- type: set
respHeader: x-resp-header-2
value: value-set-by-resp-rule-2
アクション
次の表に、使用可能なアクションを示します。
接触チャネルセレクター origin-selectors
AEM CDN を利用して、アドビ以外のアプリケーション(おそらくパスごとまたはサブドメインごと)を含む様々なバックエンドにトラフィックをルーティングできます。
設定例:
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
originSelectors:
rules:
- name: example-com
when: { reqProperty: path, like: /proxy-me* }
action:
type: selectOrigin
originName: example-com
# useCache: false
origins:
- name: example-com
domain: www.example.com
# ip: '1.1.1.1'
# forwardHost: true
# forwardCookie: true
# forwardAuthorization: true
# timeout: 20
アクション
次の表に、使用可能なアクションを示します。
接触チャネル
接触チャネルへの接続は SSL のみで、ポート 443 を使用します。
クライアントサイドのリダイレクト client-side-redirectors
aemcs-cdn-config-adopter@adobe.com
にメールを送信し、ユースケースを説明します。301、302 および同様のクライアントサイドリダイレクトに対して、クライアントサイドのリダイレクトルールを使用できます。ルールが一致する場合、CDN は応答として、ステータスコードとメッセージ(例:HTTP/1.1 301 Moved Permanently)、および場所ヘッダーセットを含むステータス行で応答します。
絶対位置と固定値を持つ相対位置の両方が使用されます。
トラフィックフィルタールールを含む設定ファイルの累積サイズが 100KB を超えることはできません。
設定例:
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
experimental_redirects:
rules:
- name: redirect-absolute
when: { reqProperty: path, equals: "/page.html" }
action:
type: redirect
status: 301
location: https://example.com/page
- name: redirect-relative
when: { reqProperty: path, equals: "/anotherpage.html" }
action:
type: redirect
location: /anotherpage