如何整合 Amazon SES 與 Amazon Cognito 使用者集區?

2 分的閱讀內容
0

我需要知道整合 Amazon Simple Email Service (Amazon SES) 與 Amazon Cognito 使用者集區所需的步驟。

簡短描述

可以整合 Amazon SES 和 Amazon Cognito,以便使用您擁有的自訂電子郵件地址來傳送電子郵件訊息。請依照下列高階步驟來整合 Amazon SES 與 Amazon Cognito 使用者集區:

  • 考慮 Amazon SES 沙盒的限制。
  • 將帳戶移出 Amazon SES 沙盒。
  • 驗證 Amazon SES 身分。
  • 使用 Amazon SES 驗證身分來設定 Amazon Cognito 使用者集區。

解決方案

實作下列步驟來整合 Amazon SES 與 Amazon Cognito 使用者集區,以便代表您傳送電子郵件訊息。

Amazon SES 沙盒的限制

所有新的 Amazon SES 帳戶都會放置在 Amazon SES 沙盒中,以防止詐騙和濫用。使用 Amazon SES 沙盒時,需要考慮一些限制。若要檢閱特定的沙盒限制,請參閱移出 Amazon SES 沙盒。您必須將 Amazon SES 帳戶移出沙盒,才能完全使用 Amazon SES 服務。

將帳戶移出 Amazon SES 沙盒

若要將帳戶移出 Amazon SES 沙盒,請依照下列步驟執行:

1.    檢閱 Amazon SES 電子郵件組態中的 AWS 區域映射表。映射表會顯示 Amazon SES 身分可與 Amazon Cognito 使用者集區整合的區域。將 Amazon SES 帳戶移出沙盒之前,您必須確保使用相容的區域。

2.    為您的 Amazon SES 帳戶請求生產環境存取。生產環境存取請求通過核准後,您即可傳送電子郵件訊息給任何收件者。

**重要事項:**您必須切換到新的 Amazon Cognito 主控台體驗,才能在相同區域中整合 Amazon Cognito 與 Amazon SES。

驗證 Amazon SES 身分

若要驗證 Amazon SES 網域身分,請依照下列步驟執行:

1.    建立網域身分

2.    驗證 Amazon SES 中的一個或多個網域

若要驗證 Amazon SES 電子郵件身分,請依照下列步驟執行:

1.    建立電子郵件身分

2.    在 Amazon SES 中驗證一個或多個電子郵件地址

**注意:**不支援 Amazon Cognito 和 Amazon SES 的跨帳戶整合。您無法在一個帳戶中設定 Amazon Cognito 使用者集區,然後將其與不同帳戶中的 Amazon SES 電子郵件地址整合。

使用 Amazon SES 驗證身分來設定 Amazon Cognito 使用者集區

若要整合 Amazon Cognito 使用者集區與經驗證的 Amazon SES 身分組態,請依照與您使用案例相關的步驟執行。

當 Amazon SES 網域身分已驗證

1.    登入新的 Amazon Cognito 主控台,然後選擇使用者集區

2.    從清單中選取適當的使用者集區。

3.    選擇簡訊標籤、電子郵件組態,然後選擇編輯

4.    在寄件者電子郵件地址下方,選擇 Amazon SES 驗證網域身分。(例如,example.com。)

5.    在寄件者名稱下方,輸入您的電子郵件地址。(例如,admin@example.com。)

由於網域已驗證,因此您可以為網域身分新增自訂的電子郵件地址。UpdateUserPool API 會以 Amazon SES 身分設定 Amazon Cognito 使用者集區。

範例 update-user-pool 命令:

$ aws cognito-idp update-user-pool --user-pool-id example_pool_id --email-configuration SourceArn=arn:aws:ses:example_region:example_account_number:identity/example_domain,EmailSendingAccount=DEVELOPER,From=user@example.com --region example_region

**重要事項:**由於 UpdateUserPool API 會重設使用者集區的現有組態,因此請先叫用 DescribeUserPool API。然後,將所有現有的使用者集區參數傳送至 UpdateUserPool API。

