セッション・トークン認証の使用によるOracle NoSQL DatabaseからOCIオブジェクト・ストレージへの移行

この例では、Oracle NoSQL Database Migratorをセッション・トークン認証とともに使用してOracle NoSQL Database表からOCIオブジェクト・ストレージ・バケット内のJSONファイルにデータをコピーする方法を示します。

ユースケース

開発者が、Oracle NoSQL Database表のデータをOCIオブジェクト・ストレージ(OCI OS)にバックアップするオプションを検討しています。セッション・トークンベースの認証を使用する必要があります。

このデモンストレーションでは、OCIコマンドライン・インタフェースのコマンド(CLI)を使用してセッション・トークンを作成します。手動でマイグレータ構成ファイルを作成し、データ移行を実行します。

前提条件
  • 移行するソースとシンクを指定します。
    • ソース: Oracle NoSQL Database内のusers表。
    • シンク: OCI OSバケット内のJSONファイル

      OCI OSについてリージョン・エンドポイント、ネームスペース、バケットおよび接頭辞を指定します。OCI OSサービス・エンドポイントのリストについては、オブジェクト・ストレージ・エンドポイントを参照してください。

      • endpoint: us-ashburn-1
      • バケット: Migrate_oci
      • 接頭辞: userSession
      • ネームスペース: idhkv1iewjzj
        バケットのネームスペース名は、そのテナンシのネームスペースと同じであり、テナンシの作成時に自動生成されます。ネームスペース名は次のように取得できます:
        • Oracle NoSQL Database Cloud Serviceコンソールから、「Storage」「Buckets」の順に移動します。
        • 「List Scope」から「Compartment」を選択し、そのバケットを選択します。「Bucket Details」ページで、「Namespace」パラメータにその名前が表示されます。

        OCI OSのネームスペース名を指定しなかった場合、マイグレータ・ユーティリティでは、テナンシのデフォルト・ネームスペースが使用されます。

      ノート:

      OCI OSバケット内のオブジェクトを書き込む権限があることを確認します。ポリシーの設定の詳細は、オブジェクト・ストレージへの書込みを参照してください。
  • 次のステップに従ってセッション・トークンを生成します:
    • OCI CLIをインストールし構成します。クイックスタートを参照してください。
    • 次のOCI CLIコマンドのいずれかを使用してセッション・トークンを生成します。使用可能なオプションの詳細は、CLIの場合のトークンベース認証を参照してください。
      #Create a session token using OCI CLI from a web browser:
      oci session authenticate --region <region_name> --profile-name <profile_name>
      #Example:
      oci session authenticate --region us-ashburn-1 --profile-name SESSIONPROFILE

      または

      #Create a session token using OCI CLI without a web browser:
      oci session authenticate --no-browser --region <region_name> --profile-name <profile_name>
      #Example:
      oci session authenticate --no-browser --region us-ashburn-1 --profile-name SESSIONPROFILE

      前述のコマンドでは、

      region_name: OCI OSのリージョン・エンドポイントを指定します。Oracle NoSQL Database Cloud Serviceでサポートされているデータ・リージョンのリストについては、データ・リージョンおよび関連するサービスURLを参照してください。

      profile_name: プロファイル(OCI CLIコマンドでセッション・トークンの生成に使用される)を指定します。

      このOCI CLIコマンドでは、次のサンプルで示すように、$HOME/.oci/configパスにあるOCI構成ファイル内にエントリが作成されます:
      [SESSIONPROFILE]
      fingerprint=f1:e9:b7:e6:25:ff:fe:05:71:be:e8:aa:cc:3d:0d:23
      key_file=$HOME/.oci/sessions/SESSIONPROFILE/oci_api_key.pem
      tenancy=ocid1.tenancy.oc1..aaaaa ... d6zjq
      region=us-ashburn-1
      security_token_file=$HOME/.oci/sessions/SESSIONPROFILE/token
      

      security_token_fileは、前述のOCI CLIコマンドを使用して生成されたセッション・トークンのパスを指しています。

      ノート:

      • プロファイルがOCI構成ファイル内にすでに存在する場合、このOCI CLIコマンドでは、セッション・トークンの生成中に、セッション・トークン関連の構成でそのプロファイルが上書きされます。
      • シンク構成テンプレート内で次のものを指定します:
        • credentialsパラメータで、OCI構成ファイルへのパス。
        • credentialsProfileパラメータで、セッション・トークンの生成中に使用されるプロファイル。
        "credentials" : "$HOME/.oci/config"
        "credentialsProfile" : "SESSIONPROFILE"

        マイグレータ・ユーティリティでは、前述のパラメータを使用して生成されたセッション・トークンの詳細が自動的にフェッチされます。credentialsパラメータを指定しなかった場合、マイグレータ・ユーティリティでは、パス$HOME/.ociにある資格証明ファイルが検索されます。credentialsProfileパラメータを指定しなかった場合、マイグレータ・ユーティリティでは、OCI構成ファイルにあるデフォルト・プロファイル名(DEFAULT)が使用されます。

      • セッション・トークンは60分間有効です。セッション期間を延長するには、セッションをリフレッシュします。詳細は、「トークンのリフレッシュ」を参照してください。
