其他
大咖专栏 | AWS Kinesis的Javascript交互方法(上篇)
今天为大家撰文的大咖,是亚马逊AWS解决方案架构师——邓明轩老师,和我们年轻有为的亚马逊AWS解决方案架构师实习生——邱越俊同学。
AWS为旗下的服务提供了多种开发工具包,支持包括Java、PHP、Python、Ruby、浏览器端等语言或平台。对于Amazon Kinesis,我们除了使用上述的Stream API进行开发外,AWS还提供了Amazon Kinesis Client Library (KCL) 开发适用于Amazon Kinesis Streams的使用器应用程序。在本文中,我们展示如何使用Javascript在浏览器端与Amazon Kinesis进行交互,包括把记录Put到Kinesis,和从Kinesis读取记录。
每个数据记录都有一个唯一的序列号。当应用程序对Amazon Kinesis Stream进行写入记录时,Streams将自动为其分配序列号。同一分区键的序列号通常会随时间变化增加;写入请求之间的时间段越长,序列号则越大。但需要注意的是,序列号不能用作相同流中的数据集的索引。用户如果需要在逻辑上分隔数据集,请使用分区键或为每个数据集创建单独的流。
分区键Partition Key用于按分片对流中的数据进行分组。Streams服务使用与每条数据记录关联的分区键将属于流的数据记录分为多个分片,以便确定给定的数据记录所属的分片。分区键是最大长度限制为256个字节的Unicode字符串。MD5哈希函数用于将分区键映射到128位整数值并将关联的数据记录映射到分片。分区键由将数据放入流的应用程序指定。
Blob是不可变的字节序列,也就是用户添加到Kinesis Stream中真正存储的数据。Streams不以任何方式检查、解释或更改Blob中的数据。数据Blob可以是任何类型的数据,例如可以为日志文件的一个分段、地理位置数据、网页点击流数据等等。一个Blob数据最多为1 MB。
关于Amazon Kinesis Streams更详细概念信息,请查看以下AWS官方文档:http://docs.aws.amazon.com/zh_cn/kinesis/latest/dev/service-sizes-and-limits.html。
在本文档中,我们将会介绍使用TVM服务器获取临时证书以及使用AWS的托管服务Cognito获取临时证书两种方法。但无论使用TVM还是Cognito,共同的目的都是获取临时证书的accessKeyId、secretAccessKey、sessionToken三个参数。因此获取临时证书是本文相对独立的一部分,我们会在第八部分和第九部分分别进行介绍。而在第七部分,我们假设前端已经获取上述临时证书三个参数的情况下,对Kinesis的Javascript交互方法进行讲述。
进入AWS账户后,我们需要在AWS Kinesis服务中创建流。具体的创建方法为:1. 登陆AWS账户终端界面,点击Kinesis操作模块https://console.aws.amazon.com/kinesis。2. 在操作模块中点击“创建流”。自定义流名称后,分区数量我们填写最低配置1,然后点击“创建”按钮即可。(为了节省成本,我们这里只为流添加一个分片。用户可以根据自己的实际需要设定分片的数量。)
更多关于配置AWS Kinesis的权限问题,请参考AWS官方文档:http://docs.aws.amazon.com/streams/latest/dev/learning-kinesis-module-one-iam.html。
文档当中详细叙述了在AWS Console的IAM模块中如何创建User和Policy,为初学者提供很好的帮助。