Pub/Sub Sink コネクタは、Kafka トピックから Pub/Sub トピックにメッセージをストリーミングします。これにより、Kafka ベースのアプリケーションを Pub/Sub と統合できます。
Pub/Sub シンクコネクタのユースケースには、次のようなものがあります。
イベント ドリブン アーキテクチャ。Kafka にパブリッシュされたメッセージから Pub/Sub 処理をトリガーする。
サービスの統合。Kafka から Pub/Sub を使用する他の Google Cloud サービスまたはアプリケーションにデータを送信する。
処理されたデータに基づいて、リアルタイムの通知やアクションをトリガーします。
始める前に
Pub/Sub シンクコネクタを作成する前に、次のものが揃っていることを確認してください。
Connect クラスタ用の Managed Service for Apache Kafka クラスタを作成します。これは、Connect クラスタに関連付けられているプライマリ Kafka クラスタです。これは、コネクタ パイプラインの一端を形成するソースクラスタでもあります。
Pub/Sub シンクコネクタをホストする Connect クラスタを作成します。
ソースクラスタ内に Kafka トピックを作成して構成します。データは、この Kafka トピックから宛先の Pub/Sub トピックに移動します。
必要なロールと権限
コネクタの作成に必要な権限を取得するには、プロジェクトに対するマネージド Kafka コネクタ編集者 (roles/managedkafka.connectorEditor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、コネクタの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
コネクタを作成するには、次の権限が必要です。
-
コネクタを作成します。
managedkafka.connectors.create
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Pub/Sub トピックにパブリッシュする権限を付与する
マネージド Kafka サービス エージェントには、Pub/Sub トピックにメッセージをパブリッシュする権限が必要です。Pub/Sub トピックを含むプロジェクトに対する Pub/Sub パブリッシャー(roles/pubsub.publisher)ロールをサービス エージェントに付与します。
Connect クラスタが Managed Service for Apache Kafka クラスタとは異なるプロジェクトにある場合は、 別のプロジェクトに Connect クラスタを作成するをご覧ください。
Pub/Sub シンクコネクタの仕組み
Pub/Sub シンクコネクタは、1 つ以上の Kafka トピックからメッセージを pull し、Pub/Sub トピックにパブリッシュします。
Pub/Sub シンクコネクタがデータをコピーする方法の詳細は次のとおりです。
コネクタは、ソースクラスタ内の 1 つ以上の Kafka トピックからメッセージを消費します。
コネクタは、
cps.topic構成プロパティを使用して指定されたターゲット Pub/Sub トピック ID にメッセージを書き込みます。これは必須プロパティです。また、コネクタでは、
cps.project構成プロパティを使用して、Pub/Sub トピックを含む Google Cloud プロジェクトを指定する必要があります。これは必須プロパティです。コネクタは、
cps.endpointプロパティを使用して指定されたカスタム Pub/Sub エンドポイントを使用することもできます。デフォルトのエンドポイントは"pubsub.googleapis.com:443"です。パフォーマンスを最適化するため、コネクタは Pub/Sub にパブリッシュする前にメッセージをバッファリングします。
maxBufferSize、maxBufferBytes、maxDelayThresholdMs、maxOutstandingRequestBytes、maxOutstandingMessagesを構成して、バッファリングを制御できます。Kafka レコードには、ヘッダー、キー、値の 3 つのコンポーネントがあります。コネクタは、キーと値のコンバータを使用して、Kafka メッセージ データを Pub/Sub で想定される形式に変換します。構造体またはマップ値スキーマを使用する場合、
messageBodyNameプロパティは、Pub/Sub メッセージ本文として使用するフィールドまたはキーを指定します。コネクタは、
metadata.publishプロパティをtrueに設定することで、Kafka トピック、パーティション、オフセット、タイムスタンプをメッセージ属性として含めることができます。コネクタは、
headers.publishプロパティをtrueに設定することで、Kafka メッセージ ヘッダーを Pub/Sub メッセージ属性として含めることができます。コネクタには、
orderingKeySourceプロパティを使用して Pub/Sub メッセージの順序指定キーを含めることができます。値のオプションには、"none"(デフォルト)、"key"、"partition"があります。tasks.maxプロパティは、コネクタの並列処理のレベルを制御します。tasks.maxを増やすとスループットが向上しますが、実際の並列処理は Kafka トピックのパーティション数によって制限されます。
Pub/Sub シンクコネクタのプロパティ
Pub/Sub シンクコネクタを作成するときに、次のプロパティを指定する必要があります。
コネクタ名
Connect クラスタ内で一意のコネクタの名前。リソースの命名に関するガイドラインについては、Managed Service for Apache Kafka リソースの命名ガイドラインをご覧ください。
コネクタ プラグインの種類
コネクタ プラグイン タイプとして [Pub/Sub Sink] を選択します。これにより、Kafka から Pub/Sub へのデータフローの方向と、使用される特定のコネクタ実装が決定されます。ユーザー インターフェースを使用してコネクタを構成しない場合は、コネクタクラスも指定する必要があります。
Kafka トピック
コネクタがメッセージを消費する Kafka トピック。1 つ以上のトピックを指定することも、正規表現を使用して複数のトピックを照合することもできます。たとえば、topic.* を使用すると、「topic」で始まるすべてのトピックを照合できます。これらのトピックは、Connect クラスタに関連付けられた Managed Service for Apache Kafka クラスタ内に存在する必要があります。
Pub/Sub トピック
コネクタがメッセージをパブリッシュする既存の Pub/Sub トピック。始める前にで説明されているように、Connect クラスタのサービス アカウントに、トピックのプロジェクトに対する roles/pubsub.publisher ロールがあることを確認します。
構成
このセクションでは、コネクタ固有の追加の構成プロパティを指定できます。
Kafka トピックのデータは Avro、JSON、未加工バイトなどのさまざまな形式にできるため、構成の重要な部分にはコンバータの指定が含まれます。コンバータは、Kafka トピックで使用されている形式から Kafka Connect の標準化された内部形式にデータを変換します。Pub/Sub シンク コネクタは、この内部データを取得し、Pub/Sub で必要な形式に変換してから書き込みます。
Kafka Connect でのコンバータの役割、サポートされているコンバータの種類、一般的な構成オプションの詳細については、コンバータをご覧ください。
Pub/Sub シンクコネクタに固有の構成を次に示します。
cps.project: Pub/Sub トピックを含む Google Cloud プロジェクト ID を指定します。cps.topic: データが公開される Pub/Sub トピックを指定します。cps.endpoint: 使用する Pub/Sub エンドポイントを指定します。
このコネクタに固有の使用可能な構成プロパティの一覧については、Pub/Sub シンクコネクタの構成をご覧ください。
Pub/Sub シンクコネクタを作成する
コネクタを作成する前に、Pub/Sub シンクコネクタのプロパティのドキュメントを確認してください。
コンソール
Google Cloud コンソールで、[Connect クラスタ] ページに移動します。
コネクタを作成する Connect クラスタをクリックします。
[Connect クラスタの詳細] ページが表示されます。
[コネクタを作成] をクリックします。
[Kafka コネクタの作成] ページが表示されます。
コネクタ名に文字列を入力します。
コネクタの命名方法のガイドラインについては、Managed Service for Apache Kafka リソースの命名ガイドラインをご覧ください。
[コネクタ プラグイン] で、[Pub/Sub シンク] を選択します。
[トピック] で、[Kafka トピックのリストを選択する] または [トピックの正規表現を使用する] を選択します。次に、このコネクタがメッセージを消費する Kafka トピックを選択または入力します。これらのトピックは、関連付けられた Kafka クラスタにあります。
[Cloud Pub/Sub トピックを選択してください] で、このコネクタがメッセージをパブリッシュする Pub/Sub トピックを選択します。トピックは、完全なリソース名の形式(
projects/{project}/topics/{topic})で表示されます。(省略可)[構成] セクションで追加の設定を行います。前のセクションで説明したように、
tasks.max、key.converter、value.converterなどのプロパティを指定します。[タスクの再起動ポリシー] を選択します。詳細については、タスクの再起動ポリシーをご覧ください。
[作成] をクリックします。
gcloud
gcloud
managed-kafka connectors create コマンドを実行します。
gcloud managed-kafka connectors create CONNECTOR_ID \
--connect-cluster=CONNECT_CLUSTER_ID \
--location=LOCATION \
--config-file=CONFIG_FILE
次のように置き換えます。
CONNECTOR_ID: コネクタの ID または名前。CONNECT_CLUSTER_ID: コネクタが作成される Connect クラスタの ID。LOCATION: Connect クラスタのロケーション。CONFIG_FILE: ローカルの YAML または JSON 構成ファイルのパス。
Pub/Sub シンク コネクタの構成ファイルの例を次に示します。
connector.class: "com.google.pubsub.kafka.sink.CloudPubSubSinkConnector"
name: "CPS_SINK_CONNECTOR_ID"
tasks.max: "1"
topics: "GMK_TOPIC_ID"
value.converter: "org.apache.kafka.connect.storage.StringConverter"
key.converter: "org.apache.kafka.connect.storage.StringConverter"
cps.topic: "CPS_TOPIC_ID"
cps.project: "GCP_PROJECT_ID"
次のように置き換えます。
CPS_SINK_CONNECTOR_ID: Pub/Sub Sink コネクタの ID または名前。コネクタの命名方法のガイドラインについては、Managed Service for Apache Kafka リソースの命名ガイドラインをご覧ください。コネクタの名前は変更できません。
GMK_TOPIC_ID: Pub/Sub Sink コネクタがデータを読み取る Managed Service for Apache Kafka トピックの ID。
CPS_TOPIC_ID: データが公開される Pub/Sub トピックの ID。
GCP_PROJECT_ID: Pub/Sub トピックが存在する Google Cloudプロジェクトの ID。
Terraform
コネクタの作成には Terraform リソースを使用します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Go
このサンプルを試す前に、 クライアント ライブラリをインストールするの Go の設定手順を実施してください。詳細については、 Managed Service for Apache Kafka Go API リファレンス ドキュメントをご覧ください。
Managed Service for Apache Kafka に対する認証を行うには、アプリケーションのデフォルト認証情報(ADC)を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。
Java
このサンプルを試す前に、 クライアント ライブラリをインストールするの Java の設定手順を行ってください。詳細については、 Managed Service for Apache Kafka Java API リファレンス ドキュメントをご覧ください。
Managed Service for Apache Kafka に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、 ローカル開発環境の ADC の設定をご覧ください。
Python
このサンプルを試す前に、 クライアント ライブラリをインストールするの Python の設定手順を実施してください。詳細については、 Managed Service for Apache Kafka Python API リファレンス ドキュメントをご覧ください。
Managed Service for Apache Kafka に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。
コネクタを作成したら、コネクタの編集、削除、一時停止、停止、再起動を行うことができます。