AWS无服务器Lambda计划的事件以将推文存储在Couchbase中

该博客通过代码示例解释了一些无服务器概念:

这个特定的博客条目将显示如何使用AWS Lambda在Couchbase中存储高音扬声器的鸣叫 以下是高级组件:

关键概念是:

可以在github.com/arun-gupta/twitter-n1ql上找到此博客的完整示例代码。

无服务器应用程序模型

无服务器应用程序模型 (SAM)定义了用于表达无服务器资源的简化语法。 SAM扩展了AWS CloudFormation,以增加对API网关,AWS Lambda和Amazon DynamoDB的支持。 在使用AWS无服务器应用程序模型和Couchbase的微服务中阅读更多详细信息。

对于我们的应用程序,可以在github.com/arun-gupta/twitter-n1ql/blob/master/template-example.yml中找到SAM模板,如下所示:

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Twitter Feed Analysis using Couchbase/N1QL
Resources:
  TrumpFeed:
    Type: AWS::Serverless::Function
    Properties:
      Handler: org.sample.twitter.TwitterRequestHandler
      Runtime: java8
      CodeUri: s3://arungupta.me/twitter-feed-1.0-SNAPSHOT.jar
      Timeout: 30
      MemorySize: 1024
      Environment:
        Variables:
          COUCHBASE_HOST: <value>
          COUCHBASE_BUCKET_PASSWORD: <value>
      Role: arn:aws:iam::598307997273:role/microserviceRole
      Events:
        Timer:
          Type: Schedule
          Properties:
            Schedule: rate(3 hours)

我们在这里看到什么?

public class TwitterRequestHandler implements RequestHandler<Request, String> {
 
    @Override
    public String handleRequest(Request request, Context context) {
        if (request.getName() == null)
            request.setName("realDonaldTrump");
        
        int tweets = new TwitterFeed().readFeed(request.getName());
        
        return "Updated " + tweets + " tweets for " + request.getName() + "!";
    }
    
}
  • 默认情况下,此类读取Donald Trump的twitter句柄。 后续博客将为您带来更多乐趣。
  • COUCHBASE_HOSTCOUCHBASE_BUCKET_PASSWORD是环境变量,它们提供运行Couchbase数据库的EC2主机以及存储桶的密码。
  • 功能可以由不同的事件触发。 在我们的情况下,这每三个小时触发一次。 有关此处使用的表达式的更多详细信息,请参见使用Rate或Cron的Schedule Expressions

使用Twitter4J获取推文

使用Twitter4J API阅读推文。 它是一种非官方的Twitter API,它通过Twitter REST API提供Java抽象。 这是一个简单的示例:

Twitter twitter = getTwitter();
Paging paging = new Paging(page, count, sinceId);
List<Status> list = twitter.getUserTimeline(user, paging);

Twitter4J DocsJavadocs非常全面。

Twitter API仅允许读取最后200条推文。 Lambda函数每3小时调用一次。 至少到目前为止@ realDonaldTrump的鸣叫频率不是每3小时200条。 如果确实达到了危险水平,那么我们可以调整频率以更频繁地触发Lambda函数。

每个鸣叫的JSON表示都使用Couchbase Java SDK存储在Couchbase服务器中。 AWS Lambda支持Node,Python和C#。 因此,您也可以使用Couchbase Node SDKCouchbase Python SDKCouchbase .NET SDK来编写这些功能。

由于特定鸣叫的ID,Twitter4J API允许提取鸣叫。 这样可以确保不提取重复的tweet。 这要求我们按特定顺序对所有推文进行排序,然后选择最新推文的ID。 使用简单的N1QL查询解决了此问题:

SELECT id FROM twitter ORDER BY id DESC LIMIT 1

语法非常类似于SQL。 在后续博客中对此有更多的了解。

将推文存储在Couchbase中

最后一项是将检索到的推文存储在Couchbase中。

COUCHABSE_HOST环境变量的值用于连接到Couchbase实例。 COUCHBASE_BUCKET_PASSWORD环境变量的值是连接到存储所有JSON文档的安全存储区。 非常重要的一点是,存储桶必须受密码保护并且不能在源代码中直接指定。 在后续博客中对此有更多的了解。

使用Couchbase Java API在Couchbase中更新(插入或更新)JSON文档:

bucket.upsert(jsonDocument);

这个Lambda函数已经运行了几天,并且已经从@realDonaldTrump捕获了258条推文。

即将对他的推文进行有趣的分析!

与我们交谈:

可以在github.com/arun-gupta/twitter-n1ql上找到此博客的完整示例代码。

翻译自: https://www.javacodegeeks.com/2017/01/aws-serverless-lambda-scheduled-events-store-tweets-couchbase.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值