Amazon Cognito 使用者集區的電子郵件設定 - Amazon Cognito

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

Amazon Cognito 使用者集區的電子郵件設定

使用者集區用戶端應用程式中的特定事件,會導致 Amazon Cognito 向您的使用者傳送電子郵件。例如,如果您將您的使用者集區設定成需要電子郵件驗證,則當使用者註冊您的應用程式以取得新帳戶,或是重新設定其密碼時,Amazon Cognito 就會傳送電子郵件。視發出電子郵件的動作而定,此電子郵件將包含驗證碼或臨時密碼。

若要處理電子郵件傳送,您可以使用下列任一選項:

您可以在建立使用者集區之後變更傳遞選項。

Amazon Cognito 會傳送電子郵件訊息給您的使用者,其中包含他們可以輸入的代碼或他們可以選取的 URL 連結。下表顯示可產生電子郵件訊息的事件。

訊息選項

活動 API 操作 傳遞選項 格式選項 可自訂 訊息範本
忘記密碼 ForgotPassword 電子郵件,短信 code N/A
邀請 AdminCreateUser 電子郵件,短信 code 邀請訊息
自助登記 SignUp 電子郵件,短信 代碼,鏈接 驗證訊息
電子郵件地址或電話號碼驗證 UpdateUserAttributes 電子郵件,短信 code 驗證訊息
多重要素驗證 (MFA) AdminInitiateAuth, InitiateAuth 簡訊 code 是 ¹ MFA 訊息

¹ 適用簡訊。

Amazon SES 會針對電子郵件訊息收費。如需詳細資訊,請參閱 Amazon SES 定價

預設的電子郵件

Amazon Cognito 可以使用其預設的電子郵件組態為您處理電子郵件傳送。使用預設選項時,Amazon Cognito 會限制每天為使用者集區寄送的電子郵件數量。如需服務配額的資訊,請參閱 Amazon Cognito 的配額。處理一般生產環境時,預設的電子郵件限制低於需要的傳送數量。若要啟用更多的傳送數量,可以使用 Amazon SES 電子郵件組態。

使用預設組態時,您可以使用受管理的 Amazon SES 資源 AWS 來傳送電子郵件訊息。Amazon SES 會將傳回硬退信的電子郵件地址新增至帳戶層級禁止名單全域禁止名單。如果無法傳遞的電子郵件地址稍後變成可傳送作業,則當您的使用者集區設定為使用預設組態時,您無法控制該地址從隱藏清單中移除。電子郵件地址可以無限期地保留在 AWS-managed 的隱藏清單中。若要管理無法傳遞的電子郵件地址,請將 Amazon SES 電子郵件組態搭配帳戶層級禁止名單使用,如下一節所述。

使用預設的電子郵件組態時,您可以使用下列任一個電子郵件地址做為 FROM 地址:

  • 預設的電子郵件地址是 no-reply@verificationemail.com

  • 自訂的電子郵件地址。在您可以使用自己的電子郵件地址之前,您必須先以 Amazon SES 驗證該地址,並授予 Amazon Cognito 使用該地址的許可。

Amazon SES 電子郵件組態

您的應用程式可能需要超過預設選項可用的更高傳送數量。若要增加可用的傳送數量,請搭配使用 Amazon SES 資源與您的使用者集區,向您的使用者寄送電子郵件。當您使用自己的 Amazon SES 組態傳送電子郵件訊息時,您也可以監控您的電子郵件傳送活動

您必須向 Amazon SES 驗證一或多個電子郵件地址或網域後,才能使用您的 Amazon SES 組態。使用已驗證的電子郵件地址,或來自已驗證網域的地址,做為您指派至使用者集區的 FROM 電子郵件地址。當 Amazon Cognito 傳送電子郵件給使用者時,它會為您呼叫 Amazon SES,並使用您的電子郵件地址。

當您使用 Amazon SES 組態時,則適用以下條件:

  • 您使用者集區的電子郵件傳輸限制就是套用至您 AWS 帳戶中 Amazon SES 驗證電子郵件地址的相同限制。

  • 您可以使用 Amazon SES 中的帳戶層級禁止名單,來管理傳送到無法傳遞的電子郵件地址的訊息;該名單會覆寫全域禁止名單。當您使用帳戶層級禁止名單時,電子郵件退信會影響您的帳戶做為寄件者的評價。如需詳細資訊,請參閱《Amazon Simple Email Service 開發人員指南》中的使用 Amazon SES 帳戶層級禁止名單

Amazon SES 電子郵件組態區域

