在本地运行Lambda函数时,如何增加Lambda函数的请求超时?

时间:2019-12-13 12:47:29

标签: aws-lambda

我创建了一个lambda函数。这是代码:

exports.handler = async event => {
    if(event.method ==='GET')
    {
        const sql = require('mssql');
        const config = {
                            user: username,
                            password: password,
                            server: server,
                            database: database,
                             options: {
                                        encrypt: true
                                      }
                    }
         try {
            // Open DB Connection
            let pool = await sql.connect(config)

            // Query Database
            let result = await pool.request()
                .query('select * from account')

            // Close DB Connection
            pool.close();

            // The results of our query
            console.log("Results:", result);

            return {
                statusCode:200,
                body:JSON.stringify(result)
            }

        } catch (err) {
            // Error running our SQL Query
            console.error("ERROR: Exception thrown running SQL", err);
        }

        return {
                statusCode:200,
                body:'Nothing to load'
            }
    }
    else
        return {statusCode:405};
};

我有几个与此lambda函数有关的问题。我在这里列出:

  1. 如何在本地调用异步lambda函数?我已经在本地成功运行了同步lambda函数。
  2. 在AWS上上传lambda函数时,出现请求超时问题。我通过增加AWS控制台上的超时来解决此问题。如何将本地Lambda函数的请求超时时间从3秒增加到10秒?

2 个答案:

答案 0 :(得分:0)

如果您使用的是无服务器,则可以在serverless.yml中设置timeout: 30000参数

您可以在本地运行无服务器功能

serverless invoke local --stage staging -f functionName -p testData/event.json

答案 1 :(得分:0)

  1. 如何在本地调用异步lambda函数?我已经在本地成功运行了同步lambda函数。
  

从AWS文档herehere开始,只要您使用的是Node 8.10或更高版本,您的功能就应该起作用:

let AWS = require('aws-sdk');
let lambda = new AWS.Lambda();

exports.handler = async (event) => {
    return await lambda.getAccountSettings().promise() ;
};
  1. 在AWS上上传lambda函数时,出现请求超时问题。我通过增加AWS控制台上的超时来解决此问题。如何将本地Lambda函数的请求超时时间从3秒增加到10秒?
  

您可以在the documentation中看到关于lambda默认超时为15分钟的答案。如果您指的是mysql的连接,则可以在the documentation中看到requestTimeout和connectionTimeout的默认值均为15秒。