Autonomous AI Database API for DynamoDBの使用

Autonomous AI Database API for DynamoDBを使用すると、キーバリュー形式を使用して、Autonomous AI Databaseでデータを格納、管理および取得できます。

トピック

Autonomous AI Database API for DynamoDBの使用について

Oracle Autonomous AI Databaseは、Oracleのフルマネージド自律型AIデータベースを備えたDynamoDB向け自律型AIデータベースAPIを提供し、既存のDynamoDBツールとSDKを使用して自律型AIデータベースとシームレスに連携できるようにします。

Oracle Autonomous AI Database API for DynamoDB互換APIを使用すると、既存のDynamoDBクライアントを引き続き使用し、Autonomous AI Databaseと連携するためのアプリケーションに対する最小限の変更を行うことができます。標準のDynamoDB SDKを使用して、既存のDynamoDBアプリケーションをAutonomous AI Databaseと統合できます。APIには、GetItemDeleteItemCreateTableDeleteTableなどの使い慣れたDynamoDB操作があり、DynamoDBアプリケーションをAutonomous AI Databaseに移行できます。

Autonomous AI Database API for DynamoDBを使用すると、DynamoDB互換性を維持しながら、Autonomous AI Database機能を利用できます。

詳細は、Amazon DynamoDBを参照してください。

前提条件

Autonomous AI DatabaseでAutonomous AI Database API for DynamoDBを使用するための前提条件をリストします。

データベースのDynamoDBに対してAutonomous AI Database APIを有効にする前に、次の点に注意してください:

  • Autonomous AI Database API for DynamoDBは、ワークロード・タイプがトランザクション処理であるAutonomous AI Databaseでのみサポートされています。

  • 自律型AIデータベース・インスタンスをエラスティック・プールの一部にすることはできません。エラスティック・グループの一部であるAutonomous AI DatabaseでDynamoDBに対してAutonomous AI Database APIを有効にしようとした場合、またはこれらのAPIが有効なデータベースをエラスティック・グループに追加しようとすると、エラーが発生します。Autonomous AI Database API for DynamoDBが有効になっている自律型AIデータベースは、エラスティック・グループのメンバーにすることはできません。

Autonomous AI DatabaseでAutonomous AI Database API for DynamoDBを有効化

自律型AIデータベース・インスタンスからDynamoDB APIを起動するためのアクセス・キーおよび秘密キーを生成するステップについて説明します。

必要に応じて、次の前提条件ステップを実行します:

  • Oracle Cloud Infrastructure Consoleを開くには、クラウドの横にあるナビゲーション・アイコンをクリックします。

  • Oracle Cloud Infrastructureの左側のナビゲーション・メニューから、「Oracle Database」をクリックし、「Autonomous AI Database」をクリックします。

  • 「自律型AIデータベース」ページで、「表示名」列の下のリンクから自律型AIデータベースを選択します。

Autonomous AI DatabaseインスタンスでDynamoDB APIを有効にするには、次のステップに従います:

  1. 「他のアクション」ドロップダウン・リストで、「タグの管理」を選択します。

    「タグの追加」ページが表示されます。

  2. 次の値を指定して、Autonomous AI Databaseにタグを割り当てます。
    • ネームスペース:フリーフォーム・タグを追加するには、値を空白のままにします。

    • キー: adb$feature

    • 値: {"name":"DynamoDB_API","enable":true}

    タグを追加するには、「追加」をクリックします。

    「追加」をクリックすると、「ライフサイクル状態」フィールドに「更新中」と表示され、Autonomous AI Databaseによって「Autonomous Databaseタグの更新」作業リクエストが生成されます。リクエストを表示するには、詳細ページで「作業リクエスト」タブを選択します。

    DynamoDBのAutonomous AI Database APIを有効にするには、最大10分かかる場合があります。

    自律型AIデータベースでOracle Database API for DynamoDBを有効にした後、https://dataaccess.adb.{oci-region_name}.oraclecloudapps.com/adb/keyvaluestore/v1/{database-ocid} RESTエンドポイントを使用してDynamoDB操作を実行します。Oracle Autonomous DynamoDB APIにアクセスするには、有効なアクセス・キーID、シークレット・アクセス・キーおよび操作に必要な権限が必要です。たとえば、DynamoDB表を作成するにはCREATE_TABLE権限が必要です。

    Oracle Autonomous DynamoDB API操作のURIは次のとおりです:

    https://dataaccess.adb.{oci-region_name}.oraclecloudapps.com/adb/keyvaluestore/v1/{database-ocid}

    たとえば:

    https://dataaccess.adb.us-phoenix-1.oraclecloudapps.com/adb/keyvaluestore/v1/OCID1.AUTONOMOUSDATABASE.OC1.PHX.ANYHQLJRGDV...EXAMPLE