建立使用者集區的 AWS 區域 位置對於使用 Amazon SES 設定電子郵件訊息的三項需求之一。您可以從 Amazon SES 傳送電子郵件訊息與使用者集區相同的區域、包括相同區域的多個區域,或是一或多個遠端區域傳送電子郵件訊息。若要取得最佳效能,請在您選擇使用者集區的相同區域中傳送具有 Amazon SES 驗證身分的電子郵件訊息。

經過 Amazon SES 驗證身分的區域需求類別
僅限區域內

您的使用者集區可以在與使用者集區相同 AWS 區域 的位置傳送具有已驗證身分的電子郵件。在沒有自訂電子郵件地址的預設FROM電子郵件組態中,Amazon Cognito 會在相同區域中使用no-reply@verificationemail.com經過驗證的身分。

向下相容

您的使用者集區可以在相同 AWS 區域 或下列其中一個替代區域中傳送具有已驗證身分的電子郵件訊息:

  • 美國東部 (維吉尼亞北部)

  • 美國西部 (奧勒岡)

  • 歐洲 (愛爾蘭)

此功能支援您在服務啟動時可能為符合 Amazon Cognito 要求而建立的使用者集區資源的連續性。該期間的使用者集區只能傳送數量有限的已驗證身分的電子郵件訊息 AWS 區域。在沒有自訂電子郵件地址的預設FROM電子郵件組態中,Amazon Cognito 會在相同區域中使用no-reply@verificationemail.com經過驗證的身分。

替代區域

您的使用者集區可以在使用者集區區域之外的替代 AWS 區域 使用者集區中傳送具有已驗證身分的電子郵件訊息。當 Amazon SES 無法在可使用 Amazon Cognito 的區域中使用時,就會發生此組態。

Amazon SES 在替代區域中針對已驗證身分傳送授權政策,必須信任原始區域的 Amazon Cognito 服務主體。如需詳細資訊,請參閱 授與使用預設電子郵件組態的權限

在這些區域中,Amazon Cognito 會將電子郵件訊息分割為預設電子郵件組態的兩個替代區域。COGNITO_DEFAULT在這些情況下,若要使用自訂FROM電子郵件地址,在每個替代區域中針對已驗證身分的 Amazon SES 傳送授權政策必須信任原始區域的 Amazon Cognito 服務主體。如需詳細資訊,請參閱 授與使用預設電子郵件組態的權限。使用這些區域中的 Amazon SES 電子郵件組態,您必須DEVELOPER一個列出的區域中使用經過驗證的身分,並將其設定為信任使用者集區區域中的 Amazon Cognito 服務主體。例如,在中東 (阿拉伯聯合大公國) 的使用者集區中,在歐洲 (法蘭克福) 設定要信任的已驗證身分cognito-idp.me-central-1.amazonaws.com。在沒有自訂電子郵件地址的預設FROM電子郵件組態中,Amazon Cognito 會在每個區域使用no-reply@verificationemail.com經過驗證的身分。

注意

在下列條件組合下,您必須在 Region 元素中以萬用字元的EmailConfiguration格式指定SourceArn參數arn:${Partition}:ses:*:${Account}:identity/${IdentityName}。這允許您的使用者集區在兩者中傳送具有相同驗證身分的電 AWS 帳戶 子郵件訊息 AWS 區域。

  • 你 EmailSendingAccount 是COGNITO_DEFAULT

  • 您想要使用自訂FROM位址。

  • 您的使用者集區會在替代區域傳送電子郵件。

  • 您的使用者集區具有 Amazon SES 支援區域表格中指定的第二1替代區,如下所示。

如果您以程式設計方式建立使用者集區 AWS CloudFormation(使用 AWS 開發套件、Amazon Cognito API 或 CLI、或),您的使用者集區會傳送含有SourceArn參數為您的使用者集區指定的 Amazon SES 身分的電子郵件訊息。 AWS CDKEmailConfigurationAmazon SES 身份必須佔用一個支持的 AWS 區域。如果您的 EmailSendingAccountCOGNITO_DEFAULT 並且您未指定 SourceArn 參數,Amazon Cognito 會使用您用於建立使用者集區的區域中的資源,以 no-reply@verificationemail.com 傳送電子郵件。

下表顯示您可以將 Amazon SES 身分與 Amazon Cognito 搭配使用的 AWS 區域 位置。

使用者集區區域 區域選項 支援 Amazon SES 區域

美國東部 (維吉尼亞北部)

向下相容

美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

美國東部 (俄亥俄)

向下相容

