Node.js 雲端服務 - Amazon (4)

基本介紹

教學目標

透過 Node.js 進行 Amazon Kinesis 傳入和取出 JSON 格式的記錄。

前置作業

  1. 申請 AWS 雲端服務帳號。
  2. 請在 Amazon Kinesis 服務中建立 Stream 用於傳入和取出 JSON 檔案。
  3. 透過 AWS IAM Management Console 取得 AWS credentials 用於授權存取 AWS 雲端服務,並且新增 config.json。
    1
    { "accessKeyId": "Access Key ID", "secretAccessKey": "Secret Access Key", "region": "us-east-1" }

套件安裝

1
$ npm install aws-sdk --save

使用教學

建立

1
2
3
var AWS = require('aws-sdk'); 
AWS.config.loadFromPath('./config.json');
var kinesis = new AWS.Kinesis();

傳入

1
2
3
4
5
6
7
8
9
10
11
12
var params = {
Data: JSON.stringify({id:1,name:"leoyeh"}),
PartitionKey: "key",
StreamName: "Stream 名稱"
};
kinesis.putRecord(params, function(err, result) {
if (err) {
console.log(err);
} else {
console.log(result);
}
});

取出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var params = {
ShardId: "shardId-000000000000",
ShardIteratorType: "LATEST",
StreamName: "Stream 名稱",
};
kinesis.getShardIterator(params, function(err, result) {
if (err) {
console.log(err);
} else {
getRecord(result.ShardIterator);
}
});

function getRecord(shard_iterator) {
var params = {
ShardIterator: shard_iterator
};
kinesis.getRecords(params, function(err, result) {
if (err) {
console.log(err);
} else {
try {
var StringDecoder = require('string_decoder').StringDecoder;
var decoder = new StringDecoder('utf8');
var data = JSON.parse(decoder.write(result.Records[0].Data));
console.log(data);
} catch(err) {
console.log("等待資料...");
}
if (result.NextShardIterator) {
getRecord(result.NextShardIterator);
}
}
});
}

相關資源