Cognito

Add Custom Attributes in AWS Cognito User Pools with Console, CLI & API - Guide

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

AWSマネジメントコンソールでカスタム属性を追加する手順

AWS Cognitoのユーザープールにカスタム属性を追加する際、UI操作が最も直感的な方法です。ただし、リアルタイムでの反映やデータ型の制限など注意点も存在します。以下に具体的な手順とポイントを解説します。

コンソール経由でカスタム属性を追加すると、プール全体に自動的に適用されるため、個別ユーザーへの限定的な属性変更は不可です。AWSドキュメントによると、再作成が必須である場合もあれば不要な場合もあるため、実際の操作前に公式情報と比較する必要があります。

マネジメントコンソールはUI操作中心であり、手順が明確ですが、APIやCLIに比べて柔軟性が劣る点があります。特にデータ型や動的な属性反映には制限があるため、開発環境で検証を進める際の選択肢として考える必要があります。

手順: コンソールでのカスタム属性追加

  1. AWSコンソールから「Cognito」サービスを開き、「ユーザープールを作成する」を選択します。
  2. ユーザー名やメールアドレスなど基本属性を設定した後、「カスタム属性の選択...」をクリックします。
  3. 「カスタム属性の追加」ボタンを押し、属性名(例: attr01)とタイプ(文字列 or 数値)を選択します。

この方法ではブール値やDateTime型は利用不可であり、後述するAPI経由でしか定義できません。


注意点と制限事項

コンソールでの属性追加には以下の制約があります:

  • データ型の選択制限: 文字列と数値以外(例: booleandate-time)は利用不可です。
  • プール全体への反映: 属性変更はすべてのユーザーに自動的に適用されるため、個別設定が必要な場合はCLI/APIを使用してください。

blockquote: コンソール経由での属性変更が「プール全体に適用される」という点を理解してください。一部のユーザーにのみ反映させたい場合はCLIやAPIを使用する必要があります。


AWS CLIでカスタム属性を定義する方法

CLIコマンドを使うことで、スクリプト化やCI/CDに組み込みやすい柔軟性が得られます。ただし、既存プールへの変更には注意が必要です。

AWS CLIではcreate-user-pool-attributeコマンドを使ってカスタム属性を定義でき、JSON形式でスキーマを設定します。この方法は複数プールの一括処理や自動化スクリプトとの連携に適しています。

コマンド実行例

以下にCLIでの属性定義コマンドを示します:

この例ではcustomattr1customattr2という属性を定義しています。サポートされるデータ型は「String」「Number」「Boolean」「DateTime」です。


CLIの基本構文とパラメータ

CLIでのカスタム属性追加には以下の3要素が必要です:

  • --user-pool-id: ユーザープールID(事前に取得済み)
  • --schema-attributes: JSON形式で定義された属性リスト
  • create-user-pool-attributeコマンドの実行
キー 補足
Name customattr1 属性名(任意)
AttributeDataType String / Number / Boolean / DateTime データ型指定
DeveloperOnlyAttribute true / false 開発者専用属性を有効化

blockquote: 既存プールへの変更はupdate-user-pool-attributeコマンドで行う必要があります。この際、--schema-attributesに更新後のフルスキーマを指定する点に注意してください。


CreateUserPool APIによるプログラム型属性設定

APIを使用することで、自動化やCI/CDとの連携が容易になります。特に大規模なプール管理が必要な場合に有効です。

AWS SDKでCreateUserPoolまたはUpdateUserPool APIを呼び出すことで、カスタム属性をプログラム的に設定可能です。API経由ではコンソールやCLIに比べて柔軟性が高く、動的なスキーマ構築や大量プールの処理にも対応できます。

Pythonでの例

以下はboto3を使用してプールを作成しカスタム属性を定義するコードです:

この例ではcustom:agecustom:example_attrという2つのカスタム属性を定義しています。


APIリクエスト構造

CreateUserPool APIはJSON形式でリクエストされます。

blockquote: DeveloperOnlyAttributeをtrueに設定すると、この属性はUI経由でユーザーが編集できなくなります。開発者専用のデータが必要な場合に利用してください。


LambdaトリガーによるIDトークンへのカスタム属性反映

Lambdaトリガーは、特定のイベント発生時に自動的に実行される関数で、IDトークンにカスタム属性を含める重要な仕組みです。開発者による柔軟な処理が可能です。

PreTokenGenerationなどのトリガーイベントを使用することで、カスタム属性をIDトークンに反映できます。Lambdaトリガーは動的なデータ加工やビジネスロジックの実装に適しており、特にセキュリティ制御やパーソナライズが必要な場面で活用されます。

Node.jsでのLambda関数例

以下はPreTokenGenerationトリガーを処理するNode.jsコードです:

この関数は、ユーザーの属性情報からcustom:example_attrというカスタム属性を取得し、IDトークンに追加します。


Lambdaトリガーの手順と注意点

Lambdaトリガーを有効化するには以下のステップが必要です:

  1. Cognitoユーザープールを開き「トリガーセクション」へ移動
  2. 「PreTokenGeneration」イベントを選択し、「関数の選択」からLambda関数を指定します。
  3. Lambda関数のロールに適切なIAM権限を付与します(cognito-idp.amazonaws.comとの通信が必要)。

blockquote: IDトークンへの反映はLambdaトリガー経由のみです。コンソールやCLIで定義された属性が自動的に反映されることはありません。


重要注意事項

以下のようなポイントに留意してください:

  • データ型の整合性: IDトークンにはStringまたはBooleanなどのシンプルな形式しか受け付けられません。
  • 実行順序の考慮: 複数のトリガーが存在する場合、イベント発生時の実行順序を確認し、正しく処理されるように構成してください。
項目 内容
最大属性数 50項目まで(AWSドキュメント参照)
リアルタイム性 Lambdaトリガーは非同期実行のため、即時反映には注意

データ型と各手法の制限一覧

以下の表に、コンソール、CLI/API、Lambdaトリガーがそれぞれサポートするデータ型をまとめます:


まとめと比較

各手法の特徴を以下に整理します:

  • コンソール: 直感的だが柔軟性に欠ける、データ型が限定的
  • CLI/API: 自動化や大規模プール管理向け、複雑な処理にも対応
  • Lambdaトリガー: IDトークンへの反映は必須、開発者によるカスタマイズが可能

それぞれの用途に応じて適切に選択し、システム設計に活かしてください。---

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Cognito