本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Cognito 使用者集區的簡訊設定
您使用者集區的部分 Amazon Cognito 事件可能會導致 Amazon Cognito 傳送簡訊給您的使用者。例如,如果您將您的使用者集區設定成需要電話驗證,則當使用者在您的應用程式中註冊新帳戶,或是重新設定其密碼時,Amazon Cognito 就會傳送簡訊。根據啟動簡訊的動作,簡訊會包含驗證碼、臨時密碼或歡迎訊息。
Amazon Cognito 使用 Amazon Simple Notification Service (Amazon SNS) 傳輸簡訊。Amazon SNS 會關閉簡訊 AWS End User Messaging SMS。如果您是第一次透過 Amazon Cognito 傳送文字訊息, 會將您 AWS End User Messaging SMS 放在沙盒環境中。在沙盒環境中,您可以測試應用程式的簡訊功能。在沙盒中,您只能模擬訊息的傳送。
注意
在 2024 年 11 月, AWS 取代了 Amazon SNS SMS 訊息 AWS End User Messaging SMS。目前,Amazon Cognito 主控台是指 Amazon SNS 資源。使用者集區使用 Amazon SNS Publish 操作啟動 SMS 訊息,這是傳遞至 AWS End User Messaging SMS。因此,您仍然必須設定 的許可sns:Publish
,而不是 sms-voice:SendTextMessage
。
AWS End User Messaging SMS SMS 文字訊息的費用。如需詳細資訊,請參閱 AWS End User Messaging SMS 定價
Amazon Cognito 會傳送簡訊給您的使用者,當中包含可供他們輸入的代碼。下表顯示可產生簡訊的事件。
訊息選項
活動 | API 操作 | 傳遞選項 | 格式選項 | 可自訂 | 訊息範本 |
---|---|---|---|---|---|
Forgot password | ForgotPassword, AdminResetUserPassword | Email, SMS | code | Yes | 驗證訊息 |
Invitation | AdminCreateUser | Email, SMS | code | Yes | 邀請訊息 |
Self-registration | SignUp, ResendConfirmationCode | Email, SMS | code, link | Yes | 驗證訊息 |
Email address or phone number verification | UpdateUserAttributes, AdminUpdateUserAttributes, GetUserAttributeVerificationCode | Email, SMS | code | Yes | 驗證訊息 |
Multi-factor authentication (MFA) | AdminInitiateAuth, InitiateAuth | Email¹, SMS, authenticator app | code | Yes² | MFA 訊息 |
One-time password authentication (OTP) | AdminInitiateAuth, InitiateAuth | Email¹, SMS | code | Yes | MFA 訊息³ |
1 需要 Essentials 功能計劃或更高版本和 Amazon SES 電子郵件組態。
2 適用於簡訊和電子郵件訊息。
3 您只能在使用者集區中需要或選用 MFA 時自訂 MFA 訊息範本。當 MFA 處於非作用中狀態時,Amazon Cognito 會使用預設範本傳送一次性密碼。
AWS End User Messaging SMS SMS 訊息的費用。如需詳細資訊,請參閱 AWS End User Messaging SMS 定價
若要進一步了解 MFA,請參閱 SMS 和電子郵件訊息 MFA。
Amazon Cognito 可能會阻止在短時間內將額外的電子郵件或簡訊傳送至單一目的地。如果您認為使用者集區受到影響,請設定和檢閱訊息傳遞錯誤的日誌,然後聯絡您的客戶團隊。
最佳實務
由於全世界有大量不受歡迎的 SMS 流量,部分政府對 SMS 訊息的傳送者和接收者之間設有障礙。當您使用 SMS 訊息進行 MFA 和使用者更新時,您必須採取額外步驟以確保訊息傳輸。您還必須監控使用者居住地國家/地區的 SMS 訊息相關法規,並使 SMS 訊息組態保持在最新狀態。如需詳細資訊,請參閱AWS End User Messaging SMS 《 使用者指南》中的 SMS 和 MMS 國家/地區功能和限制。
使用 SMS 訊息進行身分驗證和驗證使用者並不是安全性最佳作法。電話號碼所有者可能會變更,並且對於 MFA 使用者擁有的部分因素來說,可能不是一項可靠的因素。相反,您可以在應用程式中或使用第三方 IdP 中實施 TOTP MFA。您也可以使用 自訂身分驗證挑戰 Lambda 觸發程序 建立其他自訂的身分驗證因素。
如需保護簡訊交付架構的相關資訊,請參閱下列連結。
第一次在 Amazon Cognito 使用者集區中設定簡訊
Amazon Cognito 會間接使用 Amazon SNS AWS End User Messaging SMS從您的使用者集區傳送簡訊。您也可以使用 自訂 SMS 寄件者 Lambda 觸發程序 以使用自己的資源來傳送簡訊。您第一次在特定 中設定簡訊時 AWS 區域, 會將您的 AWS End User Messaging SMS 放置在該區域的簡訊沙盒 AWS 帳戶 中。 AWS End User Messaging SMS 會使用沙盒來防止詐騙和濫用,並符合合規要求。當您 AWS 帳戶 的 位於沙盒時, 會 AWS End User Messaging SMS 套用一些限制。例如,如果您有原始身分,您可以傳送文字訊息到最多 10 個已驗證的目的地號碼,也可以模擬沒有原始身分的傳送訊息。當您的 AWS 帳戶 仍在沙盒中時,請勿在生產環境中傳送簡訊。您在沙盒中時,Amazon Cognito 無法將簡訊傳送到使用者的電話號碼。
主題
準備 IAM Amazon Cognito 可以使用該角色來傳送 SMS 訊息 AWS End User Messaging SMS
當您從使用者集區傳送簡訊時,Amazon Cognito 會在您的帳戶中擔任 IAM 角色。Amazon Cognito 會使用指派給該角色的 sns:Publish
許可,來傳送簡訊給使用者。在 Amazon Cognito 主控台中,您可以從使用者集區的身分驗證方法選單,在 SMS 下設定 IAM 角色選擇,或在使用者集區建立精靈期間進行此選擇。
下列範例 IAM 角色信任政策授與 Amazon Cognito 使用者集區擔任角色的有限功能。Amazon Cognito 只有在符合下列條件時才能擔任該角色:
-
擔任角色操作代表
aws:SourceArn
條件中的使用者集區。 -
擔任角色操作代表
aws:SourceAccount
條件所 AWS 帳戶 設定 中的使用者集區。 -
擔任角色操作會在
sts:externalId
條件中包含外部 ID。
您可指定精確的使用者集區 ARN,或在 aws:SourceArn
條件的值中使用萬用字元 ARN。在 中或使用 AWS Management Console DescribeUserPool API 請求查詢使用者集區的 ARNs。
若要傳送 SMS 訊息以進行多重要素驗證,您的 IAM 角色信任政策必須具有 sts:ExternalId
條件。此條件的值必須符合使用者集區的 SmsConfiguration ExternalId
屬性。當您在 Amazon Cognito 主控台中建立使用者集區的過程中建立 IAM 角色時,Amazon Cognito 會在角色和使用者集區設定中為您設定外部 ID。當您使用現有的 IAM 角色時,情況並非如此。
您必須更新 UpdateUserPool API 請求中的使用者集區ExternalId
參數,並使用具有相同值sts:externalId
的條件更新 IAM 角色信任政策。若要了解如何使用 API 以保留原始組態的方式更新使用者集區,請參閱 更新使用者集區和應用程式用戶端組態。
如需有關 IAM 角色和信任政策的詳細資訊,請參閱AWS Identity and Access Management 使用者指南中的角色術語和概念。
選擇 SMS 訊息 AWS 區域 的
注意
中的簡訊現在 AWS 已在 中管理AWS End User Messaging SMS
在某些情況下 AWS 區域,您可以選擇包含要用於 Amazon Cognito SMS 訊息之 Amazon SNS 資源的區域。 Amazon Cognito 在可使用 Amazon Cognito 的任何 AWS 區域 中,除了亞太區域 (首爾) 以外,您可以在 AWS 區域 建立使用者集區的 中使用 Amazon SNS 資源。若要在可以選擇區域時,讓您的簡訊更快、更可靠,請使用與使用者集區位於相同區域的 Amazon SNS 資源。
在新增使用者集區精靈的 Configure message delivery (設定訊息傳遞) 步驟中,選擇簡訊資源的區域。您也可以在現有使用者集區的身分驗證方法選單中選擇 SMS 下的編輯。
在啟動時,對於某些 Amazon Cognito AWS 區域會在替代區域中使用 Amazon SNS 資源傳送簡訊。若要設定您的偏好區域,請使用您使用者集區的 SmsConfigurationType 物件的 SnsRegion
。參數。當您以程式設計方式在下表的 Amazon Cognito Region (Amazon Cognito 區域) 中建立 Amazon Cognito 使用者集區資源,而且不提供 SnsRegion
參數時,您的使用者集區將使用舊式 Amazon SNS Region (Amazon SNS 區域) 中的 Amazon SNS 資源傳送 SMS 訊息。
亞太區域 (首爾) 的 Amazon Cognito 使用者集區 AWS 區域 必須在亞太區域 (東京) 區域使用您的 Amazon SNS 組態。
Amazon SNS (透過 AWS End User Messaging SMS) 將所有新帳戶的支出配額設定為每月 1.00 美元 (USD)。您可能已增加與 Amazon Cognito 搭配使用 AWS 區域 的 中的花費限制。變更 Amazon SNS SMS 訊息 AWS 區域 的 之前,請在 AWS 支援中心開啟配額增加案例,以增加新區域中的限制。如需詳細資訊,請參閱AWS End User Messaging SMS 《 使用者指南》中的從 AWS End User Messaging SMS MMS 和語音沙盒移至生產環境。
您可以傳送下表中任何 Amazon Cognito 區域的簡訊,並在對應的簡訊區域中包含 AWS End User Messaging SMS 資源。
Amazon Cognito 區域 | SMS 訊息區域 |
---|---|
美國東部 (俄亥俄) |
美國東部 (俄亥俄)、美國東部 (維吉尼亞北部) |
美國東部 (維吉尼亞北部) |
美國東部 (維吉尼亞北部) |
美國西部 (加利佛尼亞北部) |
美國西部 (加利佛尼亞北部) |
美國西部 (奧勒岡) |
美國西部 (奧勒岡) |
加拿大 (中部) |
加拿大 (中部)、美國東部 (維吉尼亞北部) |
加拿大西部 (卡加利) |
加拿大西部 (卡加利) |
墨西哥 (中部) |
墨西哥 (中部) |
歐洲 (法蘭克福) |
歐洲 (法蘭克福)、歐洲 (愛爾蘭) |
歐洲 (倫敦) |
歐洲 (倫敦)、歐洲 (愛爾蘭) |
歐洲 (愛爾蘭) |
歐洲 (愛爾蘭) |
Europe (Paris) |
Europe (Paris) |
歐洲 (斯德哥爾摩) |
歐洲 (斯德哥爾摩) |
歐洲 (米蘭) |
歐洲 (米蘭) |
歐洲 (西班牙) |
歐洲 (西班牙) |
歐洲 (蘇黎世) |
歐洲 (蘇黎世) |
亞太地區 (馬來西亞) | 亞太區域 (新加坡) |
亞太區域 (泰國) |
亞太區域 (孟買) |
亞太區域 (孟買) |
亞太區域 (孟買)、亞太區域 (新加坡) |
亞太區域 (海德拉巴) |
亞太區域 (海德拉巴) |
亞太區域 (香港) |
亞太區域 (新加坡) |
亞太區域 (首爾) |
亞太區域 (東京) |
亞太區域 (新加坡) |
亞太區域 (新加坡) |
亞太區域 (悉尼) |
亞太區域 (悉尼) |
亞太區域 (東京) |
亞太區域 (東京) |
亞太區域 (雅加達) |
亞太區域 (雅加達) |
亞太區域 (大阪) |
亞太區域 (大阪) |
亞太區域 (墨爾本) |
亞太區域 (墨爾本) |
Middle East (Bahrain) |
Middle East (Bahrain) |
中東 (阿拉伯聯合大公國) |
中東 (阿拉伯聯合大公國) |
南美洲 (聖保羅) |
南美洲 (聖保羅) |
以色列 (特拉維夫) |
以色列 (特拉維夫) |
非洲 (開普敦) |
非洲 (開普敦) |
取得來源身分以傳送簡訊至美國電話號碼
如果您打算將簡訊傳送至美國電話號碼,必須取得來源身分,無論您是建置簡訊沙盒測試環境,或是生產環境。
美國電信業者需要原始身分才能傳送訊息至美國電話號碼。如果還沒有來源身分,您必須取得一個。若要了解如何取得原始身分,請參閱AWS End User Messaging SMS 《 使用者指南》中的請求電話號碼。
當您在相同 中有多個起始身分時 AWS 區域, 會依下列優先順序 AWS End User Messaging SMS 選擇起始身分類型:短碼、10DLC、免付費電話號碼。您無法變更此優先權。如需詳細資訊,請參閱 AWS End User Messaging SMS
常見問答集
確認您在簡訊沙盒中
使用下列操作程序來確認您是否位於簡訊沙盒中。針對您擁有生產 Amazon Cognito 使用者集區的每個 AWS 區域 重複此步驟。
確認您是否在 SMS 沙盒中
-
前往 Amazon Cognito 主控台
。若出現提示,請輸入 AWS 憑證。 -
選擇 User Pools (使用者集區)。
-
從清單中選擇現有的使用者集區。
-
選擇身分驗證方法選單。
-
在 SMS configuration (SMS 組態) 區段中,展開 Move to Amazon SNS production environment (移至 Amazon SNS 生產環境)。如果您的帳戶在 SMS 沙盒中,您會看到以下訊息:
設定 AWS 服務 相依性以完成簡訊設定
如果您沒有看到此訊息,表示有人已在您的帳戶中設定簡訊。跳至 在 Amazon Cognito 中完成使用者集區設定。
-
選擇移至 Amazon SNS
生產環境下的 Amazon SNS 連結。 Amazon SNS 如此會在新索引標籤中開啟 Amazon SNS 主控台。 -
確認您在沙盒環境中。主控台訊息會指出您的沙盒狀態 AWS 區域,如下所示:
This account is in the SMS sandbox in US East (N. Virginia).
將您的帳戶移出沙盒
若要在生產環境中使用您的應用程式,請將帳戶移出簡訊沙盒,然後移至生產環境中。在 AWS 區域 中設定原始身分,其中包含您希望 Amazon Cognito 使用 AWS End User Messaging SMS 的資源後,您可以在您的 AWS 帳戶 保留在 SMS 沙盒中時驗證美國電話號碼。當您的環境處於生產狀態時,您不需要先驗證使用者電話號碼,再傳送簡訊給他們。
您可以建立從 AWS End User Messaging SMS 主控台或 Amazon SNS 主控台退出沙盒的請求。如需詳細說明,請參閱AWS End User Messaging SMS 《 使用者指南》中的從 SMS 沙盒移動。
搭配 使用模擬器號碼或已驗證的電話號碼 AWS End User Messaging SMS
如果您已將帳戶移出簡訊沙盒,請略過此步驟。
如果您在沙盒中,但已設定起始號碼,您可以將訊息傳送到已驗證的目的地號碼。若要設定已驗證的目的地,請參閱AWS End User Messaging SMS 《 使用者指南》中的新增已驗證的目的地電話號碼。
您也可以使用模擬寄件者和目的地傳送訊息。模擬器訊息會產生日誌,但不會透過電信業者網路傳送。從捷徑功能表中
在 Amazon Cognito 中完成使用者集區設定
返回您要建立或編輯使用者集區的瀏覽器索引標籤。完成程序。成功將 SMS 組態新增至使用者集區後,Amazon Cognito 會將測試訊息傳送至內部電話號碼,以確認您的組態是否有效。Amazon SNS 會針對每個測試簡訊收取費用。