Oracle Cloud Object Storage
このスニペットは、Oracle Cloud Object StorageバケットにIoTデータを送信する機能を提供します。
Resources used: HTTPS x 1
Details
send_oracle
関数は、HTTPS経由で事前認証されたリクエストを使用して、渡された文字列オブジェクト「payload」をOracle Object Storageバケットの指定した「object」に PUT できます。 結果(エラー/レスポンス)は、コールバック関数に渡されます。
このスニペットを使用するには、 PAR_URL
(バケットからの事前認証済みリクエストURL)と CA
をユーザーが設定する必要があります。
注意: 提供されている関数では、最大4KBまでのデータを取り扱うことができます。より大きなサイズのデータを取り扱う場合は、neqto.jsドキュメントのhttpsオブジェクト、分割書き込みを参考にしてください。
CAの取得方法はこちら。
var CA = "-----BEGIN CERTIFICATE-----\n...<CA>...\n-----END CERTIFICATE-----"
//=================================================================
// ORACLE SNIPPET
//=================================================================
//=================================================================
// The following configuration are MANDATORY. Set by user.
//=================================================================
// The address of the Pre-Authenticated Request (PAR) URL from the bucket.
// eg. 'objectstorage.us-phoenix-1.oraclecloud.com/p/j3DoSvgQHbUaw6ADzHkDlnaqMuXWef_lhTxCiS9ngCw/n/docs/b/par-bucket/o/'
var PAR_URL = '<YOUR_PAR-URL>';
// Public certificate of the certificate authority that signed the Oracle server certificate for SSL/TLS handshake.
// eg. '-----BEGIN CERTIFICATE-----\n...<CA>...\n-----END CERTIFICATE-----'
var CA = '<YOUR_CA>';
//=================================================================
/**
* Post data to Oracle Object Storage Bucket using PAR (Pre-Authenticated Request).
* https://docs.cloud.oracle.com/en-us/iaas/Content/Object/Tasks/usingpreauthenticatedrequests.htm
* @function send_oracle
* @param {string} object - Name of the object/file to be put, as a String.
* @param {string} payload - Data to be sent to Oracle server, as a String.
* @param {function} callback - User callback to return the result (error/response).
* @returns {undefined}
*/
var send_oracle = function (object, payload, callback) {
var body = payload.toString();
var host = PAR_URL.split(/\/(.+)/)[0];
var path = PAR_URL.split(/\/(.+)/)[1];
var options = {
"method": 'PUT',
"host": host,
"path": `/${path}${object}`,
"headers": {
"Content-Length": body.length.toString()
},
"ca": CA
};
var request = https.request(options, function (response) {
response.on('end', function () {
callback(null, { "statusCode": response.statusCode, "statusMessage": response.statusMessage, "body": response.read() });
});
});
request.on('error', function () {
callback({ "errCode": request.errCode }, null);
});
request.end(body.toString(), function () {
print("[request] SUCCESS");
});
}
Function Usage Example
/*
<INSERT ABOVE SNIPPET HERE WITH SET CONFIGURATIONS>
*/
//=================================================================
log.setLevel(-1); //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE
log.printLevel(2); //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
//=================================================================
// MAIN SCENARIO
//=================================================================
/**
* Callback to fetch error/response from the request.
* @function callback
* @param {object} err - Error returned in case of a failed request. Has one property - `errCode`.
* @param {object} data - Response returned by a successfully completed request. Has three properties - `statusCode`, `statusMessage`, and `body`.
*/
var callback = function (err, data) {
if (err) {
print("[error]", err.errCode);
} else {
print("[status]", data.statusCode, data.statusMessage);
print("[response]", data.body);
}
}
var object = "folder/file.txt";
var payload = "Hello from NEQTO Device";
send_oracle(object, payload, callback);
上記に記載されている会社名、製品名は、各社の登録商標または商標です。
Updated: 2023-04-14