要使用阿里云表格存储Tablestore作为事件源触发函数计算FC执行,您需要按照以下步骤配置和使用Tablestore触发器:
步骤一:配置Tablestore Stream功能
登录 表格存储控制台。
在概览页面,选择您的实例。
在实例操作列单击实例管理,然后在实例详情页面,选择实时消费通道页签。
在实时消费通道页签,单击开启Stream功能,设置日志过期时长(例如168小时),然后单击开启。
步骤二:创建Tablestore触发器
登录 函数计算控制台,在左侧导航栏,单击服务及函数。
在顶部菜单栏,选择地域。
在服务列表页面,找到目标服务,在其右侧操作列单击函数管理。
在函数管理页面,单击目标函数名称。
在函数详情页面,单击触发器管理页签,从版本或别名下拉列表选择要创建触发器的版本或别名。
在创建触发器面板,选择表格存储Tablestore作为触发器类型。
填写相关配置,例如选择Tablestore实例、数据表,然后选择角色AliyunTableStoreStreamNotificationRole。
单击确定创建触发器。
步骤三:配置函数的入口参数
在函数详情页面,单击函数代码页签,然后单击测试函数右侧图标,从下拉列表中,选择配置测试参数。
根据Tablestore触发器的事件格式,编写测试事件数据。事件数据格式如下:
{
"Version": "Sync-v1",
"Records": [
{
"Type": "PutRow",
"Info": {
"Timestamp": 1506416585740836
},
"PrimaryKey": [
{
"ColumnName": "pk_0",
"Value": 1506416585881590900
},
{
"ColumnName": "pk_1",
"Value": "2017-09-26 17:03:05.8815909 +0800 CST"
},
{
"ColumnName": "pk_2",
"Value": 1506416585741000
}
],
"Columns": [
{
"Type": "Put",
"ColumnName": "attr_0",
"Value": "hello_table_store",
"Timestamp": 1506416585741
},
{
"Type": "Put",
"ColumnName": "attr_1",
"Value": 1506416585881590900,
"Timestamp": 1506416585741
}
]
}
]
}
单击确定保存测试事件数据。
步骤四:编写函数代码
在函数详情页面,单击函数代码页签,编辑函数代码。
编写处理Tablestore事件的代码,例如使用Python,可以参考以下示例:
import logging
import cbor
from ots2 import OTSClient, RowPutChange, Column
def handler(event, context):
logger = logging.getLogger()
logger.info("Begin to handle event")
解析事件数据
records = cbor.loads(event['Records'][0]['Event'])
访问Tablestore服务
instance_name = 'your-instance-name'
table_name = 'your-table-name'
access_key_id = 'your-access-key-id'
access_key_secret = 'your-access-key-secret'
endpoint = 'your-instance-endpoint'
ots_client = OTSClient(ots_client, instance_name, access_key_id, access_key_secret, endpoint)
处理数据并写回Tablestore
...
logger.info("End to handle event")
return 'OK'
单击部署代码。
步骤五:本地调试
如果您的函数运行环境是Custom Runtime,例如使用Node.js、Python等,您可以使用Serverless Devs工具进行本地调试。具体操作如下:
安装Serverless Devs工具。
在项目目录中,执行sudo s local invoke -e '{"key": "value"}',传入事件数据进行本地测试。
若要进行断点调试,可以使用VSCode、IntelliJ或PyCharm等IDE,根据Serverless Devs的文档配置断点调试参数。
完成以上步骤后,您可以测试函数是否能够正确处理Tablestore的事件数据。如果一切正常,当Tablestore中有数据更新时,函数计算会自动触发您的函数执行。此回答整理自钉群“阿里函数计算客户【已满,加2群:64970014484】”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。