コンパートメントについて

Oracle NoSQL Databaseドライバを使用してOracle NoSQL Database Cloud Service表の作成および操作中にコンパートメントを指定する方法について学習します。

Oracle NoSQL Database Cloud Service表はコンパートメントに作成され、そのコンパートメントにスコープ指定されます。特定のユーザーとして認証されると、特に指定がないかぎり、表はテナンシのルート・コンパートメントで管理されます。表を様々なコンパートメントに編成すると、組織およびセキュリティに役立ちます。

インスタンス・プリンシパル(OCIコンピュート・インスタンスからサービスにアクセス)を使用して認証されている場合、この場合のデフォルトは存在しないため、ID (OCID)を使用してコンパートメントを指定する必要があります。Oracle Cloud Infrastructureドキュメントインスタンスからのサービスの呼出しを参照してください。

コンパートメントをアプリケーション・コードに指定するにはいくつかの方法があります:
  1. ハンドルを使用するすべての操作に適用されるように、NoSQLHandleConfigでデフォルトのコンパートメントを使用します。例は、NoSQLハンドルの取得を参照してください。
  2. 各リクエストでは、表名に加えて、コンパートメント名またはID (OCID)。これにより、デフォルトのコンパートメントがオーバーライドされます。
    たとえば次のようにします。
    GetRequest getReq = new GetRequest().setTableName("mytable")
                                        .setCompartment("mycompartment");
  3. 表名の接頭辞として使用します。これにより、デフォルトのコンパートメントや、APIを使用して指定されたコンパートメントがオーバーライドされます。
    たとえば次のようにします。
    GetRequest getReq = new GetRequest().setTableName("mycompartment:mytable");
名前付きコンパートメントを使用している場合、名前にはトップレベル・コンパートメントの単純名またはネストされたコンパートメントへのパスを指定できます。後者の場合、パスは"." (ドット)区切りのパスです。

ノート:

ネステッド・コンパートメントへのパスを指定する際には、テナンシから推測されるため、トップレベル・コンパートメントの名前をパスに追加しないでください。
コンパートメントをアプリケーション・コードに指定するにはいくつかの方法があります:
  • borneo.NoSQLHandleConfig.set_compartment()内のリクエストのデフォルト・コンパートメントの指定を許可するメソッドが存在します。これにより、ユーザーのデフォルトのコンパートメントがオーバーライドされます。
  • また、各Requestインスタンスにコンパートメントを指定できます。
set_compartmentメソッドは、ID (OCID)、コンパートメント名またはパスのいずれかを取ります。コンパートメント名が使用される場合、最上位のコンパートメントの名前になることがあります。

ノート:

コンパートメント・パスを使用してネストされたコンパートメントを参照する場合、パスはドット区切りのパスで、パスの最上位のコンパートメントを除外します(たとえば、compartmentA.compartmentB)。
リクエストにコンパートメントを設定するかわりに、コンパートメント名を使用してリクエスト、問合せまたはDDL文の表名の接頭辞を付けることができます。この使用は、コンパートメントの他の設定をオーバーライドします。例
...
request = PutRequest().set_table_name('mycompartment:mytable')
...
create_statement = 'create table mycompartment:mytable(...)' 
...
request = GetRequest().set_table_name('compartmentA.compartmentB')
コンパートメントをアプリケーション・コードに指定するにはいくつかの方法があります:
  • 必要なコンパートメント名またはIDを設定できます。
  • デフォルトのコンパートメント(テナンシのルート・コンパートメント)を使用するには、空の文字列に設定します。
  • ネストされたコンパートメントを使用する場合は、ルート・コンパートメントに対する相対的なフル・コンパートメント・パスをcompartmentIDとして指定します。たとえば、rootCompartment.compartmentA.compartmentBを使用する場合は、compartmentIDをcompartmentA.compartmentBに設定する必要があります。
  • コンパートメントOCIDを文字列値として使用することもできます。
compartmentID:="<optional-compartment-name-or-ID>"
iam.NewRawSignatureProvider(tenancy, user, region, fingerprint, compartmentID,
        privateKey, &privateKeyPassphrase)
NoSQLClientインスタンスによって実行されるすべての操作のデフォルト・コンパートメントを指定するには、NoSQLClientコンストラクタに渡される構成のコンパートメント・プロパティを設定します:
import { NoSQLClient,Region } from 'oracle-nosqldb';
const client = new NoSQLClient({
    region: Region.US_ASHBURN_1,
    compartment: 'mycompartment'
});

文字列値は、コンパートメントID、コンパートメント名またはパスのいずれかです。単純名の場合、最上位のコンパートメントを指定する必要があります。ネストされたコンパートメントへのパスである場合、最上位のコンパートメントはテナンシから推測されるため、除外する必要があります。オプション・オブジェクトの各リクエストでコンパートメントを指定することもできます。この値は初期構成値をオーバーライドします。

コンパートメントを指定しない場合、テナンシのルート・コンパートメントがデフォルトとして使用されます。これは、特定のユーザーのアイデンティティーで承認している場合にのみ適用されます。認証にインスタンス・プリンシパルまたはリソース・プリンシパルを使用している場合は、これらの場合にデフォルトがないため、コンパートメントIDを指定する必要があります。

コンパートメントが指定されていない場合、テナンシOCIDがデフォルトとして使用されます。これは、ユーザーのアイデンティティを承認する場合にのみ適用されます。インスタンス・プリンシパルまたはリソース・プリンシパルを使用する場合は、コンパートメントIDを指定する必要があります。

インスタンス・プリンシパルを設定する手順は、インスタンスからのサービスのコールを参照してください。リソース・プリンシパルを設定する手順については、実行しているファンクションからの他のOracle Cloud Infrastructureリソースへのアクセスを参照してください。

表のデフォルトのコンパートメントは、ユーザーのテナントのルート・コンパートメントです。すべての操作のデフォルト・コンパートメントは、NoSQLConfigのコンパートメント・プロパティを設定することで指定できます。たとえば次のようにします。
var client = new NoSQLClient(
    new NoSQLConfig
    {
        Region=Region.US_ASHBURN_1,
        Compartment="<compartment_ocid_or_name>"
    });
文字列値は、コンパートメントOCID、コンパートメント名またはパスのいずれかです。単純名の場合、最上位のコンパートメントを指定する必要があります。ネストされたコンパートメントへのパスである場合、最上位のコンパートメントはテナンシから推測されるため、除外する必要があります。

また、すべての操作オプション・クラスには、TableDDLOptions.CompartmentGetOptions.CompartmentPutOptions.CompartmentなどのCompartmentプロパティがあります。したがって、任意の操作に対して比較を個別に指定することもできます。この値を設定すると、NoSQLConfig内のコンパートメント値(ある場合)がオーバーライドされます。

コンパートメントが指定されていない場合、テナンシOCIDがデフォルトとして使用されます。これは、ユーザーのアイデンティティを承認する場合にのみ適用されます。インスタンス・プリンシパルまたはリソース・プリンシパルを使用する場合は、コンパートメントIDを指定する必要があります。

関連項目