Ruby를 사용하여 Cognito UserPool에 사용자 등록
11216 단어 CognitoUserPoolsaws-sdk루비cognitoAWS
예를 들어 Ruby로 할 경우라든지 어떻게 하면 에에넨! 라고 생각하면서, 좀처럼 예가 나오지 않았기 때문에 해 보았다.
그 기록.
UserPools 설정
Step by step으로 쓰는 것은 귀찮았으므로 결과만 붙여 둡니다.

특히 Apps 부분의 'CognitoSampleApp'은 'Generate client secret'의 선택을 취소했습니다.

Cognito 작업을 위한 IAM 사용자 만들기
그런 다음 AWS SDK를 사용한 Cognito 작업을 위해 IAM 사용자를 생성합니다.
이 사용자에게 AmazonCognitoPowerUser 정책을 할당합니다.
Ruby를 이용한 사용자 등록
소개
AWS SDK for Ruby (Version 2)를 사용하여 실제로 등록해 보았습니다.
시험이라고 하는 것으로, irb를 사용해 자쿠로 해 보았다.
irb(main):001:0> require 'aws-sdk-core'
=> true
설정에 관해서는 YAML 파일을 준비해 두었다.
내용적으로는, 상기에서 준비한 사용자의 ACCESS KEY 정보(access_key_id, secret_access_key), Cognito의 리전(region), 설정한 어플리케이션의 클라이언트 ID(client_id) 등.
Cognito에서 설정한 애플리케이션의 클라이언트 ID(client_id)는 Apps 설정을 참조하십시오. (검은 도장으로 지운 부분)

irb에서는 다음과 같이 읽습니다.
irb(main):002:0> require 'yaml'
=> true
irb(main):003:0> props = YAML.load(File.read('./credentials.yml'))
=> {"region"=>"us-east-1", "access_key_id"=>"ACCESS_KEY", "secret_access_key"=>"SECRET_ACCESS_KEY", "client_id"=>"xxxxxxxxxxxxxxxxxxxxxxxxxx"}
Sign up(사용자 등록)
CognitoIdentityProvider의 Client를 작성합니다.
irb(main):004:0> client = Aws::CognitoIdentityProvider::Client.new(
irb(main):005:1* region: props['region'],
irb(main):006:1* access_key_id: props['access_key_id'],
irb(main):007:1* secret_access_key: props['secret_access_key'],
irb(main):008:1* )
=> #<Aws::CognitoIdentityProvider::Client>
Sign up으로 사용자를 만듭니다.
이 때, username
는 UserPool의 설정으로 attribute와는 다른 것이므로 주의.
attribute로 선택한 것은 「 user_attributes
」에 key-value의 형식으로 지정해 갑니다.
irb(main):009:0> resp = client.sign_up({
irb(main):010:2* client_id: props['client_id'],
irb(main):011:2* username: "sampleuser",
irb(main):012:2* password: "SamplePassw0rd!",
irb(main):013:2* user_attributes: [
irb(main):014:2* {
irb(main):015:2* name: "email",
irb(main):016:2* value: "[email protected]"
irb(main):017:2* },
irb(main):018:2* {
irb(main):019:2* name: "nickname",
irb(main):020:2* value: "samplenickname"
irb(main):021:2* }
irb(main):022:2* ],
irb(main):023:2* validation_data: [],
irb(main):024:2* })
=> #<struct Aws::CognitoIdentityProvider::Types::SignUpResponse user_confirmed=false, code_delivery_details=#<struct Aws::CognitoIdentityProvider::Types::CodeDeliveryDetailsType destination="s***@e***.com", delivery_medium="Email", attribute_name="email">>
이 시점에서 user_attributes의 email에 지정한 이메일 주소로 아래와 같은 이메일이 도착합니다.

이 이메일에 나열된 코드를 사용하여 확인합니다.
Sign up 직후의 UserPool 상태
여기에서 UserPool의 내용을 한 번 확인합니다.

위와 같이 사용자가 추가되었음을 알 수 있습니다.
또한 Username 링크를 클릭하면 다음과 같은 정보를 볼 수 있습니다.

