我遇到了一个Lambda函数的行为问题。最终,我希望我的Lambda函数读取一些关于我上传到S3 bucket的json文件的信息。
import boto3
import json
s3=boto3.client('s3')
def LambdaHandler(event,context):
# bucket=event['Records'][0]['s3']['bucket']['name']
# key=event['Records'][0]['s3']['object']['key']
try:
print('I was triggered')
except Exception as e:
print(e)
raise e
请注意注解的两行,我相信我使用了正确的角色和权限,因为AWS上的日志显示每次我上传文件到我的S3 bucket时都会触发该功能(日志显示“I was triggered”)。
问题是,当我取消注解这两行时,日志不再显示任何内容,就像函数不再被触发一样,我是否遗漏了什么?
我希望此时日志仍然显示函数被触发(并显示消息“我被触发了”),最终我希望函数读取我上传的json文件,这样我就可以让它采取进一步的行动。
2条答案
按热度按时间6yjfywim1#
我怀疑无论print语句是否运行,在阅读
event
字典. Lambda should be publishing logs时都会出错。如果其中一个注解行失败,您将在这些日志中看到。作为Python的一个常见问题,try/except语句实际上并没有增加多少价值,你尝试的语句总是会成功,所以我不确定你试图在那里捕获什么异常。
我的建议是完全删除try/except代码块,并将print语句放在从
event
对象读取的两条语句之上,这样你就知道lambda函数无论如何都会打印日志,这样你就可以进一步调试你的问题。jhdbpxl92#
好吧,我不知道发生了什么,但我删除了所有从AWS和创建整个事情了,现在它的工作。我的Lambda函数可以读取上传到S3桶的文件。问题完全解决。