DynamoDB APIを起動するためのアクセスの構成

この項では、Autonomous AI Databaseの有効化後にDynamoDB互換APIを認証して使用するために必要なアクセス・キーを作成および管理するステップについて説明します。

RESTエンドポイントhttps://dataaccess.adb.{oci-region-name}.oraclecloudapps.com/adb/auth/v1/databases/{database-ocid}/accesskeysを使用して、DynamoDB表へのアクセスを管理します。これを行うには、データベースのユーザー名および資格証明を指定します。指定したユーザーには、PDB_DBAロールが付与されている必要があります。これらのアクセス・キーは、DynamoDBのAutonomous AI DatabaseへのAPIコールを認証するために必要です。

DynamoDB互換の操作を実行するために必要な権限がアクセス・キーに割り当てられていることを確認する必要があります。これらの権限は、アクセス・キーの作成時に指定するか、既存のキーを変更して必要な権限を割り当てることができます。

アクセス・キーの権限のリストを次に示します。

権限 摘要

CREATE_TABLE

表作成を実行するためのアクセス

READ_ANY

Autonomous AI Databaseに関連付けられているすべてのDynamoDB互換キー表に対して表および項目の読取り操作を実行するためのアクセス。バックアップ、リストア、インポートおよびエクスポート操作は含まれません。

READ_WRITE_ANY

Autonomous AI Databaseに関連付けられているすべてのDynamoDB互換表に対して表および項目の読取りおよび書込み操作を実行するためのアクセス。バックアップ、リストア、インポートおよびエクスポート操作は含まれません。

ADMIN_ANY

Autonomous AI Databaseに関連付けられているすべてのDynamoDB互換表の作成、バックアップ、リストア、インポートおよびエクスポートなどの操作を実行するためのアクセス権。

READ <Table(s)>

Autonomous AI Databaseに関連付けられた特定のDynamoDB互換表に対する表および項目の読取り操作を実行するためのアクセス。バックアップ、リストア、インポートおよびエクスポート操作は含まれません。

READ_WRITE on <Table(s)>

Autonomous AI Databaseに関連付けられた特定のDynamoDB互換表に対する表およびアイテムの読取りおよび書込み操作を実行するためのアクセス。バックアップ、リストア、インポートおよびエクスポート操作は含まれません。

ADMIN on <Table(s)>

Autonomous AI Databaseに関連付けられた特定のDynamoDB互換表に対するバックアップ、リストア、インポートおよびエクスポートなどの操作を実行するためのアクセス権。

<operation name> on <Table(s)>。たとえば、GetItem on <Table(s)>

Autonomous AI Databaseに関連付けられた特定のDynamoDB互換表に対して特定の操作を実行するためのアクセス。

アクセス・キーの作成

データベースでアクセス・キーと秘密キーを作成するには、ADMINユーザーとしてログインするか、PDB_DBAロールが付与されている必要があります。

データベースにアクセス・キーを作成するための構文およびサンプル・リクエスト:

POST https://dataaccess.adb.{oci-region-name}.oraclecloudapps.com/adb/auth/v1/databases/{database-ocid}/accesskeys RESTエンドポイントAPIリクエストを使用して、アクセス・キーおよび秘密キーを生成します:

構文