"email_verified false"가 되어 있어, 아직 메일로 통지된 확인 코드에 의한 인증이 끝나지 않은 상태입니다.
확인 코드 등록
이메일 통지된 확인 코드(confirmation_code)를 사용하여 등록을 완료합니다.
irb(main):025:0> resp = client.confirm_sign_up({
irb(main):026:2* client_id: props['client_id'],
irb(main):027:2* username: "sampleuser",
irb(main):028:2* confirmation_code: "706183", #enter the verification code on email
irb(main):029:2* force_alias_creation: false,
irb(main):030:2* })
=> #<struct Aws::CognitoIdentityProvider::Types::AddCustomAttributesResponse>
확인이 완료되었습니다.
확인 코드 등록 완료 직후의 UserPool 상태
UserPool의 내용을 확인합니다.

Status가 Confirmed로 변경되었습니다.
추가 Username 링크를 클릭하고 자세한 정보를 찾습니다.

"email_verified true"로 설정되어 확인이 완료되었음을 알 수 있습니다.
Reference
이 문제에 관하여(Ruby를 사용하여 Cognito UserPool에 사용자 등록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yosi-q/items/4b3b2cc4ae82d0b41390
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
그런 다음 AWS SDK를 사용한 Cognito 작업을 위해 IAM 사용자를 생성합니다.
이 사용자에게 AmazonCognitoPowerUser 정책을 할당합니다.
Ruby를 이용한 사용자 등록
소개
AWS SDK for Ruby (Version 2)를 사용하여 실제로 등록해 보았습니다.
시험이라고 하는 것으로, irb를 사용해 자쿠로 해 보았다.
irb(main):001:0> require 'aws-sdk-core'
=> true
설정에 관해서는 YAML 파일을 준비해 두었다.
내용적으로는, 상기에서 준비한 사용자의 ACCESS KEY 정보(access_key_id, secret_access_key), Cognito의 리전(region), 설정한 어플리케이션의 클라이언트 ID(client_id) 등.
Cognito에서 설정한 애플리케이션의 클라이언트 ID(client_id)는 Apps 설정을 참조하십시오. (검은 도장으로 지운 부분)

irb에서는 다음과 같이 읽습니다.
irb(main):002:0> require 'yaml'
=> true
irb(main):003:0> props = YAML.load(File.read('./credentials.yml'))
=> {"region"=>"us-east-1", "access_key_id"=>"ACCESS_KEY", "secret_access_key"=>"SECRET_ACCESS_KEY", "client_id"=>"xxxxxxxxxxxxxxxxxxxxxxxxxx"}
Sign up(사용자 등록)
CognitoIdentityProvider의 Client를 작성합니다.
irb(main):004:0> client = Aws::CognitoIdentityProvider::Client.new(
irb(main):005:1* region: props['region'],
irb(main):006:1* access_key_id: props['access_key_id'],
irb(main):007:1* secret_access_key: props['secret_access_key'],
irb(main):008:1* )
=> #<Aws::CognitoIdentityProvider::Client>
Sign up으로 사용자를 만듭니다.
이 때, username
는 UserPool의 설정으로 attribute와는 다른 것이므로 주의.
attribute로 선택한 것은 「 user_attributes
」에 key-value의 형식으로 지정해 갑니다.
irb(main):009:0> resp = client.sign_up({
irb(main):010:2* client_id: props['client_id'],
irb(main):011:2* username: "sampleuser",
irb(main):012:2* password: "SamplePassw0rd!",
irb(main):013:2* user_attributes: [
irb(main):014:2* {
irb(main):015:2* name: "email",
irb(main):016:2* value: "[email protected]"
irb(main):017:2* },
irb(main):018:2* {
irb(main):019:2* name: "nickname",
irb(main):020:2* value: "samplenickname"
irb(main):021:2* }
irb(main):022:2* ],
irb(main):023:2* validation_data: [],
irb(main):024:2* })
=> #<struct Aws::CognitoIdentityProvider::Types::SignUpResponse user_confirmed=false, code_delivery_details=#<struct Aws::CognitoIdentityProvider::Types::CodeDeliveryDetailsType destination="s***@e***.com", delivery_medium="Email", attribute_name="email">>
이 시점에서 user_attributes의 email에 지정한 이메일 주소로 아래와 같은 이메일이 도착합니다.

이 이메일에 나열된 코드를 사용하여 확인합니다.
Sign up 직후의 UserPool 상태
여기에서 UserPool의 내용을 한 번 확인합니다.

위와 같이 사용자가 추가되었음을 알 수 있습니다.
또한 Username 링크를 클릭하면 다음과 같은 정보를 볼 수 있습니다.

"email_verified false"가 되어 있어, 아직 메일로 통지된 확인 코드에 의한 인증이 끝나지 않은 상태입니다.
확인 코드 등록
이메일 통지된 확인 코드(confirmation_code)를 사용하여 등록을 완료합니다.
irb(main):025:0> resp = client.confirm_sign_up({
irb(main):026:2* client_id: props['client_id'],
irb(main):027:2* username: "sampleuser",
irb(main):028:2* confirmation_code: "706183", #enter the verification code on email
irb(main):029:2* force_alias_creation: false,
irb(main):030:2* })
=> #<struct Aws::CognitoIdentityProvider::Types::AddCustomAttributesResponse>
확인이 완료되었습니다.
확인 코드 등록 완료 직후의 UserPool 상태
UserPool의 내용을 확인합니다.

Status가 Confirmed로 변경되었습니다.
추가 Username 링크를 클릭하고 자세한 정보를 찾습니다.

"email_verified true"로 설정되어 확인이 완료되었음을 알 수 있습니다.
Reference
이 문제에 관하여(Ruby를 사용하여 Cognito UserPool에 사용자 등록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yosi-q/items/4b3b2cc4ae82d0b41390
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
irb(main):001:0> require 'aws-sdk-core'
=> true
irb(main):002:0> require 'yaml'
=> true
irb(main):003:0> props = YAML.load(File.read('./credentials.yml'))
=> {"region"=>"us-east-1", "access_key_id"=>"ACCESS_KEY", "secret_access_key"=>"SECRET_ACCESS_KEY", "client_id"=>"xxxxxxxxxxxxxxxxxxxxxxxxxx"}
irb(main):004:0> client = Aws::CognitoIdentityProvider::Client.new(
irb(main):005:1* region: props['region'],
irb(main):006:1* access_key_id: props['access_key_id'],
irb(main):007:1* secret_access_key: props['secret_access_key'],
irb(main):008:1* )
=> #<Aws::CognitoIdentityProvider::Client>
irb(main):009:0> resp = client.sign_up({
irb(main):010:2* client_id: props['client_id'],
irb(main):011:2* username: "sampleuser",
irb(main):012:2* password: "SamplePassw0rd!",
irb(main):013:2* user_attributes: [
irb(main):014:2* {
irb(main):015:2* name: "email",
irb(main):016:2* value: "[email protected]"
irb(main):017:2* },
irb(main):018:2* {
irb(main):019:2* name: "nickname",
irb(main):020:2* value: "samplenickname"
irb(main):021:2* }
irb(main):022:2* ],
irb(main):023:2* validation_data: [],
irb(main):024:2* })
=> #<struct Aws::CognitoIdentityProvider::Types::SignUpResponse user_confirmed=false, code_delivery_details=#<struct Aws::CognitoIdentityProvider::Types::CodeDeliveryDetailsType destination="s***@e***.com", delivery_medium="Email", attribute_name="email">>
irb(main):025:0> resp = client.confirm_sign_up({
irb(main):026:2* client_id: props['client_id'],
irb(main):027:2* username: "sampleuser",
irb(main):028:2* confirmation_code: "706183", #enter the verification code on email
irb(main):029:2* force_alias_creation: false,
irb(main):030:2* })
=> #<struct Aws::CognitoIdentityProvider::Types::AddCustomAttributesResponse>
Reference
이 문제에 관하여(Ruby를 사용하여 Cognito UserPool에 사용자 등록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yosi-q/items/4b3b2cc4ae82d0b41390텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)