Cloud Storage Sink コネクタは、Kafka から Cloud Storage バケットにデータをストリーミングします。これにより、大量のデータを費用対効果の高いスケーラブルな方法で保存して処理できます。
Cloud Storage Sink コネクタのユースケースは次のとおりです。
データレイクの取り込み。長期保存とバッチ処理のために、Kafka データをデータレイクに保存します。
規制要件を満たすためにデータをアーカイブします。
始める前に
Cloud Storage Sink コネクタを作成する前に、次のものがあることを確認してください。
Connect クラスタ用の Managed Service for Apache Kafka クラスタ を作成します。これは、Connect クラスタに関連付けられたプライマリ Kafka クラスタです。これは、コネクタ パイプラインの一端を形成するソース クラスタでもあります。
Cloud Storage Sink コネクタをホストする Connect クラスタを作成します。
Kafka からストリーミングされた データを保存する Cloud Storage バケットを作成します。
Kafka トピックを作成して構成します ソース クラスタ内に。データはこの Kafka トピックから宛先の Cloud Storage バケットに移動します。
必要なロールと権限
コネクタの作成に必要な権限を取得するには、プロジェクトに対するManaged Kafka コネクタ編集者 (roles/managedkafka.connectorEditor)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには コネクタの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
コネクタを作成するには、次の権限が必要です。
-
コネクタを作成する:
managedkafka.connectors.create
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Cloud Storage バケットに書き込む権限を付与する
Managed Kafka サービス アカウントには、Cloud Storage バケットにメッセージを書き込むための次の権限が必要です。
storage.objects.createstorage.objects.delete
Cloud Storage バケットを含むプロジェクトのサービス アカウントにストレージ オブジェクト ユーザー (roles/storage.objectUser)ロールを付与します。
Managed Kafka サービス アカウントの形式は
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com です。ここで、PROJECT_NUMBER は Connect クラスタのプロジェクト番号です。
Connect クラスタが Managed Service for Apache Kafka クラスタとは異なるプロジェクトにある場合は、 別のプロジェクトに Connect クラスタを作成するをご覧ください。
Cloud Storage Sink コネクタの仕組み
Cloud Storage Sink コネクタは、1 つ以上の Kafka トピックからデータを pull し、そのデータを単一の Cloud Storage バケット内のオブジェクトに書き込みます。
Cloud Storage Sink コネクタがデータをコピーする仕組みの詳細を次に示します。
コネクタは、ソース クラスタ内の 1 つ以上の Kafka トピックからメッセージを消費します。
コネクタは、コネクタ構成で指定したターゲット Cloud Storage バケットにデータを書き込みます。
コネクタは、コネクタ構成の特定のプロパティを参照して、Cloud Storage バケットに書き込むときにデータの形式を設定します。 デフォルトでは、出力ファイルは CSV 形式です。
format.output.typeプロパティを構成して、JSON などのさまざまな出力形式を指定できます。コネクタは、Cloud Storage バケットに書き込まれるファイルの名前も付けます。
file.name.prefixプロパティとfile.name.templateプロパティを使用して、ファイル名をカスタマイズできます。たとえば、ファイル名に Kafka トピック名やメッセージキーを含めることができます。Kafka レコードには、ヘッダー、キー、値の 3 つのコンポーネントがあります。
ヘッダーを含めるように
format.output.fieldsを設定すると、出力ファイルにヘッダーを含めることができます。 例:format.output.fields=value,headerskeyを含めるようにformat.output.fieldsを設定すると、出力ファイルにキーを含めることができます。例:format.output.fields=key,value,headersfile.name.templateプロパティにkeyを含めることで、キーを使用してレコードをグループ化することもできます。
format.output.fieldsのデフォルトはvalueであるため、デフォルトで出力ファイルに値を含めることができます。コネクタは、変換およびフォーマットされたデータを指定された Cloud Storage バケットに書き込みます。
file.compression.typeプロパティを使用してファイル圧縮を構成すると、コネクタは Cloud Storage バケットに保存されているファイルを圧縮します。コンバータの構成は
format.output.typeプロパティによって制限されます。たとえば、
format.output.typeがcsvに設定されている場合、キー コンバータはorg.apache.kafka.connect.converters.ByteArrayConverterまたはorg.apache.kafka.connect.storage.StringConverterである必要があり、値コンバータはorg.apache.kafka.connect.converters.ByteArrayConverterである必要があります。format.output.typeがjsonに設定されている場合、value.converter.schemas.enableプロパティが true であっても、値とキーのスキーマは出力ファイル内のデータとともに書き込まれません。
tasks.maxプロパティは、コネクタの並列処理レベルを制御します。tasks.maxを増やすとスループットが向上しますが、実際の並列処理は Kafka トピックのパーティション数によって制限されます。
Cloud Storage Sink コネクタのプロパティ
Cloud Storage Sink コネクタを作成するときは、次のプロパティを指定します。
コネクタ名
コネクタの名前または ID。リソースの命名方法のガイドラインについては、 Managed Service for Apache Kafka リソースの命名ガイドラインをご覧ください。 名前は変更できません。
コネクタ プラグインのタイプ
コネクタ プラグインのタイプとして [Cloud Storage Sink] を Google Cloud コンソールで選択します。ユーザー インターフェースを使用してコネクタを構成しない場合は、コネクタ クラスも指定する必要があります。
トピック
コネクタがメッセージを消費する Kafka トピック。
1 つ以上のトピックを指定することも、正規表現を使用して複数のトピックを照合することもできます。たとえば、topic.* は「topic」で始まるすべてのトピックに一致します。これらのトピックは、Connect クラスタに関連付けられた Managed Service for Apache Kafka クラスタ内に存在する必要があります。
Cloud Storage バケット
データを保存する Cloud Storage バケットを選択または作成します。
構成
このセクションでは、Cloud Storage Sink コネクタのコネクタ固有の追加の構成プロパティを指定できます。
Kafka トピックのデータは、Avro、JSON、未加工のバイトなど、さまざまな形式で保存できるため、構成の重要な部分としてコンバータの指定があります。 コンバータは、Kafka トピックで使用される形式から Kafka Connect の標準化された内部形式にデータを変換します。Cloud Storage Sink コネクタは、この内部データを受け取り、書き込む前に Cloud Storage バケットに必要な形式に変換します。
Kafka Connect でのコンバータの役割、 サポートされているコンバータのタイプ、一般的な構成オプションの詳細については、 コンバータをご覧ください。
Cloud Storage Sink コネクタに固有の構成を次に示します。
gcs.credentials.default: 実行環境から認証情報を自動的に 検出するかどうか。 Google Cloudtrueに設定する必要があります。gcs.bucket.name: データが書き込まれる Cloud Storage バケットの名前を指定します。設定する必要があります。file.compression.type: Cloud Storage バケットに保存されているファイルの圧縮タイプを設定します。例:gzip、snappy、zstd、noneデフォルト値はnoneです。file.name.prefix: Cloud Storage バケットに保存されている各ファイルの名前に追加される接頭辞。デフォルト値は空です。format.output.type: Cloud Storage 出力ファイルにデータを書き込むために使用されるデータ形式のタイプ。サポートされている値はcsv、json、jsonl、parquetです。デフォルト値はcsvです。
このコネクタに固有の利用可能な構成プロパティの一覧については、 Cloud Storage Sink コネクタの構成をご覧ください。
Cloud Storage Sink コネクタを作成する
コネクタを作成する前に、Cloud Storage Sink コネクタのプロパティのドキュメントを確認してください。
コンソール
コンソールで、[Connect クラスタ] ページに移動します。 Google Cloud
コネクタを作成する Connect クラスタをクリックします。
[Connect クラスタの詳細] ページが表示されます。
[コネクタを作成] をクリックします。
[Kafka コネクタを作成] ページが表示されます。
コネクタ名に文字列を入力します。
コネクタの命名方法のガイドラインについては、 Managed Service for Apache Kafka リソースの命名ガイドラインをご覧ください。
[**コネクタ プラグイン**] で [**Cloud Storage Sink**] を選択します。
データをストリーミングできるトピック を指定します。
データを保存するストレージ バケット を選択します。
(省略可)[構成] セクションで追加の設定を行います。
タスクの再起動ポリシー を選択します。詳細については、 タスクの再起動ポリシーをご覧ください。
[作成] をクリックします。
gcloud
-
コンソールで Cloud Shell をアクティブにします。 Google Cloud
コンソールの下部にある Google Cloud Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です 。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています 。セッションが初期化されるまで数秒かかることがあります。
gcloud managed-kafka connectors createコマンドを実行します。gcloud managed-kafka connectors create CONNECTOR_ID \ --location=LOCATION \ --connect-cluster=CONNECT_CLUSTER_ID \ --config-file=CONFIG_FILE次のように置き換えます。
CONNECTOR_ID: コネクタの ID または名前。 コネクタの命名方法のガイドラインについては、 Managed Service for Apache Kafka リソースの命名ガイドラインをご覧ください。 コネクタの名前は変更できません。
LOCATION: コネクタを作成するロケーション。これは、Connect クラスタを作成したロケーションと同じにする必要があります。
CONNECT_CLUSTER_ID: コネクタが作成される Connect クラスタの ID。
CONFIG_FILE: コネクタの YAML 構成 ファイルのパス。
Cloud Storage Sink コネクタの構成ファイルの例を次に示します。
connector.class: "io.aiven.kafka.connect.gcs.GcsSinkConnector" tasks.max: "1" topics: "GMK_TOPIC_ID" gcs.bucket.name: "GCS_BUCKET_NAME" gcs.credentials.default: "true" format.output.type: "json" name: "GCS_SINK_CONNECTOR_ID" value.converter: "org.apache.kafka.connect.json.JsonConverter" value.converter.schemas.enable: "false" key.converter: "org.apache.kafka.connect.storage.StringConverter"次のように置き換えます。
GMK_TOPIC_ID: データが Cloud Storage Sink コネクタに流れる Managed Service for Apache Kafka トピックの ID。
GCS_BUCKET_NAME: パイプラインのシンクとして機能する Cloud Storage バケットの名前。
GCS_SINK_CONNECTOR_ID: Cloud Storage Sink コネクタの ID または名前。コネクタの命名方法のガイドラインについては、Managed Service for Apache Kafka リソースの命名ガイドラインをご覧ください。コネクタの名前は変更できません。
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 の設定をご覧ください。
コネクタを作成したら、コネクタの編集、削除、一時停止、停止、再起動を行うことができます。