Amazon Web Services ブログ

Amazon クラウドディレクトリ – 階層データ用のクラウドネイティブなディレクトリ

当社のお客様は、これまでディレクトリ (一般的には Active Directory ライトウェイトディレクトリサービスや LDAP ベース) を使って階層別に整理されたデータを管理してきました。しばしば階層として表されるものには、デバイスレジストリ、コースカタログ、ネットワーク設定、ユーザーディレクトリがあり、同じコレクション内のオブジェクト間で複数のタイプの関係を持つ場合もあります。たとえば、ユーザーディレクトリは物理的な場所 (国、都道府県、市町村、建物、フロアー、オフィス) に基づいて 1 つの階層を持ち、プロジェクトや請求コードに基づいて 2 つ目の階層を持ち、管理チェーンに基づいて 3 つ目の階層を持つ場合があります。ただし、従来のディレクトリ技術では、単一のディレクトリ内で複数の関係の使用がサポートされません。これを行う必要がある場合は、追加のディレクトリを作成して管理する必要があります。もう 1 つの重要な課題として、スケールがあります。階層の基本的なオペレーションとして、特定のオブジェクトの親オブジェクトまたは子オブジェクトを見つける必要があります。その階層を使用して大規模なネストした情報のコレクションを表すことができる場合、この基本的なオペレーションは、オブジェクトの数やネストの深さにかかわらず、可能な限り効率的でなければなりません。従来のディレクトリはスケールが困難で、複数の階層を表すために 2 つ以上のディレクトリを使用する場合、苦労が増すばかりです。

