キーワードの置換

Deploy CLIは、環境固有の値を使用した動的なキーワード置換をサポートします。これにより、すべてのテナントが同じリソース構成ファイルを共有しながらも、微妙に異なる値を挿入するスケーラブルなマルチテナントワークフローが可能になります。

キーワード置換を使用するには、AUTH0_KEYWORD_REPLACEMENT_MAPPINGS構成プロパティに適切なマッピングが含まれていなければなりません。リソース構成ファイルには、以下のいずれかの方法でキーワードを挿入できます。‌‌

  1. @@EXAMPLE_KEY@@:「@」記号を使用すると、ツールは値を置換する前にJSON.stringifyを実行します。したがって、値が文字列の場合はツールが引用符を追加します。値が配列またはオブジェクトの場合はツールが中括弧を追加します。

  2. ##EXAMPLE_KEY##:「#」記号を使用すると、ツールはリテラル置換を実行します。引用符や中括弧は追加されません。

config.jsonの例

{
  "AUTH0_DOMAIN": "test-tenant.us.auth0.com",
  "AUTH0_CLIENT_ID": "FOO",
  "AUTH0_CLIENT_SECRET": "BAR",
  "AUTH0_KEYWORD_REPLACE_MAPPINGS": {
    "ENVIRONMENT": "dev",
    "ALLOWED_LOGOUT_URLS": ["https://dev-test-site.com/logout", "localhost:3000/logout"],
    "ALLOWED_ORIGINS": ["https://dev-test-site.com", "localhost:3000"]
  }
}

Was this helpful?

/

tenant.yamlの例

tenant:
  friendly_name: "##ENVIRONMENT## tenant"
  allowed_logout_urls: @@ALLOWED_LOGOUT_URLS@@
  enabled_locales:
    - en
clients:
  - name: Test App
    allowed_origins: @@ALLOWED_ORIGINS@@
    allowed_logout_urls: @@ALLOWED_LOGOUT_URLS@@

Was this helpful?

/

tenant.jsonの例

{
  "friendly_name": "##ENVIRONMENT## tenant",
  "allowed_logout_urls": "@@ALLOWED_LOGOUT_URLS@@"
}

Was this helpful?

/

配列の連結

キーワード置換によって静的配列に値を連結したい状況に遭遇することがあります。このケースをサポートする特別な構文はありませんが、適切な値を含む単一の文字列で二重引用符をエスケープし、##キーワード構文を挿入することでこれを実現できます。この手法は、YAML形式とディレクトリ形式の両方で機能します。

config.jsonの例

{
  "AUTH0_KEYWORD_REPLACE_MAPPINGS": {
    "GLOBAL_WEB_ORIGINS": "\"http://local.me:8080\", \"http://localhost\", \"http://localhost:3000\""
  }
}

Was this helpful?

/

tenant.yamlの例

clients:
  - name: Test App
    web_origins: [ "http://production-app.com", "https://production-app.com", ##GLOBAL_WEB_ORIGINS## ]

Was this helpful?

/

エクスポート時にキーワードを保持する

通常、Deploy CLIは、下位レベルの環境(例: dev、test)から本番環境までの一方向ワークフローで操作する場合に最適です。ただし、上位レベルの環境からローカル構成ディレクトリに構成をエクスポートする必要がある場合があります。デフォルトでは、リモート値によってローカル値が上書きされ、キーワードマーカーが削除されます。ただし、キーワード置換の保持は、AUTH0_PRESERVE_KEYWORDSブール構成プロパティを使用して有効にできます。この構成を有効にすると、Deploy CLIはエクスポート時にローカル構成ファイルで定義されたキーワードマーカーを保持しようとします。

キーワード保持機能は、リソース構成ファイルの正確性を維持しながら、できるだけ多くのキーワードを保持しようとします。そして、ほとんどの場合、ユーザーによる介入なしで機能します。ただし、いくつかの大きな制限があります:

  • ローカルとリモートで異なる値を持つキーワード置換構成フィールドの場合、ローカル構成値が常に優先されます。これにより、リソース定義ファイル内のそのフィールドの値のどこかにキーワード置換マーカーが存在する場合、リモートでの帯域外変更はすべて消去されます。「インテリジェントな」調整はありません。

  • 特定の識別子のない配列は保持できません。例:["http://site.com/logout", "localhost:3000/logout", "##LOGOUT_URL##"].これは、これらの値の順序が非決定的であるためです。あるいは、これらの値を保持するには、@@ARRAY_REPLACE@@キーワード置換構文を値全体で使用することをお勧めします。

キーワード保持の歴史と技術的な課題の詳細については、RFC:エクスポート中のキーワード保持を参照してください