在您的情况下,最好只使用 一个 S3 操作,配置有关于 SNS 主题的通知,并让您的 Lambda 订阅该主题。
您的 Lambda 将在消息中收到包含字符串化 SES 事件的 SNS 事件:
{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
...
"Sns": {
"Type": "Notification",
"MessageId": "...",
"TopicArn": "...",
"Subject": "Amazon SES Email Receipt Notification",
"Message": "<STRINGIFIED SES EVENT>",
...
}
}
]
}
如果你解析Message,你会得到这样的东西:
{
"notificationType": "Received",
"mail": {
"timestamp": "...",
"source": "...",
"messageId": "...",
"destination": [
...
],
"headersTruncated": false,
"headers": [
...
],
"commonHeaders": {
"returnPath": "...",
"from": [
"..."
],
"date": "...",
"to": [
...
],
"messageId": "...",
"subject": "..."
}
},
"receipt": {
...
"action": {
"type": "S3",
"topicArn": "...",
"bucketName": "<YOUR_BUCKET>",
"objectKey": "<YOUR_OBJECT_KEY>"
}
}
}
您可以在哪里找到对存储桶中上传对象的确切引用(receipt.action.bucketName 和 receipt.action.objectKey)。
通过此设置,可以合理地考虑,当您的 Lambda 被触发时,对象可用。