首页 > 解决方案 > 从 AWS Lambda 捕获原始 axios 请求

问题描述

我有调用供应商 API 的代码,通过 axios 从 AWS Lambda 内部上传文件的表单数据。调用返回 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-lambdaaxiosform-data

解决方案


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

您可以简单地使用诸如axios 调试记录器之类的工具在发出请求之前/响应到达之后打印出所有请求和响应内容(包括标头等)。这可能会提供更多关于哪里出了问题的信息。

至于问题的原因,由于您没有共享错误消息,我们也对您尝试调用的 API 一无所知,因此很难为您提供帮助。


推荐阅读