本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
更新使用者集區和應用程式用戶端組態
當您想要變更使用者集區或應用程式用戶端中的設定時,只要按幾下滑鼠,就可以在 Amazon Cognito 主控台中套用更新。您可以在使用者集區設定中導覽功能型索引標籤,並更新欄位,如本指南其他區域所述。
許多組織以程式設計方式管理其資源 AWS CloudFormation、在 AWS SDKs或 CDK 上建置的應用程式,以及其他自動化軟體。當這是您的資源管理模型時,您必須格外小心,才能將資源進行階段變更。
API 操作 UpdateUserPool 和 UpdateUserPoolClient 會更新現有的使用者集區或應用程式用戶端。每個 都會在 API 參考中出現警告:如果您未提供屬性的值,Amazon Cognito 會將其設定為預設值。當您僅以一個參數提交更新請求時,Amazon Cognito 會將該參數設定為您選擇的值,並將所有其他參數設定為預設值。這可以重設組態,包括您的屬性結構描述、Lambda 觸發條件,以及您的電子郵件和簡訊組態。
此外,某些設定會在您建立使用者集區或應用程式用戶端之後鎖定,除非您建立新的資源,否則無法變更這些設定。
您無法變更的設定
建立使用者集區之後,您就無法變更某些設定。如果您想要變更以下設定,則必須建立新的使用者集區或應用程式用戶端。
注意
先前,您無法變更使用者集區的名稱。這已變更。您現在可以將新的易記名稱指派給使用者集區。
- 使用者集區 ID
-
API 參數名稱:Id/UserPoolId
使用者集區 ID,例如
us-east-1_EXAMPLE
,是由 Amazon Cognito 自動產生,無法變更。 - Amazon Cognito 使用者集區登入選項
-
API 參數名稱:AliasAttributes 和 UsernameAttributes
使用者登入時可以作為使用者名稱傳遞的屬性。當您建立使用者集區時,您可以選擇允許以使用者名稱、電子郵件地址、電話號碼或偏好的使用者名稱進行登入。若要變更使用者集區登入選項,請建立新的使用者集區。
- 讓使用者名稱區分大小寫
-
API 參數名稱:UsernameConfiguration
當您建立的使用者名稱符合其他使用者名稱 (字母大小寫除外) 時,Amazon Cognito 可以將他們視為同一個使用者或獨一無二的多個使用者。如需詳細資訊,請參閱使用者集區大小寫區分。若要變更區分大小寫,請建立新的使用者集區。
- Client secret (用戶端密碼)
-
API 參數名稱: GenerateSecret
若建立應用程式用戶端,您可以產生用戶端密碼,以便只有信任的來源才能向您的使用者集區提出請求。如需詳細資訊,請參閱使用應用程式用戶端的應用程式特定設定。若要變更用戶端密碼,請在同一個使用者集區中建立新的應用程式用戶端。
- 必要屬性
-
API 參數名稱:結構描述
您的使用者註冊時,或您建立使用者時,您的使用者必須提供其值的屬性。如需詳細資訊,請參閱使用使用者屬性。若要變更所需的屬性,請建立新的使用者集區。
- 自訂屬性 (刪除)
-
API 參數名稱:結構描述
具有自訂名稱的屬性。您可以變更使用者的自訂屬性值,但無法將自訂屬性從使用者集區中刪除。如需詳細資訊,請參閱使用使用者屬性。如果達到自訂屬性數目上限,且想要修改清單,請建立一個新的使用者集區。
SMS 組態
在使用者集區中啟用 SMS 訊息後,您無法停用它們。
-
如果您在建立使用者集區時選擇設定 SMS 訊息,則在完成設定之後,您無法停用 SMS。
-
您可以在您建立的使用者集區中啟用 SMS 訊息,但之後無法停用 SMS。
-
Amazon Cognito 可以使用 SMS 訊息進行使用者帳戶邀請和復原、屬性驗證和多重要素驗證 (MFA)。啟用 SMS 訊息後,您可以隨時開啟或關閉這些函數的 SMS 訊息。
-
SMS 訊息組態包含您委派給 Amazon Cognito 使用 Amazon SNS 傳送訊息的 IAM 角色。您可以隨時變更指派的角色。
使用 AWS SDK AWS CDK、 或 REST API 更新使用者集區
在 Amazon Cognito 主控台中,您可以一次變更一個參數來變更使用者集區設定。例如,若要新增 Lambda 觸發,請選擇新增 Lambda 觸發,然後選擇函數和觸發類型。Amazon Cognito 使用者集區 API 的結構方式是更新使用者集區和應用程式用戶端的操作,需要使用者集區的一組完整參數。不過,主控台會使用其他使用者集區設定,以透明方式自動化此更新操作。
有時,您可能會發現在 中其他位置變更 AWS 帳戶 可能會導致更新在與您要變更的設定無關時產生錯誤。 AWS WAF例如,已刪除的 Amazon SES 身分或 IAM 許可的變更。如果其中一個目前參數不再有效,則在您修正設定之前,無法更新設定。當您遇到此類錯誤時,請檢查錯誤回應並驗證其提及的設定。
AWS Cloud Development Kit (AWS CDK)
-
從描述現有資源組態的 操作擷取輸出。
-
使用設定變更來修改輸出。
-
在更新資源的 操作中傳送修改後的組態。
以下程序以 UpdateUserPool API 操作更新您的組態。同樣的方法,使用不同的輸入欄位,適用於 UpdateUserPoolClient。
重要
如果您未提供現有參數的值,則 Amazon Cognito 會將這些參數設定為預設值。例如,當您有現有 LambdaConfig
並提交了 UpdateUserPool
搭配空白 LambdaConfig
,您會刪除所有 Lambda 函數給使用者集區觸發條件的指派。當您希望自動變更您的使用者集區組態時,請相應進行規劃。
-
以 DescribeUserPool 擷取您使用者集區的現有狀態。
-
設定
DescribeUserPool
的輸出格式,以符合UpdateUserPool
的請求參數。將下列頂層欄位及其子物件自輸出 JSON 中移除。-
Arn
-
CreationDate
-
CustomDomain
-
以 UpdateUserPoolDomain API 操作更新此欄位。
-
-
Domain
-
以 UpdateUserPoolDomain API 操作更新此欄位。
-
-
EmailConfigurationFailure
-
EstimatedNumberOfUsers
-
Id
-
LastModifiedDate
-
Name
-
SchemaAttributes
-
SmsConfigurationFailure
-
Status
-
-
確認產生的 JSON 符合
UpdateUserPool
的請求參數。 -
修改您想要在產生的 JSON 中變更的任何參數。
-
將您修改的 JSON 作為請求輸入來提交
UpdateUserPool
API 請求。
您也可以在 AWS CLI以 update-user-pool
的 --cli-input-json
參數來使用此修改後的 DescribeUserPool
輸出。
或者,執行下列 AWS CLI 命令,為 的接受輸入欄位產生具有空白值的 JSONupdate-user-pool
。然後,您可以使用使用者集區中的現有值填入這些欄位。
aws cognito-idp update-user-pool --generate-cli-skeleton --output json
執行以下命令,為應用程式用戶端產生相同的 JSON 物件。
aws cognito-idp update-user-pool-client --generate-cli-skeleton --output json