完成Tablestore触发器的创建后,当Tablestore中的数据更新时会自动触发函数执行,对这些数据进行自定义处理。本文以使用Tablestore触发器触发函数获取数据为例,介绍如何在函数计算控制台为函数配置Tablestore触发器,包括创建触发器、配置入口参数以及编写函数代码并测试。
步骤一:创建Tablestore触发器
- 登录函数计算控制台。
- 在左侧导航栏,单击服务及函数。
- 在顶部菜单栏,选择地域。
- 在服务列表页面,找到目标服务,在其右侧操作列单击函数管理。
- 在函数管理页面,单击目标函数名称。
- 在函数详情页面,单击触发器管理页签,从版本或别名下拉列表选择要创建触发器的版本或别名,然后单击创建触发器。
- 在创建触发器面板,填写相关信息,然后单击确定。
参数 |
操作 |
本文示例 |
触发器类型 |
选择表格存储 Tablestore。
|
表格存储Tablestore |
名称 |
自定义填写触发器名称。 |
Tablestore-trigger |
版本或别名 |
默认值为LATEST,如果您需要创建其他版本或别名的触发器,需先在函数详情页的版本或别名下拉列表选择该版本或别名。关于版本和别名的简介,请参见管理版本和管理别名。
|
LATEST |
实例 |
在列表中选择已创建的Tablestore实例。 |
d00dd8xm**** |
表格 |
在列表中选择已创建的表格。 |
mytable |
角色名称 |
选择AliyunTableStoreStreamNotificationRole。
说明 如果您第一次创建该类型的触发器,则需要在单击确定后,在弹出的对话框中选择立即授权。
|
AliyunTableStoreStreamNotificationRole |
创建完成后,在触发器名称列表中显示已创建的触发器。
步骤二:配置函数的入口参数
- 在函数详情页面,单击函数代码页签,然后单击
图标,从下拉列表中,选择配置测试参数。
- 在配置测试参数面板,选择创建新测试事件或编辑已有测试事件页签,填写事件名称和事件内容。然后单击确定。
表格存储触发器使用CBOR格式对增量数据进行编码,构成函数计算的event。具体格式如下所示。
{
"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
}
]
}
]
}
event参数中不同属性字段的解释如下表所示。
参数 |
描述 |
Version |
Payload版本号。示例如Sync-v1。类型为String。 |
Records |
数据表中的增量数据行数组。包含如下内部成员:
- Type:数据行类型,包含PutRow、UpdateRow和DeleteRow。类型为String。
- Info:包含Timestamp内部成员。Timestamp表示该行的最后修改UTC时间。类型为Int64。
|
PrimaryKey |
主键列数组。包含如下内部成员:
- ColumnName:主键列名称。类型为String。
- Value:主键列内容。类型为formated_value,支持Integer、String和Blob。
|
Columns |
属性列数组。包括如下内部成员:
- Type:属性列类型,包含Put、DeleteOneVersion和DeleteAllVersions。类型为String。
- ColumnName:属性列名称。类型为String。
- Value:属性列内容。类型为formated_value,支持Integer、Boolean、Double、String和Blob。
- Timestamp:属性列最后修改UTC时间。类型为Int64。
|
步骤三:编写函数代码并测试
完成Tablestore触发器创建后,您可以开始编写函数代码并测试,以验证代码的正确性。在实际操作过程中当Tablestore中有数据更新时会自动触发函数执行。
- 在函数详情页面,单击函数代码页签,在代码编辑器中编写代码,然后单击保存并部署。
本文以Python函数代码为例。如果您想使用其他运行环境,更多代码示例,请参见
表格存储触发函数计算示例。
import logging
import cbor
import json
def get_attribute_value(record, column):
attrs = record[u'Columns']
for x in attrs:
if x[u'ColumnName'] == column:
return x['Value']
def get_pk_value(record, column):
attrs = record[u'PrimaryKey']
for x in attrs:
if x['ColumnName'] == column:
return x['Value']
def handler(event, context):
logger = logging.getLogger()
logger.info("Begin to handle event")
#records = cbor.loads(event)
records = json.loads(event)
for record in records['Records']:
logger.info("Handle record: %s", record)
pk_0 = get_pk_value(record, "pk_0")
attr_0 = get_attribute_value(record, "attr_0")
return 'OK'
- 单击函数代码页签的测试函数。
执行完成后,您可以在函数代码页签的上方查看执行结果。
更多信息
除了函数计算控制台,您还可通过以下方式配置触发器:
如需对创建的触发器进行修改或删除,具体操作,请参见触发器管理。