同期関数の作成
1. Function Compute 関数の作成
1.1 サービスの作成
Function Compute コンソールに移動し、サービスを作成します。すでにFunction Compute 関数を作成している場合は、この手順をスキップしてください。
1.2 関数の作成
作成したばかりのサービスで関数を作成するには、[Create Function] をクリックしてコードを入力します。詳細については、「関数概要」をご参照ください。[Triggers] ページで、[Skip] をクリックし、次に [Finish] をクリックします。
2. サービスにリンクされたロールの権限付与
Security Token Service (STS) の一時アカウント方式を選択すると、DataHub 用のサービスにリンクされたロールが自動的に作成されます。DataHub サービスは、このロールを使用して FC にアクセスし、データ同期を実行します。
3. DataHub Topic の作成
詳細については、「DataHub 同期の開始」をご参照ください。
4. DataHub Function Compute コネクタの作成
4.1 Topic 詳細ページへの移動
4.2 FC コネクタの作成
4.3 構成情報の入力
エンドポイント: Function Compute のサービスエンドポイントです。内部サービスエンドポイントを
https://<account_id>.fc.<region>.aliyuncs.comの形式で指定する必要があります。たとえば、中国 (上海) リージョンの Function Compute のエンドポイントはhttps://12423423992.fc.cn-shanghai-internal.aliyuncs.comです。詳細については、「サービスエンドポイント」をご参照ください。サービス: 送信先の Function Compute サービス名です。
関数: 送信先の Function Compute 関数名です。
開始時刻: 関数呼び出しを開始する DataHub Topic 内の位置です。
5. イベント構造の定義
Function Compute に送信されるデータは、次の構造を持ちます。
{
"eventSource": "acs:datahub",
"eventName": "acs:datahub:putRecord",
"eventSourceARN": "/projects/test_project_name/topics/test_topic_name",
"region": "cn-hangzhou",
"records": [
{
"eventId": "0:12345",
"systemTime": 1463000123000,
"data": "[\"col1's value\",\"col2's value\"]"
},
{
"eventId": "0:12346",
"systemTime": 1463000156000,
"data": "[\"col1's value\",\"col2's value\"]"
}
]
}ここで、
eventSource: イベントソースです。これは定数文字列
acs:datahubです。eventName: イベント名です。DataHub からのデータの場合、イベント名は
acs:datahub:putRecordです。eventSourceARN: イベントソース識別子です。これには、
/projects/test_project_name/topics/test_topic_nameのような DataHub プロジェクト名と Topic 名が含まれます。region: ソース DataHub サービスが配置されているリージョンです。
cn-hangzhouなどです。records: イベントに含まれるレコードのリストです。
eventId: レコードの ID です。形式は
shardId:SequenceNumberです。systemTime: イベントが DataHub に保存されたときの UNIX タイムスタンプ (ミリ秒) です。
data: イベントのデータコンテンツです。Tuple Topic の場合、このフィールドはリストです。リストの各要素は、Topic 内のフィールドの値に対応する文字列です。BLOB Topic の場合、このフィールドは文字列です。
6. 注意事項
サービスドメイン名は内部サービスドメイン名である必要があります。Function Compute サービス名と関数名は存在している必要があります。
DataHub は、データ処理の順序を確実にするために、同期モードでの関数呼び出しのみをサポートしています。
関数で実行時エラーが発生した場合、DataHub は 1 秒後にタスクを再試行し、512 回失敗するとタスクを一時停止します。
Web コンソールで、タスク実行ステータス、ポイント、詳細なエラーメッセージなどを表示できます。