美國東部 (俄亥俄)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

美國西部 (加利佛尼亞北部)

僅限區域內

美國西部 (加利佛尼亞北部)

美國西部 (奧勒岡)

向下相容

美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

加拿大 (中部)

向下相容

加拿大 (中部)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

亞太區域 (東京)

向下相容

亞太區域 (東京)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

亞太區域 (首爾)

向下相容

亞太區域 (首爾)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

亞太區域 (孟買)

向下相容

亞太區域 (孟買)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

亞太區域 (海德拉巴)

替代區域

亞太區域 (孟買)、亞太區域 (新加坡) 1

亞太區域 (新加坡)

向下相容

亞太區域 (新加坡)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

亞太區域 (悉尼)

向下相容

亞太區域 (雪梨)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

亞太區域 (大阪)

僅限區域內

亞太區域 (大阪)

亞太區域 (雅加達)

僅限區域內

亞太區域 (雅加達)

亞太區域 (墨爾本)

替代區域

亞太區域 (雪梨)、亞太區域 (新加坡) 1

歐洲 (愛爾蘭)

向下相容

美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

歐洲 (倫敦)

向下相容

歐洲 (倫敦)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

Europe (Paris)

僅限區域內

Europe (Paris)

歐洲 (法蘭克福)

向下相容

歐洲 (法蘭克福)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、歐洲 (愛爾蘭)

歐洲 (蘇黎世)

替代區域

歐洲 (法蘭克福)、歐洲 (倫敦) 1

歐洲 (斯德哥爾摩)

僅限區域內

歐洲 (斯德哥爾摩)

歐洲 (米蘭)

僅限區域內

歐洲 (米蘭)
歐洲 (西班牙)

替代區域

歐洲 (巴黎)、歐洲 (斯德哥爾摩) 1

Middle East (Bahrain)

僅限區域內

Middle East (Bahrain)

中東 (阿拉伯聯合大公國)

替代區域

歐洲 (法蘭克福)、歐洲 (倫敦) 1

南美洲 (聖保羅)

僅限區域內

南美洲 (聖保羅)

以色列 (特拉維夫)

僅限區域內

以色列 (特拉維夫)

非洲 (開普敦)

僅限區域內

非洲 (開普敦)

1 用於具有預設電子郵件組態的使用者集區。Amazon Cognito 會在每個區域使用相同的電子郵件地址,在經過驗證的身分之間分發電子郵件。若要使用自訂FROM位址,請使EmailConfiguration用格式的SourceArn參數進行設定arn:${Partition}:ses:*:${Account}:identity/${IdentityName}

為您的使用者集區設定電子郵件

完成下列步驟,為您的使用者集區設定電子郵件設定。根據您使用的設定,您可能需要 Amazon SES、 AWS Identity and Access Management (IAM) 和 Amazon Cognito 中的 IAM 許可。

注意

您透過這些步驟所建立的資源,無法在這些 AWS 帳戶之間共用。例如,您無法在一個帳戶中設定使用者集區,然後將之與不同帳戶的 Amazon SES 電子郵件地址搭配使用。如果您的多個帳戶都使用 Amazon Cognito,請為這些帳戶個別重複這些步驟。

步驟 1:向 Amazon SES 驗證您的電子郵件地址或網域

在設定您的使用者集區之前,如果您想執行下列其中一項動作,則您必須向 Amazon SES 驗證一或多個網域或電子郵件地址:

  • 使用您自己的電子郵件地址做為 FROM 地址

  • 使用您的 Amazon SES 組態來處理電子郵件傳輸

驗證過電子郵件地址或網域之後,您就能確認您擁有該地址,協助防止未經授權的使用。

如需使用 Amazon SES 驗證電子郵件地址的資訊,請參閱《Amazon Simple Email Service 開發人員指南》中的驗證電子郵件地址。如需使用 Amazon SES 驗證網域的相關資訊,請參閱驗證網域

步驟 2:將您的帳戶移出 Amazon SES 沙盒

如果您使用的是預設的 Amazon Cognito 電子郵件組態,請省略此步驟。

當您第一次在任何地方使用 Amazon SES 時 AWS 區域,它會將您放置 AWS 帳戶 在該區域的 Amazon SES 沙箱中。Amazon SES 使用沙盒來防止詐騙和濫用行為。如果您使用 Amazon SES 組態處理電子郵件傳輸,您必須先將您的 AWS 帳戶 移出沙盒,Amazon Cognito 才能向您的使用者寄送電子郵件。