POST "https://dataaccess.adb.{oci-region-name}.oraclecloudapps.com/adb/auth/v1/databases/{database-ocid}/accesskeys"
{
  "name"          : "{<access_key_name>}",         // Required. The name you assign to the access key.
  "description"   : "{<access_key_description>}",  // Optional. A description for the access key.
  "permissions"   : [                             // Optional. Array of permission objects.
    {
      "actions"   : [<List of permissions>],      // Required. List of permitted actions (e.g., "read", "write").
      "resources" : [<List of Tables>]            // Optional. Only applicable for permissions that get applied on Table.
    }
    // ... additional permission objects as needed
  ],
  "expiration_minutes": 120                       // Optional. The key's expiration time in minutes.
}
パス・パラメータ(適切な認証を提供し、プレースホルダを実際のOCIリージョンおよびデータベースOCIDに置き換えます):
  • name: String: アクセス・キー名

  • description: String: アクセス・キーの説明

  • permissions: Array: (オプション)この配列の各オブジェクトは、許可される操作(アクション)および(オプションで)それらのアクションが制限される表(リソース)を定義します。
    • actions: Array of Strings (必須: キーが実行できる特定の操作をリストします)。たとえば、"CREATE_TABLE"、"READ_WRITE"、"ADMIN"です。)

    • resources: Array of Strings (オプション: アクションを適用する表を指定します)。resources": ["customers", "orders"]など、この配列内の表名をリストする場合、アクションはそれらの表のみに制限されます。省略した場合、アクションはデータベース内のすべての表に適用されます。)

  • expiration_minutes: Number: (オプション)有効期限(分)

サンプル・レスポンス形式

{  
  "name": "<access_key_name>",  
  "description": "<access_key_description>",  
  "access_key_id": "<access_key_id>",  
  "secret_access_key": "<generated secret>",  
  "expiration_timestamp": "<access_key_expiration_timestamp>",  
  "permissions": [  
    {  
      "actions"  : [<permissions list>],  
      "resources": [<optional DynamoDb table list>]  
    }  
    // ...more permission objects  
  ]  
}

例: この例では、POSTリクエストをOracle Autonomous AI Database REST APIに送信して、管理権限を持つ新しいアクセス・キーを作成する方法を示します。リクエストはキー名と必要な権限を指定し、レスポンスには新しく生成されたアクセス・キーID、シークレット、有効期限および権限が含まれます。

# Request
curl -X POST 'https://dataaccess.adb.us-phoenix-1.oraclecloudapps.com/adb/auth/v1/databases/OCID1.AUTONOMOUSDATABASE.OC1.PHX.ANYHQLJRGDV...EXAMPLE/accesskeys'\
--user "AdminUser:TestPass#" \
--header 'Request-Id: 8g89mz8qnet9ufxg4dwrus8m' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "adminkey",
    "permissions": [
        {
            "actions": [
                "ADMIN_ANY"
            ]
        }
    ],
    "expiration_minutes": 120
}'

# Sample Response
{
    "access_key_id": "ak_og67ZI8bdS.....BiHCda7l",
    "secret_access_key": "NzYwZDE5M2E4NDVjZ.....FmMzBiNQ>>",
    "expiration_time": "2025-12-07T03:35:12Z",
    "permissions": [
        {
            "actions": [
                "ADMIN_ANY"
            ]
        }
    ]
}

リクエスト・パラメータ:
  • database-ocid: アクセス・キーが作成されるデータベースのOCID。

  • AdminUser: 認証に使用されるデータベース・ユーザー名。

  • TestPass#: データベース・ユーザーのパスワード。

  • Request-Id: APIリクエストの一意の識別子で、追跡またはトラブルシューティングに役立ちます。

  • Content-Type: リクエスト・ペイロードの形式をJSON (application or json)として指定します。

  • name: 新しいアクセス・キーに割り当てる名前。

  • permissions: 新しいキーに割り当てる権限を指定する配列。

    • actions: アクセス・キーに対して許可されるアクションの配列(管理権限の場合は"ADMIN_ANY"など)

  • expiration_minutes: アクセス・キーが期限切れになるまでの期間を分単位で指定します。

