Links - Amazon Cloud Directory

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

Links

リンクは、関係を定義する 2 つのオブジェクト間の有向辺を表します。現在、Cloud Directory をサポートしています。

Diagram showing different types of links between nodes and policy objects. (AI generated)

子リンクは、接続するオブジェクト間の親子関係を作成します。たとえば、上の図で子リンク b は、オブジェクト 001 とオブジェクト 003 を接続しています。子リンクは、クラウドディレクトリの階層を定義します。子リンクには、リンクで指定するオブジェクトのパスを定義する際の名前があります。

アタッチメントリンクは、リーフノードポリシーオブジェクトを別のリーフノードまたはノードオブジェクトに適用します。アタッチメントリンクでは、Cloud Directory 階層構造を定義することはできません。たとえば、上の図のアタッチメントリンクでは、ポリシーリーフノードオブジェクト 006 に保存されているポリシーを、ノードオブジェクト 002 に適用します。各オブジェクトには、複数のポリシーをアタッチできますが、指定されたポリシータイプのポリシーを複数アタッチすることはできません。

インデックスリンクでは、インデックスオブジェクトおよび定義済みのインデックス付き属性に基づく豊富な情報ルックアップを採用しているため、ディレクトリツリー内の高速なツリートラバーサルおよび検索が可能になります。概念的には、インデックスは子を持つノードに似ています。インデックス付きノードへのリンクは、子をアタッチしたときにラベル付けされるのではなく、インデックス付き属性に従ってラベル付けされます。ただし、インデックスリンクは親子エッジではなく、独自の列挙 API オペレーションのセットを持っています。詳細については、「インデックス作成と検索」を参照してください。

型付きリンクを使用すると、Cloud Directory の同じ階層のオブジェクト間、または異なる階層のオブジェクト間の関係を確立できます。これらの関係を使用して、どのユーザーがデバイス "xyz" を所有しているかどのデバイスがユーザー "abc" によって所有されているかなどの情報を照会できます。

型付きリンクを使用して、ディレクトリ内の異なるオブジェクト間の関係をモデル化できます。たとえば、上の図で、ユーザーを表すオブジェクト 004 と、デバイスを表すオブジェクト 005 との関係を考えます。

この場合、型付きリンクを使用して両オブジェクト間の所有関係をモデル化できます。型付きリンクに属性を追加して、購入コストを表したり、デバイスをレンタルしたか購入したかを表したりできます。型付きリンクに関連付けられる属性には、以下の 2 種類があります。

  • アイデンティティベースの属性 - 型付きリンクを他のリンク (子、アタッチメント、インデックスリンクなど) と区別するための属性。型付きリンクの各ファセットで、順序付けられたアイデンティティ属性のセットを定義します。型付きリンクのアイデンティティは、ソースオブジェクト ID、ファセット識別子 (型)、そのリンクのアイデンティティ属性の値 (ファセットで定義)、ターゲットオブジェクト ID です。識別子は 1 つのディレクトリ内で一意であることが必要です。

  • オプションの属性 - 型付きリンクのアイデンティティとは関係のない追跡特性を保存する属性。たとえば、オプションの属性により、型付きリンクが最初に確立された日付や最後に変更された日付を識別します。

オブジェクトと同じように、型付きリンクのファセットを作成するには、CreateTypedLinkFacet API を使用して型付きリンクの構造とその属性を定義する必要があります。型付きリンクのファセットでは、一意のファセット名と属性セットをリンクに関連付ける必要があります。型付きリンクの構造を設計するときに、型付きリンクのファセットで順序付けられた属性のセットを定義できます。型付きリンクのサンプルスキーマについては、「スキーマドキュメントと型付きリンク」を参照してください。

型付きリンクの属性は、以下のいずれかの操作が必要なときに使用できます。

  • 受信または送信方向の型付きリンクのフィルタ処理を行う。詳細については、「型付きリンクのリスティング」を参照してください。

  • 2 つのオブジェクト間の関係を表す。

  • 型付きリンクに関する管理データ (リンクの作成日など) を追跡する。

型付きリンクがユースケースに適切かどうかは、以下の点を考慮して判断します。

  • 型付きリンクは、パスベースのオブジェクト指定では使用できません。代わりに、型付きリンクは ListOutgoingTypedLinks API オペレーションまたは ListIncomingTypedLinks API オペレーションを使用して選択する必要があります。

  • 型付きリンクは、LookupPolicy API オペレーションまたは ListObjectParentPaths API オペレーションには関与しません。

  • 同じ 2 つのオブジェクト間の同じ方向の型付きリンクは、同じ属性値を持つことはできません。これにより、同じオブジェクト間の重複する型付きリンクを回避できます。

  • オプションの情報を追加する場合は、追加の属性を使用できます。

  • すべての ID 属性値の合計サイズは 64 バイトに制限されます。詳細については、「Amazon Cloud Directory の制限」を参照してください。

Cloud Directory 関連ブログ記事

アイデンティティは、2 つのオブジェクト間で型付きリンクが存在できるかどうかを一意に定義します。例外は、2 つのオブジェクトを同じ属性値で同じ方向に接続する場合です。属性は REQUIRED_ALWAYS として設定する必要があります。

異なる型付きリンクのファセットから作成された型付きリンクが相互に競合することはありません。たとえば、次の図について考えます。

