変数を使用すると、アクセスキーやパスワードなどのプレーンテキストの認証情報に伴うセキュリティリスクを回避できます。変数を再利用すると、コードや値の重複を避けられるため、設定管理を簡素化できます。変数は、SQL ジョブ、JAR/Python デプロイメント、ログ設定、UI 設定でサポートされています。このトピックでは、変数を作成し、さまざまなシナリオで使用する方法を説明します。
背景情報
変数は、名前と値で構成されます。ユーザーが定義する名前は、実データのプレースホルダーとして機能し、通常は意味を反映します。値は、名前が表す実データです。Flink は、デプロイメント変数と名前空間変数の 2 種類の変数をサポートします。違いは次のとおりです。
-
デプロイメント変数:1 つのデプロイメント内でのみ使用できます。たとえば、ETL SQL ジョブ内、または JAR/Python デプロイメントの main 関数の引数として使用できます。デプロイメント変数を参照する形式は
${variable_name}です。詳細については、「デプロイメント変数」をご参照ください。 -
名前空間変数:名前空間全体で使用できます。これには、[Development](データインジェスト、ETL、クエリスクリプト)、JAR/Python デプロイメントの main 関数の引数、デプロイメントパラメーター設定、ログ設定、UI 設定(カタログの作成など)での使用が含まれます。名前空間変数を参照する形式は
${secret_values.variable_name}です。作成方法と使用方法については、「名前空間変数」をご参照ください。
注意事項
-
1 つの変数名に対して複数の値を設定できません。
-
キーワードを変数名として使用しないでください。
-
SQL ジョブでは、一時テーブル(CREATE TEMPORARY TABLE)でのみ変数を使用できます。永続テーブル(CREATE TABLE)で変数を使用すると、テーブルが正しく動作しません。
デプロイメント変数
デプロイメント変数名は、1 つのデプロイメント内で一意である必要があります。
ETL(SQL ジョブ)
SQL ジョブの開発時に変数を使用できます。カスタム関数の引数としても使用できます。また、ジョブの起動時に変数値を変更することもできます。
-
Realtime Compute for Apache Flink コンソールのナビゲーションペインで、 をクリックします。
-
目的の SQL ジョブの SQL エディターで、次の例のように
${variable_name}形式を使用して変数を作成します。-
WITH 句のパラメーターとして使用する場合は、変数をシングルクォーテーションで囲みます:
'${variable_name}'。 -
その他の箇所(SQL テーブル名やフィールド名など)で使用する場合は、変数をバッククォートで囲みます:
`${variable_name}`。
create temporary table `${source_name}`( id varchar, name varchar ) with ( 'connector' = 'datagen' ); create temporary table blackhole( id varchar, `${test_name}` varchar ) with ( 'connector' = '${blackhole}' ); insert into blackhole select * from `${source_name}`; -
-
Flink は、SQL ジョブ内でこの形式を使用するデプロイメント変数を自動的に識別します。これらの変数に値を指定します。
-
方法 1:SQL エディターに [Job Variables] パネルが表示されます。このパネルで値を入力します。
[Job Variables] パネルで、キーと値のペアを設定します:
source_name=datagen、test_name=name、blackhole=blackhole。 -
方法 2:右側の [More Configurations] をクリックします。[Job Variables] セクションで値を入力します。
たとえば、変数
source_nameをdatagen、test_nameをname、blackholeをblackholeとして設定します。その後、${variable_name}構文を使用して、これらの値を SQL コード内で参照できます。
-
-
ジョブのデプロイ後、[Deployments] 配下のジョブ詳細ページにある [Deployment Details] タブで変数を確認できます。
ジョブプロパティでは、[Job Variables] 行に設定済みの変数(source_name、test_name、blackhole など)と対応する値が表示されます。
-
目的のジョブの [Actions] 列で [Start] をクリックします。ジョブ起動パネルで変数値を変更できます。
重要ジョブ起動パネルで変更した変数値は、現在のジョブ実行にのみ適用されます。SQL ジョブで定義されている値は変更されません。
ジョブ起動パネルでは、ステートレス起動 または ステートフル起動 モードを選択できます。ステートフル起動を選択した場合は、最新の状態から復元 などの復元オプションを設定できます。[Job Variables] セクションには、変数と既定値(
source_nameがdatagen、test_nameがname、blackholeがblackholeなど)が表示されます。必要に応じて変更し、[Start] をクリックします。
JAR/Python デプロイメント
JAR/Python デプロイメントでは、main 関数の引数として変数を使用できます。
方法 1:名前空間変数の使用
-
新しい変数を作成します。詳細については、「変数の作成」をご参照ください。
-
Realtime Compute for Apache Flink コンソールで、 に移動し、[Deploy Job] をクリックします。
-
[Entry Point Main Arguments] フィールドで、
--variable_in_code ${secret_values.variable_in_management}形式を使用して引数を入力します。変数名に特殊文字を含める必要がある場合は、「How do I pass special characters as parameters when I use Entry Point Main Arguments?」をご参照ください。
例:
--akid ${secret_values.test1}と--aksecret ${secret_values.test2}を入力します。各パラメーターは改行して指定します。その他のデプロイメントパラメーターの詳細については、「Deploy a job」をご参照ください。
-
[Deploy] をクリックします。
-
目的のデプロイメントの [Actions] 列で [Start] をクリックします。
方法 2:デプロイメント変数の使用
-
Realtime Compute for Apache Flink コンソールで、 に移動し、[Deploy Job] をクリックします。
-
[Entry Point Main Arguments] フィールドで、
--variable_in_code ${deployment_variable_name}形式を使用して引数を入力し、下の [Job Variables] セクションで変数値を指定します。変数名に特殊文字を含める必要がある場合は、「How do I pass special characters as parameters when I use Entry Point Main Arguments?」をご参照ください。
例:
--akid ${test1} --aksecret ${test2}を入力し、test1(アクセスキー ID)とtest2(シークレットアクセスキー)変数を追加して、既定値として実際の認証情報を入力します。その他のデプロイメントパラメーターの詳細については、「Deploy a job」をご参照ください。
-
[Deploy] をクリックします。
-
目的のデプロイメントの [Actions] 列で [Start] をクリックします。ジョブ起動パネルで変数値を変更できます。
起動モードを選択します:ステートレス起動(初期状態なし)または ステートフル起動(既存の状態から)。また、[Configuration Autotuning] を有効化することもできます。
名前空間変数
変数の作成
変数を作成できるのは、編集者以上の権限を持つメンバー、または変数作成の特定権限を持つメンバーのみです。
-
Realtime Compute for Apache Flink コンソールにログインします。目的のワークスペースを見つけ、[Actions] 列の [Console] をクリックします。
-
ナビゲーションペインで、 をクリックし、[Add Variable] をクリックします。
パラメーター
説明
変数名
変数名は名前空間内で一意である必要があります。作成後に変更はできません。
変数値
変数値は大文字と小文字が区別されます。値は作成後に変更できます。詳細については、「変数の編集または削除」をご参照ください。
タイプ(プレーンテキスト/暗号文)
タイプは作成後に変更できません。
-
プレーンテキスト:変数値は [Variables] ページで直接表示されます。
-
暗号文:変数値は非表示になります。
変数の作成後、[Variables] ページのリストで、名前、タイプ、値、作成時刻を確認できます。また、変数を [Edit] または [Delete] できます。
-
-
[OK] をクリックします。
変数の使用
変数を作成した後、${secret_values.variable_name} 形式で参照できます。"variable_name" を作成した変数名に置き換えてください。
[Development]
Realtime Compute for Apache Flink コンソールの [Development] セクションで名前空間変数を使用できます。
ETL(SQL)
SQL ジョブの DDL で、${secret_values.variable_name} 形式を使用して変数を参照できます。次の例を参照してください。
-
WITH 句のパラメーターとして使用する場合は、変数をシングルクォーテーションで囲みます:
'${secret_values.variable_name}'。 -
その他の箇所(SQL テーブル名やフィールド名など)で使用する場合は、変数をバッククォートで囲みます:
`${secret_values.variable_name}`。
create temporary table `${secret_values.source_name}`(
id varchar,
name varchar
) with (
'connector' = 'datagen'
);
create temporary table blackhole(
id varchar,
`${secret_values.test_name}` varchar
) with (
'connector' = '${secret_values.blackhole}'
);
insert into blackhole select * from `${secret_values.source_name}`;
データインジェスト
source:
type: mysql
name: Mysql Source
hostname: localhost
port: 3306
username: test
password: ${secret_values.mysqlpw}
tables: app_db.\.*
server-id: 5400-5404
···
データクエリ
USE CATALOG paimon;
CREATE DATABASE IF NOT EXISTS `${secret_values.test_name}`;
CREATE TABLE paimon.`${secret_values.test_name}`.ods_user_log
(
item_id int NOT NULL,
`${secret_values.user}` varchar(50) NOT NULL,
action varchar(20) NOT NULL,
vtime timestamp,
ds varchar(10) NOT NULL
)
PARTITIONED BY (ds);
SELECT * from paimon.`${secret_values.test_name}`.ods_user_log LIMIT 10;
JAR/Python デプロイメント
JAR/Python デプロイメントでは、main 関数の引数として変数を使用できます。
-
開発コンソールで、 に移動し、[Deploy Job] をクリックします。
-
[Entry Point Main Arguments] フィールドで、次の形式を使用して引数を入力します。
例:
--input ${secret_values.input}(${secret_values.variable_name}は変数参照の構文です)。その他のデプロイメントパラメーターの詳細については、「Deploy a job」をご参照ください。
-
[Deploy] をクリックします。
実行時パラメーター設定
ジョブの実行時パラメーターで変数を使用できます。
-
ページに移動し、目的のジョブをクリックします。
-
[Deployment Details] タブで、[Runtime Parameter Configuration] セクション右上の [Edit] をクリックし、パラメーターを設定します。次の例のように、変数をパラメーター値として使用できます。
[Other Configurations] テキストエリアで、
${secret_values.xxx}形式を使用して変数を参照します。たとえば、Jindo OSS のアクセス認証情報を設定する場合は、fs.oss.jindo.buckets、fs.oss.jindo.accessKeyId、fs.oss.jindo.accessKeySecretなどのパラメーターを設定できます。 -
[Save] をクリックします。
ログ設定
-
ログ設定ページに移動します。
-
単一ジョブのログを設定するには、「Configure a log output channel for a single job」をご参照ください。
-
名前空間内のすべてのジョブのログを設定するには、「Configure a default log output channel for all jobs in a namespace」をご参照ください。
-
-
ログ設定で変数を使用します。
たとえば、ジョブログを SLS に送信するように設定する場合、'accessKeyId' と 'accessKeySecret' に変数を使用できます。ログ出力設定の詳細については、「Configure job log output」をご参照ください。
<Appender name="SLS" type="SLS"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> <!-- 最終的に有効なログパスは:${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ --> <Property name="namespace">{{ namespace }}</Property> <!-- この行は変更しないでください --> <Property name="project">YOUR-SLS-PROJECT</Property> <Property name="logStore">YOUR-SLS-LOGSTORE</Property> <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> <Property name="accessKeyId">${secret_values.accessKeyId}</Property> <Property name="accessKeySecret">${secret_values.accessKeySecret}</Property> <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property> <Property name="deploymentName">{{ deploymentName }}</Property> <Property name="flushIntervalSeconds">10</Property> <Property name="flushIntervalEventCount">100</Property> </Appender>
UI
UI でカタログを作成する際に、設定項目で変数を使用できます。
-
Realtime Compute for Apache Flink コンソールのナビゲーションペインで、[Catalogs] をクリックします。
-
[Create Catalog] ページで変数を使用します。次の例は、MySQL カタログのパスワードパラメーターに
mysqlpasswordという名前の変数を使用する方法を示します。password フィールドに
${secret_values.mysqlpassword}を入力して、シークレット値を参照します。
変数の編集または削除
変数を編集または削除する際は注意してください。この操作により、この変数を参照しているデプロイメントが失敗したり、オンラインジョブの再デプロイが必要になったりする場合があります。実行中のジョブには影響しません。
-
Realtime Compute for Apache Flink コンソールにログインします。目的のワークスペースを見つけ、[Actions] 列の [Console] をクリックします。
-
ナビゲーションペインで、 をクリックします。目的の変数を見つけ、[Actions] 列で [Edit] または [Delete] をクリックします。
-
編集
変数の値を変更できます。変数を編集できるのは、編集者以上の権限を持つメンバーのみです。
-
削除
変数を削除できるのは、編集者以上の権限を持つメンバー、または変数削除の特定権限を持つメンバーのみです。
-
関連ドキュメント
-
SQL ジョブの開発方法については、「Job development overview」をご参照ください。
-
JAR/Python デプロイメントのデプロイメントパラメーターについては、「Deploy a job」をご参照ください。
-
カタログの作成と使用方法については、「Manage data」をご参照ください。
-
サポートされているコネクターの詳細については、「Supported connectors」をご参照ください。