Environments は、コードが実行される異なるコンテキストです。Cloudflare Developer Platform では、異なる環境を作成および管理できます。環境を通じて、同じプロジェクトを複数の場所へ、複数の名前でデプロイできます。
環境ごとに異なる D1 データベースを指定するには、Wrangler ファイルで次の構文を使います。
{
"env": {
// This is a staging environment
"staging": {
"d1_databases": [
{
"binding": "<BINDING_NAME_1>",
"database_name": "<DATABASE_NAME_1>",
"database_id": "<UUID1>"
}
]
},
// This is a production environment
"production": {
"d1_databases": [
{
"binding": "<BINDING_NAME_2>",
"database_name": "<DATABASE_NAME_2>",
"database_id": "<UUID2>"
}
]
}
}
}[[env.staging.d1_databases]]
binding = "<BINDING_NAME_1>"
database_name = "<DATABASE_NAME_1>"
database_id = "<UUID1>"
[[env.production.d1_databases]]
binding = "<BINDING_NAME_2>"
database_name = "<DATABASE_NAME_2>"
database_id = "<UUID2>"上記のコードでは、staging 環境は production 環境(DATABASE_NAME_2)とは別のデータベース(DATABASE_NAME_1)を使います。
環境ごとに異なる D1 データベースを指定する必要がある場合、Wrangler 設定ファイル には次のようなバインディングが含まれることがあります。
{
"env": {
"production": {
"d1_databases": [
{
"binding": "DB",
"database_name": "DATABASE_NAME",
"database_id": "DATABASE_ID"
}
]
}
}
}[[env.production.d1_databases]]
binding = "DB"
database_name = "DATABASE_NAME"
database_id = "DATABASE_ID"上記の設定では次のとおりです。
[[env.production.d1_databases]]はenvの下にproductionオブジェクトを作り、d1_databasesプロパティを持ちます。d1_databasesはオブジェクトの配列です。データベースが複数ある場合に複数の D1 バインディングを作成できるためです。<key> = <value>形式の行の下にあるプロパティは、d1_databases配列内のオブジェクトのプロパティです。
したがって、上記のバインディングは次と同等です。
{
"env": {
"production": {
"d1_databases": [
{
"binding": "DB",
"database_name": "DATABASE_NAME",
"database_id": "DATABASE_ID"
}
]
}
}
}{
"env": {
"staging": {
"d1_databases": [
{
"binding": "BINDING_NAME_1",
"database_name": "DATABASE_NAME_1",
"database_id": "UUID_1"
}
]
},
"production": {
"d1_databases": [
{
"binding": "BINDING_NAME_2",
"database_name": "DATABASE_NAME_2",
"database_id": "UUID_2"
}
]
}
}
}[[env.staging.d1_databases]]
binding = "BINDING_NAME_1"
database_name = "DATABASE_NAME_1"
database_id = "UUID_1"
[[env.production.d1_databases]]
binding = "BINDING_NAME_2"
database_name = "DATABASE_NAME_2"
database_id = "UUID_2"上記は次の JSON 構造と同等です。
{
"env": {
"production": {
"d1_databases": [
{
"binding": "BINDING_NAME_2",
"database_id": "UUID_2",
"database_name": "DATABASE_NAME_2"
}
]
},
"staging": {
"d1_databases": [
{
"binding": "BINDING_NAME_1",
"database_id": "UUID_1",
"database_name": "DATABASE_NAME_1"
}
]
}
}
}