[Archive] AWS S3
このライブラリはアーカイブされており、サポートされなくなりました。AWS S3ライブラリの最新バージョンは、こちらから入手できます。
AWS_S3ライブラリを使用して、AWS S3 バケットと通信できます。例えば、AWS_S3ライブラリをセンサライブラリと使用すると、センサからのデータ出力を直接自分のクラウドスペースに保存できます。そのためにはAWS S3でバケットの設定と次のユーザー情報が必要です。
- Region: バケットが存在するリージョン(例: ap-northest-2)
- Bucket name: 使用するバケット名
- Access key ID: AWSのIAMセキュリティ認証情報で作成されたアクセスキーID
- Secret key: 作成されたアクセスキーIDに関連づけられた秘密キー
AWS S3でバケットを初期設定し、必要な情報を取得すれば、get、put、deleteという3つの主要なアクションをNEQTOから実行することができます。
AWS_S3オブジェクトの作成時に、region
, bucketName
, accessKeyId
, secretKey
, fileName
, filePath
, body
といったパラメータを設定する必要があります。
これらのパラメータは、一般的なJavaScriptオブジェクト内で、次のような文字列型のkeyとvalueのペアとして設定できます。
オプション
var userOptions = {
region: "ap-northeast-2",
bucketName: "sample-bucket",
accessKeyId: "ACCESSKEYID",
secretKey: "SeCrEtKeY123",
fileName: "SensorData.csv",
filePath: "/",
body: ""
};
オブジェクト作成
ユーザーオプションを設定すると、AWS_S3にデータを直接送信することができます。
var s3Library = new AWS_S3(userOptions);
パラメータ関数
s3Library
オブジェクト生成後に対応する関数を呼び出すことによって{value}
を設定できます。
region
:setRegion({value})
bucketName
:setBucketName({value})
accessKeyId
:setAccessKeyId({value})
secretKey
:setSecretKey({value})
fileName
:setFileName({value})
filePath
:setFilePath({value})
body
:setBody({value})
同時に複数のパラメータを設定する場合、それらをJavaScriptオブジェクト内にまとめてsetParameters({parametersObject})
関数呼び出しに渡すか、個々の設定関数を呼び出しチェーンで呼び出すことができます。例: s3Library.setRegion("newRegion").setFikeName("newFile.txt").setBody("New File Contnets")
S3ライブラリオブジェクトを作成し、初期パラメータを設定するとput()
、 get()
、 delete()
の呼び出しの準備ができ、s3を呼び出すことができます。
関数
PUT
put()
関数を呼び出すと、S3ライブラリはパラメータで設定されたファイルパスとファイル名で、現在のバケットにbody
パラメータのコンテンツをアップロードします。
GET
get()
関数を呼び出すと、S3ライブラリは現在のバケットのパラメータで設定されたファイルパスとファイル名からbody
パラメータにコンテンツをダウンロードします。 ファイル名が指定されていない場合、バケットのディレクトリ構造全体がダウンロードされます。ダウンロードしたコンテンツはログで確認することができます。ログの確認方法についてはドキュメントをご参照ください。
DELETE
delete()
関数を呼び出すと、S3ライブラリは現在のバケットのファイルパスとファイル名のファイルを削除します。
サンプルスクリプト
次のスクリプトは、HTS221センサライブラリとAWS_S3ライブラリをインポートした後のユーザースクリプトの例です。
NEQTO IOボードのインターフェースをオンにして、HTS221センサと通信する新しいI2Cデバイスオブジェクトを作成します。
outputFile
と呼ばれるバッファーを作成します。これは、時間、温度、湿度の値がコンマで区切られたcsvタイプのファイルです。ユーザーは、HTS221センサから10秒間隔で読み取り値を取得し、outputFile
バッファーの新しい行を追加して出力していきます。
センサの読み取りが完了した後、region, bucket, access key id, secret key, a filename, file path, outputFile
バッファーbodyのパラメータとしてs3オブジェクトを作成し、put()
メソッドを呼び出してcsvファイルをs3バケットにアップロードします。
// IMPORTED LIBRARIES
// - HTS221
// - AWS_S3
// Logging setup
log.setLevel(2); //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE
log.printLevel(2); //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
log.clear();
//Use standard interface of NEQTO IO board
nqEx.enI2CS(true);
nqEx.enI2CL(true);
//I2C Config
var baudrate = 400000;
var i2c = new I2C(1);
i2c.open(baudrate);
var hts = new HTS221(i2c);
hts.init();
var outputFile = "Time,Temperature,Humidity\n";
var NUM_READINGS = 10;
var iteration = 0;
while (iteration < NUM_READINGS) {
var dateNow = new Date();
var tempHumi = hts.getResult();
outputFile += dateNow.toTimeString() + "," + tempHumi.temp + "," + tempHumi.humi + "\n";
setTimeout(10000).wait();
iteration += 1;
}
// S3 User Options
var userOps = {
region: "ap-northeast-2",
bucketName: "bucket_name",
accessKeyId: "ACCESS_KEY_ID",
secretKey: "SECRET_KEY",
fileName: "HTS221.csv",
filePath: "/",
body: outputFile,
};
var s3 = new AWS_S3(userOps);
s3.put();