Lambda 事件 returns 空对象

Lambda event returns empty object

我需要访问 event["pathParameters"] 但事件 returns 是一个空对象。我用 AWS Cloud9 IDE 创建了函数。

这是我的简单函数:

def handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps(event),
        'headers': {
            'Content-Type': 'application/json'
        }
    }

event 由您调用 lambda 的负载设置。

当您使用 API 网关时,该有效负载包含密钥 pathParameters,但是当您使用 lambda 控制台进行测试时,您需要自己构建 JSON。控制台在其模板部分包含一个 API 网关代理事件示例。

有关更完整的参考,请参阅:https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-api-gateway-request

如果从 command-line 调用您的 Lambda 函数,event 为空的另一个原因可能是 AWS CLI v1 和 v2 之间的变化。比较:

在 AWS CLI v1 中您可以做什么:

invoke
aws lambda invoke \
--function-name LambdaPhono \
--invocation-type Event \
--payload file://inputFile.txt \
outputfile.txt

在 AWS CLI v2 中,您需要执行以下操作:

invoke
aws lambda invoke \
--function-name LambdaPhono \
--cli-binary-format raw-in-base64-out \
--invocation-type Event \
--payload file://inputFile.txt \
outputfile.txt

注意 v2 中的新 --cli-binary-format raw-in-base64-out 选项。

此处记录:https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html#cliv2-migration-binaryparam