Python 访问由 S3 创建的 AWS SQS 消息
Python accessing AWS SQS message created by S3
每当有文件上传到S3时,我很感激S3可以向SQS写消息。但是,从 Python 访问 SQS 消息正文中的文件名 ("key":"filename.txt") 有点问题,因为它是一个包含多个字典列表的字典。
当 S3 事件创建消息时,是否有人访问过 SQS 消息正文中的文件名?
完整消息是:
{
"Records": [{
"eventVersion": "2.0",
"eventSource": "aws:s3",
"awsRegion": "us-west-2",
"eventTime": "2016-12-04T22:14:52.325Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "ABC123"
},
"requestParameters": {
"sourceIPAddress": "12.345.687.899"
},
"responseElements": {
"x-amz-request-id": "ABC123",
"x-amz-id-2": "ABCDEF"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "MyQueueName",
"bucket": {
"name": "mybucket",
"ownerIdentity": {
"principalId": "ABC123"
},
"arn": "arn:aws:s3:::mybucket"
},
"object": {
"key": "filename.txt",
"size": 2310,
"eTag": "defg123",
"sequencer": "00345"
}
}
}]
}
我已经修正了你的问题 JSON。
import json
# message = get_sqs_message()
message = json.loads(message)
print(message["Records"][0]["s3"]["object"]["key"])
应该输出filename.txt
每当有文件上传到S3时,我很感激S3可以向SQS写消息。但是,从 Python 访问 SQS 消息正文中的文件名 ("key":"filename.txt") 有点问题,因为它是一个包含多个字典列表的字典。
当 S3 事件创建消息时,是否有人访问过 SQS 消息正文中的文件名?
完整消息是:
{
"Records": [{
"eventVersion": "2.0",
"eventSource": "aws:s3",
"awsRegion": "us-west-2",
"eventTime": "2016-12-04T22:14:52.325Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "ABC123"
},
"requestParameters": {
"sourceIPAddress": "12.345.687.899"
},
"responseElements": {
"x-amz-request-id": "ABC123",
"x-amz-id-2": "ABCDEF"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "MyQueueName",
"bucket": {
"name": "mybucket",
"ownerIdentity": {
"principalId": "ABC123"
},
"arn": "arn:aws:s3:::mybucket"
},
"object": {
"key": "filename.txt",
"size": 2310,
"eTag": "defg123",
"sequencer": "00345"
}
}
}]
}
我已经修正了你的问题 JSON。
import json
# message = get_sqs_message()
message = json.loads(message)
print(message["Records"][0]["s3"]["object"]["key"])
应该输出filename.txt