python - amazonmq 调用 aws lambda
问题描述
AWS CloudWatch Events 触发轮询队列消息的 Lambda 函数。然后将消息发送到第二个 Lambda 函数,该函数将消息写入 Kinesis 代理。
我找到了这篇文章的解决方案,但用 node.js 编写。但我正在寻找 Python 脚本。您能否帮我获得一篇文章,我可以在其中找到自己转换的方法。
https://github.com/aws-samples/amazonmq-invoke-aws-lambda
const stomp = require('stompit')
const AWS = require('aws-sdk')
let lambda = new AWS.Lambda()
const QUEUE_NAME = process.env.QUEUE_NAME
const CONNECTION_OPTIONS = {
host: process.env.HOST,
port: 61614,
ssl: true,
connectHeaders: {
login: process.env.LOGIN,
passcode: process.env.PASSWORD
}
}
exports.handler = (event, context, callback) => {
var client
/* */
const onError = (error) => {
console.error(`[ERROR] ${error}`)
callback(error)
}
/* */
const onMessage = (error, message) => {
console.log('Message received')
message.readString('utf-8', (error, body) => {
if (error) {
onError(error)
return
}
let payload = {
message: body,
timestamp: Date.now()
}
console.log(payload)
let params = {
FunctionName: process.env.WORKER_FUNCTION,
Payload: JSON.stringify(payload)
}
lambda.invoke(params, (error, data) => {
if (error) {
console.error(`Could not invoke Lambda: ${error}`)
}
})
})
}
/* Main */
stomp.connect(CONNECTION_OPTIONS, (error, client) => {
if (error) {
onError(error)
return
}
var headers = {
destination: `/queue/${QUEUE_NAME}`,
ack: 'auto'
}
client.subscribe(headers, onMessage)
setTimeout(() => {
client.disconnect()
callback(null, { 'message': 'Finished' })
}, context.getRemainingTimeInMillis() - 1000)
})
}
解决方案
推荐阅读
- julia - For循环内部与外部功能
- html - 如何使用固定侧边栏获得 100% 高度布局?
- angular - 如何从模板Angular中的循环传递变量值?
- node.js - 如何忽略“firebase-admin 似乎已安装在不受支持的环境中。”?
- jquery - 从 .each 方法中缓存好吗?
- java - 如何避免静态方法中的长 switch/case 块
- php - Laravel Blade 使用不同的循环进行迭代
- php - 如何在特定产品的 woocommerce 产品库下方添加内容?
- shell - 使用 shell/awk 脚本添加时间戳
- ios - React-native 函数在调试模式下工作但不在发布模式下