

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ユーザープールとアプリケーションクライアントの設定更新
<a name="cognito-user-pool-updating"></a>

ユーザープールまたはアプリケーションクライアントの設定を変更する場合は、Amazon Cognito コンソールで数回クリックすれば更新を適用できます。ユーザープール設定の機能ベースのタブを移動して、このガイドの他のエリアの説明に従ってフィールドを更新します。

多くの組織は、 のリソース AWS CloudFormation、 AWS SDKsまたは CDK 上に構築されたアプリケーション、およびその他のオートメーションソフトウェアをプログラムで管理しています。これがリソース管理モデルである場合は、リソースの変更を段階的に行うときに特に注意する必要があります。

API オペレーションの [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) および [ UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) は、既存のユーザープールまたはアプリケーションクライアントを更新します。それぞれに、次の API リファレンスの警告が表示されます: *属性の値を指定しない場合、Amazon Cognito はそれをデフォルト値に設定します。*1 つのパラメータのみを使用して更新リクエストを送信すると、Amazon Cognito はそのパラメータを選択した値に設定し、他のすべてのパラメータをデフォルト値に設定します。これにより、属性スキーマ、Lambda トリガー、E メールおよび SMS メッセージ設定などの設定をリセットできます。

さらに、ユーザープールまたはアプリケーションクライアントの作成後に一部の設定がロックされ、新しいリソースを作成しない限り変更することはできません。

