python - Lambda Python : How to check if get_item returned a value

标签 python python-3.x amazon-web-services aws-lambda amazon-dynamodb

我对 AWS Serverless 非常陌生,并选择使用 Python 作为我的 Lambda 处理程序

当我使用 API Gateway 查询 DynamoDB 以获取表中的项目时,如果该项目不存在,则会抛出此错误。如果该项目不存在,我只是想让它不返回任何内容。这是错误:

{
    "errorMessage": "'Item'",
    "errorType": "KeyError",
    "stackTrace": ["  File \"/var/task/lambda_function.py\", line 11, in lambda_handler\n    json_body = response['Item']\n"]
}

我进行了高低搜索,尝试在 DynamoDB 响应中查找属性,这些属性会告诉我没有项目,然后我可以基于此编写一个 If 语句。

这是我的 Lambda 代码:

import json
import boto3

def lambda_handler(event, context):
    client = boto3.resource("dynamodb")
    table = client.Table("pnr-snapshot")
    pnrID = event['pnrID']
    
    response = table.get_item(Key={'pnrID': pnrID})
    json_body = response['Item']
    return json_body

我想也许在代码中添加一个尝试会有所帮助,但我却得到了这个语法错误:

{"errorMessage":"Syntax error in module 'lambda_function': unexpected EOF while parsing (lambda_function.py, line 12)","errorType":"Runtime.UserCodeSyntaxError","stackTrace":[" File "/var/task/lambda_function.py" Line 12\n \t\treturn json_body\n"]}

import json
import boto3

def lambda_handler(event, context):
    client = boto3.resource("dynamodb")
    table = client.Table("pnr-snapshot")
    pnrID = event['pnrID']

    try:
        response = table.get_item(Key={'pnrID': pnrID})
        json_body = response['Item']
        return json_body

我真的很感激任何帮助......

最佳答案

无法执行以下检查 key 是否存在?

import json
import boto3

def lambda_handler(event, context):
    client = boto3.resource("dynamodb")
    table = client.Table("pnr-snapshot")
    pnrID = event['pnrID']
    
    response = table.get_item(Key={'pnrID': pnrID})
    if 'Item' in response:
        json_body = response['Item']
        return json_body
    else:
        return ''

关于python - Lambda Python : How to check if get_item returned a value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62729284/

相关文章:

Python:数字到字节

python - 保存多个图

python-3.x - `start` 参数无法与与数据索引相关的位置匹配

amazon-web-services - 为什么 DynamoDB LastEvaluatedKey 取决于查询的限制?

amazon-web-services - OpsWorks 基于负载的实例与 Auto Scaling 组?

python - 使用 WebTest 对 Bottle 应用程序进行单元测试

Python MySQLdb : Inserting duplicate entry into a table with UNIQUE fields

python - 如何从给定目录和所有子目录动态导入所有 *.py 文件?

python - 如何使用 pip 在 Windows 上安装 PyQt4?

amazon-web-services - 放大 如何恢复后台定义?