node.js - AWS Lambda 监听 kafka 消息
问题描述
我正在尝试将 Lambda 用作 Kafka 消费者,一旦收到新的 Kafka 消息就会被触发。我有一个 .yaml 模板
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
my-service
Sample SAM Template for my-service
Globals:
Function:
Timeout: 3
Api:
Cors:
AllowMethods: "'POST, GET, PUT'"
AllowHeaders: "'*'"
AllowOrigin: "'*'"
AllowCredentials: false
Resources:
ProcessMSKfunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: index.handler
Runtime: nodejs12.x
MemorySize: 312
Timeout: 5000
Events:
MSKEvent:
Type: MSK
Properties:
StartingPosition: LATEST
Stream: [...]
Topics:
- MyTopic
Policies:
- AWSLambdaMSKExecutionRole: {}
这个 Lambda 正在执行一个示例处理程序
let response;
exports.handler = async (event) => {
// Iterate through keys
for (let key in event.records) {
console.log('Key: ', key);
// Iterate through records
event.records[key].map((record) => {
console.log('Record: ', record);
// Decode base64
const msg = Buffer.from(record.value, 'base64').toString();
console.log('Message:', msg);
});
}
};
但是当我尝试构建,执行 sam build 时,它得到了错误:
"文件 "C:... ...site-packages\samtranslator\sdk\resource.py",第 24 行,在init self.type = resource_dict.get("Type") AttributeError: 'list' object has no attribute '得到'”
有没有人有解决这种错误的方法?
解决方案
我将 .yaml 文件更改为使用 Type API 并接受“GET”请求,现在它正在工作。
Events:
GET:
Type: Api
Properties:
Path: /test
Method: GET
推荐阅读
- javascript - 捏放大时设置精确的滚动位置
- php - strtotime('-1 month') 如果月份有 31 天,则返回错误的日期
- r - 使用 docker、rbase 和 RODBC 连接到 sql server 时出错
- visual-studio - 将共享项目与构建生成的代码一起使用时避免构建两次
- python - LightGBM GPU win10 pip install
- asp.net - 如果我从 IdentityUser 继承,如何获取当前用户 ID?
- javascript - 为什么这个事件监听器不适用于按钮?
- c# - 是否可以在“Console.ReadLine()”中写入消息
- vb.net - 如何保护我的 VB.NET App.exe 不被解压缩?
- javascript - 有没有办法控制弹出器中嵌套的 Material UI 选择在 DOM 中的安装位置?