我正在尝试将消息从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