在沙盒中,Amazon SES 會針對您可寄送的電子郵件數量及從何處寄送,強制套用限制。您只能傳送電子郵件到您已向 Amazon SES 驗證的地址及網域,或將電子郵件傳送到 Amazon SES 信箱模擬器地址。當您 AWS 帳戶 保留在沙箱中時,請勿將 Amazon SES 組態用於正在生產中的應用程式。在這種情況下,Amazon Cognito 無法將訊息傳送到使用者的電子郵件地址。

若要 AWS 帳戶 從沙箱中移除,請參閱 Amazon 簡單電子郵件服務開發人員指南中的移出 Amazon SES 沙箱

步驟 3:授予 Amazon Cognito 電子郵件許可

您可能需要為 Amazon Cognito 授予特定許可,其才能向您的使用者寄送電子郵件。您授與的許可以以及用來授予它們的程序,取決於您使用的是預設電子郵件組態還是 Amazon SES 組態。

僅當您將使用者集區設定為使用 Cognito 傳送電子郵件或設EmailSendingAccount定為時,才完成此步驟。COGNITO_DEFAULT

使用預設電子郵件設定時,您的使用者集區可以使用下列其中一個地址傳送電子郵件訊息。

  • 預設位址no-reply@verificationemail.com

  • 經過驗證的電子郵件地址或 Amazon SES 網域中的自訂寄件者地址。

如果您使用自訂地址,則 Amazon Cognito 會要求額外的許可,以便其使用此地址向您的使用者傳送電子郵件。這些許可由 Amazon SES 中的地址或網域的傳送授權政策授予。如果您要使用 Amazon Cognito 主控台來將自訂地址新增到您的使用者集區,則政策會自動連接到 Amazon SES 驗證過的電子郵件地址。但是,如果您在主控台外部設定使用者集區 (例如使用 AWS CLI 或 Amazon Cognito API),則必須使用 Amazon SES 主控台PutIdentityPolicyAPI 附加政策。

注意

您只能在已驗證的網域中使用 AWS CLI 或 Amazon Cognito API 設定 FROM (寄件者) 地址。

根據使用 Amazon Cognito 叫用 Amazon SES 的帳戶資源,傳送授權政策允許或拒絕存取。如需以資源為基礎之政策的詳細資訊,請參閱《IAM 使用者指南》。您也可以在《Amazon SES 開發人員指南》中找到以資源為基礎的範例政策。

範例 傳送授權政策

下列範例傳送授權政策會向 Amazon Cognito 授予使用 Amazon SES 已驗證身分的有限能力。執行此操作時,Amazon Cognito 只能代表 aws:SourceArn 條件中的使用者集區和 aws:SourceAccount 條件中的帳戶傳送電子郵件訊息。

Regions with Amazon SES

您在使用者集區區域或替代區域中的傳送授權政策必須允許 Amazon Cognito 服務主體傳送電子郵件訊息。如需詳細資訊,請參閱「區域」表格。如果您的使用者集區區域Amazon SES 區域中的至少一個值相符,請在下列範例中使用全域服務主體設定傳送授權政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "stmnt1234567891234", "Effect": "Allow", "Principal": { "Service": [ "email.cognito-idp.amazonaws.com" ] }, "Action": [ "SES:SendEmail", "SES:SendRawEmail" ], "Resource": "<your SES identity ARN>", "Condition": { "StringEquals": { "aws:SourceAccount": "<your account number>" }, "ArnLike": { "aws:SourceArn": "<your user pool ARN>" } } } ] }
Opt-in Regions without Amazon SES

Amazon SES 並非在所有選擇加入 Amazon Cognito 可用的 AWS 區域 地方都可用。中東(阿拉伯聯合大公國)就是一個例子,只能在歐洲(法蘭克福)()發送具有驗證身份的電子郵件(eu-central-1)。在具有預設電子郵件組態的使用者集區中,Amazon Cognito 也會在兩個區域中的每個區域傳送具有已驗證身分的電子郵件訊息。在中東(阿聯酋)的情況下,額外的區域是歐洲(倫敦)。您必須更新這兩個區域中的傳送授權原則。

您在每個替代區域中的傳送授權政策必須允許使用者集區選擇加入區域中的 Amazon Cognito 服務主體傳送電子郵件訊息。如需詳細資訊,請參閱「區域」表格。如果您的區域標示為替代區域,請使用區域服務主體設定傳送授權原則,如下列範例所示。視需要將範例區域識別碼 me-central-1 取代為所需的區域 ID。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "cognito-idp.me-central-1.amazonaws.com" ] }, "Action": [ "SES:SendEmail", "SES:SendRawEmail" ], "Resource": "<your SES identity ARN>", "Condition": { "StringEquals": { "aws:SourceAccount": "<your account number>" }, "ArnLike": { "aws:SourceArn": "<your user pool ARN>" } } } ] }