**Topics**
+ [変更できない設定](#cognito-user-pool-updating-fixed-settings)
+ [SMS 設定](#cognito-user-pool-updating-sms)
+ [AWS SDK、 AWS CDK、または REST API を使用したユーザープールの更新](#cognito-user-pool-updating-api-cli)

## 変更できない設定
<a name="cognito-user-pool-updating-fixed-settings"></a>

ユーザープールを作成した後に、この設定を変更することはできません。以下の設定を変更する場合は、新しいユーザープールまたはアプリクライアントを作成する必要があります。

**注記**  
以前は、ユーザープールの名前を変更できませんでした。これは変更されました。ユーザープールに新しいわかりやすい名前を割り当てることができるようになりました。

**ユーザープール ID**  
API パラメータ名: [Id/UserPoolId](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html#CognitoUserPools-Type-UserPoolType-ID)  
ユーザープール ID (`us-east-1_EXAMPLE` など) は、Amazon Cognito によって自動生成され、変更できません。

**Amazon Cognito ユーザープールサインインオプション**  
API パラメータ名: [AliasAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AliasAttributes) と [UsernameAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-UsernameAttributes)  
ユーザーがサインインするときにユーザー名として渡すことができる属性。ユーザープールを作成するときに、ユーザー名、E メールアドレス、電話番号、または優先ユーザー名を使用してサインインを許可するかどうかを選択できます。ユーザープールサインインオプションを変更するには、新しいユーザープールを作成します。

**ユーザー名の大文字と小文字を区別する**  
API パラメータ名: [UsernameConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-UsernameConfiguration)  
大文字と小文字以外の別のユーザー名と一致するユーザー名を作成した場合、Amazon Cognito では同じユーザーまたは一意のユーザーとして扱うことができます。詳細については、「[ユーザープールの大文字と小文字の区別](user-pool-case-sensitivity.md)」を参照してください。大文字と小文字の区別を変更するには、新しいユーザープールを作成します。

**クライアントシークレット**  
API パラメータ名: [GenerateSecret](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-GenerateSecret)  
アプリクライアントを作成するときに、信頼されたソースだけがユーザープールにリクエストを送信できるように、クライアントシークレットを生成できます。詳細については、「[アプリケーションクライアントによるアプリケーション固有の設定](user-pool-settings-client-apps.md)」を参照してください。クライアントシークレットを変更するには、同じユーザープール内に新しいアプリクライアントを作成します。

**必須の属性**  
API パラメータ名: [Schema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema)  
ユーザーのサインアップ時または作成時に値を提供する必要がある属性。詳細については、「[ユーザー属性の操作](user-pool-settings-attributes.md)」を参照してください。必要な属性を変更するには、新しいユーザープールを作成します。

**カスタム属性 (削除)**  
API パラメータ名: [Schema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema)  
カスタム名を持つ属性です。ユーザーのカスタム属性の値を変更することはできますが、ユーザープールからカスタム属性を削除することはできません。詳細については、「[ユーザー属性の操作](user-pool-settings-attributes.md)」を参照してください。カスタム属性の最大数に達してリストを変更する場合は、新しいユーザープールを作成します。

## SMS 設定
<a name="cognito-user-pool-updating-sms"></a>

ユーザープールで SMS メッセージをアクティブ化した後は、それらを非アクティブ化できません。
+ ユーザープールの作成時に SMS メッセージを設定することを選択した場合、セットアップ完了後に SMS を非アクティブ化できません。
+ 作成したユーザープールで SMS メッセージをアクティブ化できますが、その後は SMS を非アクティブ化できません。
+ Amazon Cognito では、ユーザーアカウントの招待と復旧、属性の検証、多要素認証 (MFA) に SMS メッセージを使用できます。SMS メッセージをアクティブ化した後は、いつでも SMS メッセージでこれらの機能をオンまたはオフにできます。
+ SMS メッセージ設定には、Amazon SNS によるメッセージ送信を Amazon Cognito に委任する IAM ロールが含まれています。割り当てられたロールはいつでも変更できます。

## AWS SDK、 AWS CDK、または REST API を使用したユーザープールの更新
<a name="cognito-user-pool-updating-api-cli"></a>

Amazon Cognito コンソールでは、ユーザープールの設定を 1 つのパラメータずつ変更できます。例えば、Lambda トリガーを追加するには、**[Lambda トリガーを追加]** を選択し、関数とトリガーのタイプを選択します。Amazon Cognito ユーザープール API は、ユーザープールとアプリケーションクライアントの更新オペレーションに、ユーザープールのパラメータ一式が必要となるように構成されています。ただし、コンソールは他のユーザープール設定を使用して、この更新オペレーションを透過的に自動化します。

の他の場所での変更によって、変更する設定に関連しない AWS アカウント 更新でエラーが発生することがあります。例えば、削除された Amazon SES ID AWS WAFや IAM アクセス許可の変更。現在のパラメータの 1 つが無効になった場合、それを修正するまで設定を更新できません。このようなエラーが発生した場合は、エラー応答を調べ、言及されている設定を検証します。

[AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk)、[Amazon Cognito ユーザープール REST API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) および [AWS SDK](https://aws.amazon.com/developer/tools/) は、Amazon Cognito リソースの自動化とプログラムによる設定を行うためのツールです。これらのツールを使用したリクエストは、Amazon Cognito コンソールと同様に、リクエスト本文の完全なリソース設定で設定の更新を行う必要もあります。概要としては、以下のプロセスを実行する必要があります。

1. 既存のリソースの設定を記述するオペレーションから出力をキャプチャします。

1. 設定を変更して出力を変更します。

1. リソースを更新するオペレーションで、変更された設定を送信します。

次の手順で、[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) API オペレーションを使用して設定を更新します。入力フィールドが異なる同じアプローチが、[UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) に適用されます。

**重要**  
既存のパラメータの値を提供しない場合、Amazon Cognito はそれらをデフォルト値に設定します。例えば、既存の `LambdaConfig` がある場合に、空の `LambdaConfig` で `UpdateUserPool` を送信すると、すべての Lambda 関数のユーザープールトリガーへの割り当てが削除されます。ユーザープール設定の変更を自動化する場合は、適宜計画を立ててください。

1. [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html) を使用して、ユーザープールの既存の状態をキャプチャします。

1. `DescribeUserPool` の出力を `UpdateUserPool` の[リクエストパラメータ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#API_UpdateUserPool_RequestSyntax)と一致するようにフォーマットします。出力される JSON から次のトップレベルフィールドとその子オブジェクトを削除します。
   + `Arn`
   + `CreationDate`
   + `CustomDomain`
     + このフィールドを [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) API オペレーションを使用して更新します。
   + `Domain`
     + このフィールドを [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) API オペレーションを使用して更新します。
   + `EmailConfigurationFailure`
   + `EstimatedNumberOfUsers`
   + `Id`
   + `LastModifiedDate`
   + `Name`
   + `SchemaAttributes`
   + `SmsConfigurationFailure`
   + `Status`

1. 生成された JSON が `UpdateUserPool` の[リクエストパラメータ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#API_UpdateUserPool_RequestSyntax)と一致することを確認します。

1. 生成された JSON で変更するパラメータを変更します。

1. 変更した JSON をリクエスト入力として使用する `UpdateUserPool` API リクエストを送信します。

また、 AWS CLIの `update-user-pool` の `--cli-input-json` パラメータで、この修正した `DescribeUserPool` の出力を使用することもできます。

または、次の AWS CLI コマンドを実行して、 で受け入れられる入力フィールドの値が空白の JSON を生成します`update-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
```