レスポンス・パラメータ:
  • access_key_id: 新しく作成されたアクセス・キーの一意の識別子。

  • secret_access_key: アクセス・キーに関連付けられたシークレット値。これは、将来のAPIリクエストを認証するために必要です。

  • expiration_time: アクセス・キーがいつ期限切れになるかを示すタイムスタンプ。

  • アクセス・キーに割り当てられた権限オブジェクトの配列(リクエストで指定)。

    • actions: アクセス・キーに許可されるアクション(管理権限の場合は「ADMIN_ANY」など)

アクセス・キー情報の取得

アクセス・キーを作成した後、GET /accesskeys REST APIリクエストを使用して、その名前、関連付けられた権限、有効期限、その他の関連メタデータなどの詳細を検索します。これにより、アクセス権や資格証明の監査、アクセス・キー情報の表示をプログラムで確認できます。

アクセス・キーの詳細を取得する構文と例:

構文:

GET https://dataaccess.adb.{oci-region-name}.oraclecloudapps.com/adb/auth/v1/databases/{database-ocid}/accesskeys/{access_key_id}
    Authorization: Basic <Base64-encoded
    database username and password>request-id: <optional request-id>

例: 次のコールは、指定されたアクセス・キーに関する詳細情報を取得します。これにより、アクセス・キーに関連付けられた属性および権限を確認できます:

# Request
curl -X GET 'https://dataaccess.adb.us-phoenix-1.oraclecloudapps.com/adb/auth/v1/databases/OCID1.AUTONOMOUSDATABASE.OC1.PHX.ANYHQLJRGDV...EXAMPLE/accesskeys/ak_og67ZI8bdS.....BiHCda7l' \
--user "AdminUser:TestPass#" \
--header 'Request-Id: xcz5efdb7rfrbsfkkwwl7d38' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json'

# Sample Response
{
    "access_key_id": "ak_og67ZI8bdS.....BiHCda7l",
    "expiration_timestamp": "2025-12-07T03:35:12.751Z",
    "permissions": [
        {
            "actions": [
                "ADMIN_ANY"
            ]
        }
    ]
}

リクエスト・パラメータ:

  • database-ocid: 問い合せるAutonomous Databaseの一意のOracle Cloud Identifier (OCID)。

  • access-key-id: 詳細がリクエストされる特定のアクセス・キーの一意の識別子。

  • AdminUser: 認証に使用されるデータベース・ユーザー名。

  • TestPass#: データベース・ユーザーのパスワード。

  • Request-Id: このAPIリクエストの一意の識別子。ロギングまたはトラブルシューティングに役立ちます。

  • Content-Type: レスポンスの予期される形式を指定します(applicationまたはjson。ヘッダーで設定)。

  • Accept: レスポンス形式を指定します。

アクセス・キーの更新

アクセス・キーを作成して取得した後、PUT /accesskeys REST APIを使用して既存のアクセス・キーの属性を更新します。

アクセス・キーを更新する構文と例:

構文

PUT https://dataaccess.adb.{oci-region-name}.oraclecloudapps.com/adb/auth/v1/databases/{database-ocid}/accesskeys/{access_key_id}
    Authorization: Basic <Base64-encoded database username and password>
    request-id: <optional request-id>
    Content-Type: application/json

{
  "permissions": [<permissions array>],
  "extend_expiration_minutes_by": <integer>
}

例: 次のリクエストでは、アクセス・キーが更新され、有効期限が120分延長されます。

# Request
curl -X PUT 'https://dataaccess.adb.us-phoenix-1.oraclecloudapps.com/adb/auth/v1/databases/OCID1.AUTONOMOUSDATABASE.OC1.PHX.ANYHQLJRGDV...EXAMPLE/accesskeys/ak_og67ZI8bdS.....BiHCda7l' \
--user "AdminUser:TestPass#" \
--header 'Request-Id: xzpqvei6e7x52ri94odpv0a4' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
    "extend_expiration_minutes_by" : 120
}'

# Sample Response

