AWS Lambda中的函数调用中的事件和上下文是什么?

时间:2018-12-26 20:24:19

标签: javascript node.js aws-lambda

在以下代码中,“事件”和“上下文”自变量指的是什么?

module.exports.convertTime = (event, context, callback) => {

  const response = {
    statusCode: statusCode,
    body: JSON.stringify({
      message: `${convertedTime}`
    })
  }

  callback(null, response);
}

3 个答案:

答案 0 :(得分:2)

Event代表引起lambda调用的事件或触发器。例如,如果您的lambda是由上传到S3触发的,则其中将包含有关正在上传的对象的信息,例如:

{
  "Records": [
    {
      "eventVersion": "2.0",
      "eventTime": "1970-01-01T00:00:00.000Z",
      "requestParameters": {
        "sourceIPAddress": "127.0.0.1"
      },
      "s3": {
        "configurationId": "testConfigRule",
        "object": {
          "eTag": "0123456789abcdef0123456789abcdef",
          "sequencer": "0A1B2C3D4E5F678901",
          "key": "HappyFace.jpg",
          "size": 1024
        },
        "bucket": {
          "arn": bucketarn,
          "name": "sourcebucket",
          "ownerIdentity": {
            "principalId": "EXAMPLE"
          }
        },
        "s3SchemaVersion": "1.0"
      },
      "responseElements": {
        "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
        "x-amz-request-id": "EXAMPLE123456789"
      },
      "awsRegion": "us-east-1",
      "eventName": "ObjectCreated:Put",
      "userIdentity": {
        "principalId": "EXAMPLE"
      },
      "eventSource": "aws:s3"
    }
  ]
}

有关事件的详细信息和更多示例,请参见HERE

Context提供有关lambda的调用,函数和执行环境的信息。因此,您可以使用它来检查内存分配或检索执行超时之前剩余的毫秒数。可以找到详细的文档HERE

答案 1 :(得分:1)

From the docs

  

Lambda运行函数时,它将上下文对象传递给处理程序。该对象提供的方法和属性提供有关调用,函数和执行环境的信息。

事件(和args)在here中进行了描述。

为了简单起见,请将事件视为常规函数的输入。上下文是AWS提供的额外输入,可为您提供各种元上下文等。

答案 2 :(得分:1)

事件参数带有该函数的输入参数,并且采用JSON语法。

例如,我们可以访问在 event 中通过以下方式传递的url的查询字符串中存储为key:value对的变量:

event.queryStringParameters.time

对于https://fakename.execute-api.us-east-1.amazonaws.com/dev/convertTime?time=2:55:55AM的POST请求:

curl -X POST -H "x-api-key: FAKEAPIKEY23423402394" https://fakename.execute-api.us-east-1.amazonaws.com/dev/convertTime?time=2:55:55AM

event.queryStringParameters.time等于“ 2:55:55 AM”,我们可以在lambda函数的其余部分中使用该信息来做我们希望做的事情。

上下文参数提供了方法和属性,这些方法和属性提供了有关调用,函数和执行环境的信息。

AWS Lambda Documentation

  

“ Lambda运行您的函数时,它将一个上下文对象传递给处理程序。此对象提供方法和属性,这些方法和属性提供有关调用,函数和执行环境的信息。

     

上下文方法

     

getRemainingTimeInMillis()–返回执行超时之前剩余的毫秒数。

     

上下文属性

     

functionName – Lambda函数的名称。   functionVersion –函数的版本。   invokedFunctionArn –用于调用功能的亚马逊资源名称(ARN)。指示调用者是否指定了版本号或别名。
  memoryLimitInMB –在功能上配置的内存量。   ...”