Amazon Cognito
開発者ガイド

Amazon Cognito ユーザープールインポートジョブを作成し実行する

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

Amazon Cognito コンソールを使用した、.csv ファイルからのユーザーのインポート

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

Amazon Cognito コンソールを使用して、.csv ファイルからユーザーをインポートするには

  1. [インポートジョブの作成] を選択します。

  2. [ジョブ名] を入力します。ジョブ名には大文字と小文字 (a ~ z、A ~ Z)、番号 (0 ~ 9)、および特殊文字 (+ = , . @ -) を含めることができます。

  3. 初めてユーザーインポートジョブを作成する場合、AWS マネジメントコンソール は自動的に IAM ロールを作成します。それ以外の場合、[IAM ロール] リストから既存ロールを選択するか、AWS マネジメントコンソール によって自動的に新しいロールが作成されます。

  4. [CSV のアップロード] を選択し、ユーザーのインポート元の .csv ファイルを選択します。

  5. [Create job] を選択します。

  6. ジョブを開始するには、[開始] を選択します。

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 には、次のとおり受け取ったロール ARN を指定します: CloudWatch Logs IAM ロールの作成:

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 を示す次のような値が見つかります。

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

  • 「保留中」 - 準備中の状態です。ジョブを開始しましたが、まだユーザーのインポートは開始していません。

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

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

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

  • 「成功」 - ジョブは正常に完了しました。

  • 「失敗」 - エラーのためジョブは停止しました。

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

.csv ファイルのアップロード

ユーザーデータが記録されている .csv ファイルをアップロードするには、curl コマンドの応答から取得した署名付き URL に、次のように create-user-import-job コマンドを使用します。

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 } }