{
    "access_key_id": "ak_og67ZI8bdS.....BiHCda7l",
    "expiration_timestamp": "2025-12-07T05:35:12.751Z",
    "permissions": [
        {
            "actions": [
                "ADMIN_ANY"
            ]
        }
    ],
    "message": "Expiration extended by 120 min"
}

リクエスト・パラメータ:

  • database-ocid: 問い合せるAutonomous Databaseの一意のOracle Cloud Identifier (OCID)。

  • access-key-id: 詳細がリクエストされる特定のアクセス・キーの一意の識別子。

  • AdminUser: 認証に使用されるデータベース・ユーザー名。

  • TestPass#: データベース・ユーザーのパスワード。

  • Request-Id: このAPIリクエストの一意の識別子。ロギングまたはトラブルシューティングに役立ちます。

  • Content-Type: レスポンスの予期される形式を指定します(applicationまたはjson。ヘッダーで設定)。

  • Accept: レスポンス形式を指定します。

  • extend_expiration_minutes_by: (本文)アクセス・キーの有効期限を延長する分数。

レスポンス・パラメータ:

  • access_key_id: 更新されたアクセス・キーの一意の識別子。

  • expiration_timestamp: アクセス・キーの新しい有効期限タイムスタンプ。

  • permissions: アクセス・キーに関連付けられた権限を記述する配列。

    • actions: 許可されるアクションのリスト(例: "ADMIN_ANY")。

  • message: 実行されたアクションを示す確認メッセージ。

アクセス・キーの削除

既存のアクセス・キーが不要になった場合は削除できます。DELETE /accesskeys REST APIを使用して、データベースからアクセス・キーを削除します。

データベースからアクセス・キーを削除する構文と例:

構文:

DELETE https://dataaccess.adb.{oci-region-name}.oraclecloudapps.com/adb/auth/v1/databases/{database-ocid}/accesskeys/{access_key_id}
    Authorization: Basic <Base64-encoded database username and password>
    request-id: <optional request-id>

例: 次のリクエストは、指定されたアクセス・キーをAutonomous AI Databaseから削除します。削除すると、キーは認証またはデータベース・アクセスに使用できなくなります。削除に成功すると、HTTPステータス・コード204 No Contentまたは200 OKが返され、レスポンス本文はありません。

# Request
curl -X DELETE 'https://dataaccess.adb.us-phoenix-1.oraclecloudapps.com/adb/auth/v1/databases/OCID1.AUTONOMOUSDATABASE.OC1.PHX.ANYHQLJRGDV...EXAMPLE/accesskeys/ak_og67ZI8bdS.....BiHCda7l' \
--user "AdminUser:TestPass#" \
--header 'Request-Id: xzpqvei6e7x52ri94odpv0a4' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
# Sample Response

{
    "message": "Access key deleted successfully.",
    "access_key_id": "ak_og67ZI8bdS.....BiHCda7l",
    "status": "DELETED"
}

リクエスト・パラメータ:

  • database-ocid: 問い合せるAutonomous Databaseの一意のOracle Cloud Identifier (OCID)。

  • access-key-id: 詳細がリクエストされる特定のアクセス・キーの一意の識別子。

  • AdminUser: 認証に使用されるデータベース・ユーザー名。

  • TestPass#: データベース・ユーザーのパスワード。

  • Request-Id: このAPIリクエストの一意の識別子。ロギングまたはトラブルシューティングに役立ちます。

  • Content-Type: レスポンスの予期される形式を指定します(applicationまたはjson。ヘッダーで設定)。

レスポンス・パラメータ:

  • message: 削除操作の結果を示す確認メッセージ。

  • access_key_id: 更新されたアクセス・キーの一意の識別子。

  • status: 削除後のアクセス・キーの最終ステータス(例: 「DELETED」)。

DynamoDB互換APIを起動するステップ

DynamoDB APIを有効にしてアクセス・キーを作成した後、DynamoDBクライアントSDKを使用して、DynamoDBのOracle Database APIを起動できます。

次のステップに従って、DynamoDBのAutonomous AI Database APIを起動するようにDynamoDBクライアントを構成します。

