参考
ほとんど同じ方法でできたが、こちらが約2年前の記事であること、他に参考になる記事があまり見当たらないことから少しは意味があるかなと思いメモしておく。
IAMユーザ
プリセットポリシーの AmazonCognitoDeveloperAuthenticatedIdentities
を当てたユーザを作成。
- アクセスキー
- シークレットキー
を発行し確認。
Cognito ユーザプール作成
AWSコンソールのAmazon Cognitoからユーザプールを デフォルトを確認する
から作成。
続いて作成したユーザプールの アプリクライアントの追加
からアプリクライアントを追加する。
クライアントシークレットを作成
のチェックは外しておく。
アプリクライアントを追加すると アプリクライアントID
を見れるようになるので確認。
デモ
Dockerでデモを行った。
RubyのAlpineコンテナを使う。
docker run -ti ruby:2.5.3-alpine sh
ここからコンテナ内での操作になる。
エディタがないので、とりあえずvimを入れる。
apk add -U vim
credential.yml
ファイルを作る。
vi credential.yml
下のような内容で保存。
access_key_id: xxxxxxxxxxxxxx
region: ap-northeast-1
secret_access_key: xxxxxxxxxxxxxxxxxxxxxxx
client_id: xxxxxxxxxxxxxxxxxxx
念の為警告だが、間違ってもGitHubに上げたりしないこと。
本番環境では環境変数で読み込むべきだろう。
AWS Ruby SDKを入れる。
gem install aws-sdk
参考元では aws-sdk-core
を用いているが、こちらでは動作させることができなかった。
準備が整ったのでirbでCognitoを叩いていく。
irb
まずは aws-sdk
を読み込む。
> require 'aws-sdk'
続いて先程のyamlファイルを読み込む。
> require 'yaml'
> props = YAML.load(File.read('./credentials.yml'))
clientインスタンスを作成。
> client = Aws::CognitoIdentityProvider::Client.new(region: props['region'], access_key_id: props['access_key_id'], secret_access_key: props['secret_access_key'])
ユーザ登録する。
> 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コンソールをリロードするとユーザが追加されているのが確認できる。