DynamoDBでのAutonomous AI APIの使用

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

DynamoDBでのAutonomous AI APIの使用について

Oracle Autonomous AI Databaseは、Oracleの完全管理型Autonomous AI Databaseを備えたDynamoDB用のAutonomous AI Database APIを提供し、既存のDynamoDBツールおよびSDKを使用してAutonomous AI Databaseとシームレスに連携できるようにします。

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に移行できるようにします。

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

前提条件

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

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

  • Autonomous AI Database API for DynamoDBでは、DynamoDB表へのアクセスを管理するために、ワークロード・タイプがTransaction ProcessingのAutonomous AI Databaseが必要です。その他のワークロード・タイプはサポートされていません。

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

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

Autonomous AI DatabaseインスタンスからDynamoDBのAPIを呼び出すためのアクセス・キーおよび秘密キーを生成するステップについて説明します。

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

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

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

  • 「Autonomous AI Database」ページで、「表示名」列の下のリンクからAutonomous AI Databaseを選択します。

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

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

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

  2. 次の値を指定して、Autonomous AI Databaseにタグを割り当てます。

    • ネームスペース:フリー・フロントのタグを追加するには、値を空白のままにします。

    • キー: adb$feature

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

    「追加」をクリックして、タグを追加します。

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

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

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

    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のAutonomous AI Database APIを起動するためのアクセスの構成

この項では、Autonomous AIデータベースを有効にした後、DynamoDBのAPIを認証して使用するために必要なアクセス・キーを作成および管理するステップを示します。

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

アクセス・キーの作成

Autonomous AI Databaseでアクセス・キーおよび秘密キーを作成するには、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 AI 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 AI 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データベースから削除します。削除されたキーは、認証またはデータベース・アクセスに使用できなくなります。削除に成功すると、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 AI 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 AI Database APIを起動できます。

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

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

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

    ~/.aws/credentialsにあるAWS資格証明ファイルにナビゲートし、ファイルが存在しない場合は作成します。資格証明ファイルを、Autonomous AI Database API for DynamoDBに対して生成されたアクセス・キー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();

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

コード エレメント

  • 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()
        );
    }
}

使用上のノート

DynamoDBのAutonomous AI Database APIの無効化

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

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

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

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

  • 「Autonomous AI Database」ページで、「表示名」列の下のリンクからAutonomous AI Databaseを選択します。

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

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

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

  2. 次の値を指定して、Autonomous AI Databaseにタグを割り当てます。

    • ネームスペース:フリー・フロントのタグを追加するには、値を空白のままにします。

    • キー: adb$feature

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

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

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

Oracle AI Database API for DynamoDBの使用に関するノートと制限事項

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

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

使用上のノート

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

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

  • 関連付けられたすべてのDynamoDB表は、前述の削除操作または停止操作の影響を受けます。

制限事項

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

  • 開発者向けの無料Autonomous AI DatabaseおよびAutonomous AI Databaseごとに最大2つのDynamoDBテーブルが許可されます。

  • DynamoDBテーブル当たり最大4個のECPUが、開発者向けの無料Autonomous AI DatabaseおよびAutonomous AI Databaseごとに許可されます。

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

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

Autonomous AI Database DynamoDBテーブルへのデータのインポートとエクスポート

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

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

インポートまたはエクスポート操作を実行する前に、Autonomous AI Database API for DynamoDBがデータ転送に使用されるOCIオブジェクト・ストレージ・バケットにアクセスできるようにする動的グループおよびIAMポリシーを作成します。

動的グループの作成

Autonomous AI Databaseの管理のリソースIDを指定する動的グループを作成します:

resource.id = '<database-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>

詳細は、リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスを参照してください。

DynamoDBテーブルのインポート

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

インポート・プロセスは次のステップで構成されます。

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

  2. エクスポートされたデータをAmazon S3バケットからOCI Object Storageバケットにコピーします。

  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

DynamoDBテーブルのエクスポート

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

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

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

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

  • JSON

  • CSV