如需政策語法的詳細資訊,請參閱《Amazon Simple Email Service 開發人員指南》中的 Amazon SES 傳送授權政策

如需更多範例,請參閱《Amazon Simple Email Service 開發人員指南》中的 Amazon SES 傳送授權政策範例

如果您將您的使用者集區設定為使用您的 Amazon SES 組態,則 Amazon Cognito 會要求額外許可,以便其在向您的使用者寄送電子郵件時,代表您呼叫 Amazon SES。這份授權是透過 IAM 服務授予。

當您使用此選項設定您的使用者集區時,Amazon Cognito 會建立服務連結的角色,這是您 AWS 帳戶中的 IAM 角色類型。此角色包含的許可,能讓 Amazon Cognito 存取 Amazon SES,以及使用您的地址傳送電子郵件。

Amazon Cognito 會使用設定組態的使用者工作階段 AWS 登入資料來建立您的服務連結角色。此工作階段的 IAM 許可必須包含 iam:CreateServiceLinkedRole 動作。如需 IAM 中許可的詳細資訊,請參閱 IAM 使用者指南中的 AWS 資源存取管理

如需 Amazon Cognito 所建立服務連結角色的詳細資訊,請參閱使用 Amazon Cognito 的服務連結角色

步驟 4:設定您的使用者集區

如果您需要將您的使用者集區設定為搭配下面任何一種設定,請完成下面步驟:

  • 顯示為電子郵件寄件者的自訂 FROM 地址

  • 在您的使用者傳送訊息至您的 FROM 地址時負責接收的自訂 REPLY-TO 地址

  • 您的 Amazon SES 組態

注意

如果您的驗證身分是電子郵件地址,Amazon Cognito 會將該電子郵件地址設定為預設的 FROM (寄件者) 電子郵件地址和 REPLY-TO (回覆至) 電子郵件地址。但是,如果您已驗證的身分是網域,則必須提供 FROM (寄件者) 電子郵件地址和 REPLY-TO (回覆至) 電子郵件地址的值。例如,如果您已驗證的網域是 example.com,您可以將 no-reply@example.com 設定為 FROM (寄件者) 電子郵件地址和 REPLY-TO (回覆至) 電子郵件地址。

如果您想要使用預設的 Amazon Cognito 電子郵件組態和地址,請省略此程序。

將使用者集區設定為使用自訂電子郵件地址
  1. 前往 Amazon Cognito 主控台。如果出現提示,請輸入您的 AWS 認證。

  2. 選擇 User Pools (使用者集區)。

  3. 從清單中選擇現有的使用者集區。

  4. 選擇 Messaging (簡訊) 索引標籤,尋找 Email configuration (電子郵件組態),選擇 Edit (編輯)。

  5. Edit email configuration (編輯電子郵件組態) 頁面上,選取 Send email from Amazon SES (從 Amazon SES 傳送電子郵件) 或者 Send email with Amazon Cognito (使用 Amazon Cognito 傳送電子郵件)。只有當您選擇 Send email from Amazon SES (從 Amazon SES 傳送電子郵件) 時,才可以自訂 SES Region (SES 區域)、Configuration Set (組態集),以及 FROM sender name (FROM (寄件者) 姓名)。

  6. 若要使用自訂 FROM (寄件者) 地址,請完成下列步驟:

    1. SES Region (SES 區域) 下選擇包含您已驗證電子郵件地址的區域。

    2. FROM email address (FROM (寄件者) 電子郵件地址) 下,請選擇您的電子郵件地址。請使用通過 Amazon SES 驗證的電子郵件地址。

    3. (選用) 在 Configuration set (組態集) 下,選擇 Amazon SES 要使用的組態集。進行並保存此變更會建立服務連結角色。

    4. (選用) 在 FROM sender address (FROM (寄件者) 傳送人地址) 下,輸入電子郵件地址。您可以僅提供電子郵件地址,或是 Jane Doe <janedoe@example.com> 格式的電子郵件地址和易記名稱。

    5. (選用) 在 REPLY-TO email address (REPLY-TO (回覆至) 電子郵件地址) 下,輸入電子郵件地址,作為您想要用來接收使用者傳送訊息到 FROM (寄件者) 地址時負責接收的地址。

  7. 選擇儲存變更

相關主題