オブジェクトへのアクセス - Amazon Cloud Directory

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

オブジェクトへのアクセス

ディレクトリのオブジェクトは、パス、または objectIdentifier を使用してアクセスできます。

パス— Cloud Directory ツリー内の各オブジェクトは、到達する方法を示すパス名を使用して特定し、表示することができます。パスの開始地点は、ディレクトリのルート (前述の図のノード 000) です。パス表記は、スラッシュ (/) でラベル付けしたリンクから開始し、パスの末尾まで、パスの区切り文字 (スラッシュを含む) で区切られた子リンクが続きます。たとえば、前に示した図のオブジェクト 005 は、パス /group/a/d を使用して特定できます。オブジェクトがリーフノードの場合は複数の親が存在するため、複数のパスでオブジェクトを識別する場合があります。また、以下のパスを使用して、オブジェクト 005 : /group/b/e を識別することもできます。

オブジェクト識別子— ディレクトリの各オブジェクトには、一意のグローバル識別子 () が割り当てられています。ObjectIdentifierObjectIdentifier「」の一部として、が返ります。CreateObjectAPI コールを使用します。また、「ObjectIdentifier」の API コールを使用して、GetObjectInformation を取得することもできます。たとえば、オブジェクト 005 のオブジェクト識別子を取得するには、オブジェクトに続くパスとしてオブジェクト参照 (group/b/e または group/a/d) を使用して、GetObjectInformation を呼び出します。

GetObjectInformationRequest request = new GetObjectInformationRequest() .withDirectoryArn(directoryArn) .withObjectReference("/group/b/e") .withConsistencyLevel(level) GetObjectInformationResult result = cdClient.getObjectInformation(request) String objectIdentifier = result.getObjectIdentifier()

オブジェクトの追加

新しいファセットをオブジェクトに追加するには、「AddFacetToObject」の API コールを使用します。オブジェクトタイプは、オブジェクトにアタッチされたファセットに基づいて判断されます。ディレクトリのオブジェクトアタッチメントは、オブジェクトタイプに基づいて使用できます。オブジェクトをアタッチするときは、次のルールに注意してください。

  • リーフノードに子オブジェクトを含めることはできません。

  • ノードオブジェクトは、子ノードを複数持つことができます。

  • ポリシータイプのオブジェクトは、子オブジェクトを持つことができないため、親オブジェクトは 0 または 1 になります。

オブジェクトの更新

オブジェクトは、複数の方法で更新できます。

オブジェクトの削除

アタッチされたオブジェクトをディレクトリから削除するには、一定の条件を満たしている必要があります。

  1. ツリーからオブジェクトをデタッチします。オブジェクトは、子オブジェクトが含まれていない場合のみ、デタッチすることができます。オブジェクトに子オブジェクトが含まれている場合は、まず子オブジェクトをすべてデタッチする必要があります。

  2. デタッチされたオブジェクトは、そのオブジェクトの属性がすべて削除されている場合のみ削除できます。オブジェクトの属性を削除するには、そのオブジェクトにアタッチされた各ファセットを削除します。オブジェクトにアタッチされたファセットの一覧を取得するには、GetObjectInformation を呼び出します。

  3. オブジェクトに親、ポリシーアタッチメント、インデックスアタッチメントがないことを確認します。

オブジェクトは削除するツリーから完全にデタッチされているため、オブジェクト識別子を使用して削除する必要があります。

オブジェクトのクエリ

このセクションでは、ディレクトリ内のオブジェクトのクエリに関連するさまざまな要素について説明します。

ディレクトリのトラバーサル

Cloud Directory はツリー構造になっているため、上部から、オブジェクトのクエリを行うことができます。ListObjectChildrenAPI 操作を使用するか、ListObjectParentsAPI オペレーション。

ポリシーの検索

オブジェクトリファレンスを指定すると、「LookupPolicy」 API オペレーションでルートへのパスに沿ってアタッチされているすべてのポリシーが上位から返ります。ルートに到達しないパスはすべて無視されます。ポリシータイプのオブジェクトがすべて返ります。

オブジェクトがリーフノードの場合は、複数のパスをルートに含めることができます。この呼び出しでは、各呼び出しのパスが 1 つのみ返ります。追加のパスを取得するには、ページ分割トークンを使用します。

インデックスのクエリ実行

クラウドディレクトリでは、次の範囲を使用してインデックスのクエリを行う豊富な機能を使用できます。

  • FIRST - 最初にインデックスが付けられた属性値から開始します。開始属性値はオプションです。

  • LAST - 欠落した値を含め、インデックスの末尾まで属性値を返します。終了属性値はオプションです。

  • LAST_BEFORE_MISSING_VALUES - 欠落した値を除いて、インデックスの末尾まで属性値を返します。

  • INCLUSIVE - 指定されている属性値を含みます。

  • EXCLUSIVE - 指定されている属性値を除きます。

親パスの表示

ListObjectParentPaths」の API コールを使用して、すべてのオブジェクトタイプ (ノード、リーフノード、ポリシーノード、インデックスノード) で利用できる親パスをすべて取得できます。この API オペレーションは、オブジェクトのすべての親を評価する必要がある場合に役立ちます。この呼び出しでは、リクエストされたオブジェクトまで、ディレクトリルートからすべてのオブジェクトを返します。また、親までに複数のパスが存在する場合は、ユーザーが定義した MaxResults に基づき、パス数を返します。返されるパスおよびノードの順序は、オブジェクトが削除または移動されている場合を除き、複数の API コール間で一貫しています。ディレクトリルートにつながらないパスは、ターゲットオブジェクトから無視されます。

この仕組みに関する一例として、ディレクトリには、以下の図のようなオブジェクト階層があります。

Object hierarchy diagram showing nodes, links, and policy objects in a tree structure.

番号付きの形状は、オブジェクトが異なることを意味します。このオブジェクトとディレクトリルート (000) の間にある矢印数は、完全なパスを表しており、出力で表現されます。階層内の特定のリーフノードオブジェクトへのクエリのリクエストおよびレスポンスを以下のテーブルに示します。

オブジェクトに対するクエリの例
リクエスト レスポンス
004, PageToken: null, MaxResults: 1 [{/group/a/c], [000, 001, 002, 004]}], PageToken: null
005, PageToken: null, MaxResults: 2 [{/group/a/d, [000, 001, 002, 005]}, { /group/b/e, [000, 001, 003, 005]}], PageToken: null
注記

この例では、オブジェクト 005 には、親として 002 および 003 のノードの両方が含まれます。また、MaxResults が 2 であるため、どちらのパスのリストにもオブジェクトが表示されます。

005, PageToken: null, MaxResults: 1 [{/group/a/d, [000, 001, 002, 005]}], PageToken: <encrypted_next_token>
005, PageToken: <encrypted_next_token>, MaxResults: 1 [{/group/b/e, [000, 001, 003, 005]}], PageToken: null
注記

この例では、オブジェクト 005 には、親として 002 および 003 のノードの両方が含まれます。また、MaxResults が 1 であるため、ページトークンでページ分割された呼び出しを複数回行うことで、オブジェクトのリストを含むすべてのパスが取得されます。

006, PageToken: null, MaxResults: 1 [{/group/b/f, [000, 001, 003, 006]}], PageToken: null
007, PageToken: null, MaxResults: 1 [{/group/a/index, [000, 001, 002, 007]}], PageToken: null