Amazon Cognito ユーザープールのインポートジョブの作成と実行 - Amazon Cognito

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

Amazon Cognito ユーザープールのインポートジョブの作成と実行

このセクションは、Amazon Cognito コンソールおよび AWS Command Line Interface (AWS CLI) を使用してユーザープールのインポートジョブを作成し、実行する方法を説明します。

CSV ファイルからのユーザーのインポート (コンソール)

次の手順は、CSV ファイルからユーザーをインポートする方法について説明します。

CSV ファイルからユーザーをインポートするには (コンソール)
  1. Amazon Cognito コンソールに移動します。AWS 認証情報を求められる場合があります。

  2. [User Pools] (ユーザープール) を選択します。

  3. リストから存在するユーザープールを 1 つ選択します。

  4. [Users] (ユーザー) タブを選択します。

  5. [Import users] (ユーザーのインポート) セクションで、[Create an import job] (インポートジョブの作成) を選択します。

  6. [Create import job] (インポートジョブの作成) ページで、ジョブ名を入力します。

  7. [Create a new IAM role] (新しい IAM ロールの作成)、または[Use an existing IAM role] (既存のロールを使用する) を選択します。

    1. [Create a new IAM role] (新しい IAM ロールの作成) を選択した場合は、新しいロールの名前を入力します。Amazon Cognito は、正しいアクセス許可と信頼関係を持つロールを自動的に作成します。インポートジョブを作成する IAM プリンシパルに、IAM ロールを作成するアクセス許可が必要です。

    2. [Use an existing IAM role] (既存の IAM ロールを使用する) を選択した場合は、[IAM role selection] (IAM ロール選択) のリストからロールを選択します。このロールには、CloudWatch Logs IAM ロールの作成 で説明されているアクセス許可と信頼ポリシーが必要です。

  8. [Create job] (ジョブの作成) を選択してジョブを送信しますが、後で開始します。[Create and start job] (ジョブを作成して開始) を選択してジョブを送信し、すぐに開始します。

  9. ジョブを作成したが開始しなかった場合は、後で開始できます。[Users] (ユーザー) タブの [Import users] (ユーザーのインポート) で、インポートジョブを選択し、[Start] (開始) を選択します。また、AWS SDK から StartUserImportJob API リクエストを送信することもできます。

  10. ユーザーインポートジョブの進行状況は、[Import users] (ユーザーのインポート) の [Users] (ユーザー) タブで監視します。ジョブが成功しない場合は、[Status] (ステータス) 値を選択できます。詳細については、[View the CloudWatch logs for more details] (詳細については CloudWatch ログを表示する) を選択して、CloudWatch ログコンソールで問題がないか確認してください。

ユーザーのインポート (AWS CLI)

ユーザープールにユーザーをインポートするには、次の CLI コマンドが使用できます:

  • create-user-import-job

  • get-csv-header

  • describe-user-import-job

  • list-user-import-jobs

  • start-user-import-job

  • stop-user-import-job

これらのコマンドに関するコマンドラインオプションのリストを取得するには、help コマンドラインオプションを使用します。次に例を示します。

aws cognito-idp get-csv-header help

ユーザーインポートジョブの作成

CSV ファイルを作成した後、次の CLI コマンドを使用してユーザーインポートジョブを作成します。[JOB_NAME] にはジョブに付ける名前を指定します。[USER_POOL_ID] には以前と同じユーザープール ID を指定します。[ROLE_ARN] には、CloudWatch Logs IAM ロールの作成 で次のとおり受け取ったロール ARN を指定します。

aws cognito-idp create-user-import-job --job-name "JOB_NAME" --user-pool-id "USER_POOL_ID" --cloud-watch-logs-role-arn "ROLE_ARN"

レスポンスで返される PRE_SIGNED_URL は 15 分間有効です。この時間以後は無効になり、新規のユーザーインポートジョブを作成して新しい URL を取得し直す必要があります。

