[英]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.