[英]Invoke an api gateway from an aws lambda
我嘗試從由 sqs 隊列觸發的 aws lambda 調用 api 網關。 而我的 api 網關調用另一個 lambda function 來獲取一些信息。
但是當我從我的 sqs 隊列發送消息時,lambda 被正確執行,但我的 api 網關的調用沒有被執行。
我的代碼如下:
var https = require('https');
const URL = process.env.API_GATEWAY_URL;
exports.handler = async (event, context, callback) => {
console.log("hello");
https.get(URL, function (result) {
console.log('Success, with: ' + result.statusCode);
context.done(null);
}).on('error', function (err) {
console.log('Error, with: ' + err.message);
context.done("Failed");
});
};
這是我在 cloudwatch 中的日志:
START RequestId:4eeccd03-b7d2-5efc-aedb-8c3a14411101 版本:$LATEST 2020-04-21T13:14:01.524Z 4eeccd03-b7d2-5efc-aedb-8c3a14411101 INFO hello END RequestId:4eeccd1101-b7d3a141-cef8
但我期待這樣的事情:
START RequestId:4eeccd03-b7d2-5efc-aedb-8c3a14411101 版本:$LATEST 2020-04-21T13:14:01.524Z 4eeccd03-b7d2-5efc-aedb-8c3a14411101 信息你好 2020-04-271T13:14:03ee。 -5efc-aedb-8c3a14411101 成功,帶有:200 END RequestId:4eeccd03-b7d2-5efc-aedb-8c3a14411101
或者:
START RequestId:4eeccd03-b7d2-5efc-aedb-8c3a14411101 版本:$LATEST 2020-04-21T13:14:01.524Z 4eeccd03-b7d2-5efc-aedb-8c3a14411101 信息你好 2020-04-271T13:14:03ee。 -5efc-aedb-8c3a14411101 錯誤,帶有:message_error END RequestId:4eeccd03-b7d2-5efc-aedb-8c3a14411101
而我所有的 lambda 都在同一個 VPC 中。
有任何想法嗎?
您將較新的異步 function 處理程序與較舊的上下文/回調模式混合在一起。
如果您想使用舊樣式,請刪除async
function 裝飾器。
如果您想使用較新的(首選)樣式,請更改您的代碼以返回 promise,例如:
const https = require('https');
const URL = 'https://dummy.restapiexample.com/api/v1/employees';
exports.handler = async (event, context) => {
return new Promise((resolve, reject) => {
https.get(URL,(res) => {
let body = "";
res.on("data", (chunk) => {
body += chunk;
});
res.on("end", () => {
console.log(body);
resolve(body);
});
}).on("error", (error) => {
reject(error);
});
});
};
當然,向正確的 URL 發出 GET 請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.