从 AWS Lambda 捕获原始 axios 请求

Capture raw axios request from AWS Lambda

我有代码调用供应商 API 从 AWS Lambda 内部通过 axios 对文件进行表单数据上传。调用 returns 出现 400 错误。如果我 运行 在本地使用相同节点版本 v14 的代码,它就可以工作。我想捕获两个原始请求并比较它们的差异。如何捕获这两个原始请求?我试过使用 ngrok 和 pipedream,但它们不显示原始文件,而是解码请求和文件。

  let response = null;
  try {
    const newFile = fs.createReadStream(doc);
    const formData = new FormData();
    formData.append("file", newFile);
    formData.append("url", url);
    const headers = {
      Authorization: "Bearer " + token,
      ...formData.getHeaders(),
    };
    console.log("Headers: ", headers);

    response = await axios.post(`${APIBASE}/file/FileUpload`, formData, {
      headers,
    });
    console.log("file upload response", response);
  } catch (err) {
    console.log("fileupload error at API", err);
  }

您无法在网络级别捕获请求,因为这完全由 AWS 控制。在 VPC 中 运行 时,也许有办法做到这一点,但我不这么认为。

您可以简单地使用诸如 axios debug logger 之类的工具在请求 made/after 响应到达之前打印出所有请求和响应内容(包括 headers 等) .这可能会提供更多关于问题出在哪里的信息。

至于问题的原因,很难在那里帮助您,因为您没有分享错误消息,我们也不知道您尝试呼叫的 API。

您可以只使用自定义请求拦截器并以这种方式询问请求。

https://axios-http.com/docs/interceptors

有多种调试方式

  1. axios 调试记录器。
  2. AWS Cloud watch,您可以在其中查看所有日志。你可以捕获请求 和回应。
  3. 使用 postman 调用 prod lambda 端点并验证响应。