首页 > 解决方案 > 无法在 AWS Lambda 中进行 Axios 调用

问题描述

我有以下功能

const axios = require('axios')
const MY_API = process.env.myAPI

const getUserInfo = async (Id) => {
    console.log('Inside getUserInfo()')
    try {
        console.log('----Here I am ----')
        const response = await axios({
            method: 'get',
            url: `${MY_API}/customer/${Id}`,
            headers: await headers()
            })
        console.log(`----> ID: ${Id} \nName: ${response.data.name}`)
        return {
            name: response.data.name,
            city: response.data.city,
            zipCode: response.data.zipcode 
        }
    } catch (err) {
        console.log('Something went wrong with getUserInfo() call' )
        console.log(err.response.data)
        return err.response.data.Code
    }
}


exports.handler = async (event) => {
    const checkUserInfo = await getUserInfo(Id)
}

我得到的输出如下

START RequestId: edeb9bf3-bcad-4de9-a549-23920f5de891 Version: $LATEST
2020-11-05T09:39:38.175Z    edeb9bf3-bcad-4de9-a549-23920f5de891    INFO    
Homer 
Springvale 
1234
2020-11-05T09:39:38.175Z    edeb9bf3-bcad-4de9-a549-23920f5de891    INFO    Inside getUserInfo()
2020-11-05T09:39:38.175Z    edeb9bf3-bcad-4de9-a549-23920f5de891    INFO    ----Here I am ----
END RequestId: edeb9bf3-bcad-4de9-a549-23920f5de891
REPORT RequestId: edeb9bf3-bcad-4de9-a549-23920f5de891  Duration: 5.45 ms   Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 32 MB  

我对我在这里缺少什么感到困惑,似乎从未进行过 API 调用。我正在使用 nodejs 12.x

标签: javascriptnode.jsaws-lambda

解决方案


Lambda 函数的默认超时为 3 秒。您的代码正在执行(很可能超时)并且您的函数正在退出。因为函数在引发 axios 超时之前退出,所以您永远不会看到超时错误。

还要展示headers实现以及为什么它是异步的?

您实际上是在将 ID 传递给 API 请求吗?查看您的处理程序函数,您不是。

exports.handler = async (event) => {
    // Where is Id defined??
    const checkUserInfo = await getUserInfo(Id)
}

尝试传入 ID 并将函数超时时间增加到 1.5 分钟,看看是否抛出错误,或者看看它是否有效。


推荐阅读