Autonomous AI Database DynamoDB互換エンドポイントを使用したDynamoDbClientの構成

AWS資格証明ファイルの更新

ファイルが存在しない場合は、~/.aws/credentialsにあるAWS資格証明ファイルに移動します。Autonomous AI Database DynamoDB互換API用に生成されたアクセス・キーIDおよびシークレット・アクセス・キーで資格証明ファイルを更新します。たとえば:
aws_access_key_id=<Your ADB-S DynamoDB Compatible APIs Access Key ID>
aws_secret_access_key=<Your ADB-S DynamoDB Compatible APIs Secret Access Key>

Autonomous AI Databaseエンドポイントを使用するようにDynamoDBクライアント・コードを更新します。

たとえば、次のコードでは、Autonomous AI Databaseエンドポイントを指すようにJava SDKを使用してDynamoDBクライアントを構成します:

import java.net.URI;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;

// Set the appropriate region and endpoint. 
//Region name is optional and will be overridden by the region value specified in the REST API endpoint.
Region region = Region.US_EAST_1;
String endpoint = "https://dataaccess.adb.us-phoenix-1.oraclecloudapps.com/adb/keyvaluestore/v1/OCID1.AUTONOMOUSDATABASE.OC1.PHX.ANYHQLJRGDV...EXAMPLE";

// Build the DynamoDB client using a custom endpoint
DynamoDbClient ddb = DynamoDbClient.builder()
    .region(region)
    .endpointOverride(URI.create(endpoint))
    .build();

この例では、クライアントがAutonomous AI DatabaseのDynamoDB互換RESTエンドポイントを指すように、デフォルト・エンドポイントをオーバーライドします。

コード要素

  • DynamoDbClient.builder(): 新しいDynamoDbClient.Builderインスタンスを初期化します。このビルダーは、AWS SDK for Javaの一部であり、DynamoDBクライアント・インスタンスの作成に使用されます。

  • region(Region region): クライアントが動作するAWSリージョンを指定します。このリージョン名はオプションであり、REST APIエンドポイントで指定されたリージョン値によってオーバーライドされることに注意してください。

  • endpointOverride(URI endpoint): デフォルトのAWSサービス・エンドポイントではなく、指定されたDynamoDB互換HTTPエンドポイントと通信するようにクライアントを構成します。

  • build(): ビルダー構成を確定し、指定された設定で新しいDynamoDbClientインスタンスを作成します。

Python (Boto3を使用)、C++など、他のプログラミング言語および対応するAWS SDKを使用して、DynamoDBクライアント・エンドポイントを構成またはオーバーライドすることもできます。

言語別のDynamoDB SDK参照を参照してください。

自律型AIデータベースでのDynamoDB互換APIの起動

次のコードは、DynamoDB互換表movieを作成し、基本的な操作を実行する方法を示しています。カスタム・エンドポイントを含むJava AWS SDK v2を使用して、アイテムを記述、リスト、挿入、更新および削除します。

import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.*;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import java.net.URI;
import java.util.Map;

