【问题标题】:how to limit number of times aws lambda executes on failure?如何限制 aws lambda 在失败时执行的次数?
【发布时间】:2020-08-04 11:55:40
【问题描述】:

我是 Python 和 AWS 的新手。按照教程,我创建了一个 S3 存储桶,当在 s3 中创建对象时,它会触发以下 lambda 函数(参见下面的代码)。在测试时我发现,最初我的代码中有一些错误,所以当我上传文件时,如果它抛出错误,则执行 lambda。它试图一次又一次地执行。我猜这是 lambda 函数的默认性质,如果它失败它会尝试再次执行它。我想添加一些错误处理,也可能是一些日志记录。另外,如果处理文件时出现错误,我可以限制它,以便 lambda 只执行一次并且不继续尝试。

import boto3
import os
from requests_aws4auth import AWS4Auth

session = boto3.Session()
credentials = session.get_credentials()
aws4auth = AWS4Auth(credentials.access_key,credentials.secret_key,region, service, session_token=credentials.token)
                    
s3 = boto3.resource('s3')

name = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']

obj = s3.Object(name,key) 

# get the object
response = obj.get()

print(response)

【问题讨论】:

  • 您发布的代码是无效的 lambda 代码。你确定你显示的是正确的代码吗?
  • 已在this 线程中回答。祝您的 AWS 之旅好运! :)

标签: python amazon-web-services aws-lambda


【解决方案1】:

S3 invokes你的函数异步:

Amazon S3 使用包含对象详细信息的事件异步调用您的函数。以下示例显示了在将部署包上传到 Amazon S3 时 Amazon S3 发送的事件。

因此,您可以将其重试次数从默认 2 设置为 0:

【讨论】:

  • 谢谢,我想到的一种方法是将文件移动到另一个存储桶,这样 lambda 就不会再次尝试处理同一个文件。但这可能会增加另一个 s3 的读/写成本。
  • @ozil 控制reties的主要方法是Retry attempts选项。您也可以尝试移动文件,但如果 lambda 无法处理它,您如何移动它?一开始?
  • 再次感谢。有没有办法通过云形成模板进行配置?
  • @ozil 是的。您可以在 CFN 中使用this
猜你喜欢
  • 1970-01-01
  • 2020-10-17
  • 2019-05-11
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2019-02-12
相关资源
最近更新 更多