場合によっては、Embulk設定ファイルに接続詳細を含めることが理想的でないことがあります。特定の詳細を隠したりマスクしたりする必要がある状況では、設定ファイルに環境変数を埋め込むことができます。
Embulkでの環境変数の使用は実験的な機能です。この機能は将来のリリースで変更または削除される可能性があります。
Treasure Dataの基本的な知識。
Embulkの基本的な知識。
環境に設定された環境変数。
Embulk変数のベースとなっているLiquid Template Engineのドキュメントを確認してください。
一部の環境変数を置き換え、変数命名規則に従う必要があります:{{ env.replaced_detail }}。replaced_detailは環境変数の名前です。例えば、データベースパスワードの環境変数を設定し、それをDB_PASSWORDと名付けた場合、設定ファイル内の値は以下のようになります:
{{ env.DB_PASSWORD }}
規則は、二重波括弧{{ }}内でenv.の後に環境変数の名前を続けます。
環境変数は、実行中のプロセスがタスクを完了するために使用できる動的に名前付けされた値です。例えば、実行中のプロセスはDB_HOST環境変数の値をクエリしてMySQLデータベースのIPアドレスを発見したり、API_KEY変数を使用してTreasure Dataで認証するためのAPIキーの値を見つけることができます。環境変数を設定または変更する手順はプラットフォームによって異なります。例えば、Mac OS Xでの環境変数を参照してください。
設定ファイルで変数を使用するには:
.yml設定ファイルの拡張子が
.yml.liquidで終わるように名前を変更します。例えば、設定ファイルが元々config.ymlという名前だった場合、config.yml.liquidに名前を変更します。変数命名規則を使用して接続詳細を置き換え、環境変数を設定ファイルに挿入します。
プレビューモードでEmbulkを実行して変更を検証します。例:
embulk preview config.yml.liquid- Embulkを実行して新しい設定ファイルの詳細を設定します。例:
embulk run config.yml.liquid例えば、元のconfig.ymlファイルが以下の場合:
in:
type: mysql
host: localhost
port: 3306
user: username
password: password
database: mysql_db
select: "col1, col2, datecolumn"
where: "col4 != 'a'"
out:
type: td
apikey: xxxxxxxxxxxx
endpoint: api.treasuredata.com
database: dbname
table: tblname
time_column: datecolumn
mode: replace
# by default mode: append is used, if not defined.
# Imported records are appended to the target table with this mode.
# mode: replace, replaces existing target table
default_timestamp_format: '%d/%m/%Y'MySQLのポート、ユーザー名、パスワード、データベースを隠したい場合。出力セクションでは、APIキーを隠したい場合があります。正しい命名規則{{ env.replaced_details }}を使用すると、ファイルは以下のようになります:
in:
type: mysql
host: {{ env.db_host }}
port: {{ env.db_port }}
user: {{ env.db_username }}
password: {{ env.db_password }}
database: {{ env.db_name }}
select: "col1, col2, datecolumn"
where: "col4 != 'a'"
out:
type: td
apikey: {{ env.td_apikey }}
endpoint: {{ env.api_endpoint }}
database: {{ env.td_db_name }}
table: {{ env.td_table_name }}
time_column: datecolumn
mode: replace
#by default mode: append is used, if not defined. Imported records
#are appended to the target table with this mode.
#mode: replace, replaces existing target table
default_timestamp_format: '%d/%m/%Y'.