Amazon Web Services ブログ
マネージドスキーマを使用して Amazon Cloud Directory 上でアプリケーションを迅速に開発する
この度、Amazon Cloud Directory がマネージドスキーマを使用して、アプリケーションを迅速に開発できるようになりました。マネージドスキーマを使うと、ディレクトリを作成して、それからオブジェクトの作成と検索をさらにすばやく開始できます。今回の立ち上げでは、QuickStartSchema という Cloud Directory マネージドスキーマが利用可能となっています。豊富な種類の階層データモデルを構築し、Amazon Cloud Directory の Typed Links などの構造を使用して、オブジェクト間の関係性を確立することができます。ひいては、階層をトラバースすることで、データ内の任意の情報をクエリすることができます。
Amazon Cloud Directoryでは、動的
ファセットという新しいスタイルのファセットも導入されています。これにより、ファセット内の属性を定義しなくても、アプリケーションを迅速にプロトタイプし、開始できるようになりました。アプリケーションのさらなる開発に際して、新しい属性を追加したり、属性に格納されている値をサポートされている他のデータ型へと後日変更したりすることが可能です。
Amazon Cloud Directory では、バリアント
という新しいデータ型も導入されています。バリアント
データ型として定義された属性の値を格納するには、Amazon Cloud Directory でサポートされているプリミティブデータ型のいずれかの値 (例えば、文字列
またはバイナリ
) を利用します。その後、属性の値を別のデータ型に変更することもできます。データ検証を強制されることはありません。
Amazon Cloud Directory は、QuickStartSchema
の 1 つのファセットを動的
スタイルとして定義しました。これにより、アプリケーションに必要な任意の数の属性を作成することが可能となります。このファセットを使用して任意の属性を作成すると、バリアント
データ型として作成されます。
のブログ記事では、学校のスポーツチームの生徒を追跡するアプリケーションを作成する方法を説明します。Amazon Cloud Directory と新しい QuickStartSchema
を使用します。生徒を 1 次元、そしてスポーツチームを 2 次元で作成します。生徒とチームの情報をディレクトリに追加し、データをクエリします。
このブログ記事の例では、Java コードを使用しています。AWS SDK に精通しており、Java ベースのコードを使って Amazon Cloud Directory のコード例を構築できるものとしましょう。この記事で示した概念を、Python や Ruby など他のプログラミング言語に適用してもらって結構です。
Amazon Cloud Directory マネージドスキーマを使って、すばやい開発を行う
スポーツチームのディレクトリアプリケーションを大急ぎで開発し、すぐに利用したいとします。階層をトラバースする階層データとクエリが必要です。生徒名やスポーツチーム名など、保存しているデータ型には所定の値が決まっていないため、Cloud Directory が提供するデータ型や制限を確認する作業は必要ありません静的ファセット。つまり私のニーズは、Amazon Cloud Directory QuickStartSchema
が提供する機能と一致しています。このスキーマでは、アプリケーションを開発し、階層クエリなどの Amazon Cloud Directory の機能を使用できます。このスキーマを使用することで、自分のディレクトリを直接作成することができるため、スキーマの作成や管理プロセス (以前のブログ記事で説明したスキーマのライフサイクル) にかかる時間と労力を節約できるのです。
アプリケーションは、サッカーやバドミントンなどの異なるスポーツチームのメンバーである生徒を追跡します。以下で、データモデルを示します。スポーツチームのメンバーである生徒を表すのに、Student pool
の下にシンプルな階層を作成しました。同様に、別の階層では、異なるスポーツチームが表されています。Typed Links を使って生徒とスポーツチームの関係性を確立します。
QuickStartSchema
と呼ばれるマネージドスキーマは、Cloud Directory のあらゆるお客様が利用でき、定数 ARN で直接参照することができます。
QuickStartSchema
内で、Cloud Directory は DynamicObjectFacet
という 1 つの動的ファセットを定義するようにしました。このファセットを用いて、NODE
、LEAF_NODE
または POLICY
型のオブジェクトを作成できます。私のアプリケーションでは、 StudentPool
を NODE
オブジェクトとして、また Jane
と Jim
をLEAF_NODE
オブジェクトとして作成することにします。同じように、QuickStartSchema
内で、Amazon Cloud Directory は DynamicTypedLinkFacet
という 1 つのTyped Link ファセットも定義しています。これは DynamicTypedLinkAttribute
と呼ばれる 1 つの属性を持ちます。この Typed Link を使用して、生徒とチームの関係性を確立します。
QuickStartSchema を使用して、ディレクトリを作成する
次のコードは、SportsTeamDirectory
というディレクトリを作成します。QuickStartSchema
ARN を使用しています。適用されるスキーマ ARN とディレクトリ ARN の値を取得します。次のコード例から分かるように、スキーマを作成し、公開する必要はありません。
ディレクトリ内にオブジェクトを作成する
次のコードは、オブジェクトに格納されるキーと値のペアのマップとして、属性を使用してオブジェクトを作成します。
型付きリンクを使用して、オブジェクト間の関係性を作成する
QuickStartSchema
は、単一のバリアント型 ID 属性を持つ型付きリンクファセットを用意しています。これを使用して、単一の ID 属性を保持するオブジェクト間の型付きリンクを作成できます。
ディレクトリからデータを取得する
オブジェクトを作成して階層を確立した後、パス、または Cloud Directory からデータを取得するための識別子ベースのクエリのいずれかを実行できます。例えば、ListObjectAttributesRequest
を使用して、属性キーと値のパスベースのクエリを実行できます。
動的ファセットと静的ファセットの使用に関するベストプラクティス
属性の数を変更したり、属性内に格納されているデータ値を変更するような柔軟性が必要な場合は、動的ファセットを使用します。Cloud Directory は、オブジェクトの作成または変更中に、データの制限やルールの確認を強制しません。
これらの条件が適用される時には、静的ファセットを使用します。第 1 に、データ型を持つ属性のリストなど、ディレクトリのデータモデルのすべての詳細があります。第 2 に、必須フィールドや固有フィールドなど、属性のデータの制限を定義します。Cloud Directory は、オブジェクトの作成または変更中に、データの制限とルールの確認を強制します。
単一のスキーマ内で静的ファセットと動的ファセットを組み合わせると、ディレクトリ内のファセットの各スタイルに利点ももたらします。
Cloud Directory について
Cloud Directory は、高性能な完全管理型かつ階層型データストアです。高度にスケーラブルなマルチテナントサービスで、あらゆる多次元データを簡単に整理し管理することができます。多次元データには、ユーザー、グループ、場所、デバイス、およびそれらの間の多様な関係性が含まれます。
スキーマファセットを使用して、さまざまな次元のデータを構築して、これらの次元 (従業員、デバイス、場所など) 内のオブジェクトを定義します。Cloud Directory は階層データにとっては理想的であり、効率的な方法でパスに沿って情報を収集するために階層をトラバースします。他の特徴としては、読み書き比が高いこと、データセットのストレージ許容量が少ないことがあります。Cloud Directory は、人事用アプリケーション、コースカタログ、デバイスレジストリ、ネットワークトポロジーといったユースケースを対象としています。さらに、アプリケーションできめ細かな許可 (権限) が必要な場合、Cloud Directory はとても適していると言えるでしょう。
まとめ
Cloud Directory マネージドスキーマを使用して、アプリケーションの迅速なプロトタイピングや開発を行うことができます。階層間をトラバースすることで、たくさんの階層構造を持つデータを構築し、そのクエリを行うことができます。マネージドスキーマ、動的ファセット、またはバリアントデータ型の詳細については、Cloud Directory Schema documentation を参照してください。
このブログ記事に関するコメントは、以下の「コメント」セクションからお送りください。この記事にあるソリューションを実装する際に質問があれば、Directory Service forum または 「AWS サポートに連絡する」で新しいスレッドを開始してください。
著者について
Mahendra Chheda は、アマゾン ウェブ サービスのプリンシパルプロダクトマネージャーです。
Shivam Gujral は、アマゾン ウェブ サービスのソフトウェア開発エンジニアです。