【问题标题】:Trying to define messageId for SQS messages to be placed in S3尝试为要放置在 S3 中的 SQS 消息定义 messageId
【发布时间】:2021-05-07 02:22:22
【问题描述】:

我正在尝试使用以下 lambda 代码将 sqs 消息放入 S3 存储桶中。代码将执行此操作,但是我需要弄清楚如何定义 messageId,以便放置在 S3 存储桶中的每个对象都与 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')
    }
        

【问题讨论】:

    标签: python amazon-s3 aws-lambda boto3 amazon-sqs


    【解决方案1】:

    以下是从 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

    【讨论】:

      猜你喜欢
      • 2020-08-14
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      相关资源
      最近更新 更多