クイック・スタート

次のタスクを実行して、環境を設定し、Embedded R ExecutionのREST APIを使用して最初のEmbedded R Executionジョブを作成します。

前提条件

Embedded R ExecutionのREST API関数では、Oracle Autonomous DatabaseサービスのOracle Machine Learning for R (OML4R)スクリプト・リポジトリにスクリプトの名前を指定する必要があります。スクリプトには、ユーザー定義のR関数が含まれます。スクリプトを作成してスクリプト・リポジトリに保存する方法の詳細は、Embedded R Executionおよびスクリプト・リポジトリについてを参照してください。

アカウント情報の取得

Oracleからのアカウント作成電子メールには、Oracle Autonomous Databaseサービスのアイデンティティ・ドメイン名、ユーザー名およびパスワードが含まれます。これらの情報がわからない場合は、サービス管理者に問い合せてください。

プロビジョニングされているOracle Autonomous Databaseから取得できる次のURLも必要です。
  1. Oracle Cloud Infrastructureアカウントにサインインします。OCIユーザー名とパスワードが必要です。
  2. ハンバーガ・メニューをクリックし、プロビジョニングされているAutonomous Databaseインスタンスを選択します。Autonomous Databaseのプロビジョニングの詳細は、Oracle Autonomous Databaseのプロビジョニングを参照してください。
  3. 「データベース・アクション」をクリックします。
  4. データベース・アクション・ページをスクロール・ダウンし、「関連サービス」タイルの下の「Oracle Machine Learning RESTful Services」をクリックします。「Oracle Machine Learning RESTful Services」ダイアログが開きます。「コピー」をクリックして、次のURLを取得します:
    • OMLによって提供されるREST APIのREST認証トークンの取得:
      <oml-cloud-service-location-url>/omlusers/
    • すべての組込みR REST API:
      <oml-cloud-service-location-url>/oml/

    URL <oml-cloud-service-location-url>には、テナンシID、場所およびデータベース名が含まれます。たとえば、https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.comなどです。

    この例では、
    • qtraya2braestchはテナンシIDです。
    • omldbはデータベース名です。
    • us-sanjose-1はデータセンター・リージョンです
    • oraclecloudapps.comはルート・ドメインです。

cURLのインストール

このドキュメントの例では、cURLコマンドライン・ツールを使用して、Embedded R ExecutionのREST APIにアクセスする方法を示しています。

次の手順では、Windows 64ビット・システムでのcURLのインストール方法を示します。
  1. ブラウザで、cURLホーム・ページ(http://curl.haxx.se)にアクセスし、左上にある「Download」をクリックします。
  2. 「cURL Releases and Downloads」ページで、使用しているオペレーティング・システムに対応したcURLソフトウェアのSSL対応バージョンを見つけ、ZIPファイルをダウンロードするリンクをクリックしてソフトウェアをインストールします。

サーバーに安全に接続するには、SSLをサポートするバージョンのcURLをインストールする必要があります。

cURLを実行し、次の表に定義したコマンド行オプションを必要に応じて1つ以上指定します。

cURLオプション 説明
-d, --data @file.json ローカル・マシン上にあるJSON形式のリクエストの本文が含まれるファイルを識別します。または、-dを使用してリクエスト本文を渡すこともできます。たとえば、-d '{"input":"IRIS", "parameters":"{\"ore.drop\":false}", "parallelFlag":true}'です。
-H, --header 次のいずれか、または両方を定義します。
  • サーバーでユーザーを認証するための資格証明を含む認可ヘッダー。
  • リクエスト・ドキュメントのコンテンツ・タイプ

  • レスポンスに使用可能な特定のメディア・タイプを指定するために使用するAcceptヘッダー。

-i, --include 出力にHTTPヘッダーを含めます。
-X リクエストの種類を指定します(GET、POSTなど)。

認証トークンの取得

認証の説明に従って、認証トークンを取得します。

リクエストの送信

RESTクライアントを設定した後、接続が機能していることを確認するリクエストを送信できます。たとえば、次のcURLコマンドは、OML4Rスクリプト・リポジトリで使用可能なRスクリプトをリストします。

curl -i -X GET --header "Authorization: Bearer ${token}" 
<oml-cloud-service-location-url>/oml/api/r-scripts/v1/scripts

ノート:

このコールには認証が必要です。$tokenは、認可APIを介して取得されたトークンに割り当てられる環境変数を表します。

<oml-cloud-service-location-url> URLには、テナンシID、場所およびデータベース名が含まれます。たとえば、https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.comなどです。

この例では、
  • qtraya2braestchはテナンシIDです。
  • omldbはデータベース名です。
  • us-sanjose-1はデータセンター・リージョンです
  • oraclecloudapps.comはルート・ドメインです

リクエストが成功すると、次のような本文の200レスポンス・ヘッダーを受信します。

HTTP/1.1 200 OK
Date: Thu, 13 Jan 2022 08:36:42 GMT
Content-Type: application/json
Content-Length: 13
Connection: keep-alive
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1;mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
Content-Security-Policy: frame-ancestors 'none'
Set-Cookie: JSESSIONID=node0zdh3s4o3x13ua24jd16y44ro111.node0; Path=/oml; Secure; HttpOnly
Expires: Thu, 01 Jan 1970 00:00:00 GMT

JSON形式のレスポンス本文は次のとおりです。

{"result":[
{"OWNER":"RQSYS","SCRIPT":"function (index) \n{\n    set.seed(index)\n    x <- rnorm(10)\n    res <- mean(x)\n    res\n}","NAME":"compute.randomMean"},
{"OWNER":"RQSYS","SCRIPT":"function (dat) \n{\n    res <- aggregate(dat, by = list(dat$Species), FUN = length)\n    colnames(res)[1] <- \"Species\"\n    res\n}","NAME":"group.count"},
{"OWNER":"RQSYS","SCRIPT":"function (dat) \n{\n    ore.load(name = \"ds_regr\")\n    pred = cbind(PRED = predict(regr, newdata = dat, supplemental.cols = \"Sepal.Length\"), dat[\"Sepal.Length\"])\n    pred\n}","NAME":"my.predict"},
{"OWNER":"OMLUSER","SCRIPT":"function (divisor = 100) \n{\n    id <- 1:10\n    plot(1:100, rnorm(100), pch = 21, bg = \"red\", cex = 2)\n  data.frame(id = id, val = id/divisor)\n}","NAME":"RandomRedDots"}]}