コンテンツにスキップ

環境変数

背景

環境変数は、テキスト文字列やJSON値をWorkerに添付することを可能にするバインディングの一種です。環境変数は、Workerのfetchイベントハンドラーに渡されるenvパラメーターで利用可能です。

テキスト文字列とJSON値は暗号化されておらず、アプリケーションの設定を保存するのに便利です。

Wranglerを使用して環境変数を追加する

テキストおよびJSON値は、wrangler.tomlファイルの[vars]設定を介して定義されます。以下の例では、API_HOSTAPI_ACCOUNT_IDはテキスト値で、SERVICE_X_DATAはJSON値です。

name = "my-worker-dev"
[vars]
API_HOST = "example.com"
API_ACCOUNT_ID = "example_user"
SERVICE_X_DATA = { URL = "service-x-api.dev.example", MY_ID = 123 }

Workerコード内でAPI_HOST環境変数にアクセスする方法については、以下の例を参照してください:

export default {
async fetch(request, env, ctx) {
return new Response(`API host: ${env.API_HOST}`);
}
}

varsは非継承可能なキーです。非継承可能なキーはトップレベルで設定可能ですが、環境によって継承することはできず、各環境ごとに指定する必要があります。

異なる環境のために環境変数を定義するには、以下の例を参照してください:

name = "my-worker-dev"
[env.staging.vars]
API_HOST = "staging.example.com"
API_ACCOUNT_ID = "staging_example_user"
SERVICE_X_DATA = { URL = "service-x-api.dev.example", MY_ID = 123 }
[env.production.vars]
API_HOST = "production.example.com"
API_ACCOUNT_ID = "production_example_user"
SERVICE_X_DATA = { URL = "service-x-api.prod.example", MY_ID = 456 }

wrangler devを使用したローカル開発では、wrangler.toml内の変数は、Workerのルートディレクトリにある.dev.varsファイルで定義された値によって自動的に上書きされます。これは、ソース管理にチェックインしたくない値を提供するのに便利です。

Terminal window
API_HOST = "localhost:4000"
API_ACCOUNT_ID = "local_example_user"

または、wrangler.toml内で環境ごとの値を指定し、ローカル開発時にenvフラグを介してenvironment値を提供することもできます。例えば、wrangler dev --env=localのようにします。

ダッシュボードを使用して環境変数を追加する

ダッシュボードを使用して環境変数を追加するには:

  1. Cloudflareダッシュボードにログインし、アカウントを選択します。
  2. Workers & Pagesを選択します。
  3. 概要でWorkerを選択します。
  4. 設定を選択します。
  5. 変数を選択します。
  6. 環境変数の下で変数を追加を選択します。
  7. 変数名とそのを入力します。これにより、Workerで利用可能になります。
  8. (オプション)複数の環境変数を追加するには、変数を追加を選択します。
  9. 保存してデプロイを選択して変更を実装します。

Compare secrets and environment variables

Secrets are environment variables. The difference is secret values are not visible within Wrangler or Cloudflare dashboard after you define them. This means that sensitive data, including passwords or API tokens, should always be encrypted to prevent data leaks. To your Worker, there is no difference between an environment variable and a secret. The secret’s value is passed through as defined.

関連リソース

  • 最適化された体験のために、ESモジュール構文で環境変数にアクセスする方法を学びましょう。