创建同步Fc
1. 创建函数计算Function
1.1 新建Service
在函数计算控制台中创建Service。去往函数计算控制台。如果您已经创建过Function,可以忽略此步。
1.2 新建Function
在刚创建的Service下创建Function,点击“新建函数”。并输入您的代码,详细操作请参照函数简介。触发器页面点击”跳过””即可,最后点击完成。
2. 服务关联角色授权
当选择STS临时账号方式时,将会自动创建DataHub服务关联角色,DataHub服务会使用此角色访问Fc以完成数据同步
3. 创建DataHub Topic
4. 创建DataHub FunctionCompute Connector
4.1 进入Topic详情页
在 Topic 详情页右上角,单击 + 同步 按钮。
4.2 选择创建FC Connector
在弹出的同步类型列表中,选择 函数计算 作为 Connector 类型。
4.3 填写配置信息
在新建Connector对话框中,除 Endpoint、Service、Function 和起始时间外,还需配置导入字段(选择需要同步的 Topic 字段,如 field1、field2、field3)和鉴权模式(如 STS),完成后单击创建。
Endpoint: 函数计算服务地址,需填写内网服务地址,格式为
https://<account_id>.fc.<region>.aliyuncs.com,例如,上海区域函数计算的地址为:https://12423423992.fc.cn-shanghai-internal.aliyuncs.com。可参考服务接入地址。Service: 目标函数计算的服务名
Function: 目标函数计算的函数名
起始时间: 表示从DataHub的topic中哪个位置的记录开始调用函数计算
5. Event结构定义
发送到函数计算的数据遵循以下数据结构定义。
{
"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: 事件来源标识,包含datahub的project和topic名称,如
/projects/test_project_name/topics/test_topic_name;region: 事件来源DataHub所属的区域,
cn-hangzhou;records: 事件包含的记录列表
eventId: 记录的ID,组成方式为,
shardId:SequenceNumber;systemTime: 该event存入DataHub的毫秒时间戳;
data: 事件的数据内容,Tuple类型Topic该字段为列表,其中每个元素均为string类型的数据对应每个topic中每个字段的值; Blob类型Topic该字段为string;
6. 注意事项
服务域名需为内部服务域名,函数计算服务名、函数名需存在;
DataHub仅支持同步模式Invoke函数,保证数据处理顺序;
当函数发生运行时错误时,DataHub会在1s之后进行重试,失败次数达到512时,任务将被挂起;
可在Web控制台查看任务运行状态以及点位,详细出错信息等;