我需要将Rekognition发送的消息返回给SNS,但是我在CloudWatch中收到此错误:
“记录”:KeyError追溯(最近一次通话):文件 “ /var/task/AnalyzeVideo/lambda_function.py”,第34行,在 lambda_handler message = event [“ Records”] [0] [“ Sns”] [“ Message”] KeyError:“记录”
代码:
def detect_labels(bucket, key):
response = rekognition.start_label_detection(
Video = {
"S3Object": {
"Bucket": BUCKET,
"Name": KEY
}
},
NotificationChannel = {
"SNSTopicArn": TOPIC_ARN,
"RoleArn": ROLE_ARN
}
)
return response
def lambda_handler(event, context):
reko_response = detect_labels(BUCKET, KEY)
message = event["Records"][0]["Sns"]["Message"]
return message
这是使用python在AWS Lambda中实现Rekognition存储的视频的正确方法吗,我没有找到任何示例。
更新:
我的应用需要采取的步骤是:
答案 0 :(得分:2)
您的函数正在调用rekognition.start_label_detection()
(大概是您用未显示的代码创建了rekognition
客户端)。
此API调用开始对视频进行标签检测。完成后,它将向指定的SNS主题发布消息。您可以将Lambda函数连接到SNS,以在完成后检索标签检测的详细信息。
但是,您的代码混合了操作顺序。相反,您应该执行以下操作:
start_label_detection()
来开始扫描视频的过程。这可能需要几分钟。get_label_detection()
以检索扫描的详细信息。因此,第一步是将初始start_label_detection()
请求与检索结果的代码分开。然后,修改Lambda函数以通过get_label_detection()
检索结果并处理结果。