AccessKey ペアやパスワードなどの機密値を、平文で記述する代わりに変数として保存します。また、変数を使用すると、構成間で値を繰り返し記述することなく再利用できます。本トピックでは、Realtime Compute for Apache Flink における変数の作成および使用方法について説明します。
変数の種類
Realtime Compute for Apache Flink では、スコープが異なる以下の 2 種類の変数をサポートしています。
| 種類 | スコープ | リファレンス形式 | 対応するシナリオ |
|---|---|---|---|
| デプロイメント変数 | 単一のデプロイメント内 | ${変数名} | SQL ドラフト、JAR/Python デプロイメントのエントリポイント引数 |
| 名前空間変数 | 名前空間全体 | ${secret_values.変数名} | SQL ドラフト、データインジェスト、データクエリ、JAR/Python デプロイメントのエントリポイント引数、デプロイメントパラメーター構成、ログ構成、UI を使用したパラメーター構成(例:カタログ) |
注意事項
変数名には、1 つの値のみを設定できます。
SQL キーワードを変数名として使用しないでください。
SQL ドラフトでは、一時テーブル(
CREATE TEMPORARY TABLEで作成)内でのみ変数を参照できます。CREATE TABLEで作成された永続テーブル内で変数を参照すると、そのテーブルは使用できなくなります。
デプロイメント変数
デプロイメント変数の名前は、単一のデプロイメント内で一意である必要があります。
SQL ドラフト内での変数の参照
値をハードコードせずに SQL ドラフト内で変数を使用します(例:カスタム関数の入力パラメーターとして)。デプロイメントが開始された後でも、ドラフトを変更せずに変数の値を更新できます。
Realtime Compute for Apache Flink コンソールの左側ナビゲーションウィンドウで、開発 > ETL を選択します。
SQL エディターで、
${変数名}の形式で変数を定義します。以下のルールに従ってください。例:WITH句内の変数:シングルクォートで囲む —'${変数名}'テーブル名またはフィールド名として使用する変数:バックティックで囲む — `
${変数名}`
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}`;Realtime Compute for Apache Flink がドラフト内の変数を自動的に検出します。以下のいずれかの方法で値を設定してください。
変数パネル:SQL エディターの右側にある 変数 パネルで、直接値を入力します。

構成タブ:SQL エディターの右側にある 構成 タブをクリックし、変数 セクションで値を入力します。

ドラフトをデプロイした後、構成 タブの デプロイメント ページで、参照されている変数を確認します。

デプロイメント ページで対象のデプロイメントを見つけ、操作 列の 開始 をクリックします。ジョブの開始 パネルで、必要に応じて変数の値を更新します。
重要更新された値は、この特定のジョブ開始時のみ有効です。SQL ドラフトで定義された値は変更されません。

JAR または Python デプロイメント内での変数の参照
JAR または Python デプロイメントの Main 関数のエントリポイント引数として、デプロイメント変数を使用します。以下の 2 つの方法があります。
方法 1:エントリポイント引数内で名前空間変数を参照
左側ナビゲーションウィンドウで、セキュリティ > 変数 を選択し、名前空間変数を作成します。
O&M > デプロイメント を選択し、デプロイメントの作成 をクリックします。
エントリポイント Main 引数 フィールドに、以下の形式で変数名を入力します。
コンソールで変数を管理するには、[セキュリティ] > [変数] へ移動します。変数名に特殊文字が含まれている場合は、エントリポイントのメイン引数パラメーターの値に特殊文字を指定したい場合はどうすればよいですか?
--<コード内の変数名> ${secret_values.<コンソール上の変数名>}例:
--akid ${secret_values.test1}
デプロイ をクリックします。
対象のデプロイメントを見つけ、操作 列の 開始 をクリックします。
方法 2:デプロイメントダイアログ内で変数をインライン定義
左側ナビゲーションウィンドウで、O&M > デプロイメント を選択し、デプロイメントの作成 をクリックします。
ダイアログボックスで、エントリポイント Main 引数 フィールドに変数名を入力し、変数 セクションに変数の値を入力します。変数名に特殊文字が含まれる場合は、「エントリポイント Main 引数パラメーターの値に特殊文字を指定したい場合の対応方法」をご参照ください。その他のデプロイメントパラメーターについては、「デプロイメントの作成」をご参照ください。

デプロイ をクリックします。
O&M > デプロイメント を選択します。対象のデプロイメントを見つけ、操作 列の 開始 をクリックします。ジョブの開始 パネルで、必要に応じてこのジョブ開始時の変数値を更新します。

名前空間変数
名前空間変数は、名前空間全体で利用可能です。${secret_values.変数名} の形式で参照します。
変数の作成
編集者以上の権限を持つメンバー、または変数作成権限を持つメンバーのみが、変数を作成できます。
Realtime Compute for Apache Flink コンソール にログインします。ワークスペースを見つけ、操作 列の コンソール をクリックします。
左側ナビゲーションウィンドウで、セキュリティ > 変数 を選択し、変数の追加 をクリックして、以下のパラメーターを設定します。
パラメーター 説明 変数名 名前空間内で一意である必要があります。作成後に変更できません。 変数値 大文字と小文字を区別します。作成後に更新できます。詳細については、「変数の編集または削除」をご参照ください。 種類 作成後に変更できません。プレーンテキスト:変数値は「変数」ページ上で表示されます。暗号化テキスト:変数値は非表示になります。 OK をクリックします。
変数の参照
変数を作成した後は、${secret_values.Variable name} フォーマットで参照します。以下の例では、さまざまなシナリオで名前空間の変数を参照する方法を示します。
SQL ドラフト
SQL ドラフトの DDL 文で、${secret_values.変数名} の形式を使用します。以下のルールに従ってください。
WITH句内の変数:シングルクォートで囲む —'${secret_values.変数名}'テーブル名またはフィールド名として使用する変数:バックティックで囲む — `
${secret_values.変数名}`
例:
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}`;データインジェスト
認証情報を平文で保存しないために、YAML 形式のデータインジェスト構成内で変数を参照します。例:
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 デプロイメントのエントリポイント引数として、名前空間変数を参照します。
左側ナビゲーションウィンドウで、O&M > デプロイメント を選択し、デプロイメントの作成 をクリックします。
エントリポイント Main 引数 フィールドに変数名を入力します。その他のデプロイメントパラメーターについては、「デプロイメントの作成」をご参照ください。

デプロイ をクリックします。
デプロイメントパラメーター構成
デプロイメントのパラメーター構成内で、名前空間変数を参照します。
左側のナビゲーションウィンドウで、[O&M] > [デプロイメント] を選択し、対象のデプロイメントをクリックします。
構成 タブで、パラメーター セクションの右上隅にある 編集 をクリックします。パラメーター値として変数のリファレンスを入力します。

保存 をクリックします。
ログ構成
ログ構成ファイル内に認証情報を平文で保存しないために、ログエクスポート構成内で名前空間変数を参照します。
ログ構成に移動します。
単一のデプロイメントのログエクスポートを構成する場合は、「デプロイメントのログをエクスポートするためのパラメーターの設定」をご参照ください。
名前空間内のすべてのデプロイメントのログエクスポートを構成する場合は、「名前空間内のすべてのデプロイメントのログをエクスポートするためのパラメーターの設定」をご参照ください。
ログ構成内で変数を参照します。以下の例では、
accessKeyIdおよびaccessKeySecret変数を使用して、Simple Log Service へログをエクスポートしています。<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 を使用したパラメーター構成時に名前空間変数を参照します。
左側ナビゲーションウィンドウで、カタログ をクリックします。
カタログの作成 ダイアログボックスで、関連する構成フィールドに変数を参照します。以下の例では、MySQL カタログのパスワードパラメーターに
mysqlpassword変数を使用しています。
変数の編集または削除
変数の編集または削除により、デプロイメントが失敗する可能性があります。また、再デプロイが必要になる場合があります。ただし、すでに実行中のデプロイメントには影響しません。
Realtime Compute for Apache Flink コンソール にログインします。ワークスペースを見つけ、操作 列の コンソール をクリックします。
左側ナビゲーションウィンドウで、セキュリティ > 変数 を選択します。対象の変数を見つけ、操作 列の 編集 または 削除 をクリックします。
[編集]: 変数の値を変更します。エディター以上の権限を持つメンバーのみが変数を編集できます。
削除:変数を削除します。削除者は、編集者以上の権限を持つメンバー、または変数削除権限を持つメンバーのみが変数を削除できます。