Diagram showing typed links between nodes with identity attributes and operation failure. (AI generated)

  • オブジェクト 001 の 2 つの型付きリンクは、それぞれに属性 (A1 と A2) があり、同じ属性値 (x1 と x2) で、異なるオブジェクト (002003) に向かっています。このオペレーションは成功します。

  • オブジェクト 002 とオブジェクト 003 の間には型付きリンクがあります。同じ属性値で同じ方向の 2 つの型付きリンクはオブジェクト間に存在できないため、このオペレーションは失敗します。

  • オブジェクト 001 とオブジェクト 003 の間には、同じ属性を持つ 2 つの型付きリンクがあります。ただし、2 つのリンクは方向が異なるため、このオペレーションは成功します。

  • オブジェクト 002 とオブジェクト 003 の間には、A1 の値が同じでも A2 の値が異なる型付きリンクがあります。型付きリンクのアイデンティティでは、すべての属性が考慮されるため、このオペレーションは成功します。

リンクの属性に制限を追加する場合、型付きリンクの属性にルールを追加できます。これらのルールは、オブジェクトの属性に対するルールに相当します。詳細については、「属性ルール」を参照してください。

Cloud Directory の API オペレーションを使用して、オブジェクトの発着信する型付きリンクを選択できます。すべての型付きリンクを反復処理する代わりに、型付きリンクの特定のサブセットを選択できます。特定の型付きリンクのファセットを指定することで、そのタイプの型付きリンクのみをフィルタすることもできます。

型付きリンクのファセットに定義された属性の順序に従って型付きリンクをフィルタできます。複数の属性に対して範囲フィルタを指定できます。選択した型付きリンクに範囲を指定する場合、不正確な範囲は最後に指定する必要があります。範囲が指定されていない属性は、範囲全体にマッチするとみなされます。フィルタは、API コールに提供された順序ではなく、型付きリンクのファセットに定義された属性の順序で解釈されます。

たとえば、次の図で、従業員とその能力に関する情報を保存するための Cloud Directory を考えます。

Diagram showing a directory structure with nodes for Root, Employees, Officers, and Seattle/New York offices. (AI generated)

たとえば、従業員の能力を EmployeeCapability という型付きリンクでモデル化し、StatusRoleCreated という 3 つの文字列属性を設定するとします。以下のフィルタは、ListIncomingTypedLinks API オペレーションと ListOutgoingTypedLinks API オペレーションでサポートされます。

  • ファセット =EmployeeCapability、ステータス =Active、ロール =Driver

    • 運転手であるアクティブな従業員を選択します。このフィルタには 2 つの完全一致が含まれます。

  • Facet (ファセット) = EmployeeCapability、Status (ステータス) = Active、Role (ロール) = Driver、Created (作成日) = 05/31/18

    • 運転手であり、ファセットが 2018 年 5 月 31 日以降に作成された、アクティブな従業員を選択します。

  • ファセット = EmployeeCapability、ステータス = Active

    • すべてのアクティブな従業員を選択します。

  • ファセット = EmployeeCapability、ステータス = Active、ロール = AM

    • ロールが AM で始まるアクティブな従業員を選択します。

  • ファセット = EmployeeCapability

    • これは、EmployeeCapability タイプのすべての型付きリンクを選択します。

以下のフィルタはサポート されません

  • ファセット = EmployeeCapabilityAC のステータス、ロール = Driver

    • 範囲はフィルタの最後に表示される必要があるため、このフィルタは許可されません。

  • ファセット =EmployeeCapability、Role=Driver

    • 暗黙のステータス範囲は完全一致ではなく、範囲のリストの最後に表示されることがないため、このフィルタは許可されません。

  • Status = Active

    • 型付きリンクのファセットが指定されていないため、このフィルタは許可されません。

型付きリンクのファセットは、2 つの方法で作成できます。型付きリンクのファセットは、個別の API コール (CreateTypedLinkFacetDeleteTypedLinkFacetUpdateTypedLinkFacet など) から管理できます。スキーマを JSON ドキュメントとして 1 回の PutSchemaFromJson API コールでアップロードすることもできます。詳細については、「JSON スキーマ形式」を参照してください。型付きリンクのサンプルスキーマについては、「スキーマドキュメントと型付きリンク」を参照してください。

スキーマ開発ライフサイクルの各段階で許可される変更の種類は、オブジェクトのファセットの操作で許可される変更に似ています。開発状態のスキーマでは、あらゆる変更がサポートされます。発行済み状態のスキーマは変更不可であり、一切の変更がサポートされません。データディレクトリに適用されるスキーマに対する特定の変更のみ許可されます。適用済みの型付きリンクのファセットに順序と属性を設定すると、その順序は変更できません。

ファセットとその属性をリストする他の 2 つの API オペレーションは以下のとおりです。

型付きリンクのファセットの作成が完了すると、型付きリンクの作成と操作を開始できます。型付きリンクをアタッチまたはデタッチするには、AttachTypedLink API オペレーションと DetachTypedLink API オペレーションを使用します。

TypedLinkSpecifier は、型付きリンクを一意に識別するすべての情報を含む構造です。この構造内に TypedLinkFacetSourceObjectIDDestinationObjectID、および IdentityAttributeValues があります。これらを使用して、操作対象の型付きリンクを一意に指定します。AttachTypedLink API オペレーションは、型付きリンク指定子を返し、DetachTypedLink API オペレーションは型付きリンク指定子を入力として受け取ります。同様に、ListIncomingTypedLinks API オペレーションと ListOutgoingTypedLinks API オペレーションは、型付きリンク指定子を出力として渡します。型付きリンク指定子は、最初から作成することもできます。型付きリンクに関する API オペレーションの完全な一覧は以下のとおりです。

注記

属性の参照と型付きリンクの更新はサポートされていません。型付きリンクを更新するには、それを削除した上で更新したバージョンを追加する必要があります。