【问题标题】:What are event and context in function call in AWS Lambda?AWS Lambda 函数调用中的事件和上下文是什么?
【发布时间】:2019-05-24 23:52:30
【问题描述】:

在下面的代码中,eventcontext 的参数是指什么?

module.exports.convertTime = (event, context, callback) => {
  const response = {
    statusCode: statusCode,
    body: JSON.stringify({
      message: `${convertedTime}`
    })
  };

  callback(null, response);
}

【问题讨论】:

    标签: javascript node.js aws-lambda


    【解决方案1】:

    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"
            }
          ]
        }
    

    这里是detailed information about events, with an example

    Context 提供有关 lambda 的调用、函数和执行环境的信息。因此,您可以使用它来检查内存分配或检索执行超时前剩余的毫秒数。这里是detailed documentation about context, with an example

    【讨论】:

      【解决方案2】:

      From the docs

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

      事件(和参数)被描述为here

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

      【讨论】:

        【解决方案3】:

        event 参数携带函数的输入参数,采用 JSON 语法。

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

        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:55AM”,我们可以在 lambda 函数的其余部分中使用该信息做我们想做的事情。

        context 参数提供的方法和属性提供有关调用、函数和执行环境的信息。

        来自AWS Lambda Documentation

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

        上下文方法

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

        上下文属性

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

        【讨论】:

          猜你喜欢
          • 2015-11-06
          • 2021-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多