手順

Oracle NoSQL Database表からOCI OSバケット内のJSONファイルに移行するには:

  1. Oracle NoSQL Databaseソース、およびOCI OSバケットのシンク内のJSONファイルを指定して構成ファイル(JSON形式)を準備します。テンプレートについては、「ソース構成テンプレート」「シンク構成テンプレート」を参照してください。
    セッション・トークン認証を使用してOCI OSバケットにアクセスするには、シンク構成テンプレート内でuseSessionTokenパラメータをtrueに設定します。それに対応するように、credentialsパラメータで構成パスを指定し、credentialsProfileパラメータでプロファイル名を指定します。
    {
      "source" : {
        "type" : "nosqldb",
        "storeName" : "kvstore",
        "helperHosts" : ["<hostname>:<port>"],
        "table" : "users",
        "includeTTL" : true,
        "requestTimeoutMs" : 5000
      },
      "sink" : {
        "type" : "object_storage_oci",
        "format" : "json",
        "endpoint" : "us-ashburn-1",
        "namespace" : "idhkv1iewjzj",
        "bucket" : "Migrate_oci",
        "prefix" : "userSession",
        "chunkSize" : 32,
        "compression" : "",
        "useSessionToken" : true,
        "credentials" : "$/home/.oci/config",
        "credentialsProfile" : "SESSIONPROFILE"
      },
      "abortOnError" : true,
      "migratorVersion" : "<latest>"
    }
  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを展開したディレクトリに移動します。
  3. 構成ファイル・オプションを渡すことでrunMigratorコマンドを実行します。--configまたは-cオプションを使用して、次のように構成ファイルを渡します:
    ./runMigrator --config ./migrator-config.json
  4. マイグレータ・ユーティリティによってデータ移行が進められます。出力例を次に示します。
    useSessionTokenパラメータをtrueに設定すると、マイグレータ・ユーティリティによって自動的に、セッション・トークンを使用して認証されます。マイグレータ・ユーティリティにより、users表から、Migrate_ociという名前のOCI OSバケット内のJSONファイルにデータがコピーされます。データ・バックアップが成功したかどうかをログで確認します。
    [INFO] creating source from given configuration:
    [INFO] source creation completed
    [INFO] creating sink from given configuration:
    [INFO] sink creation completed
    [INFO] creating migrator pipeline
    [INFO] [OCI OS sink] : writing table schema to userSession/Schema/schema.ddl
    [INFO] migration started
    [INFO] Migration success for source users_6_10. read=2,written=2,failed=0
    [INFO] Migration success for source users_1_5. read=3,written=3,failed=0
    [INFO] Migration is successful for all the sources.
    [INFO] migration completed.
    Records provided by source=5, Records written to sink=5, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 982ms
    Migration completed.
    

    ノート:

    マイグレータ・ユーティリティによって、シンク構成テンプレート内のchunkSizeパラメータに応じてソース・データが同一ディレクトリ内の複数のJSONファイルに分割されます。この例では、マイグレータ・ユーティリティによって、Migrate_oci/userSession/Dataディレクトリ内のusers_1_5_0.jsonファイルとusers_6_10_0.jsonファイルにデータがコピーされます。

    ソース表スキーマは、Migrate_oci/userSession/Schemaディレクトリ内のschema.ddlファイルにコピーされます。

確認

データ・バックアップを確認するには、Oracle NoSQL Database Cloud Serviceコンソールにログインします。メニュー「Storage」、「 Object Storage & Archive Storage」、「Buckets」の順に移動します。Migrate_ociバケット内のuserSessionディレクトリからそれらのファイルにアクセスします。このコンソールにアクセスする手順については、「インフラストラクチャ・コンソールからのサービスへのアクセス」を参照してください