在现代社交媒体时代,Twitter 已经成为全球最流行的社交媒体之一,每天数以百万计的用户发布消息。对于企业而言,监控 Twitter 上与自己相关的消息非常必要,以便能够实时了解消费者的反馈和需求。
在这篇文章中,我们将介绍如何使用 Serverless 架构搭建一个基于 Twitter 数据的监控系统。我们将使用 AWS Lambda,DynamoDB,API Gateway 和 Twitter API 来实现。这个监控系统将会对指定关键字进行监控,并将匹配到的消息存储在 DynamoDB 中。同时,我们将向用户提供一个 API 服务来查询存储的消息。
准备工作
在开始建立这个监控系统前,我们需要进行下面几步准备工作:
- 创建 Twitter 应用并获取 API key 和 API secret。
- 安装 AWS CLI 并配置 AWS 认证信息。
- 安装 Serverless Framework。
npm install -g serverless
构建监控系统
创建 DynamoDB 表格
首先,我们需要创建一个 DynamoDB 表格来存储 Twitter 消息。运行下面的命令来创建表格:
aws dynamodb create-table --table-name twitter-messages --attribute-definitions AttributeName=message_id,AttributeType=S --key-schema AttributeName=message_id,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
这会创建一个名为 twitter-messages
的 DynamoDB 表格,并用 message_id
作为主键来存储消息。
编写 Lambda 函数
接下来,我们将编写 Lambda 函数来监视 Twitter 上的指定关键字,并将匹配到的消息存储在 DynamoDB 中。
在 serverless.yml
中添加以下配置来创建 Lambda 函数:
-- -------------------- ---- ------- ---------- -------- -------- --------------- ------------ --------------------- --------------------------- ------------------------ ------------------------------ ------------------------- ------------------------------- ---------------------------- ---------------------------------- --------------- ---------- ------- - --------- ----- ------ -------
在这个 serverless.yml
配置中,我们定义了一个名为 monitor
的 Lambda 函数。该函数的 handler
是 handler.monitor
,我们将在后面实现。
在 environment
这个属性中,我们设置了 4 个 Twitter API 需要的环境变量。这些值可以从 Twitter API 控制台中获得。我们还定义了 TRACK_KEYWORDS
变量,指定我们要监视的关键字。
在 events
这个属性里面,我们定义了该函数需要在 1 分钟的频率下运行。
接下来,我们需要实现 handler.monitor
,这个函数将会使用 Twitter API 获取 Twitter 上最新的消息,并将匹配到的消息存储到 DynamoDB 表格。
-- -------------------- ---- ------- ----- --- - ------------------- ----- ------- - ------------------- ----- ------ - --- ------------------------------ ----- -------- --------- - ----- ------- - --- --------- ------------- --------------------------------- ---------------- ------------------------------------ ----------------- ------------------------------------- -------------------- ---------------------------------------- --- ----- ------ - --------------------------- ----- ------ - ----- ---------------------------- - -- ------- ------ --- --- ----- ----- - --- --- ------ ----- -- ---------------- - ----- - ------- ---------- - - ------ ----- --------- - ----- ------------ ---------- ------------------- ---- - ---------- -- ------------- -- ----------------- - ----- - ----- ------------- ----------- ------------------ - - ------ ----- ------------ ---------- ------------------- ----- - ----------- ------------- ------------------- -- ------------- ------------------ - - ------ ------ - -------------- - - ------- --
在这个函数中,我们使用了 Twitter API 获取了最新的 100 条消息,按照关键字过滤出需要的消息。然后,我们使用 dynamo.put
函数添加这些消息到 DynamoDB 表格中。
添加 HTTP API Gateway
接下来,我们将使用 Serverless Framework 来添加一个 HTTP 服务,允许用户通过 API 查询存储在 DynamoDB 中的 Twitter 消息。
在 serverless.yml
中添加以下配置来创建 HTTP API Gateway:
-- -------------------- ---- ------- --------- ----------- ---------- ---------- ---------------------- ---------- --------------------------- ---- ---------- ---------- ---------------------------- ----- --------------------------- ----------- ---------- ------------------------------------- -------------- ----- ----------------------- ----------- ----- --------------- -------- ---- ---------- - ---------- ------------------------------------- ---------- ---------------------- -------------------- ----- -------------------------- ----------- -------------- ----------- ------------ --- ---- ----- --- ------- ---------- - ------ ------------------------------------- ------ ---------------------- ----------------------- ----- ----------------------------- ----------- ------ ---- ------------- -------- ------- ------------ ---- ------------------- ----------------------------------- ----- ----------------------- ----------- ---------- ------------------------------------- ----------- ----------------------------------------------------- ----------- --- ------------------ ---- ------------------ ----------------------------------- ---- ------------ ----- --- ---------------------- ---- ---- ---- ----------------------------------------------------------------------------------------------------- -------------------- ------------- ----------------- ----------------- ----------------------------- ------- --------------------------------------------------- --------------------- - ----------- --- -------------------------- ----- ------------------------- ----------- ---------- ------------------------------------- --------- ------------------------------------------------- --------- ------- ------------------------ ----- ----------------------- ----------- ---------- ------------------------------------- ----------- ----------------------------------------------------- ----------- --- ------------------ ---- ---------------- - ----------- --- --------------------------------- ----- ---------------------- ----------- ---------- ---------------------- ---------- ------------------------------------- ------------- ---- --------------------------- --------------- - ------------- ---- ----------- --- --------------- ---- ------------- ---- ----------------- ---- -------------------- ---- --------------------- ---- ---------- -------- -------- ---------------
这个配置文件包含了许多复杂的 AWS 资源,但是最基本的流程就是创建一个 HTTP GET 方法,将参数传递给 Lambda 函数处理,并返回结果。
部署和测试
一旦我们完成了上述配置,现在就可以使用 Serverless Framework 部署这个监控系统:
sls deploy
当部署完成后,我们就可以使用以下 URL 来访问我们的 API 服务:
https://[API-Gateway-Endpoint]/monitor?q=Serverless
在上面的 URL 中,[API-Gateway-Endpoint]
表示您的 API Gateway 终端点,q
是必须的查询参数,用于指定要查询的关键字。
结论
在本文中,我们介绍了如何使用 Serverless 架构搭建一个基于 Twitter 数据的监控系统。我们使用了 AWS Lambda,DynamoDB,API Gateway 和 Twitter API 来实现这个系统。通过基于 Serverless 的设计,我们不仅能快速构建这个系统,还能持续运行并扩展这个系统,同时也能根据业务需要自动缩放。这个例子是如何将 AWS 云服务与 Twitter API 集成起来的一个完美例子,可以为其他类似的案例提供一个有效的参考,也能让大家了解 Serverless 技术的强大和灵活性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/670530aad91dce0dc8524ce3