ステージング機能の操作

Fastly のステージング機能では、本番環境にデプロイする前にステージングネットワークでサービス設定の変更をテストできます。ステージング環境と本番環境との違いを最小限に抑えるために、ステージング環境は本番環境のデプロイと同じタイプの配信拠点 (POP) で実行されます。

Staging 機能を使用するために、サービス設定を変更する必要はありません。ステージング環境のメトリクスは本番環境のメトリクスとは分離されているため、サービスを何度でもステージングできます。

設定前の注意点

この機能を使用する前に、制約事項を確認してください。デフォルトでは、ステージング機能は Fastly API、CLI、Terraform で使用できるよう自動的に有効になっています。

Fastly コンソールでのステージングコントロールの有効化

Fastly コンソールでステージング機能を使用するには、この機能を有効にする必要があります。スーパーユーザーのロールが割り当てられている場合は、次の手順に従ってください。

  1. Fastly コンソールにログインしてください。
  2. Home ページから、サービスを選択します。

  3. Opt in to Staging ボタンをクリックします。

ステージング機能のオプトインバナー 

注:以前にステージング機能を有効にしてから、アカウントでの使用をオプトアウトした場合、この機能を再度有効化するにはサポートに問い合わせる必要があります。

Next-Gen WAF を使用するサービスの準備

重要:このセクションは、Fastly コンソールで WAF にアクセスできない Next-Gen WAF のお客様のみが対象です。

サービスが Next-Gen WAF を使用するよう設定されており、デプロイで使用している edgemodule のバージョンが 2.11.0, より前の場合は、各サービスに対して次のコマンドを実行し、そのサービスの配信統合を更新して、ステージング機能のサポートを有効にしてください。

$ curl -H "x-api-user:$api_user" \
-H "x-api-token:$signalsciences_key" \
-H "Content-Type: application/json" \
-H "Fastly-Key: $fastly_key" https://dashboard.signalsciences.net/api/v0/corps/$corp/sites/$site_name/deliveryIntegration/$service_id \
-X PUT -d '{"percentEnabled": 100, "activateVersion": true }'

ヒント:このコマンドを実行する必要があるのは、デプロイで使用している edgemodule のバージョンが 2.11.0 より前の場合のみです。サービスの VCL を表示し、「x-fastly-ngwaf:edgemodule」を検索すると、デプロイで現在使用しているバージョンを確認できます。

CDN サービスバージョンのステージング

Fastly コンソール、API、CLI、または Terraform を使用して、CDN サービスのバージョンをステージングすることができます。

  1. コントロールパネル
  2. API
  3. CLI
  1. Fastly コンソールにログインしてください。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. ステージング環境にプッシュするサービスのバージョンを選択します。

  4. Activate ボタンをクリックし、Staging を選択します。

  5. サービスに追加の変更を加えた場合は、Push changes to Staging をクリックして、その変更をステージングへ反映します。

    Deploy to Staging ボタン 

開発バージョンに何度でも自由に変更を加えることができ、バージョン番号を増やすことなくステージング環境にプッシュできます。変更内容を本番環境にデプロイする準備ができたら、サービスバージョンを有効にします。

Compute サービスバージョンのステージング

Fastly API、CLI、または Terraform を使用して、Compute サービスバージョンをステージングすることができます。

  1. API
  2. CLI

サービスバージョンの有効化および無効化に使用されるのと同じ API エンドポイントを使用して、Compute サービスバージョンをステージングすることができます。

PUT /service/<service_id>/version/<version_number>/activate/staging
PUT /service/<service_id>/version/<version_number>/deactivate/staging

例えば、ターミナルアプリケーションで curl を使用して Compute サービスバージョンをステージングすることができます。

$ curl -X PUT -H "Fastly-Key: $fastly_key" https://api.fastly.com/service/$service_id/version/$version/activate/staging

CDN サービスバージョンの場合と同様に、開発バージョンには何度でも自由に変更を加えることができ、バージョン番号を増やすことなくステージング環境にプッシュできます。 変更内容を本番環境にデプロイする準備ができたら、サービスバージョンを有効にします。

ステージング環境にアクセスする

サービスのステージング環境へのアクセスには、次の2つの方法のいずれかを使用できます。指定された Anycast IPv4 アドレスを使用してパソコンで hosts ファイルを一時的に変更してローカルでテストするか、または DNS A レコードを作成してパブリックアクセスが可能なドメインを作成することができます。

注:ステージング環境には IPv4 アドレスが割り当てられます。IPv6 アドレスはサポートされていません。

サービスのステージング IP アドレスの取得