public class DynamoDBMovieExample {
    public static void main(String[] args) {
        // Set the region and endpoint
        //Region name is optional and will be overridden by the region value specified in the REST API endpoint.
        Region region = Region.US_WEST_1;
        String endpoint = "https://region.us-phoenix-1.adb.oraclecloud.com";

        // Build the DynamoDB client using a custom endpoint
        DynamoDbClient ddb = DynamoDbClient.builder()
            .region(region)
            .endpointOverride(URI.create(endpoint))
            .build();

        // Create table
        CreateTableRequest createTableRequest = CreateTableRequest.builder()
            .tableName("movie")
            .keySchema(
                KeySchemaElement.builder().attributeName("PK").keyType(KeyType.HASH).build(),
                KeySchemaElement.builder().attributeName("SK").keyType(KeyType.RANGE).build()
            )
            .attributeDefinitions(
                AttributeDefinition.builder().attributeName("PK").attributeType(ScalarAttributeType.S).build(),
                AttributeDefinition.builder().attributeName("SK").attributeType(ScalarAttributeType.S).build()
            )
            .provisionedThroughput(
                ProvisionedThroughput.builder().readCapacityUnits(5L).writeCapacityUnits(5L).build()
            )
            .build();
        ddb.createTable(createTableRequest);

        // Describe the table
        DescribeTableRequest descRequest = DescribeTableRequest.builder().tableName("movie").build();
        DescribeTableResponse descResponse = ddb.describeTable(descRequest);

        // List all tables
        ListTablesRequest listRequest = ListTablesRequest.builder().build();
        ListTablesResponse listResponse = ddb.listTables(listRequest);

        // Insert (PutItem)
        ddb.putItem(PutItemRequest.builder()
            .tableName("movie")
            .item(Map.of(
                "PK", AttributeValue.builder().s("001").build(),
                "SK", AttributeValue.builder().s("MOVIE").build(),
                "Title", AttributeValue.builder().s("Inception").build()))
            .build()
        );

        // Update (UpdateItem)
        ddb.updateItem(UpdateItemRequest.builder()
            .tableName("movie")
            .key(Map.of(
                "PK", AttributeValue.builder().s("001").build(),
                "SK", AttributeValue.builder().s("MOVIE").build()))
            .updateExpression("SET #T = :t")
            .expressionAttributeNames(Map.of("#T", "Title"))
            .expressionAttributeValues(Map.of(":t", AttributeValue.builder().s("Inception (2010)").build()))
            .build()
        );

        // Delete (DeleteItem)
        ddb.deleteItem(DeleteItemRequest.builder()
            .tableName("movie")
            .key(Map.of(
                "PK", AttributeValue.builder().s("001").build(),
                "SK", AttributeValue.builder().s("MOVIE").build()))
            .build()
        );
    }
}

使用上のノート

自律型AIデータベースでのDynamoDBのAutonomous AI Database APIの無効化

自律型AIデータベースのDynamoDB APIを無効にするステップを示します。

必要に応じて、次の前提条件ステップを実行します:

  • Oracle Cloud Infrastructure Consoleを開くには、クラウドの横にあるナビゲーション・アイコンをクリックします。

  • Oracle Cloud Infrastructureの左側のナビゲーション・メニューから、「Oracle Database」をクリックし、「Autonomous AI Database」をクリックします。

  • 「自律型AIデータベース」ページで、「表示名」列の下のリンクから自律型AIデータベースを選択します。

Autonomous AI DatabaseインスタンスでDynamoDB APIを無効にするには、次のステップに従います:

  1. 「他のアクション」ドロップダウン・リストで、「タグの管理」を選択します。

    「タグの追加」ページが表示されます。

  2. 次の値を指定して、Autonomous AI Databaseにタグを割り当てます。
    • ネームスペース:フリーフォーム・タグを追加するには、値を空白のままにします。

    • キー: adb$feature

    • 値: {"name":"DynamoDB_API","enable": false}

    タグを追加するには、「追加」をクリックします。

    「追加」をクリックすると、「ライフサイクル状態」フィールドに「更新中」と表示され、Autonomous AI Databaseによって「Autonomous Databaseタグの更新」作業リクエストが生成されます。リクエストを表示するには、詳細ページで「作業リクエスト」タブを選択します。

Autonomous AI DatabaseでOracle Database API for DynamoDBを使用するためのノートおよび制限事項

Autonomous AI DatabaseでOracle Database API for DynamoDBを使用するためのノートと制限事項をリストします。

Autonomous AI DatabaseでOracle Database API for DynamoDBを使用する場合は、次の点に注意してください:

使用上のノート

  • Oracle Database API for DynamoDBが有効になっているAutonomous AIデータベースを削除すると、関連するすべてのDynamoDB互換表も削除され、請求が停止します。

  • Database API for DynamoDBが有効になっているAutonomous AI Databaseが停止した場合、関連するすべてのDynamoDB互換表は、停止した期間中、ECPU消費に対して請求されません。データベースが停止している間も、ストレージ料金は引き続き適用されます。

  • 関連するすべてのDynamoDB互換表は、前述のように削除操作または停止操作の影響を受けます。

