Amazon Cognito のインポートプロセスにおける一般的なエラーをトラブルシューティングするにはどうすればよいですか?

所要時間2分
0

Amazon Cognito のインポートプロセスにおける一般的なエラーをトラブルシューティングしたいと考えています。

簡単な説明

Amazon Cognito のインポートプロセスに関連する一般的なエラーは次のとおりです。

ユーザー移行 AWS Lambda トリガーのインポートエラー:

  • AccessDeniedException
  • UserCodeSyntaxError
  • ResourceNotFoundException
  • ImportModuleError

CSV ファイルのインポートエラー:

  • Unexpected headers」(予期しないヘッダー)
  • Failed/skipped user」(失敗/スキップされたユーザー)
  • Import job expired」(インポートジョブの有効期限が切れました)
  • Invalid attribute value」(無効な属性値)
  • CloudWatch Logs role missing permission」(CloudWatch Logs のロールに許可がありません)

解決方法

CSV ファイルまたは Lambda トリガーを使用して Amazon Cognito にインポートすると、エラーは Amazon CloudWatch Logs にログ記録されます。AWS アカウントでこれらのエラーを参照および検索します。

ユーザー移行 Lambda トリガーのインポートエラー

AccessDeniedException」:

このエラーは、Amazon Cognito アクションを実行するための AWS Identity and Access Management (IAM) 許可が Lambda ロールに付与されていない場合にログ記録されます。例えば、AdminInitiateAuth です。「AccessDeniedException」エラーは次のように表示されます。

An error occurred (AccessDeniedException) when calling the AdminInitiateAuth operation: User: arn:aws:sts::ACCOUNT_ID:assumed-role/TestingMigration-role/TestingMigration is not authorized to perform: cognito-idp:AdminInitiateAuth on resource: arn:aws:cognito-idp:eu-central-1:ACCOUNT_ID:userpool/eu-central-1_YYYYOOOO
    because no identity-based policy allows the cognito-idp:AdminInitiateAuth action

AccessDeniedException」エラーを解決するには、次を実行します。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで [Roles] (ロール) を選択し、Lambda 実行ロールを検索します。
  3. IAM ロールの [Permissions] (許可) タブを選択します。
  4. 許可ポリシーを展開して、ユーザーに関連付けられている許可を表示します。
  5. 次のパラメータがポリシーに含まれていることを確認してください。
    cognito-idp:AdminInitiateAuth ([Actions] (アクション) リスト内)
    [Effect] (効果) に [Allow] (許可)。
  6. ポリシーにこのパラメータが含まれていない場合は、ポリシーを更新してこれらを含めます。
    -または-
    パラメータに従う新しいポリシーを作成し、そのポリシーを IAM ロールにアタッチします。詳細については、「カスタマー管理ポリシーの編集 (コンソール)」を参照してください。

UserCodeSyntaxError」:

このエラーは、Lambda コードにコードの問題が見つかった場合にログ記録されます。例えば、インデントの問題です。

UserCodeSyntaxError」エラーは次のように表示されます。

[ERROR] Runtime.UserCodeSyntaxError: Syntax error in module 'lambda_function': unexpected indent

このエラーを解決するには、コード内の正しい構文の使用方法を確認してください。

ResourceNotFoundException」:

このエラーは、Lambda コードで参照されているリソースが AWS アカウントまたは AWS リージョンで見つからない場合にログ記録されます。例えば、Amazon Cognito アプリクライアントです。

ResourceNotFoundException」エラーは次のように表示されます。

[ERROR] ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the AdminInitiateAuth operation: User pool client 52rXXXXXXXXXXXXXXXXXXge does not exist.

このエラーを解決するには、問題のリソースが AWS アカウントおよびリージョンに存在することを確認します。その後、Lambda コードで、ID、名前、または Amazon リソースネーム (ARN) が正しく指定されていることを確認します。

ImportModuleError」:

このエラーは、Lambda コードに存在しないモジュールをインポートまたは参照しようとしたときにログ記録されます。

ImportModuleError」エラーは次のように表示されます。

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named lambda_function

このエラーを解決するには、コードでインポートしようとしているモジュールに入力ミスや存在しないモジュール参照が含まれていないことを確認します。

CSV ファイルのインポートエラー

Unexpected headers」(予期しないヘッダー):

このエラーは、CSV ファイルに指定されたヘッダーがないか、または正しくフォーマットされていないという問題がある場合にログ記録されます。

Unexpected headers」(予期しないヘッダー) エラーは次のように表示されます。

The header in the CSV file does not match the expected headers. Use the GetCSVHeader API to get the expected headers.

このエラーを解決するには、次を実行します。

次のコマンドを実行して、正しいヘッダーのリストを取得します。USER_POOL_ID は、ユーザーをインポートするユーザープールです。

aws cognito-idp get-csv-header --user-pool-id "USER_POOL_ID"

Amazon Cognito コンソールを使用して CSV ファイルのヘッダーをダウンロードすることもできます。詳細については、「.csv ファイルヘッダーのダウンロード (コンソール)」を参照してください。

Failed or skipped user」(失敗したユーザーまたはスキップされたユーザー)

このエラーは、重複ユーザー参照の問題がある場合や、CSV ファイルに必須フィールドがない場合にログ記録されます。例えば、email_verified または cognito:mfa_enabled です。

Failed or skipped user」(失敗したユーザーまたはスキップされたユーザー) エラーは次のように表示されます。

Too many users have failed or been skipped during the import.

このエラーを解決するには、必ず CSV ファイルから重複ユーザーを削除し、必須属性が指定されていることを確認してください。詳細については、「ユーザーインポート .csv ファイルの作成」を参照してください。

Import job expired」(インポートジョブの有効期限が切れました):

このエラーは、ジョブを作成したときにログ記録されます、ただし、24~48 時間以内にジョブを開始しないでください。

Import job expired」(インポートジョブの有効期限が切れました) エラーは次のように表示されます。

The user import job has expired.

この問題を解決するには、次のコマンドを実行してユーザーインポートジョブを開始します。

aws cognito-idp start-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"

Amazon Cognito コンソールを使用してジョブを開始することもできます。詳細については、「.csv ファイルからのユーザーのインポート (コンソール)」を参照してください。

注: アカウントごとに一度にアクティブにできるインポートジョブは 1 つだけです。

Invalid attribute value」(無効な属性値):

このエラーは、CSV ファイルの属性に無効な値が指定されていることを示します。

Invalid Attribute value」(無効な属性値) エラーは次のように表示されます。

The User Record contains an invalid value for [attribute].

この問題を解決するには、属性に指定されている値を確認します。電話番号の適切な形式など、属性値の詳細については、「ユーザープール属性」を参照してください。

CloudWatch Logs role missing permission」(CloudWatch Logs のロールに許可がありません):

このエラーは、CSV インポートプロセスのために指定された CloudWatch Logs ロールに次のいずれかの問題があることを示しています。

  • ロググループやストリームの作成などの許可がない。
  • プリンシパルとの信頼関係ポリシーが無効である。

CloudWatch Logs role missing permission」(CloudWatch Logs のロールに許可がありません) というエラーは次のように表示されます。

設定された CloudWatch Logs ロールに許可がないか、信頼ポリシーが無効です。

この問題を解決するには、CloudWatch アクションのために ID 許可が付与されていることを確認してください。また、cognito-idp.amazonaws.com が信頼関係ポリシーでサービスプリンシパルとして許可されていることを確認します。詳細については、「CloudWatch Logs IAM ロールの作成」を参照してください。


AWS公式
AWS公式更新しました 1年前