hosts ファイルの変更や DNS A レコードの作成を行う前に、サービスのステージング環境の Anycast IP アドレスを取得する必要があります。

  1. コントロールパネル
  2. API
  1. Fastly コンソールにログインしてください。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. Staging セクションで、Test on staging をクリックします。サービスのステージング環境の IP アドレスが表示されます。

  4. IP アドレスをコピーし、hosts ファイルまたは DNS A レコードの更新に使用します。

ヒント:Fastly コンソールにステージング環境の IP アドレスが表示されない場合は、サポートチームにお問い合わせください

Hosts ファイルの更新

パソコンからステージングバージョンにアクセスするには、テキストエディターでローカルの hosts ファイルを開きます。hosts ファイルが保存される正確な場所は、使用しているオペレーティングシステムによって異なります。

  • Linux:/etc/hosts

  • macOS:/private/etc/hosts

  • Windows:C:\Windows\System32\drivers\etc\hosts

ファイルの最後に、ステージング IP アドレスと本番サービスのドメイン名を含むステージングバージョンのエントリーを追加します (例:192.0.2.0 www.example.com)。変更内容をファイルに保存します。

macOS を使用している場合、以下のコマンドを入力して DNS キャッシュを消去します。

$ sudo killall -HUP mDNSResponder

この状態でパソコンで本番サービスのドメイン名 (この例では www.example.com) にアクセスすると、ステージングバージョンが表示されるようになります。

ステージングバージョンのテストが終了したら、hosts ファイルからエントリーを削除します。

DNS A レコードの作成

パブリックアクセスが可能なドメインからステージングバージョンにアクセスするには、値として指定された IP アドレスを使用して、新しい DNS A レコードを作成します。DNS A レコードの作成または更新方法の具体的な手順については、ご利用の DNS プロバイダーのドキュメントを参照してください。

変数の使用

変数を使用すると、コードがステージング環境で実行されているかどうかを判別できます。

VCL

次の VCL 変数が利用可能です。

変数名説明種類アクセス
fastly.is_stagingVCL コードがサービスのステージング環境で実行されている場合は true を返します。BOOL読み取り専用

Compute

次の Compute 変数が利用可能です。

変数名説明
FASTLY_IS_STAGINGCompute コードがサービスのステージング環境で実行されている場合は 1 を、本番環境で実行されている場合は 0 を返します。

パージ

Fastly API のパージ用エンドポイントを使用することで、ステージング環境に関連付けられたキャッシュをパージすることができます。例えば、ターミナルアプリケーションで curl を使用して、ステージング環境のキャッシュをパージできます。

URL によるパージ

$ curl -i \
-H "Fastly-key: $fastly_key" \
-X PURGE \
--connect-to "::$staging_ip:443" \
"https://$url_to_purge"

ヒント:ステージング IP アドレスがわからない場合は、詳細について「サービスのステージング IP アドレスの取得」の手順を参照してください。

全キャッシュのパージ

$ curl -i \
-H "Fastly-Key: $fastly_key" \
-H "Fastly-Purge-Environment: staging" \
-X POST \
"https://api.fastly.com/service/$service_id/purge_all"

サロゲートキータグによるパージ

$ curl -i \
-H "Fastly-key: $fastly_key" \
-H "Fastly-Purge-Environment: staging" \
-X POST \
"https://api.fastly.com/service/$service_id/purge/$surrogate_key"

複数のサロゲートキータグによるパージ

$ curl -i \
-H "Fastly-key: $fastly_key" \
-H "Fastly-Purge-Environment: staging" \
-H "Content-type: application/json" \
-X POST \
-d '{"surrogate_keys":["key"]}' \
"https://api.fastly.com/service/$service_id/purge"

サービスバージョンのステージングの無効化

サービスバージョンのステージングを無効にするには、以下の手順に従います。

  1. Fastly コンソールにログインしてください。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. ステージングを無効にするサービスのバージョンを選択します。

  4. Options メニューから、Deactivate on Staging を選択します。

Fastly コンソールでのステージングコントロールのオプトアウト

スーパーユーザーのロールが割り当てられている場合は、次の手順に従って Fastly コンソールでステージングコントロールを非表示にします。

  1. Fastly コンソールにログインしてください。
  2. Home ページから、ステージング済みのサービスを選択します。

  3. ページの Staging セクションで、Opt out をクリックします。

    ステージング機能のオプトアウトリンク 

Fastly コンソールでステージングコントロールを非表示にした後も、Fastly API、CLI、Terraform を使用してサービスバージョンをステージングできます。