制限事項

  • ワークロード・タイプがトランザクション処理の単一のAutonomous AIデータベースでは、最大20個のDynamoDB互換表が許可されます。

  • 無料のAutonomous AI Databaseおよび開発者向けのAutonomous AI Databaseごとに、最大2つのDynamoDB互換表を使用できます。

  • Free Autonomous AI DatabaseおよびAutonomous AI Database for Developersごとに、DynamoDB互換表ごとに最大4つのECPUが許可されます。

  • 表名の長さは3文字から255文字の間である必要があります。

  • グローバル表APIおよびPartiQL APIはサポートされていません。

Autonomous AI Database DynamoDBTableへのデータのインポートおよびエクスポート

既存のAmazon DynamoDBテーブルからAutonomous AI Database DynamoDBTableにデータをインポートし、他のシステムで使用するためにAutonomous AI Database DynamoDBTableからデータをエクスポートできます。

インポートおよびエクスポートに必要なOCIポリシー

インポートまたはエクスポート操作を実行する前に、Autonomous AI Database Key Value Storeサービスがデータ転送に使用されるOCI Object Storageバケットにアクセスできるようにする動的グループおよびIAMポリシーを作成します。

動的グループの作成

キー値ストア・リーダー・データベースのリソースIDを指定する動的グループを作成します。

resource.id = '<leader-pdb-ocid>'

IAMポリシーの作成

動的グループがインポートおよびエクスポート操作に使用されるOCIオブジェクト・ストレージ・バケットにアクセスできるようにするポリシーを作成します:

allow dynamic-group <dynamic-group> to use buckets in compartment <bucket-compartment> where target.resource.id = <bucket-ocid>

allow dynamic-group <dynamic-group> to use objects in compartment <bucket-compartment> where target.resource.id = <bucket-ocid>

詳細は、IAMユーザーのIdentity and Access Management (IAM)グループおよびポリシーの作成を参照してください。

インポート

ImportTable操作により、既存のAmazon DynamoDBのお客様は、Amazon DynamoDB表からAutonomous AI Database DynamoDBTableにデータを移行できます。

インポート・プロセスは次のステップで構成されます。
  1. 既存の Amazon DynamoDBテーブルから Amazon S3バケットにデータをエクスポートします。詳細は、DynamoDB data export to Amazon S3を参照してください。

  2. エクスポートされたデータをAmazon S3バケットからOCI Object Storageバケットにコピーします。詳細は、AWS S3からAutonomous AI Databaseへのデータのロードを参照してください。

  3. ImportTable APIを使用して、OCIオブジェクト・ストレージ・バケットからAutonomous AI Database DynamoDBTableにデータをインポートします。

    ImportTableリクエストの例

    {
      "TableCreationParameters": {
        "TableName": "importExampleTable",
        "AttributeDefinitions": [
          {
            "AttributeName": "p",
            "AttributeType": "S"
          }
        ],
        "KeySchema": [
          {
            "AttributeName": "p",
            "KeyType": "HASH"
          }
        ],
        "ProvisionedThroughput": {
          "ReadCapacityUnits": 200,
          "WriteCapacityUnits": 200
        }
      },
      "S3BucketSource": {
        "S3Bucket": "<object-storage-private-bucket-url>"
      },
      "InputFormat": "JSON"
    }

次の入力形式がサポートされています:

  • JSON

  • CSV

エクスポート

ExportTable操作を使用すると、他のシステムで使用するためにAutonomous AI Database DynamoDBTableからデータをエクスポートできます。

エクスポートされたデータは、リクエストで指定したOCIオブジェクト・ストレージ・バケットに書き込まれます。

{
  "ClientToken"  : "anewone5",
  "ExportFormat" : "JSON",
  "TableArn"     : "<table-arn>",
  "S3Bucket"     : "<object-storage-private-bucket-url>"
}

サポートされている形式は次のとおりです。

  • JSON

  • CSV