简体   繁体   English

调用 lambda 时如何记录 X-Amzn-Request-id? (aws-sdk)

[英]How to log X-Amzn-Request-id when invoking a lambda? (aws-sdk)

I see that when we invoke a lambda, there is an x-amzn-request-id for that execution:我看到当我们调用 lambda 时,该执行有一个 x-amzn-request-id:

  "resourceType": "lambda",
  "resource": "invoke",
  "output": {
    "ExecutedVersion": "$LATEST",
    "Payload": {
      "recordsReady": false
    },
    "SdkHttpMetadata": {
      "AllHttpHeaders": {
        "X-Amz-Executed-Version": [
          "$LATEST"
        ],
        "x-amzn-Remapped-Content-Length": [
          "0"
        ],
        "Connection": [
          "keep-alive"
        ],
        "x-amzn-RequestId": [ <-------------------
          "0b1198a6-2ed8-485b-b5f6-6c086ff192a1"
        ],

How would we log out that request id from the lambda using aws-sdk?我们如何使用 aws-sdk 从 lambda 注销该请求 ID? Is it even possible?有可能吗?

context object has a couple of useful properties. context object 有几个有用的属性。 One of the mis 'aws_request_id' (for python, but other sdks have it too): https://docs.aws.amazon.com/lambda/latest/dg/python-context.html That's supposed to give you the request id for the invocation request.其中一个 mis 'aws_request_id'(对于 python,但其他 sdk 也有): https://docs.aws.amazon.com/lambda/latest/dg/python-context.html这应该给你请求 id对于调用请求。 I would check that and log it out.我会检查并注销它。 Eg:例如:

def lambda_handler(event, context):
    print(context.aws_request_id)

you could do this in JS either by您可以通过以下方式在 JS 中执行此操作

  • using context object, which is the most common way.使用context object,这是最常见的方式。 context is passed as the second argument in the handler function: context作为处理程序 function 中的第二个参数传递:
    exports.handler = (event, context, callback) => {
        console.log(`X-Amzn-Request-Id: ${context.awsRequestId}`);
        ...
    }
  • using process.env使用process.env
exports.handler = (event, context, callback) => {
    console.log("X-Amzn-Request-Id: " + process.env.AWS_REQUEST_ID);
    // rest of your code
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用本地放大模拟 api 时出错:请求有一个 'X-Amzn-Trace-Id' HTTP header 保留给 AWS X-Ray 跟踪 header - Getting error when using local amplify mock api: The request has a 'X-Amzn-Trace-Id' HTTP header which is reserved for AWS X-Ray trace header 使用 aws-sdk 的云监视日志组的过滤模式 - Filter pattern for cloud watch log group using aws-sdk 如何用最简单的方式为Golang生成X-Amzn-Trace-Id - how to generate X-Amzn-Trace-Id for Golang in the simplest way 如何在 NextJS 中设置 AWS-SDK 凭证 - How to setup AWS-SDK credentials in NextJS SQS 在 AWS lambda 使用@aws-sdk node.js 发送消息错误 - SQS send message error using @aws-sdk node js at AWS lambda 如何将 AWS-SDK DynamoDB 指向本地无服务器 DynamoDB - How to point AWS-SDK DynamoDB to a serverless DynamoDB local aws-sdk 与@aws-sdk 之间的区别 - Difference between aws-sdk vs @aws-sdk 构建基本 Web 应用程序教程中的 AWS Lambda“找不到模块 aws-sdk” - AWS Lambda "cannot find module aws-sdk" in Build a Basic Web Application tutorial 错误:在 NodeJS AWS 中找不到模块“aws-sdk” Lambda Function - Error: Cannot find module 'aws-sdk' in NodeJS AWS Lambda Function 错误:NodejsNpmEsbuildBuilder:EsbuildBundle - Esbuild 失败:X [错误] 无法解析“aws-sdk” - Error: NodejsNpmEsbuildBuilder:EsbuildBundle - Esbuild Failed: X [ERROR] Could not resolve "aws-sdk"
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM