コンパートメントについて
Oracle NoSQL Databaseドライバを使用してOracle NoSQL Database Cloud Service表の作成および操作中にコンパートメントを指定する方法について学習します。
インスタンス・プリンシパル(OCIコンピュート・インスタンスからサービスにアクセス)を使用して認証されている場合、この場合のデフォルトは存在しないため、ID (OCID)を使用してコンパートメントを指定する必要があります。Oracle Cloud Infrastructureドキュメントのインスタンスからのサービスの呼出しを参照してください。
- ハンドルを使用するすべての操作に適用されるように、
NoSQLHandleConfig
でデフォルトのコンパートメントを使用します。例は、NoSQLハンドルの取得を参照してください。 - 各リクエストでは、表名に加えて、コンパートメント名またはID (OCID)。これにより、デフォルトのコンパートメントがオーバーライドされます。
たとえば次のようにします。
GetRequest getReq = new GetRequest().setTableName("mytable") .setCompartment("mycompartment");
- 表名の接頭辞として使用します。これにより、デフォルトのコンパートメントや、APIを使用して指定されたコンパートメントがオーバーライドされます。
たとえば次のようにします。
GetRequest getReq = new GetRequest().setTableName("mycompartment:mytable");
ノート:
ネステッド・コンパートメントへのパスを指定する際には、テナンシから推測されるため、トップレベル・コンパートメントの名前をパスに追加しないでください。borneo.NoSQLHandleConfig.set_compartment()
内のリクエストのデフォルト・コンパートメントの指定を許可するメソッドが存在します。これにより、ユーザーのデフォルトのコンパートメントがオーバーライドされます。- また、各
Request
インスタンスにコンパートメントを指定できます。
set_compartment
メソッドは、ID (OCID)、コンパートメント名またはパスのいずれかを取ります。コンパートメント名が使用される場合、最上位のコンパートメントの名前になることがあります。
ノート:
コンパートメント・パスを使用してネストされたコンパートメントを参照する場合、パスはドット区切りのパスで、パスの最上位のコンパートメントを除外します(たとえば、compartmentA.compartmentB
)。
...
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.Compartment
、GetOptions.Compartment
、PutOptions.Compartment
などのCompartment
プロパティがあります。したがって、任意の操作に対して比較を個別に指定することもできます。この値を設定すると、NoSQLConfig
内のコンパートメント値(ある場合)がオーバーライドされます。
コンパートメントが指定されていない場合、テナンシOCIDがデフォルトとして使用されます。これは、ユーザーのアイデンティティを承認する場合にのみ適用されます。インスタンス・プリンシパルまたはリソース・プリンシパルを使用する場合は、コンパートメントIDを指定する必要があります。
関連項目