本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
调用 Lambda 函数操作
Lambda 操作通过 Lambda 函数调用您的代码,并通过 Amazon SNS 通知您(可选)。此规则操作具有以下选项和要求:
选项
-
Lambda function (Lambda 函数) – Lambda 函数的 ARN。Lambda 函数 ARN 的示例:arn:aws:lambda:us-east-1:account-id:function:MyFunction。
-
Invocation type (调用类型) – Lambda 函数的调用类型。调用类型 RequestResponse 意味着函数的执行会立即作出响应。调用类型 Event 意味着该函数是异步调用的。我们建议您使用 Event 调用类型,除非您的使用案例中必需同步执行。
有一个 30 秒的 RequestResponse 调用超时时间。
有关更多信息,请参阅 AWS Lambda 开发人员指南中的调用 Lambda 函数。
-
SNS Topic (SNS 主题) – 在触发指定的 Lambda 函数时发出通知的 Amazon SNS 主题的名称或 ARN。Amazon SNS 主题 ARN 的示例如:arn:aws:sns:us-east-1:123456789012:MyTopic。有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的创建 Amazon SNS 主题。
要求
-
您选择的 Lambda 函数必须与用于接收电子邮件的 Amazon SES 端点位于同一 AWS 区域。
-
您选择的 Amazon SNS 主题必须与用于接收电子邮件的 Amazon SES 端点位于同一 AWS 区域中。
编写 Lambda 函数
处理电子邮件时,可以异步调用 Lambda 函数(即使用 Event
调用类型)。传递给 Lambda 函数的事件对象将包含与入站电子邮件事件有关的元数据。您还可以使用元数据从 Amazon S3 存储桶访问消息内容。
如果需要实际控制邮件流,则必须同步调用 Lambda 函数(即使用 RequestResponse
调用类型),并且 Lambda 函数必须用两个参数调用 callback
方法:第一个参数是 null
,第二个参数是 disposition
属性,它的值设置为 STOP_RULE
、STOP_RULE_SET
或 CONTINUE
。如果第二个参数为 null
或没有有效的 disposition
属性,则邮件流将继续,并处理接下来的操作和规则,这与 CONTINUE
相同。
例如,您可以通过在 Lambda 函数代码的结尾写入以下行来停止接收规则集:
callback( null, { "disposition" : "STOP_RULE_SET" });
有关 AWS Lambda 代码示例,请参阅 Lambda 函数示例。有关高级使用案例的示例,请参阅使用案例示例。
输入格式
Amazon SES 以 JSON 格式向 Lambda 函数传送信息。顶级对象包含一个 Records
数组,其中包含属性 eventSource
、eventVersion
和 ses
。ses
对象包含 receipt
和 mail
对象,这些对象的格式与通知内容中所述的 Amazon SNS 通知中的格式完全相同。
Amazon SES 传递给 Lambda 的数据包括有关邮件的元数据,以及多个电子邮件标头。但是,不包含邮件的正文。
下面是 Amazon SES 提供给 Lambda 函数的输入结构的概括视图。
{ "Records": [ { "eventSource": "aws:ses", "eventVersion": "1.0", "ses": { "receipt": { <same contents as SNS notification> }, "mail": { <same contents as SNS notification> } } } ] }
Return values
您的 Lambda 函数可以通过返回以下值之一来控制邮件流:
-
STOP_RULE
– 当前接收规则中没有进一步操作需要处理,但可以处理后续的接收规则。 -
STOP_RULE_SET
– 没有后续操作或接收规则需要处理。 -
CONTINUE
或任何其他无效值 – 这意味着可以处理后续操作和接收规则。