尝试为要放置在S3中的SQS消息定义messageId

2024-09-29 09:38:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用以下lambda代码将sqs消息放入S3存储桶中。代码将实现这一点,但是我需要弄清楚如何定义messageId,以便放置在S3 bucket中的每个对象都具有与sqs messageId相同的名称

import json
import boto3

def lambda_handler(event, context):
    s3 = boto3.client("s3")
    data = json.loads(event["Records"][0]["body"])
    s3.put_object(Bucket="dlqbucket", Key="messageId", Body=json.dumps(data))
    
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from lambda')
    }
        

Tags: lambda代码importeventjson消息data定义
1条回答
网友
1楼 · 发布于 2024-09-29 09:38:02

以下是从Amazon SQS到AWS Lambda函数的传入记录示例:

{
  "Records": [
    {
      "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
      "receiptHandle": "MessageReceiptHandle",
      "body": "Hello from SQS!",
      "attributes": {
        "ApproximateReceiveCount": "1",
        "SentTimestamp": "1523232000000",
        "SenderId": "123456789012",
        "ApproximateFirstReceiveTimestamp": "1523232000001"
      },
      "messageAttributes": {},
      "md5OfBody": "{{{md5_of_body}}}",
      "eventSource": "aws:sqs",
      "eventSourceARN": "arn:aws:sqs:ap-southeast-2:123456789012:MyQueue",
      "awsRegion": "ap-southeast-2"
    }
  ]
}

因此,您可以通过以下方式获得messageId

event["Records"][0]["messageId"]

ReceiveMessage Receive Elements @ docs.aws.amazon.com

相关问题 更多 >