アプリケーションが ApsaraMQ for Kafka にストリーミングデータを生成する場合、アーカイブ、分析、またはダウンストリーム処理のために、それらのメッセージを Object Storage Service (OSS) に永続化する必要がある場合があります。OSS sink コネクタは、このパイプラインを自動化します。ApsaraMQ for Kafka はメッセージを Function Compute (FC) に送信し、FC はそれらを OSS バケットに書き込みます。
前提条件
開始する前に、次のことを確認してください。
コネクタ機能が有効化されている ApsaraMQ for Kafka インスタンス
ApsaraMQ for Kafka インスタンスでトピックが作成されていること
OSS コンソールでOSS バケットが作成されていること
Function Compute が有効化されていること (コネクタは FC を介してデータを OSS にルーティングします)
制限事項
同一リージョン要件:ApsaraMQ for Kafka インスタンス、OSS バケット、および FC はすべて同じリージョンに存在する必要があります。詳細については、「使用制限」をご参照ください。
UTF-8 のみ:ApsaraMQ for Kafka はメッセージを UTF-8 エンコードされた文字列にシリアル化します。バイナリデータはサポートされていません。
費用:FC は無料のリソースクォータを提供します。このクォータを超える使用量は、「FC 課金ルール」に従って課金されます。関数実行を監視するには、「FC のログ記録を設定する」をご参照ください。
コネクタの作成とデプロイ
ステップ 1: コネクタウィザードの開始
ApsaraMQ for Kafka コンソールにログインします。
「[概要]」ページの「[リソース配布]」セクションで、インスタンスが存在するリージョンを選択します。
左側のナビゲーションウィンドウで、[コネクタ] をクリックします。
[コネクタ] ページで、[インスタンスの選択] ドロップダウンリストからインスタンスを選択し、[コネクタの作成] をクリックします。
ステップ 2: 基本情報の設定
[基本情報の設定] ステップで、以下のパラメーターを設定し、[次へ] をクリックします。
| パラメーター | 説明 | 例 |
|---|---|---|
| 名前 | コネクタの一意の名前。長さは 1~48 文字で、数字、小文字、ハイフン (-) を使用できます。ハイフンで始めることはできません。connect-<connector-name> という名前のコンシューマーグループが自動的に作成されます。 | kafka-oss-sink |
| インスタンス | 現在のインスタンスの名前と ID を表示します。 | demo alikafka_post-cn-st21p8vj\*\*\*\* |
デフォルトで、[サービスリンクロールの作成を承認] が選択されています。ApsaraMQ for Kafka は、サービスリンクロールがまだ存在しない場合に、このロールを作成します。このロールは、ApsaraMQ for Kafka から OSS へデータを同期するために必要な権限を付与します。
ステップ 3: ソースサービスの設定
[ソースサービスの設定] ステップで、ソースサービスとして Message Queue for Apache Kafka を選択し、次のパラメーターを設定し、[次へ] をクリックします。
必須パラメーター
| パラメーター | 説明 | 例 |
|---|---|---|
| データソースのトピック | メッセージがエクスポートされる元のトピックです。 | oss-test-input |
| コンシューマースレッドの同時実行数 | 同時実行コンシューマースレッドの数です。有効な値:1、2、3、6、12。デフォルト:6。 | 6 |
| コンシューマーオフセット | メッセージの消費を開始する場所です。最も古いオフセット は先頭から読み取り、最新のオフセット は新しいメッセージのみを読み取ります。 | 最も古いオフセット |
実行環境パラメーター
[ランタイム環境の設定] をクリックして、以下のパラメーターを展開します。
| パラメーター | 説明 | 例 |
|---|---|---|
| VPC ID | 同期タスクを実行する VPC です。デフォルトでは、ソースインスタンスの VPC が使用されます。 | vpc-bp1xpdnd3l\*\*\* |
| vSwitch ID | ソースインスタンスに接続されている vSwitch です。インスタンスと同じ VPC 内である必要があります。デフォルトでは、ソースインスタンスの vSwitch が使用されます。 | vsw-bp1d2jgg81\*\*\* |
| 障害時の処理ポリシー | メッセージ配信失敗時の処理方法です。[Continue Subscription] を選択すると、パーティションからの消費を継続し、エラーをログに記録します。[Stop Subscription] を選択すると、パーティションからの消費を停止し、エラーをログに記録します。詳細については、「コネクタの管理」および「エラーコード」をご参照ください。 | [Continue Subscription] |
| リソース作成方法 | 必要な内部トピックを自動的に作成する ([Auto]) か、手動で作成する ([Manual]) かを指定します。カスタムトピック設定が必要ない限り、[Auto] を選択してください。 | [Auto] |
内部トピック (手動作成のみ)
[リソース作成方法] を [手動] に設定した場合は、続行する前に以下の内部 Topic を作成してください。[ランタイム環境の設定] をクリックして、これらのパラメーターを表示します。
| パラメーター | 命名プレフィックス | パーティション | ストレージエンジン | cleanup.policy | 例 |
|---|---|---|---|---|---|
| Connector Consumer Group | connect-cluster | -- | -- | -- | connect-cluster-kafka-oss-sink |
| Task Offset Topic | connect-offset | > 1 | ローカルストレージ | Compact | connect-offset-kafka-oss-sink |
| Task Configuration Topic | connect-config | 1 (正確に) | ローカルストレージ | Compact | connect-config-kafka-oss-sink |
| Task Status Topic | connect-status | 6 (推奨) | ローカルストレージ | Compact | connect-status-kafka-oss-sink |
| Dead-letter Queue Topic | connect-error | 6 (推奨) | ローカルストレージまたはクラウドストレージ | -- | connect-error-kafka-oss-sink |
| Error Data Topic | connect-error | 6 (推奨) | ローカルストレージまたはクラウドストレージ | -- | connect-error-kafka-oss-sink |
ローカルストレージは Professional Edition インスタンスでのみ利用可能です。トピックリソースを節約するには、[デッドレターキュートピック] と [エラーデータトピック] の両方に同じトピックを使用できます。
ステップ 4: 送信先サービスの設定
[送信先サービスの設定] ステップで、送信先サービスとして Object Storage Service を選択し、次のパラメーターを設定し、[作成] をクリックします。
| パラメーター | 説明 | 例 |
|---|---|---|
| Bucket Name | エクスポートされたデータを受信する OSS バケットの名前。 | bucket_test |
| AccessKey ID | バケットへのアクセス権を持つ Alibaba Cloud アカウントの AccessKey ID。 | yourAccessKeyID |
| AccessKey Secret | Alibaba Cloud アカウントの AccessKey Secret。 | yourAccessKeySecret |
アカウントに次の最小限の権限を付与します。
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:PutObject"
],
"Resource": "*",
"Effect": "Allow"
}
]
}AccessKey ID と AccessKey Secret は、同期タスクの作成時に環境変数として OSS に渡されます。ApsaraMQ for Kafka は、タスク作成後にこれらの認証情報を保存しません。
ステップ 5: コネクタのデプロイ
コネクタが作成されたら、[コネクタ] ページに戻り、コネクタを見つけ、[アクション] 列にある [デプロイ] をクリックします。
テストメッセージの送信
デプロイ後、テストメッセージを送信してコネクタを検証します。
[コネクタ] ページで、コネクタを見つけ、[アクション] 列の [テスト] をクリックします。
[メッセージの送信] パネルで、送信方法を選択します。
コンソール: [メッセージキー](例:
demo)および[メッセージコンテンツ](例:{"key": "test"})を入力します。オプションで、[指定されたパーティションに送信]を[はい]に設定し、[パーティション ID]を入力します。パーティション ID の確認方法については、「パーティションのステータスを表示する」をご参照ください。Docker: 「[Docker コンテナを実行してサンプルメッセージを生成する]」セクションに示されている Docker コマンドを実行します。
[SDK]:プログラミング言語またはフレームワークの SDK を選択し、指示に従います。
結果の検証
テストメッセージが OSS バケットに到着したかどうかを確認します。
OSS コンソールを開き、対象のバケットの[ファイル] ページに移動します。 詳細については、「概要」をご参照ください。
新しいオブジェクトが表示されることを確認します。新しいオブジェクトは、コネクタが機能していることを示します。

エクスポートされた各オブジェクトには、次の形式の JSON 配列が含まれています。
[
{
"key": "123",
"offset": 4,
"overflowFlag": true,
"partition": 0,
"timestamp": 1603779578478,
"topic": "Test",
"value": "1",
"valueSize": 272687
}
]| フィールド | 説明 |
|---|---|
key | メッセージキーです。 |
offset | パーティション内でのメッセージのコンシューマオフセットです。 |
overflowFlag | メッセージの値がサイズのために切り捨てられたかどうかを示します。 |
partition | メッセージが消費されたパーティションです。 |
timestamp | メッセージが生成されたときの UNIX タイムスタンプ (ミリ秒単位) です。 |
topic | ソースのトピック名です。 |
value | メッセージ本文です (overflowFlag が true の場合は切り捨てられたバージョン)。 |
valueSize | メッセージの値の元のサイズ (バイト単位) です。 |
Function Compute リソースの設定
コネクタが使用する FC リソースを調整するには、次の手順を実行します。
[コネクタ] ページでコネクタを見つけ、[操作] 列の [その他] をクリックし、[関数の設定] を選択します。
必要に応じて、Function Compute コンソールでリソースを設定します。