gpt4 book ai didi

javascript - 将节点请求模块与 AWS Lambda 和 API Gateway 结合使用

转载 作者:行者123 更新时间:2023-12-03 04:00:57 27 4
gpt4 key购买 nike

这个 lambda 函数有效:

exports.handler = function(event, context, callback) {
const done = (err, res, func) => callback(null, {
statusCode: '200',
body: res,
headers: { 'Content-Type': 'application/json' },
})

done(null, 'works'))
}

我可以访问 API Gateway 端点并接收响应消息,'works'

但是,当我添加请求调用(POST向 Slack 发送消息)时,如下所示:

const request = require('request')
const moment = require('moment-timezone')

exports.handler = function(event, context, callback) {
// the json object is built following these docs:
// https://api.slack.com/docs/message-attachments
const SLACK_WEB_HOOK_URL = process.env.SLACK_WEB_HOOK_URL
const uri = SLACK_WEB_HOOK_URL
const method = 'POST'
const options = {
json,
uri,
method,
}

const slack = (opts) => {
request.post(opts, (err, response, body) => {
if (response.statusCode < 300) {
return 'Success!'
} else {
return 'Err!'
}
})
}

const done = (err, res, func) => callback(null, {
statusCode: '200',
body: res,
headers: { 'Content-Type': 'application/json' },
})

done(null, slack(options))
}

当我到达 API 端点时,服务器挂起......

我收到一个任务在 10.00 秒后超时错误:

{
"errorMessage": "2017-06-23T16:41:21.483Z c385e32e-5832-11e7-8c4f-673b524cf783 Task timed out after 10.00 seconds"
}

但是我的 Slack POST 请求已发送,并且我在 channel 中看到了该消息。

如何发送 POST 请求,然后等待其返回,然后使用自定义响应消息退出 lambda 函数?

感谢您的帮助!

最佳答案

将回调放入post方法的回调中

request.post(opts, (err, response, body) => {
if (response.statusCode < 300) {
return callback(null, {
statusCode: '200',
body: res,
headers: { 'Content-Type': 'application/json' },
});
} else {
return callback(err);
}
});

关于javascript - 将节点请求模块与 AWS Lambda 和 API Gateway 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44726414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com