Amazon Cognito 사용자 풀 가져오기 작업 생성 및 실행 - Amazon Cognito

Amazon Cognito 사용자 풀 가져오기 작업 생성 및 실행

이 섹션에서는 Amazon Cognito 콘솔과 AWS Command Line Interface를 사용하여 사용자 풀 가져오기 작업을 생성하고 실행하는 방법을 설명합니다.

.csv 파일에서 사용자 가져오기(콘솔)

다음 절차에서는 .csv 파일에서 사용자를 가져오는 방법을 설명합니다.

.csv 파일에서 사용자를 가져오려면(콘솔)

  1. [가져오기 작업 생성(Create import job)]을 선택합니다.

  2. [작업 이름(Job name)]을 입력합니다. 작업 이름에는 대문자 및 소문자(a~z, A~Z), 숫자(0~9) 및 + = , . @ - 등의 특수 문자를 사용할 수 있습니다.

  3. 사용자 가져오기 작업을 처음 생성하는 경우 AWS Management Console에서 IAM 역할이 자동으로 생성됩니다. 처음이 아닌 경우 [IAM 역할(IAM Role)] 목록에서 기존 역할을 선택하거나 AWS Management Console이 새 역할을 생성하도록 합니다.

  4. [CSV 업로드(Upload CSV)]를 선택한 다음, 가져올 사용자가 포함된 .csv 파일을 선택합니다.

  5. [Create job]을 선택합니다.

  6. 작업을 시작하려면 [시작(Start)]을 선택합니다.

사용자 가져오기(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_ARNCloudWatch Logs IAM 역할 생성(AWS CLI, API)에서 받은 역할 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" }

작업은 마지막으로 생성한 것부터 처음으로 생성한 것까지 시간순으로 나열됩니다. 두 번째 작업 다음에 있는 PAGINATION_TOKEN 문자열은 이 list 명령에 대한 추가 결과가 있음을 나타냅니다. 추가 결과를 나열하려면 다음과 같이 --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"

계정당 한 번에 하나의 가져오기 작업만 활성화할 수 있습니다.

예 샘플 응답:

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