例 レスポンス例:
{ "UserImportJob": { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl": "PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

ユーザーインポートジョブのステータス値

ユーザーインポートのコマンドに対する応答には、Status を示す次のような値が見つかります。

  • Created - ジョブが作成されましたが、開始前の状態です。

  • Pending - 遷移状態です。ジョブを開始しましたが、まだユーザーのインポートは開始していません。

  • InProgress - ジョブが開始され、ユーザーインポートが進行中です。

  • Stopping - ジョブを停止する処理中です。ユーザーインポートは停止していません。

  • Stopped - ジョブは停止中で、ユーザーインポートも停止しています。

  • Succeeded - ジョブは正常に完了しました。

  • Failed - エラーのためジョブは停止しました。

  • Expired - ジョブを作成しましたが、24 ~ 48 時間以内にジョブを起動しませんでした。ジョブに関連付けられたすべてのデータは削除され、ジョブを開始することはできません。

CSV ファイルのアップロード

以下の curl コマンドを使用して、ユーザーデータが含まれる CSV ファイルを create-user-import-job コマンドのレスポンスから取得した事前署名済みの URL にアップロードします。

curl -v -T "PATH_TO_CSV_FILE" -H "x-amz-server-side-encryption:aws:kms" "PRE_SIGNED_URL"

このコマンドの出力から、次のようなメッセージを見つけます: "We are completely uploaded and fine" このメッセージは、ファイルが正常にアップロードされたことを示します。

ユーザーインポートジョブの説明

ユーザーインポートジョブの説明を取得するには、次のコマンドを使用します。USER_POOL_ID はユーザープール ID です。JOB_ID は、ユーザーインポートジョブの作成時に返されたジョブ ID です。

aws cognito-idp describe-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
例 レスポンス例:
{ "UserImportJob": { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl": "PRE_SIGNED_URL", "CloudWatchLogsRoleArn":"ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

前述の例の出力では、PRE_SIGNED_URL は CSV のアップロード先の URL です。ROLE_ARN は、ロールの作成時に受け取った CloudWatch Logs ロール ARN です。

ユーザーインポートジョブを表示する

ユーザーインポートジョブを一覧表示するには、次のコマンドを使用します:

aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 2
例 レスポンス例:
{ "UserImportJobs": [ { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn":"ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 }, { "CompletionDate": 1470954227.701, "StartDate": 1470954226.086, "Status": "Failed", "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "SkippedUsers": 0, "JobName": "JOB_NAME", "CompletionMessage": "Too many users have failed or been skipped during the import.", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn":"ROLE_ARN", "FailedUsers": 5, "CreationDate": 1470953929.313 } ], "PaginationToken": "PAGINATION_TOKEN" }

ジョブは時系列で、作成が最後から最初の順で表示されます。2 番目のジョブのあとの PAGINATION_TOKEN 文字列は、このリストコマンドについて、まだ結果が残っていることを示します。残りの結果を表示するには、次のように --pagination-token オプションを使用します:

aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 10 --pagination-token "PAGINATION_TOKEN"

ユーザーインポートジョブの開始

ユーザーインポートジョブを開始するには、次のコマンドを使用します:

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

インポートジョブは、アカウントごとに 1 つしかアクティブにできません。

例 レスポンス例:
{ "UserImportJob": { "Status": "Pending", "StartDate": 1470957851.483, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "SkippedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

ユーザーインポートジョブの停止

ユーザーインポートジョブの進行中に停止するには、次のコマンドを使用します。ジョブを停止すると、再開することはできません。

aws cognito-idp stop-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
例 レスポンス例:
{ "UserImportJob": { "CompletionDate": 1470958050.571, "StartDate": 1470958047.797, "Status": "Stopped", "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "SkippedUsers": 0, "JobName": "JOB_NAME", "CompletionMessage": "The Import Job was stopped by the developer.", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957972.387 } }