【问题标题】:Lambda Function to Call Database调用数据库的 Lambda 函数
【发布时间】:2019-07-17 06:49:29
【问题描述】:

我是 AWS/Lambda/Amazon Connect 的新手,正在尝试解决它。我有以下代码从我的 dynamoDB 表中请求信息并在出现新条目时更新表。我的问题是该函数似乎只运行 except 部分并且完全忽略了尝试。需要明白为什么

代码

import boto3
import json
from boto3.dynamodb.conditions import Key, Attr

def lambda_handler(event, context):
    print("Lambda Trigger event: " + json.dumps(event))

    try:

        phoneNumber = event['Details']['ContactData']['CustomerEndpoint']['Address']
        print("Customer Phone Number : " + phoneNumber)

        dynamodb = boto3.resource('dynamodb',region_name='ap-southeast-2')

        table = dynamodb.Table('data_dip_table')

        response = table.get_item(Key={
                                'phone-number': phoneNumber
                                })
        print("dynamodb response: " + json.dumps(response))

        if 'Item' in response:
            # TODO: Match Found
            print("Phone number match found!")

            firstName = response['Item']['first-name']
            print("Customer First Name: " + firstName)

            welcomeMessage = 'Welcome' + firstName + ' to Our data dip'
            print("welcome message :" + welcomeMessage)

            return {'welcomeMessage' : welcomeMessage }

        else:
            print("Phone Number was not Found")

            return { 'welcomeMessage' : 'Welcome!' }

    except Exception as e:
        print("An Error Has Occurred")
        print(e)
        return {'welcomeMessage' : 'Welcome !'}

我的输出是

回应: { "welcomeMessage": "欢迎!" }

请求 ID: "0d9b6bf6-62f8-4385-81f0-f1d36ee489c8"

功能日志: 开始请求 ID:0d9b6bf6-62f8-4385-81f0-f1d36ee489c8 版本:$LATEST Lambda 触发器事件:{} 发生了错误 '细节' END RequestId: 0d9b6bf6-62f8-4385-81f0-f1d36ee489c8

我在 DD 表中有一个我的电话号码条目,但仍然出现错误。有什么想法吗??

【问题讨论】:

    标签: python-3.x aws-lambda amazon-dynamodb


    【解决方案1】:

    event 对象为空。在 CloudWatchLogs 中检查这一行:

    Lambda Trigger event: {}
    

    您的代码绝对没有忽略 try 块,但是,在您的 try 块的第一行,您有 phoneNumber = event['Details']['ContactData']['CustomerEndpoint']['Address'] 自动失败,因为您的事件为空,因此将执行重定向到 except 块.

    这个函数是如何被触发的?如果您从 AWS 的控制台手动执行此操作,则必须创建一个测试事件,其中包含您的方法所期望的主体。

    【讨论】:

    • 谢谢泰雷兹。当调用连接号码时,该功能会从 Amazon connect 触发。我的校准流程的第一步是调用这个函数。而且我也尝试拨打我的连接号码,它失败并播放我的错误消息。
    • 我明白了。我自己没有使用 AWS Connect 的经验,因此我无法为您提供太多帮助。但请记住,您正面临这个问题,因为事件是空的。弄清楚这一点,你会没事的。同时,尝试使用您想要的 JSON 从控制台手动触发它,这样您就可以实际测试您的代码是否按预期工作。
    • 谢谢泰雷兹。我想通了,也感谢您的建议。结果是一个简单的权限问题,显然 AWS 日志记录并不是那么好。因此,正如您建议的那样,我使用 json 测试事件来验证我的方法所期望的并帮助我解决它。
    猜你喜欢
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 2017-11-26
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多