在AWS Lambda发布请求上收到404错误

时间:2020-07-02 15:23:19

标签: api http aws-lambda

我正在尝试使用AWS Lambda函数作为调度代理来将定期付款发布到付款api(USIO)。用于发出发布请求的函数如下:

const doPostRequest = async (data) => {

  return new Promise((resolve, reject) => {
    const options = {
      host: "api.securepds.com",
      path: "/2.0/payments.svc/JSON/SubmitTokenPayment",
      method: 'POST',
      headers: {
        'Content-Type': 'https://application/json',
        'Access-Control-Allow-Origin': '*',
      }
    };

    //create the request object with the callback with the result
    const req = https.request(options, (res) => {
      res.setEncoding('utf8');
      resolve(JSON.stringify(res.statusCode));
    });

    // handle the possible errors
    req.on('error', (e) => {
      reject(e.message);
    });

    console.log(req)
    //do the request
    req.write(JSON.stringify(data));

    //finish the request
    req.end();
  });
};

其中数据是这样的对象:

var obj = `{"MerchantID":"${merchantId}",
"Login":"${merchantLogin}",
"Password":"${merchantPassword}",
"Token": "${token}",
"Amount": "${result.Items[i]['amount']}"

和post函数的调用方式如下:

await doPostRequest(obj)
  .then(result => console.log(`Status code: ${result}`))
  .catch(err => console.log(`Error doing the request for the event: ${JSON.stringify(event)} => ${err}`));

尽管验证obj输入都是有效的,但是在发出POST请求时,我仍然收到记录的“状态码:404”。没有将任何VPC添加到lambda函数。

我是不熟悉通过lambda进行api调用的人,但是在使用其他api地址测试该功能时能够接收到200状态代码。想知道在这种情况下可能导致404状态代码的原因!

1 个答案:

答案 0 :(得分:0)

不确定您是否仍然有问题,但是JSON可能无效。

当我尝试在JSONLint上验证JSON时,它以失败告终,因为它期望结尾处有额外的}

当我摘下单个'并在末尾添加了括号时,下面的格式已经过验证。

 {
    "MerchantID": "${merchantId}",
    "Login": "${merchantLogin}",
    "Password": "${merchantPassword}",
    "Token": "${token}",
    "Amount": "${result.Items[i]['amount']}"
 }

您可以找到指向JSONLint here的链接。

如果仍然存在问题,您能否在将JSON发送到端点时发送JSON?另外,您要呼叫哪个端点?