私がしようとしていることは次のとおりです。私はそのデータを処理し、それを使用してPOST要求をAPIにするためにそれを使用するWebhookによって引き起こされるラムダ関数を持っています。
Node.js 12とノードフェッチモジュールを使用しています。
今機能は正しくトリガされていますが、最初に呼び出されたときにPOSTを送信しません。しかし、Lambdaが短時間で繰り返し関数を繰り返し起動した場合、最初の後の要求は通過します。
これが私のLambda関数のindex.jsファイルのコードです。
_const fetch = require('node-fetch');
exports.handler = async (event) => {
sendPost();
const response = {
statusCode: 200,
body: "Ok",
};
return response;
};
function sendPost() {
const url = "http://requestbin.net/r/vjv4mvvj";
const body = {
foo: "foo",
bar: "bar",
baz: "baz"
};
const params = {
method: "POST",
mode: "cors",
headers: {"Content-Type":"application/json"},
body: JSON.stringify(body)
};
fetch(url, params);
}
_
async(イベント)を削除すると、リクエストは初めて表示されますが、最初の場所でWebHookを送信するサーバーは取得できません。応答。
そのため、基本的には、関数が呼び出されるたびに送信するためにPOSTが必要です。また、200のステータスコードを返すこともできます。
私は非同期の経験があまりありませんので、それはそれに関連していることを知っていますが、私は頭を傷つけます。
フェッチは約束を返し、await
が必要です。また、sendPost
関数をasync
としてマークする必要があります。また、sendPost
関数を終了するのを待つためのハンドラ関数も必要です。
const fetch = require('node-fetch');
exports.handler = async (event) => {
await sendPost();
const response = {
statusCode: 200,
body: "Ok",
};
return response;
};
async function sendPost() {
const url = "http://requestbin.net/r/vjv4mvvj";
const body = {
foo: "foo",
bar: "bar",
baz: "baz"
};
const params = {
method: "POST",
mode: "cors",
headers: {"Content-Type":"application/json"},
body: JSON.stringify(body)
};
await fetch(url, params);
}
_