【问题标题】:AWS Lambda Handle Error in Python Without Lambda Retrying没有 Lambda 重试的 Python 中的 AWS Lambda 句柄错误
【发布时间】:2019-11-19 22:09:02
【问题描述】:

默认情况下,如果您的 Lambda 函数出错,它将自动重试 2 次。我正在处理 Lambda 函数中并非真正错误的某些错误,基本上是如果我正在搜索的 json 不在返回的 json 中,我会记录它没有找到,我希望脚本停止在这一点上,因为他们没有任何事情要做。但是,当我尝试捕获异常时,它会正确记录并退出,但因为它会将其报告为错误,Lambda 会再次运行它。

是我对 sys.exit() 的使用导致了它吗?在第一个示例中我没有尝试/捕获错误,但它会重试。

示例:循环遍历 json 节点,如果找到匹配则分配一个变量,如果它不处理异常并写入 cloudwatch(打印)它没有找到匹配。

while index < result_nodes:
        if TL2['message_response']['computers'][index]['resource_name'] == instance_name:
            resource_id = TL2['message_response']['computers'][index]['resource_id']
            index += 1

        index += 1
    if resource_id == '':
        print('No match found, quitting.')
        sys.exit()

另一个类似的用法

instance_name = ''
    try:
        for tag in response['Reservations'][0]['Instances'][0]['Tags']:
            if tag['Key'] == 'Name':
                instance_name = tag['Value']
        if instance_name == '':
            print('EC2 Instance name not set, quitting')
            sys.exit()
        else:
            print('Step 2 - Get Computer Name: ' + instance_name)
    except Exception:
        print('No tags exist for this terminated EC2 instance, quitting.')
        sys.exit()

【问题讨论】:

    标签: python aws-lambda


    【解决方案1】:

    尝试删除sys.exit(),它不应再重试。类似情况https://stackoverflow.com/a/52739848/12103989

    【讨论】:

    • 好主意,我需要稍微重构一下,看看这是否可行,因为我不希望执行其余代码,而 sys.exit() 是我停止它的方法。确认后我会标记为解决方案。
    • @guitarhero23 如果您不希望执行其余代码,可以使用返回或回调语句。
    猜你喜欢
    • 2018-04-12
    • 2018-05-16
    • 1970-01-01
    • 2021-05-04
    • 2020-09-22
    • 2015-07-31
    • 2017-02-11
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多