呼叫 Lambda 函數動作 - Amazon Simple Email Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

呼叫 Lambda 函數動作

Lambda 動作透過 Lambda 函數來呼叫您的程式碼,且可選擇是否透過 Amazon SNS 通知您。此規則動作具有下列選項和需求:

選項
  • Lambda 函數 -Lambda 函數的 ARN。Lambda 函數 ARN 的範例為 arn:aws:lambda:us-east-1:account-id:function:MyFunction

  • 叫用類型 - Lambda 函數的叫用類型。叫用類型 RequestResponse 表示函數執行結果為立即回應。叫用類型 Event 表示函數為非同步叫用。建議您使用 Event 叫用類型,除非您的使用案例必須使用非同步執行。

    RequestResponse 呼叫有 30 秒的逾時。

    如需詳細資訊,請參閱 AWS Lambda 開發人員指南中的叫用 Lambda 函數

  • SNS Topic (SNS 主題) - Amazon SNS 主題的名稱或 ARN,用來於指定的 Lambda 函數觸發時通知。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_RULESTOP_RULE_SETCONTINUE)。如果第二個引數是 null 或沒有有效的 disposition 屬性,郵件流程將持續,且將處理其他動作和規則,與 CONTINUE 相同。

例如,您可以在 Lambda 函數程式碼末端編寫下列行,以停止接收規則集:

callback( null, { "disposition" : "STOP_RULE_SET" });

如需 AWS Lambda 程式碼範例,請參閱 Lambda 函數範例。如需高階使用案例的範例,請參閱 使用案例範例

輸入格式

Amazon SES 以 JSON 格式傳遞資訊至 Lambda 函數。最上層物件包含 Records 陣列,以屬性 eventSourceeventVersion 以及 ses 所填入。ses 物件包含 receiptmail 物件,與「通知內容」中所述 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> } } } ] }

傳回值

您的 Lambda 函數可藉由傳回下列其中一個值來控制郵件流程:

  • STOP_RULE - 將不會處理目前接收規則中的其他動作,但是將處理其他接收規則。

  • STOP_RULE_SET - 不會處理其他動作或接收規則。

  • CONTINUE 或任何其他無效的值 - 這表示可以處理其他動作和接收規則。

下列主題涵蓋內送郵件事件範例、高階使用案例範例以及 AWS Lambda 程式碼範例: