前言
函数计算(Function Compute)是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Table Store Stream是用于获取Table Store表中增量数据的一个数据通道,通过创建Table Store触发器,能够实现Table Store Stream和函数计算的自动对接,从而实现OTS数据发生变更时候定制化的自动处理。具体可以查看表格存储触发函数计算官方教程,但是该官方教程只有python版的代码示例,本教程作为补充,通过代码示例说明在其他runtime下怎么玩转Table Store触发器。
其他 Runtime 使用的第三库
打包第三方库, 请分别参考:
本文附件中有 nodejs 和 php 完整的代码示例下载, 而 java 和 C# 分别有单独一篇文章说明具体操作过程:
代码示例
nodejs
-
目录结构
-rw-r--r-- 1 songluo staff 350 Nov 21 16:22 index.js
drwxr-xr-x 9 songluo staff 288 Nov 21 15:54 node_modules
-rw-r--r-- 1 songluo staff 1639 Nov 21 15:54 package-lock.json
-rw-r--r-- 1 songluo staff 49 Nov 21 15:54 package.json
-
入口函数
'use strict';
var cbor = require('cbor');
module.exports.handler = function(event, context, callback) {
cbor.decodeFirst(event, function(error, obj){
// error != null if there was an error
// obj is the unpacked objec
console.info(JSON.stringify(obj));
// use obj do anything
});
callback(null, 'ok');
};
php
-
目录结构
-rw-r--r-- 1 songluo staff 218 Nov 21 16:43 composer.json
-rw-r--r-- 1 songluo staff 1979 Nov 21 16:43 composer.lock
-rw-r--r-- 1 songluo staff 1197 Nov 21 17:01 index.php
drwxr-xr-x 5 songluo staff 160 Nov 21 16:43 vendor
-
入口函数
<?php
require_once __DIR__ . "/vendor/autoload.php";
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if (!(error_reporting() & $errno)) {
return false;
}
switch ($errno) {
case E_USER_ERROR:
$errInfo = array(
"errorMessage" => $errstr,
"errorType" => \ServerlessFC\friendly_error_type($errno),
"stackTrace" => array(
"file" => $errfile,
"line" => $errline,
),
);
throw new \ErrorException($errstr, 0, $errno, $errfile, $errline);
break;
default: // E_USER_WARNING | E_USER_NOTICE
break;
}
/* Don't execute PHP internal error handler */
return true;
}
// set to the user defined error handler
// solve 'Non-static method CBOR\\CBOREncoder::bigint_unpack() should not be called statically'
// https://stackoverflow.com/questions/10768576/how-can-i-solve-non-static-method-xxxxxx-should-not-be-called-statically-in
set_error_handler("myErrorHandler");
function handler($event, $context){
//decode
$decoded_evt = \CBOR\CBOREncoder::decode($event);
//output
var_export(json_encode($decoded_evt));
}
java
请参考表格存储触发 java runtime 的函数计算处理示例教程
C
请参考表格存储触发 C# runtime的函数计算处理示例教程