簡體   English   中英

通過SNS對簡單電子郵件進行AWS S3事件JSON解析

[英]AWS S3 Event JSON parsing for simple email via SNS

當文件上傳到S3存儲桶時,我會收到事件通知,只有我才能收到該電子郵件,然后將其發送到SNS主題的電子郵件。

我將如何使用jq命令行應用程序或Lambda之類的其他一些AWS功能或服務來解析從S3存儲桶發送到SNS的JSON數據,使其更簡單?

例如

由此...

{
  "Records": [
    {
      "eventVersion": "2.0",
      "eventSource": "aws:s3",
      "awsRegion": "eu-west-1",
      "eventTime": "2017-02-22T09:16:03.964Z",
      "eventName": "ObjectCreated:Put",
      "userIdentity": {
        "principalId": "AWS:XXXXXXXXXXX"
      },
      "requestParameters": {
        "sourceIPAddress": "123.456.789"
      },
      "responseElements": {
        "x-amz-request-id": "XXXXXXXXX",
        "x-amz-id-2": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
      },
      "s3": {
        "s3SchemaVersion": "1.0",
        "configurationId": "Backup Successful",
        "bucket": {
          "name": "my.bucket",
          "ownerIdentity": {
            "principalId": "XXXXXXXXXXX"
          },
          "arn": "arn:aws:s3:::my.bucket"
        },
        "object": {
          "key": "backup_2017-02-22-0915_Test_Web_Site_1c709c59af2a-others.zip",
          "size": 493812,
          "eTag": "zxbmcnbskdezb",
          "sequencer": "y238623rqwde"
        }
      }
    }
  ]
}

為此...

backup_2017-02-22-0915_Test_Web_Site_1c709c59af2a-others.zip

我只是無法理解語法以及如何使用Lambda或其他內容來處理此電子郵件內容!

如果很容易滿足我的需求,我很樂意使用另一個AWS選項而不是SNS。

文件> S3存儲桶>通知> Lambda> SNS電子郵件

要么

文件> S3存儲桶>通知> Lambda電子郵件

我在這方面還是個新手,所以需要一些不錯的例子。

謝謝你的幫助。

使用AWS Lambda(假設您將Python用於Lambda運行時),可以像下面這樣分析事件:

def my_handler(event, context):
  records = event['Records']
  s3_records = filter(lambda record: record['eventSource'] == 'aws:s3', records)
  object_created_records = filter(lambda record: record['eventName'].startswith('ObjectCreated'), s3_records)
  for record in object_created_records:
    key = record['s3']['object']['key']
    # key will be "backup_2017-02-22-0915_Test_Web_Site_1c709c59af2a-others.zip" in your case
    # now you can use boto3 to act on the key

提取key ,可以使用boto3SNS publish方法將通知發送到SNS主題,也可以使用SES send_email (同樣是boto3 )直接向自己發送電子郵件。

這是AWS的一個不錯的教程 ,它將幫助您將S3存儲桶連接到Lambda函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM