通过AWS Lambda从Amazon SQS发送消息到AWS S3



我正在尝试将消息从AWS SQS存储到Amazon S3。Lambda代码如下所示,但我也得到了以下错误。有人来帮忙吗?我想知道为什么我得到键错误,没有存储在S3?

import json
import boto3
def lambda_handler(event, context):

sqs_msg = json.loads(event['Records'][0]['body'])
print("SQS Message : ", sqs_msg)

bucket_name = "sqstest"
try:

s3Client = boto3.client("s3", region_name= "us-east-1")
Response = s3Client.put_object(Bucket= bucket_name, Key= "Message.json", Body= json.dumps(sqs_msg))
print("S3 upload success !")
return {
"status" : 200,
"body" : "S3 upload success"
}
except Exception as e:
print("Client connection to S3 failed because ", e)
return{
"status" : 500,
"body" : "S3 upload failed"
}

错误如下:

Response
{
"errorMessage": "'Records'",
"errorType": "KeyError",
"stackTrace": [
"  File "/var/task/lambda_function.py", line 6, in lambda_handlern    sqs_msg = json.loads(event['Records'][0]['body'])n"
]
}
Function Logs
START RequestId: 4762158b-7642-42c0-a010-945086376b05 Version: $LATEST
[ERROR] KeyError: 'Records'
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 6, in lambda_handler
    sqs_msg = json.loads(event['Records'][0]['body'])END RequestId: 4762158b-7642-42c0-a010-945086376b05
REPORT RequestId: 4762158b-7642-42c0-a010-945086376b05  Duration: 4.99 ms   Billed Duration: 5 ms   Memory Size: 128 MB Max Memory Used: 51 MB  Init Duration: 249.26 ms
Request ID
4762158b-7642-42c0-a010-945086376b05

首先检查是否有事件,如果有,则事件中是否有记录。如果可以,那么获取消息,我猜您想将消息保存为txt文件(或任何类型)。

  • 使用lambda保存在tmp中
  • 然后移到s3 -s3_client.upload_fileobj(temp_file, bucket, path)

查看doc by aws

最新更新