[英]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
,可以使用boto3
的SNS publish
方法將通知發送到SNS主題,也可以使用SES send_email
(同樣是boto3
)直接向自己發送電子郵件。
這是AWS的一個不錯的教程 ,它將幫助您將S3存儲桶連接到Lambda函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.