ここでは、CloudFormationを用いて、Cognitoユーザを作成する方法について紹介します。まず、CognitoのユーザプールやFederatred Identitiesの作成方法については、多く情報が見るかるので、今回は省略することにします。
目次
前提条件
ここでは、他のCloudFormationのスタックでこれらのユーザ認証に必要なCognitoのコンポーネントについては既に作成されており、ユーザプールのIDがCognitoUserPoolIdという名前で取得できるものとします。
CloudFormationのスクリプトについて
今回、既に作成されているユーザプールに、新たにユーザとグループを作成し、さらに、作成したユーザを作成したグループのメンバーとして所属させるスクリプトを作成します。
Cognitoユーザ作成のスクリプト
Cognitoユーザを作成する場合は、次のようなスクリプトを作成します。
# Cognito Admin User CognitoAdminUser: Type: AWS::Cognito::UserPoolUser Properties: Username: admin UserPoolId: !ImportValue CognitoUserPoolId # 他のスタックでエクスポートされた値を読み込む UserAttributes: - Name: email Value: admin@example.com # 実際のメールアドレスに置き換え
Cognitoグループ作成のスクリプト
Cognitoグループを作成する場合は、次のようなスクリプトを作成します。
# Cognito Admin Group CognitoAdminGroup: Type: AWS::Cognito::UserPoolGroup Properties: GroupName: admin UserPoolId: !ImportValue CognitoUserPoolId # 他のスタックでエクスポートされた値を読み込む
Cognitoユーザ・グループ関連付け
Cognitoでユーザとグループを関連づける場合、次のようなスクリプトを作成します。
# Attach user with group CognitoAdminUserToAdminGroupAttachment: Type: AWS::Cognito::UserPoolUserToGroupAttachment Properties: UserPoolId: !ImportValue CognitoUserPoolId # 他のスタックでエクスポートされた値を読み込む GroupName: !Ref CognitoAdminGroup Username: !Ref CognitoAdminUser
今回のポイント
今回のポイントは、ユーザ作成の部分にあります。なぜなら、このスクリプトのように(受信可能な)メールアドレスを設定することで、自動的にCognitoが一時パスワードを作成し、登録されたメールアドレスに一時パスワードを送信してくれます。
これを行うことで、環境構築後にWebコンソールを活用してユーザ作成する作業は必要なくなります。