新しい Amazon クラウドディレクトリ
本日、Amazon Cloud Directoryをリリースします。このサービスは、上記で説明したような、厳密に型指定された大量の階層データの保存に焦点を絞ったものです。コスト効率を維持しながら数億個のオブジェクトにスケールする機能により、Cloud Directory はあらゆる種類のクラウドおよびモバイルアプリケーションに最適です。Cloud Directory は、Amazon CognitoAWS Organizations を含む、他の AWS のサービスで既に利用されている構成要素です。これは AWS 内で非常に重要な役割を果たすため、スケーラビリティ、高可用性、およびセキュリティを考慮して設計されました (データは保管時および伝送中に暗号化されます)。Amazon Cloud Directory はマネージド型サービスであるため、ソフトウェアのインストールやパッチ適用、サーバーの管理、ストレージまたはコンピューティングインフラストラクチャのスケーリングについて考える必要がありません。スキーマを定義し、ディレクトリを作成してから、クラウドディレクトリ API を呼び出してディレクトリへの入力を行うだけです。この API は速度とスケールを実現し、効率的なバッチベースの読み書き関数を持つよう設計されています。ディレクトリの長期間使用できる特性に、運用期間中にサポートする必要があるユースケースのスケールや多様性を組み合わせることで、別の課題が明らかになります。経験によれば、静的スキーマはスケールと新しいユースケースによって生じる変更に対応する柔軟性に欠けることがわかっています。この課題に対応し、ディレクトリを将来にも十分対応できるようにするため、Cloud Directory は変更の余地を明確に残したモデルという概念に基づいて作成されています。新しいファセットを追加して、既存のスキーマを拡張します。これは既存のデータをそのまま残す安全なオペレーションであり、既存のアプリケーションは引き続き予期どおり動作します。スキーマとファセットを組み合わせることにより、同じディレクトリ内で複数の階層を表すことができます。たとえば、最初の階層では組織図をミラーリングするとします。後で、各従業員の追加のプロパティ (2 番目の電話番号またはソーシャルネットワークのハンドルなど) を追跡するために別のファセットを追加できます。その後、同じデータ内で地理指向の階層を作成できます (国、都道府県、建物、フロアー、オフィス、従業員など)。説明したように、AWS の他の部分では既に Amazon Cloud Directory を使用しています。Cognito ユーザープールCloud Directory を使用してアプリケーション固有のユーザーディレクトリを提供しており、ユーザーのサインアップ、サインイン、および多要素認証をサポートしています。Cognito ユーザープールでは、数億人のユーザーをサポートするようスケールするフルマネージ型のサービスにより、モバイルおよびウェブアプリに簡単かつ安全にサインアップおよびサインイン機能を追加できます。同様に、AWS OrganizationsCloud Directory を使用して関連する AWS アカウントグループの作成をサポートし、複数の階層を十分に活用して幅広いポリシーを適用します。詳しい内容を見る前に、Amazon Cloud Directory のいくつかの重要な概念を簡単に説明します。ディレクトリには名前が付けられ、少なくとも 1 つのスキーマが必要です。ディレクトリは、オブジェクト、オブジェクト間の関係、スキーマ、およびポリシーを保存します。ファセットは、必須の属性および許容される属性を定義してデータをモデル化します。各ファセットは属性名の独立したスコープを提供します。これにより、ディレクトリを共有する複数のアプリケーションは、衝突または混乱を恐れることなく、特定のスキーマを安全かつ独立して拡張できます。スキーマは、1 つ以上のファセットを参照して、ディレクトリに保存されたデータの「シェイプ」を定義します。各ディレクトリは複数のスキーマを持つことができます。スキーマは 3 つのフェーズ (開発、公開済み、適用済み) のいずれかに存在します。開発スキーマは変更でき、公開済みスキーマはイミュータブルです。Amazon Cloud Directory には、人、組織、およびデバイス向けに事前定義のスキーマのコレクションが含まれています。スキーマとファセットの組み合わせにより、初期データモデルおよび対象領域への経時変化に伴う重要な追加が可能になる一方で、既存のアプリケーションは引き続き予期どおり動作します。属性は実際に保存されたデータです。各属性には名前が付けられ、型付けされます。データ型にはブール、バイナリ (blob)、日時、数値、および文字列があります。属性は、必須またはオプション、およびイミュータブルまたは編集可能とすることができます。属性の定義では、保存または更新する前に属性の長さまたはコンテンツ、あるいはその両方を検証するために使用するルールを指定できます。バイナリおよび文字列オブジェクトは、最小および最大の長さに対して長さをチェックできます。ルールは、文字列にはリストから選択された値が必要であるか、または数値が特定の範囲内であるかを示すことができます。オブジェクトはディレクトリに保存され、属性を持ち、スキーマによって定義されます。各オブジェクトは、スキーマの指定により、複数の子と複数の親を持つことができます。複数の親機能を使用して、1 つのディレクトリ内で複数の独立した階層を作成できます (ツリーのフォレストとも呼ばれます)。ポリシーは階層の任意のレベルで指定でき、子オブジェクトによって継承されます。Cloud Directory はポリシーを解釈したり、意味を割り当てたりせず、この操作をアプリケーションに任せます。ポリシーを使用して、アクセス権限、ユーザー権限、デバイス特性などを指定、管理できます。

ディレクトリの作成
ディレクトリを作成しましょう。AWS Directory Service コンソールを開き、最初の [Create directory] ボタンをクリックします。

ディレクトリの名前 (users) を入力し、person スキーマ (偶然 2 つのファセットを持ちます。これについてはすぐに説明します) を選択して、[Next] をクリックします。

事前定義された (AWS) スキーマがディレクトリにコピーされます。これに名前とバージョンを指定し、[Publish] をクリックします。

次に設定を確認し、[Launch] をクリックします。

ディレクトリが作成され、コードを記述してそのディレクトリにオブジェクトを追加できます。

料金と可用性
Cloud Directory は、US East (Northern Virginia)US East (Ohio)US West (Oregon)Europe (Ireland)Asia Pacific (Sydney)、および Asia Pacific (Singapore) リージョンで利用でき、今すぐ使い始めることができます。料金は、保存するデータの量、読み取り数、および書き込み数という 3 つの要素に基づきます (以下の料金は US East (Northern Virginia) のものです)。

  • ストレージ – 0.25 USD / GB / 月
  • 読み取り – 10,000 回の読み取りあたり 0.0040 USD
  • 書き込み – 1,000 回の書き込みあたり 0.0043 USD

進行中
クラウドディレクトリに関しては大きな計画があります。お客様のフィードバックにより優先順位は変更される可能性がありますが、当社はクロスリージョンレプリケーション、AWS Lambda の統合、および AWS CloudFormation を介した新しいディレクトリの作成機能を開発中です。

Jeff;