ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData API Server とADO.NET Provider for IBMCloudObjectStorage(もしくは250+ の他のADO.NET Providers)を使って、IBM Cloud Object Storage をOData エンドポイントして公開し、Node.js からシンプルなHTTP リクエストでクエリを実現します。本記事ではAPI Server を使ってJSON でフォーマットされたIBM Cloud Object Storage データをNode.js でリクエストする方法を説明します。
以下のステップに従って、安全なIBM Cloud Object Storage OData サービスの作成を開始します。
API サーバーは独自のサーバーで実行されます。Windows では、スタンドアロンサーバーまたはIIS を使用して展開できます。Java サーブレットコンテナで、API Server WAR ファイルをドロップします。詳細とハウツーについては、ヘルプドキュメントを参照してください。
API Server は、Microsoft Azure、Amazon EC2、Heroku にも簡単にデプロイできます。
API サーバーとADO.NET Provider for IBMCloudObjectStorage を展開した後、[Settings]->[Connections]をクリックし、API サーバー管理コンソールで新しい接続を追加してIBM Cloud Object Storage に接続するために必要な認証値とその他の接続プロパティを指定します。
Cloud Object Storage に接続する前に、Cloud Object Storage インスタンスを登録してCloud Object Storage API キーとCRN を取得していきます。
IBM Cloud アカウントにCloud Object Storage がまだない場合は、以下の手順に従ってアカウントにSQL Query のインスタンスをインストールできます。
API キーは以下の手順で取得できます。
デフォルトでは、CData 製品はCloud Object Storage CRN を自動で取得します。ただし、複数のアカウントがある場合は、CloudObjectStorageCRN を明示的に指定する必要があります。この値は、次の2つの方法で取得できます。
これで準備は完了です。以下の接続プロパティを設定してください。
プロパティを設定したら、これで接続設定は完了です。
次に、[Settings]->[Resources]をクリックして、API サーバーへのアクセスを許可するIBM Cloud Object Storage エンティティを選択できます。
作成するOData サービスを決定したら、[Settings]->[Users]をクリックしてユーザーを承認します。API サーバーは、認証トークンベースの認証を使用して主要な認証スキームをサポートします。IP アドレスに基づいてアクセスを制限することもできます。ローカルマシンを除くすべてのIP アドレスはデフォルトで制限されています。SSL を使用して、接続を認証及び暗号化することができます。
OData フィードはNode.js で簡単に使用できます。Node.js のHTTP クライアントを使用して、API サーバーのOData エンドポイントからJSON 形式のデータをリクエストできます。リクエストを行った後、レスポンスの本文を作成し、JSON.parse() 関数を呼び出してレコードに解析できます。
以下のコードはObjects データに対して認証されたリクエストを行います。 以下のURL の例では、Bucket カラムの値がsomeBucket のレコードを検索する単純なフィルターを適用しています。
var http = require('http');
http.get({
protocol: "http:",
hostname:"MyServer.com",
port:MyPort,
path: "/api.rsc/Objects?$filter=" + encodeURIComponent("Bucket eq 'someBucket'"),
auth:'MyUser:MyAuthtoken'
},
function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
console.log(body);
var jsonData = JSON.parse(body);
});
}).on('error', function(e) {
console.log("Error: ", e);
});