CloudFront Agent (Functions)
概要
AWS CloudFront の Functions 環境で NetFUNNEL と有機的に統合され、ユーザーリクエストが発生する最前線でリアルタイムに待機列を制御します。
Function の作成
関数の作成
- CloudFront に移動します。
- 左側のサイドメニューで [関数] をクリックします。
- [関数の作成] をクリックします。
- 関数名を入力し、Runtime は cloudfront-js-2.0 (既定値)を選択して [関数の作成] をクリックします。
関数設定
- [ビルド] - [関数コード] - [開発] にエージェントコードをコピーして貼り付けます。
- [変更を保存] をクリックします。
- [テスト] タブに移動し、[関数をテスト] をクリックして実行結果が成功になることを確認します。
- [発行] タブに移動し、[関数を発行] をクリックします。
KeyValueStore の作成
KeyValueStore の作成
- Associated KeyValueStore メニューで [Create new KeyValueStore] をクリックします。
- 名前を入力し、[Create] をクリックします。
- Key value pairs メニューで [Edit] をクリックします。
- [Add pair] をクリックし、以下の表を参考に必須値を追加します。
| Key | Value (example) | 説明 |
|---|---|---|
client_id | stclab-0000 | NetFUNNEL が顧客に付与する ID です。[NetFUNNEL コンソール] - [エージェント] - [Edge Agent] で確認できます。 |
project_key | service_1 | 使用したいプロジェクトのキーを入力してください。[NetFUNNEL コンソール] - [プロジェクト] で確認できます。 |
segment_key | segKey_1111, segKey_2222 | 使用したいすべてのセグメントのキーを入力してください。入力順に応じてトリガーの優先順位が決まります。[NetFUNNEL コンソール] - [プロジェクト] - [セグメント] で確認できます。 |
- 入力が完了したら [Save changes] をクリックし、ポップアップの [Done] をクリックします。
関数に関連付ける
- Associated functions メニューで [Go to functions] をクリックし、上で作成した関数を選択します。
- Associated KeyValueStore メニューで [Associate existing KeyValueStore] をクリックします。
- 上で作成した KeyValueStore を選択し、[Associate KeyValueStore] をクリックします。
CloudFront 設定
CloudFront に Functions を接続
- Function を適用する CloudFront ID を選択します。
- [ビヘイビア] タブで項目を選択し、[編集] をクリックします。
- 一番下の関数の関連で、ビューアーリクエストに上で作成した関数を選択します。
- [変更を保存] をクリックします。
CloudFront の無効化
- [無効化] タブに移動し、[無効化を作成] をクリックします。
- オブジェクトパスに
/*を入力し、[無効化を作成] をクリックします。 - 無効化が完了すると、CloudFront に Functions の関連付けが適用されます。
KeyValueStore 設定
CloudFront Function は外部と通信できないため、[NetFUNNEL コンソール] - [セグメント] で提供されるトリガールール、進入パス、進入キー無効化機能は KeyValueStore(以下 KVS)を通じて使用できます。
そのほかにも、エージェントが提供する機能であるトリガー時間、Good Bot の例外処理、進入キーの自動返却、待機室ドメインの変更(CNAME)、クッキードメイン設定を KVS を通じて使用できます。
トリガールール
セグメントごとに、待機を適用するページの条件(URL、Domain、Path)を定義します。
設定形式
| Key | Value |
|---|---|
{segment_key}:trigger:{component}:{match} | URL 全体または一部(例: stclab.com) |
Key 詳細パラメーター
Key の構成要素である {component} と {match} には、以下の値を組み合わせて入力します。
{component}: 比較対象url: URL 全体基準domain: ドメインアドレス基準(例:netfunnel.stclab.com)path: ドメイン後ろのパス基準(例:/shop,/login)
{match}: 比較方法equal: 入力した値と正確に一致する場合contain: 入力した値が対象に含まれている場合
設定例
| 適用シナリオ | Key | Value |
|---|---|---|
| 特定パスを含む (URL パスに shop が含まれるすべてのリクエスト) | segKey_1111:trigger:path:contain | shop |
| 特定ドメイン一致 (特定ドメインに入ってくるすべてのリクエスト) | segKey_2222:trigger:domain:equal | netfunnel.stclab.com |
| 特定ページの完全一致 (イベントページアドレスと正確に一致する場合) | segKey_3333:trigger:url:equal | https://netfunnel.stclab.com/event |
トリガー時間
セグメントのトリガールールが一致するものの、特定の時間にのみ待機を発生させたい場合に設定します。一回限りと繰り返し用に分けて設定できます。
トリガー時間を設定しない場合、常に待機室へ移動します。
一回限りのトリガー設定
| Key | Value |
|---|---|
{segment_key}:trigger:{action} | 10 桁の timestamp(例: 1777654300) |
{action}にはstartまたはendを入力してください。startのみを設定する場合、Value に入力した時間以降は常に待機室へ移動します。endのみを設定する場合、Value に入力した時間まで常に待機室へ移動します。startとendの両方を設定する場合、それぞれの Value に入力した時間の間に待機室へ移動します。
繰り返しトリガー設定 - 毎日繰り返し
| Key | Value |
|---|---|
{segment_key}:trigger:{action}:every:day | HH:mm(例: 17:30) |
{action}にはstartまたはendを入力してください。startのみを設定する場合、Value に入力した時間から 24 時まで待機室へ移動します。endのみを設定する場合、0 時から Value に入力した時間まで待機室へ移動します。startとendの両方を設定する場合、それぞれの Value に入力した時間の間に待機室へ移動します。
繰り返しトリガー設定 - 毎週繰り返し
| Key | Value |
|---|---|
{segment_key}:trigger:{action}:every:week | day1,day2:HH:mm(例: mon,wed,fri:17:30) |
{action}に入るstart、endのルールは毎日繰り返し設定と同じため省略します。- Value の最初の要素には
sun、mon、tue、wed、thu、fri、satを使用でき、カンマ(,)で複数入力できます。
タイムゾーン設定
タイムゾーンを設定します。設定値を基準にトリガー時間を計算します。
タイムゾーンを設定しない場合、既定値 9(Seoul, Tokyo)として処理されます。
| Key | Value |
|---|---|
timezone_offset | 自然数または負の整数(例: 9 または -3) |
進入パス設定
待機が終了したユーザーに一時パスを付与し、設定した時間の間は待機室へ移動しないようにします。
進入パスを設定しない場合、最小値(5)が適用されます。
| Key | Value |
|---|---|
{segment_key}:entry_pass | 秒単位の数値(例: 300) |
- Value の最小値は
5(5 秒)、最大値は86400(24 時間)です。 - Value の入力値が
5より小さい場合は最小値に、86400より大きい場合は最大値に補正されます。
進入パス無効化
特定の時間または URL に進入したとき、進入パスの有効時間内であっても強制的に終了します。無効化後、ユーザーがトリガールールに一致する URL に進入すると待機室へ移動します。
URL 基準の無効化
特定の URL に進入すると進入パスを無効化します。無効化を設定した URL では待機室への移動は発生しません。
| Key | Value |
|---|---|
{segment_key}:invalidate:url:{match} | URL 全体または一部(例: ドメインアドレス、特定パス) |
{match}にはトリガールールと同じくequalまたはcontainを使用します。
時間基準の無効化
特定の時間以前に発行された進入パスを無効化します。無効化を設定した時間以降に進入する場合、進入パスが動作します。
| Key | Value |
|---|---|
{segment_key}:invalidate:time | 10 桁の timestamp(例: 1777654300) |
Good Bot の例外処理
User-Agent に Good Bot 識別用のキーワードが含まれる場合、該当リクエストはエージェントの制御対象から除外されます。
| Key | Value |
|---|---|
good_bots | goodbot 一覧(例: Googlebot, Bingbot, Slurp) |
- カンマ(
,)で複数の Good Bot を入力できます。
進入キーの自動返却
NetFUNNEL エージェントは、進入後に発行されたキーを自動で返却し、次の待機者が進入できるようにしています。キーを即座に返却せず、セグメントで設定したタイムアウト時に返却したい場合にこの機能を使用します。
進入キーの自動返却を設定しない場合、true として適用され、常に自動で返却されます。
| Key | Value |
|---|---|
return_key | true または false |
待機室ドメインの変更
NetFUNNEL 待機室ページのドメインは agent-lib.stclab.com です。サービス中のドメインに合わせて変更するには、希望のドメインをリクエストし、設定にも追加する必要があります。
| Key | Value |
|---|---|
vwr_page_domain | プロトコルとドメイン(例: https://wait.stclab.com) |
クッキードメイン設定
NetFUNNEL エージェントは、進入後に発行されたキーをクッキーに保存する際、現在のページのドメインを基準に保存します。異なるサブドメイン間でキーを共有する必要がある場合は、メインドメインがクッキーに保存されるよう設定します。
netfunnel.stclab.com と botmanager.stclab.com のようにサブドメインが異なるページでクッキーを共有する必要がある場合は、.stclab.com と設定します。
| Key | Value |
|---|---|
cookie_domain | .メインドメイン(例: .stclab.com) |