AWS Lambda 无故返回内部服务器错误

AWS Lambda returning internal server error for no reason

我有一个 AWS Lambda 函数,当我 运行 它时会产生 {"message":"Internal Server Error"}。使用 CloudWatch Logs 和 print 语句,我可以确认代码在执行 returns 之前没有错误。这是我的代码:

def lambda_handler(event, context):
    table_name = "<redacted>"
    bucket_name = "<redacted>"

    session = boto3.Session(
        aws_access_key_id="<redacted>",
        aws_secret_access_key="<redacted>",
    )

    if "body" in event and event["body"]:
        req_json = json.loads(event["body"])

        uuids = process(req_json, table_name, bucket_name,
                        session, ("127.0.0.1", 8000), "site/")

        print("success", uuids)  # this code still executes sucessfully
        return http_response(200, "Success", uuids)
    else:
        return http_response(400, "No request body")

也没有超时,因为此代码在 ~10 秒内 运行s,我的超时设置为 2 分钟。我不知道为什么我没有得到正确的 http 响应。如果有人能告诉我原因或知道问题可能是什么,我将不胜感激。

我没有你的http_response方法。但下面的代码适用于 lambda。

import json

def lambda_handler(event, context):

  if "body" in event and event["body"]:
    req_json = json.loads(event["body"])

    print("success")  # this code still executes sucessfully
    return {
        'statusCode': 200,
        'body': json.dumps(req_json)
    }
  else:
    return {
        'statusCode': 400,
        'body': json.dumps({'message': 'No request body'})
    }

我还注意到您直接将 AWS 凭据添加到 lambda 代码中。您可以为 lambda 使用 IAM 角色并将所需的权限分配给该角色。 https://aws.amazon.com/blogs/security/how-to-create-an-aws-iam-policy-to-grant-aws-lambda-access-to-an-amazon-dynamodb-table/