update-user-pool 命令的描述:

  • example_pool_id 會對應至 Amazon Cognito 使用者集區 ID。例如:ap-southeast-1_xxxxxxxx。
  • arn:aws:ses:example_region:example_account_number:identity/example_domain 是您 Amazon SES 網域身分的 ARN。
  • user@example.com 必須替換為您的電子郵件身分。
  • example_region 代表您 Amazon Cognito 使用者集區所在的區域。例如:ap-southeast-1。

當 Amazon SES 電子郵件身分已驗證

1.    登入新的 Amazon Cognito 主控台,然後選擇使用者集區

2.    從清單中選取適當的使用者集區。

3.    選擇簡訊標籤、電子郵件組態,然後選擇編輯

4.    在寄件者電子郵件地址下方,選擇 Amazon SES 電子郵件網域身分。(例如,admin@example.com。)

針對錯誤進行疑難排解

本區段包含針對使用者傳送電子郵件訊息時 (在整合 Amazon Cognito 和 Amazon SES 之後) 遇到的錯誤進行疑難排解的相關資訊。

未驗證的電子郵件地址發生錯誤

「電子郵件地址未驗證。下列身分未能通過 AP-SOUTHEAST-1 區域中的檢查:user@example.com。」

嘗試傳送電子郵件訊息時,Amazon Cognito 會收到未驗證的電子郵件地址錯誤訊息。當您嘗試從 Amazon SES 沙盒中的帳戶傳送電子郵件訊息至未驗證的電子郵件地址時,可能會收到此錯誤訊息。若要解決錯誤,請將您的 Amazon SES 帳戶移出沙盒,或在 Amazon SES 中驗證收件者的電子郵件地址。

使用者不會收到來自 Amazon Cognito 的電子郵件訊息

使用者不會收到來自 Amazon Cognito 使用者集區的電子郵件訊息。若要解決此問題,請確認您是否使用 Amazon Cognito 預設電子郵件功能Amazon SES 電子郵件組態來傳送電子郵件訊息。透過 AWS 管理主控台或叫用 DescribeUserPool API 來驗證您的更新。

範例 describe-user-pool 命令:

aws cognito-idp describe-user-pool --user-pool-id example_pool_id --region example_region --query 'UserPool.EmailConfiguration'

輸出:

{
  "SourceArn": "arn:aws:ses:us-east-1:123456789012:identity/admin@example.com",
  "EmailSendingAccount": "DEVELOPER",
  "From": "admin@example.com"
}

-或-

{
  "SourceArn": "arn:aws:ses:us-east-1:123456789012:identity/admin@example.com",
  "EmailSendingAccount": "COGNITO_DEFAULT"
}

如果 EmailSendingAccount 組態設定為開發人員,則您的 Amazon Cognito 使用者集區會使用 Amazon SES 來傳送電子郵件訊息。確認您的 Amazon SES 帳戶位於沙盒中。如果是,請將 Amazon SES 移出沙盒,以便傳送電子郵件訊息至未驗證的身分。如果 Amazon SES 帳戶在生產環境中或在沙盒模式之外,則請查看 Amazon SES 日誌以瞭解電子郵件遞送的相關資訊。

如果您在輸出中收到 COGNITO_DEFAULT 訊息,則表示您的 Amazon Cognito 使用者集區是使用預設功能來傳送電子郵件訊息。使用此預設功能,Amazon Cognito 會對每個使用者集區傳送的電子郵件訊息數量設有配額限制

系統擲回 LimitExceededException 異常狀況

「超過操作或帳戶的每日電子郵件限制。超過允許操作的數量。如果要提高限額,請將您的使用者集區設定為使用您自己的 Amazon SES 組態來傳送電子郵件訊息。」

當 Amazon Cognito 使用具有每日配額限制預設電子郵件功能來傳送電子郵件訊息時,使用者會收到每日電子郵件限制錯誤。如錯誤訊息所建議,可透過變更 Amazon SES 電子郵件組態來設定較高的電子郵件訊息遞送量。


AWS 官方
AWS 官方已更新 1 年前