PostgreSQL データソースは、PostgreSQL からのデータ読み取りおよび PostgreSQL へのデータ書き込みのための双方向チャネルを提供します。コードレス UI またはコードエディタを使用して、データ同期タスクを設定できます。本トピックでは、DataWorks が PostgreSQL のデータ同期をどのようにサポートするかについて説明します。
対応バージョン
PostgreSQL バージョン 10、11、12、13、14、15、および 16.4 のデータソースを設定できます。ご利用の PostgreSQL データベースのバージョンを確認するには、以下のステートメントを実行します。
SHOW SERVER_VERSION;制限事項
オフライン読み取りおよび書き込み
ビューからデータを読み取ることができます。
PostgreSQL データソースは、SCRAM-SHA-256 方式を含むパスワード認証をサポートしています。PostgreSQL データベースでパスワードまたは認証方式を変更した場合、データソースの構成を更新し、接続テストを再度実行したうえで、関連するタスクを手動で実行して変更内容を検証する必要があります。
PostgreSQL のテーブル名またはフィールド名が数字で始まる場合、大文字と小文字を区別する場合、またはハイフン (-) を含む場合、その名前を二重引用符 ("") で囲む必要があります。それ以外の場合、PostgreSQL プラグインはデータを読み取ったり書き込んだりできません。PostgreSQL Reader および Writer プラグインでは、二重引用符 ("") は JSON のキーワードです。そのため、二重引用符をバックスラッシュ (\) でエスケープする必要があります。たとえば、テーブル名が
123Testの場合、エスケープされた名前は\"123Test\"となります。説明開始および終了の二重引用符の両方をバックスラッシュ (\) でエスケープする必要があります。
コードレス UI ではエスケープはサポートされていません。エスケープを行うには、コードエディタに切り替える必要があります。
以下のコードは、コードエディタでのエスケープ文字の使用例です。
"parameter": { "datasource": "abc", "column": [ "id", "\"123Test\"", // エスケープ文字を追加します。 ], "where": "", "splitPk": "id", "table": "public.wpw_test" },一意なインデックスに基づく PostgreSQL データソースのデータ更新はサポートされていません。データを更新するには、まずデータを一時テーブルに書き込んでから、
RENAME操作を使用します。
リアルタイム読み取り
Data Integration におけるリアルタイム同期タスクには、以下の制限が適用されます。
Data Integration は、
ADD COLUMNに対して特別なサポートを提供します。制約:単一トランザクション内で、
ADD COLUMN操作を他のADD COLUMN、DROP COLUMN、またはその他のデータ定義言語 (DDL) ステートメントと組み合わせることはできません。重要ADD COLUMNをDROP COLUMN または RENAME COLUMNなどのALTER COLUMN動作と併用すると、データ同期タスクが失敗します。制限:Data Integration は、
ADD COLUMN以外の DDL 操作を検出できません。
ALTER TABLE および
CREATE TABLE操作はサポートされていません。TEMPORARY、UNLOGGED、および Hyper テーブルのレプリケーションはサポートされていません。PostgreSQL には、これらのタイプのテーブルのログを解析してサブスクライブする仕組みが提供されていません。
Sequences (
serial/bigserial/identity) のレプリケーションはサポートされていません。TRUNCATE 操作はサポートされていません。
ラージオブジェクト (Bytea) のレプリケーションはサポートされていません。
ビュー、マテリアライズドビュー、および外部テーブルのレプリケーションはサポートされていません。
-
PostgreSQL を単一テーブルまたは全データベースのリアルタイム同期のソースとして使用する場合、構成済みのデータベースユーザーが所有するテーブルのみを同期できます。
対応データ型
ほとんどの PostgreSQL データ型がサポートされています。ただし、一部のデータ型はオフライン読み取りおよび書き込み操作ではサポートされていません。ご利用のデータ型がサポートされていることを確認してください。
以下の表に、PostgreSQL データ型のマッピングを示します。
カテゴリ | PostgreSQL データ型 |
整数型 | BIGINT、BIGSERIAL、INTEGER、SMALLINT、および SERIAL |
浮動小数点型 | DOUBLE PRECISION、MONEY、NUMERIC、および REAL |
文字列型 | VARCHAR、CHAR、TEXT、BIT、および INET |
日付および時刻型 | DATE、TIME、および TIMESTAMP |
ブール型 | BOOL |
バイナリ型 | BYTEA |
表に記載されていないデータ型はサポートされていません。
PostgreSQL Reader の場合、MONEY、INET、および BIT データ型は、
a_inet::varcharなどの構文を使用して変換する必要があります。
事前準備
DataWorks でデータ同期を実行する前に、このセクションで説明するように PostgreSQL 環境を準備する必要があります。この準備により、PostgreSQL データ同期タスクを想定どおりに設定および実行できるようになります。以下のセクションでは、必要な準備について説明します。
準備 1:アカウントの作成および権限の構成
後続の操作用にデータベースログインアカウントを作成します。このアカウントには、REPLICATION 権限および LOGIN 権限が必要です。
リアルタイム同期は論理レプリケーションのみをサポートしています。論理レプリケーションは、パブリッシュおよびサブスクライブのモデルを使用します。このモデルでは、1 つ以上のサブスクライバーが、パブリッシャーノード上の 1 つ以上のパブリケーションをサブスクライブします。サブスクライバーは、自身がサブスクライブしているパブリケーションからデータをプルします。
テーブルの論理レプリケーションは通常、パブリッシャーのデータベース内のデータのスナップショットを取得し、それをサブスクライバーにコピーすることから開始されます。スナップショットのコピーが完了すると、パブリッシャーでの変更がリアルタイムでサブスクライバーに送信されます。
アカウントを作成します。
詳細については、「アカウントおよびデータベースの作成」をご参照ください。
権限を構成します。
アカウントに
replication権限があるかどうかを確認します。select userepl from pg_user where usename='xxx'コマンドの戻り値が True の場合、権限が付与されています。False の場合は、権限が付与されていません。権限を付与するには、以下のステートメントを実行します。
ALTER USER <user> REPLICATION;
準備 2:セカンダリデータベースのサポート状況の確認
SELECT pg_is_in_recovery()
プライマリデータベースのみがサポートされています。コマンドの戻り値は False である必要があります。True の場合は、そのデータベースがセカンダリデータベースであることを意味します。リアルタイム同期はセカンダリデータベースをサポートしていません。データソースの構成を変更して、プライマリデータベースを使用する必要があります。詳細については、「PostgreSQL データソースの構成」をご参照ください。
準備 3:wal_level が logical に設定されているかの確認
show wal_level
wal_level パラメーターは、wal_log のレベルを指定します。コマンドの戻り値は logical である必要があります。それ以外の場合は、論理レプリケーション機構がサポートされていません。
準備 4:wal_sender プロセスの起動可否の確認
-- max_wal_senders を照会します。
show max_wal_senders;
-- pg_stat_replication プロセスの数を照会します。
select count(*) from pg_stat_replicationmax_wal_senders の値が空でなく、max_wal_senders の値が pg_stat_replication のエントリ数より大きい場合、アイドル状態の wal_sender プロセスが利用可能です。PostgreSQL データベースは、データ同期プログラムがログをサブスクライバーに送信するために、wal_sender プロセスを起動します。
同期対象の各テーブルについて、ALTER TABLE [tableName] REPLICA IDENTITY FULL ステートメントを実行して、必要な権限を付与する必要があります。それ以外の場合、リアルタイム同期タスクでエラーが報告されます。
リアルタイム PostgreSQL 同期タスクが開始されると、データベース内に自動的にスロットおよびパブリケーションが作成されます。スロット名は di_slot_ + ソリューション ID の形式であり、パブリケーション名は di_pub_ + ソリューション ID の形式です。リアルタイム同期タスクが停止または非公開になった後は、スロットおよびパブリケーションを手動で削除する必要があります。そうしないと、PostgreSQL の Write-Ahead Logging (WAL) が継続して増加する可能性があります。
データソースの追加
DataWorks で同期タスクを開発する前に、データソース管理 の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールの パラメーターの説明を表示することで、各パラメーターの意味を確認できます。
PostgreSQL データベースで SSL 認証が有効になっている場合、DataWorks で PostgreSQL データソースを追加する際にも SSL 認証を有効にする必要があります。詳細については、「付録 2:PostgreSQL データソースへの SSL 認証の追加」をご参照ください。
DataWorks による PostgreSQL 同期タスクの開発ガイド
同期タスクの設定に関するエントリポイントおよび手順については、以下の設定ガイドをご参照ください。
単一テーブルのオフライン同期タスクの設定ガイド
詳細については、「コードレス UI の使用」および「コードエディタの使用」をご参照ください。
コードエディタ向けのパラメーター一覧およびスクリプト例の完全なリストについては、「付録 1:スクリプト例およびパラメーターの説明」をご参照ください。
全データベースのオフライン読み取りおよびリアルタイム同期タスクの設定ガイド
詳細については、「全データベースのリアルタイム同期タスクの設定」をご参照ください。
よくある質問
アクティブ/スタンバイ同期構成におけるデータ復元
この問題は、PostgreSQL がアクティブ/スタンバイ災害復旧用に構成されている場合に発生することがあります。この構成では、セカンダリデータベースがプライマリデータベースから継続的にデータを復元します。プライマリデータベースとセカンダリデータベース間のデータ同期には遅延が発生します。ネットワーク遅延などの場合、セカンダリデータベースのデータはプライマリデータベースのデータと大きく異なることがあります。その結果、セカンダリデータベースから同期されたデータは、プライマリデータベースの完全かつ最新のイメージではありません。
整合性制約
PostgreSQL は、強力なデータ整合性を保証するクエリインターフェイスを提供するリレーショナルデータベース管理システム (RDBMS) です。たとえば、同期タスク実行中に別のプロセスがデータベースにデータを書き込む場合、PostgreSQL Reader はデータベースのスナップショット機能により、更新されたデータを取得しません。
上記の説明は、シングルスレッドモデルにおける PostgreSQL Reader のデータ整合性に適用されます。PostgreSQL Reader は、設定に応じて並行データ抽出も使用できます。この場合、データ整合性を厳密に保証することはできません。
PostgreSQL Reader が splitPk パラメーターに基づいてデータをシャーディングすると、複数の並行タスクを起動してデータを同期します。これらの並行タスクは同じ読み取りトランザクションに属しておらず、それぞれに時間的な間隔があります。したがって、同期されたデータは単一の整合性のあるスナップショットからのものではありません。
マルチスレッド間で整合性のあるスナップショットを実現する技術的ソリューションは、現在提供されていません。この問題はエンジニアリングの観点からのみ解決できます。以下のソリューションにはトレードオフが伴い、要件に応じていずれかを選択できます。
データシャーディングを行わないシングルスレッド同期を使用します。この方法は速度が遅くなりますが、整合性が保証されます。
他のデータ書き込みを無効にして、データを静的状態に保ちます。たとえば、テーブルをロックしたり、セカンダリデータベースの同期を無効にしたりできます。この方法はオンラインサービスに影響を与える可能性があります。
データベースのエンコーディングの問題
PostgreSQL サーバーは、簡体中国語向けに EUC_CN および UTF-8 のエンコーディングのみをサポートしています。PostgreSQL Reader は、データ抽出に Java Database Connectivity (JDBC) を使用します。JDBC はさまざまなエンコーディングと互換性があり、下位レイヤーでエンコーディング変換を実行します。したがって、PostgreSQL Reader にはエンコーディングを明示的に指定する必要はありません。PostgreSQL Reader はエンコーディングを自動的に検出し、変換します。
PostgreSQL の下位レイヤーでの書き込みエンコーディングが、構成済みのエンコーディングと一致しない場合、PostgreSQL Reader はこの問題を特定したり解決策を提供したりできません。その結果、エクスポートされたデータに文字化けが含まれる可能性があります。
増分データ同期の方法
PostgreSQL Reader は JDBC SELECT ステートメントを使用してデータを抽出します。これにより、
SELECT…WHERE…を使用した増分データ抽出が可能になります。オンラインアプリケーションがすべての変更に対してタイムスタンプを含む修正フィールドを設定する場合、PostgreSQL Reader は前回の同期時点のタイムスタンプを使用した WHERE 句を追加して、新しいデータまたは更新されたデータのみを取得できます。
ストリームデータの場合、PostgreSQL Reader は前回の同期時点の最大の自動インクリメント ID を使用した WHERE 句を追加できます。
ビジネスロジックに新規および変更データを区別するフィールドが含まれていない場合、PostgreSQL Reader は増分データ同期を実行できません。この場合、完全データ同期のみが可能です。
SQL のセキュリティ
PostgreSQL Reader は、querySql パラメーターを提供しており、これによりデータ抽出用の SELECT ステートメントをカスタマイズできます。PostgreSQL Reader は、querySql ステートメントに対してセキュリティチェックを一切実行しません。
付録 1:スクリプト例およびパラメーターの説明
コードエディタを使用したバッチ同期タスクの構成
コードエディタを使用してバッチ同期タスクを構成する場合、統一されたスクリプトフォーマット要件に従って、スクリプト内の関連パラメーターを構成する必要があります。詳細については、「コードエディタの使用」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを構成する際に、データソースに対して構成する必要があるパラメーターについて説明します。
Reader スクリプト例
PostgreSQL データベースからデータを同期および抽出するジョブを構成するには、「コードエディタの使用」の手順に従います。
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"postgresql",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"column":[// フィールド。
"col1",
"col2"
],
"where":"",// フィルター条件。
"splitPk":"",// データシャーディングに使用するフィールド。データ同期は並行タスクを起動してデータを同期します。
"table":""// テーブル名。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// エラーとなるレコード数。
},
"speed":{
"throttle":true, // throttle が false の場合、mbps パラメーターは無効となり、速度制限は無効になります。throttle が true の場合、速度制限が有効になります。
"concurrent":1, // 並行ジョブ数。
"mbps":"12"// 速度制限率。1 mbps は 1 MB/s に相当します。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Reader スクリプトパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
|
datasource |
データソースの名前です。コードエディタではデータソースの追加がサポートされています。このパラメーターの値は、追加したデータソースの名前と同じである必要があります。 |
はい |
なし |
|
table |
同期対象のテーブルの名前です。 |
はい |
なし |
|
column |
指定されたテーブルから同期するカラムのセットです。フィールド情報を記述するには JSON 配列を使用します。デフォルトでは、すべてのカラムが使用されます (例:[ * ])。
|
はい |
なし |
|
splitFactor |
データ同期のシャード数を指定します。同時実行スレッドを複数構成した場合、データは 同時実行スレッド数 × splitFactor の数だけシャード化されます。たとえば、同時実行スレッド数が 5 で splitFactor が 5 の場合、5 つの同時実行スレッドを使用してシャーディングが行われ、データは 25 (5 × 5) 個のシャードに分散されます。 説明 推奨値は 1 ~ 100 です。大きな値を指定すると、メモリ不足 (OOM) エラーが発生する可能性があります。 |
いいえ |
5 |
|
splitPk |
PostgreSQL Reader がデータを抽出する際、splitPk パラメーターを指定すると、splitPk で表されるフィールドに基づいてデータをシャーディングすることを意味します。その後、データ同期は並行タスクを起動してデータ同期の効率を向上させます。
|
いいえ |
なし |
|
where |
フィルター条件です。PostgreSQL Reader は、指定された column、table、および where パラメーターに基づいて SQL ステートメントを構築し、その SQL ステートメントに基づいてデータを抽出します。たとえば、テスト中には、where 句を使用してビジネスシナリオを指定できます。通常、where 句を
|
いいえ |
なし |
|
querySql (高度モード。コードレス UI では使用できません。) |
一部のビジネスシナリオでは、where パラメーターではフィルター条件を十分に記述できません。このパラメーターを使用して、フィルター用のカスタム SQL を定義できます。このパラメーターを構成すると、データ同期システムはテーブル、カラム、splitPk パラメーターを無視し、このパラメーターの内容を使用してデータをフィルターします。たとえば、複数テーブルの JOIN 後のデータを同期するには、 |
いいえ |
なし |
|
fetchSize |
このパラメーターは、データベースサーバーから一度にフェッチするデータレコード数を定義します。この値は、Data Integration とサーバー間のネットワークインタラクション数を決定し、データ抽出のパフォーマンスを大幅に向上させることができます。 説明 fetchSize の値が大きすぎると (>2048)、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。 |
いいえ |
512 |
Writer スクリプト例
以下のコードは、スクリプト構成の例です。詳細については、以下のパラメーターの説明をご参照ください。
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"postgresql",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"column":[// フィールド。
"col1",
"col2"
],
"table":"",// テーブル名。
"preSql":[],// データ同期タスク実行前に実行する SQL ステートメント。
"postSql":[],// データ同期タスク実行後に実行する SQL ステートメント。
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// エラーとなるレコード数。
},
"speed":{
"throttle":true,// throttle が false の場合、mbps パラメーターは無効となり、速度制限は無効になります。throttle が true の場合、速度制限が有効になります。
"concurrent":1, // 並行ジョブ数。
"mbps":"12"// 速度制限率。1 mbps は 1 MB/s に相当します。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Writer スクリプトパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
|
datasource |
データソースの名前です。コードエディタではデータソースの追加がサポートされています。このパラメーターの値は、追加したデータソースの名前と同じである必要があります。 |
はい |
なし |
|
table |
同期対象のテーブルの名前です。 |
はい |
なし |
|
writeMode |
インポートモードです。insert モードおよび copy モードがサポートされています。
|
いいえ |
insert |
|
column |
データを書き込む送信先テーブルのフィールドです。フィールドはコンマ (,) で区切ります。たとえば、 |
はい |
なし |
|
preSql |
データ同期タスク実行前に実行する SQL ステートメントです。コードレス UI では、1 つの SQL ステートメントのみ実行できます。コードエディタでは、古いデータをクリアするなど、複数の SQL ステートメントを実行できます。 |
いいえ |
なし |
|
postSql |
データ同期タスク実行後に実行する SQL ステートメントです。コードレス UI では、1 つの SQL ステートメントのみ実行できます。コードエディタでは、タイムスタンプを追加するなど、複数の SQL ステートメントを実行できます。 |
いいえ |
なし |
|
batchSize |
単一バッチで送信するレコード数です。大きな値を設定すると、Data Integration と PostgreSQL 間のネットワークインタラクションが大幅に削減され、全体的なスループットが向上します。ただし、この値を高すぎると、Data Integration プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。 |
いいえ |
1,024 |
|
pgType |
PostgreSQL 固有の型の変換設定です。bigint[]、double[]、text[]、Jsonb、JSON 型がサポートされています。以下のコードは設定例です。 |
いいえ |
なし |
付録 2:PostgreSQL データソースへの SSL 認証の追加
PostgreSQL SSL 認証ファイル
DataWorks で PostgreSQL データソースの接続を作成または変更する際、SSL 認証を構成できます。以下の表に、SSL 認証に関連する設定項目を示します。
PostgreSQL データベース | DataWorks PostgreSQL データソース構成 | |||
SSL リンク暗号化 | クライアントベースの暗号化 | ACL の構成 | 設定項目 | 説明 |
有効 | 無効 | 該当なし | Truststore ファイル | 任意です。クライアントは、この証明書を使用してサーバーを認証します。
|
有効 | 「[ACL の設定]」を優先するように設定します。 |
| Keystore 証明書ファイル および 秘密鍵ファイル は任意です。ACL の構成 を prefer に設定すると、サーバーはクライアントの検証を強制しません。
| |
ACL の構成 を verify-ca に設定します。 |
| |||
ACL 構成が prefer に設定されている場合、クライアントの内容は強制的に検証されません。
SSL 認証用のファイルが構成されていない場合、通常の接続が使用されます。
SSL の認証ファイルを追加した場合、表の対応する説明を参照してください。
ACL 構成が verify-ca に設定されている場合、データソースを作成するには、Keystore ファイル、秘密鍵ファイル、および 秘密鍵パスワード を構成する必要があります。
PostgreSQL SSL 認証ファイルの取得
このセクションでは、ApsaraDB RDS for PostgreSQL インスタンスを例として、SSL 認証証明書を生成する方法を説明します。
-
Truststore ファイル を取得します。
Truststore ファイル の取得方法については、「クラウド証明書を使用した SSL 暗号化の迅速な有効化」をご参照ください。
RDS インスタンスページに移動し、対象リージョンの RDS インスタンスを検索して、インスタンス ID をクリックしてインスタンスの詳細ページに移動します。
保護する接続文字列を選択します (以下の図を参照)。
説明パブリックエンドポイントが有効になっている場合、内部エンドポイントとパブリックエンドポイントの両方が表示されます。クラウド証明書は、1 つのエンドポイントのみを保護できます。内部エンドポイントは VPC 内でより安全ですが、パブリックエンドポイントはインターネットに公開されているため、保護することを推奨します。内部エンドポイントおよびパブリックエンドポイントの表示方法については、「内部エンドポイントおよびパブリックエンドポイントの表示」をご参照ください。
内部エンドポイントおよびパブリックエンドポイントの両方を保護するには、「カスタム証明書を使用した SSL 暗号化の有効化」をご参照ください。
-
クラウド証明書を構成すると、インスタンスの 実行中のステータス が SSL の変更中 に変わります。この処理には約 3 分かかります。ステータスが 操作中 に変わるまで待ってから、次の手順に進んでください。
CA 証明書のダウンロード をクリックして、Truststore ファイル を取得します。

ダウンロードされた CA 証明書パッケージには 3 つのファイルが含まれています。DataWorks で PostgreSQL データソースを構成する際は、拡張子が
.pemまたは.p7bのファイルを Truststore ファイル フィールドにアップロードします。 -
Keystore ファイル、秘密鍵ファイル、および 秘密鍵パスワード の取得および構成
前提条件:「クラウド証明書を使用した SSL 暗号化の迅速な有効化」または「カスタム証明書を使用した SSL 暗号化の有効化」の手順を完了し、OpenSSL ツールがインストールされている必要があります。
説明Linux システムには OpenSSL ツールがデフォルトで含まれています。Windows システムを使用する場合は、「OpenSSL パッケージ」を入手してインストールする必要があります。
Keystore ファイル、秘密鍵ファイル、および 秘密鍵パスワード の取得および構成方法については、「クライアント CA 証明書の構成」をご参照ください。
OpenSSL ツールを使用して、自己署名証明書 (ca1.crt) および秘密鍵 (ca1.key) を生成します。
openssl req -new -x509 -days 3650 -nodes -out ca1.crt -keyout ca1.key -subj "/CN=root-ca1"クライアント証明書署名要求 (CSR) ファイル (client.csr) およびクライアント秘密鍵 (client.key) を生成します。
openssl req -new -nodes -text -out client.csr -keyout client.key -subj "/CN=<クライアントユーザー名>"このコマンドでは、
-subjパラメーターの後の Common Name (CN) 値を、クライアントがデータベースにアクセスするために使用するユーザー名に設定します。クライアント証明書 (client.crt) を生成します。
openssl x509 -req -in client.csr -text -days 365 -CA ca1.crt -CAkey ca1.key -CAcreateserial -out client.crtApsaraDB RDS for PostgreSQL サーバーがクライアント CA 証明書を検証する必要がある場合、生成された自己署名証明書ファイル ca1.crt を開きます。証明書の内容をコピーして、クライアント証明機関からの公開鍵の入力 ダイアログボックスに貼り付けます。

RDS インスタンスでクライアント CA 証明書を構成した後、クライアント秘密鍵ファイル client.key を PKCS#8 形式 (client.pk8) に変換する必要があります。DataWorks で PostgreSQL データソースを構成する際は、client.pk8 ファイルを 秘密鍵ファイル フィールドにアップロードします。
cp client.key client.pk8秘密鍵パスワードを構成します。
openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DES説明秘密鍵パスワードを構成するコマンドを実行すると、パスワードの入力を求められます。パスワードを設定した場合、DataWorks の PostgreSQL データソース構成の「秘密鍵パスワード」フィールドに同じパスワードを使用する必要があります。
PostgreSQL SSL 認証ファイルの構成
DataWorks の PostgreSQL データソース構成に証明書ファイルをアップロードする際は、以下の手順に従います。
Truststore ファイル:「Truststore 証明書ファイルの取得」の手順で取得した
.pemまたは.p7bファイルをアップロードします。Keystore ファイル:「クライアント証明書の生成」の手順で取得した client.crt ファイルをアップロードします。
秘密鍵ファイル:「秘密鍵ファイルの変換」の手順で取得した client.pk8 ファイルをアップロードします。
秘密鍵パスワード:「秘密鍵パスワードの構成」の手順で構成したパスワードです。

ACL の構成:RDS インスタンスページに移動し、対象リージョンの RDS インスタンスを検索して、インスタンス ID をクリックしてインスタンスの詳細ページに移動します。 をクリックして設定を変更します。さまざまな SSL 認証方法を選択できます。詳細については、「クライアントに SSL 接続の使用を強制する」をご参照ください。

ACL 認証方法が prefer に設定されている場合、PostgreSQL サーバーはクライアント証明書を強制的に検証しません。
ApsaraDB RDS for PostgreSQL で ACL 認証方法が verify-ca に設定されている場合、DataWorks で PostgreSQL データソースを構成する際に、正しいクライアント証明書をアップロードする必要があります。これにより、サーバーがクライアントの真正性を検証できるようになります。