Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的AWS Lambda函数返回null?(Python代码)_Python_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

为什么我的AWS Lambda函数返回null?(Python代码)

为什么我的AWS Lambda函数返回null?(Python代码),python,amazon-web-services,amazon-dynamodb,Python,Amazon Web Services,Amazon Dynamodb,每当我的网页刷新时,我都使用RESTAPI来更新我的DynamoDB表。我想打印已更新的值以显示在我的网页上 我最初在Lambda函数中有一个Python函数。我添加了第二个函数来从DynamoDB表中获取一个项,当我测试该函数时看到null。添加第二个函数后,日志仍然显示null 每当刷新页面时,DynamoDB表都会更新。API测试日志显示状态为200 下面我将发布我的代码和API测试日志 import boto3 dynamodb = boto3.client('dynamodb'

每当我的网页刷新时,我都使用RESTAPI来更新我的DynamoDB表。我想打印已更新的值以显示在我的网页上

我最初在Lambda函数中有一个Python函数。我添加了第二个函数来从DynamoDB表中获取一个项,当我测试该函数时看到null。添加第二个函数后,日志仍然显示null

每当刷新页面时,DynamoDB表都会更新。API测试日志显示状态为200

下面我将发布我的代码和API测试日志

    import boto3
dynamodb = boto3.client('dynamodb')
def lambda_handler(event, context, callback):
    response = dynamodb.update_item(
        TableName='ResumeCounter',
        Key={
            'Site': {
                'N': '0'
            }
        },
        UpdateExpression='SET Visits = Visits + :inc',
        ExpressionAttributeValues={
            ':inc': {'N': '1'}
        },
        ReturnValues="UPDATED_NEW"
    )

def lambda_get(event, context):
    res = dynamodb.get_item(
        TableName='ResumeCounter',
        Key={
            'Site': {
                'N': '0'
            }
        },
        ProjectionExpression='Visits',
    )
    print(res)


print命令仅将其打印到控制台/日志。它不会将值返回给调用服务(例如API网关)


要将内容返回到API网关,请使用
return response
return json.dumps(response)
返回响应。这样,调用应用程序将看到一个响应,而不是得到一个空响应。

print命令只是将其打印到控制台/日志中。它不会将值返回给调用服务(例如API网关)


要将内容返回到API网关,请使用
return response
return json.dumps(response)
返回响应。这样,调用应用程序将看到一个响应,而不是得到一个空响应。

在哪里返回除空以外的任何内容?另外,python处理程序接受回调似乎有点奇怪。看看典型的python lambda函数处理程序。您的
lambda\u处理程序
函数不返回任何内容,这导致它返回
None
。您正在为
响应
赋值,然后丢弃它并返回
None
。并且
lambda\u get
在打印
res
后也返回
None
。您可能希望返回
res
而不是打印它。除了Null之外,您在哪里返回其他内容?另外,python处理程序接受回调似乎有点奇怪。看看典型的python lambda函数处理程序。您的
lambda\u处理程序
函数不返回任何内容,这导致它返回
None
。您正在为
响应
赋值,然后丢弃它并返回
None
。并且
lambda\u get
在打印
res
后也返回
None
。您可能想返回
res
而不是打印它。哇,谢谢!这真的很有帮助,keithRozario。现在,我已经更新了代码以包含一个返回调用。不过,它打印的信息比我想要的要多。我想它只张贴到该网站的访客人数。相反,它发布了“{”N:“103”}”你知道我如何让它只显示103吗?我已经尝试了get.item函数,但是对于调用服务IIRC的meDepending,它不起作用,您必须返回一个有效的JSON对象,而103不是有效的JSON。您需要使用调用应用程序提取它。在python中,在示例中使用response.get(“N”),谢谢!它现在返回数字,但它的周围有引号。我正在研究如何修复它。你帮了我很大的忙!!使用“returnint(count)”删除了引号。我不知道你可以返回一个纯整数——但很高兴知道:)哇,谢谢!这真的很有帮助,keithRozario。现在,我已经更新了代码以包含一个返回调用。不过,它打印的信息比我想要的要多。我想它只张贴到该网站的访客人数。相反,它发布了“{”N:“103”}”你知道我如何让它只显示103吗?我已经尝试了get.item函数,但是对于调用服务IIRC的meDepending,它不起作用,您必须返回一个有效的JSON对象,而103不是有效的JSON。您需要使用调用应用程序提取它。在python中,在示例中使用response.get(“N”),谢谢!它现在返回数字,但它的周围有引号。我正在研究如何修复它。你帮了我很大的忙!!使用“returnint(count)”删除了引号。我不知道可以返回纯整数——但很高兴知道:)
Thu Jun 18 01:55:44 UTC 2020 : Method response body after transformations: null
Thu Jun 18 01:55:44 UTC 2020 : Method response headers: {X-Amzn-Trace-Id=Root=[REDACTED];Sampled=0, Access-Control-Allow-Origin=*, Content-Type=application/json}
Thu Jun 18 01:55:44 UTC 2020 : Successfully completed execution
Thu Jun 18 01:55:44 UTC 2020 : Method completed with status: 200