表格存储触发C# runtime的函数计算处理示例教程
前言
函数计算(Function Compute)是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Table Store Stream是用于获取Table Store表中增量数据的一个数据通道,通过创建Table Store触发器,能够实现Table Store Stream和函数计算的自动对接,从而实现表格存储中的表数据发生变更时候定制化的自动处理。具体可以查看表格存储触发函数计算官方教程,但是该官方教程只有python版的代码示例,本教程展示C#版的代码示例。
具体过程
表格存储传给函数event参数是cbor格式,格式如下:
{ "Version": "string", "Records": [ { "Type": "string", "Info": { "Timestamp": int64 }, "PrimaryKey": [ { "ColumnName": "string", "Value": formated_value } ], "Columns": [ { "Type": "string", "ColumnName": "string", "Value": formated_value, "Timestamp": int64 } ] } ] }
- 参考函数计算C# runtime教程, 创建一个dotnetcore2.1的函数, 本教程使用的是Dahomey.Cbor库, 其中有关cbor处理;
下面展示是相关配置和代码:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Dahomey.Cbor" Version="1.5.0" /> <PackageReference Include="Dahomey.Cbor.AspNetCore" Version="1.4.9" /> <PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> </ItemGroup> </Project>
using System; using System.IO; using Dahomey.Cbor; using Dahomey.Cbor.ObjectModel; using Aliyun.Serverless.Core; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace Dotnet { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } public class fcFileHandler { public async Task<Stream> Echo(Stream input, IFcContext context) { ILogger logger = context.Logger; try{ CborObject cborObject = await Cbor.DeserializeAsync<CborObject>(input); logger.LogInformation("Handle input: {0}", cborObject.ToString()); var result = JsonConvert.DeserializeObject<CBORRootInfo>(cborObject.ToString()); logger.LogInformation("Version: {0}", result.Version); logger.LogInformation("Records: {0}", JsonConvert.SerializeObject(result.Records)); }catch (Exception e){ Console.WriteLine("{0} Second exception.", e.Message); } MemoryStream copy = new MemoryStream(); await input.CopyToAsync(copy); copy.Seek(0, SeekOrigin.Begin); return copy; } } }
using System.Collections.Generic; namespace Dotnet { public class ColumnsItem { /// <summary> /// /// </summary> public string ColumnName { get; set; } /// <summary> /// /// </summary> public string Timestamp { get; set; } /// <summary> /// /// </summary> public string Type { get; set; } /// <summary> /// /// </summary> public string Value { get; set; } } public class Info { /// <summary> /// /// </summary> public string Timestamp { get; set; } } public class PrimaryKeyItem { /// <summary> /// /// </summary> public string ColumnName { get; set; } /// <summary> /// /// </summary> public string Value { get; set; } } public class RecordsItem { /// <summary> /// /// </summary> public List<ColumnsItem> Columns { get; set; } /// <summary> /// /// </summary> public Info Info { get; set; } /// <summary> /// /// </summary> public List<PrimaryKeyItem> PrimaryKey { get; set; } /// <summary> /// /// </summary> public string Type { get; set; } } public class CBORRootInfo { /// <summary> /// /// </summary> public string Version { get; set; } /// <summary> /// /// </summary> public List<RecordsItem> Records { get; set; } } }
2.参考表格存储触发函数计算官方教程 创建对应的ots实例和表,并且配置该表的触发器是一个1中创建的函数,最后效果如下图所示:
3.使用表格存储客户端或者表格存储操作表代码往对应的表中进行数据操作;
本人最后显示效果如下:
注意:需要配置函数的service日志能写入logstore,具体参考函数计算访问日志服务
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
云栖号:新手上云第一站,助力你轻松上云!
阿里云官网正式推出“云栖号”,旨在为大家提供第一手的上云资讯,来自不同行业精选的上云企业案例,基于众多成功案例萃取而成的最佳实践,助力你进行上云决策,0门槛更轻松的上云。 目前,云栖号分为三大版块,分别为热点资讯、快速入门、热门案例及最佳实践。下面带大家详细了解一下这三个板块。 云栖号 访问地址:https://www.aliyun.com/#module-yedOfott8 (一)热点资讯:一站式第一手的上云资讯,时刻了解行业信息 资讯爆炸的时代,想了解上云计算资讯,需要去各个媒体去查看? 云栖号-热点资讯板块,让你一站式了解热点上云资讯。 热点资讯 板块,主要的内容为上云科技资讯,“云栖号头条快讯”和其他资讯会收录当下热点的上云资源,包括但不局限于云计算,AI,大数据,物联网,云安全,企业应用类资讯。让你一站式快速了解行业热点。 点击看热点资讯:云栖号-热点资讯 (二)快速入门:快速了解阿里云,云产品,常用上云场景入门 业务要上云,不了解云产品是什么,如何用? 云栖号-快速入门板块精选最适合新手的阿里云入门,云产品入门,场景入门,助力你快速学习! 快速入门板块主要是帮助新手、想要学...
- 下一篇
JW 页面工厂 1.6.5 版本更新,免费建站系统
开发网站应该像聆听音乐一样轻松自在,您将享受每一刻。页面工厂提供了这种体验。使用此Joomla网站构建工具制作网站非常有趣。 新版包含了哪些功能: 新增:推出了图像轮播插件 新增:添加了4个新的轮播图块以收集图块 修复:sh404SEF的前端编辑404问题 修复:表单生成器和联系表单插件上的reCAPTCHA问题 修复:交互首次加载时的页面波动问题 修复:上下文菜单定位问题 演示地址: 页面工厂演示试用 下载地址: 页面工厂组件下载 页面工厂整站下载
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度