LoginSignup
3
2

More than 5 years have passed since last update.

RubyでAWS Cognito UserPoolにユーザを登録

Posted at

参考

ほとんど同じ方法でできたが、こちらが約2年前の記事であること、他に参考になる記事があまり見当たらないことから少しは意味があるかなと思いメモしておく。

IAMユーザ

プリセットポリシーの AmazonCognitoDeveloperAuthenticatedIdentities を当てたユーザを作成。

  • アクセスキー
  • シークレットキー

を発行し確認。

Cognito ユーザプール作成

AWSコンソールのAmazon Cognitoからユーザプールを デフォルトを確認する から作成。

続いて作成したユーザプールの アプリクライアントの追加 からアプリクライアントを追加する。
クライアントシークレットを作成 のチェックは外しておく。

アプリクライアントを追加すると アプリクライアントID を見れるようになるので確認。

デモ

Dockerでデモを行った。
RubyのAlpineコンテナを使う。

docker run -ti ruby:2.5.3-alpine sh

ここからコンテナ内での操作になる。
エディタがないので、とりあえずvimを入れる。

docker
apk add -U vim

credential.yml ファイルを作る。

docker
vi credential.yml

下のような内容で保存。

credential.yml
access_key_id: xxxxxxxxxxxxxx
region: ap-northeast-1
secret_access_key: xxxxxxxxxxxxxxxxxxxxxxx
client_id: xxxxxxxxxxxxxxxxxxx

念の為警告だが、間違ってもGitHubに上げたりしないこと。
本番環境では環境変数で読み込むべきだろう。

AWS Ruby SDKを入れる。

docker
gem install aws-sdk

参考元では aws-sdk-core を用いているが、こちらでは動作させることができなかった。

準備が整ったのでirbでCognitoを叩いていく。

docker
irb

まずは aws-sdk を読み込む。

docker/irb
> require 'aws-sdk'

続いて先程のyamlファイルを読み込む。

> require 'yaml'
> props = YAML.load(File.read('./credentials.yml'))

clientインスタンスを作成。

docker/irb
> client = Aws::CognitoIdentityProvider::Client.new(region: props['region'], access_key_id: props['access_key_id'], secret_access_key: props['secret_access_key'])

ユーザ登録する。

docker/irb
> client.sign_up({client_id: props['client_id'], username: 'test', password: 'Pass_w0rd', user_attributes: [{name: "email", value: "sample@example.com"}, {name: "nickname", value: "example"}], validation_data: [],})

AWSコンソールをリロードするとユーザが追加されているのが確認できる。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2