Node.js AWS-SDKを使ったKinesis Firehoseへのデータアップロード




アップロード方法

  • AWS SDKを使用する方法
  • aws-kinesis-agentを使用した方法
  • fluent-plugin-kinesisを使用した方法

アップロードにはいくつか方法がありますが今回はAWS SDKを使用したアップロード方法を紹介したいと思います。

AWS SDKを使ったアップロード方法

Kinesis Firehoseの設定

今回はFirehoseにアップしたデータをS3にアップできるように設定します。まず、リージョンはオレゴンを指定します。

*2017年8月25日から東京リージョンでも使用できるようになっています。

Create Delivery Streamを押して詳細設定を行います。

Destinationは今回S3です。Streamの名称を好きなものに決めて、アップロード先のS3バケットを選択します。

 

圧縮方法とバッファ間隔

次の設定はS3にアップロードするタイミングを決める設定、圧縮するかどうか、暗号化を行うか等を決めれます。今回は圧縮と暗号化はせずにアップロード間隔を60に変更しました。間隔は60秒から900秒まで設定できます。

 

ロール設定

次にロール設定です。FirehoseにS3への書き込み権限を付与したロールを作成します。ここでは初期設定で上記権限がついているのでポリシーは変更しなくて大丈夫です。

最後に確認画面で設定が問題なければCreate Delivery Streamを押して完了となります。

AWS SDKの使い方

Node.jsを使用する場合はJavascript用のものを使用します。npmにあるので下記でインストールします。

npm install --save aws-sdk

まずはFirehoseにアクセスできるように各種値を設定します。2017年6月現在Firehoseは東京リージョンでは使用できないのでオレゴンで作ったものを使用します。エンドポイントとリージョンはここを参考にしました。

import AWS from 'aws-sdk';

const firehose = new AWS.Firehose({
    apiVersion: '2015-08-04',
    accessKeyId: ACCESS_KEY_ID,
    secretAccessKey: SECRET_ACCESS_KEY,
    endpoint: 'https://firehose.us-west-2.amazonaws.com',
    region: 'us-west-2'
});

putRecordでデータを一件だけFirehoseにアップロードすることができます。複数アップロードする場合はputRecordBatchでできます。使い方は簡単でStream名とアップしたいデータを渡すだけでS3までデータをアップロードしてくれます。

firehose.putRecord({
    DeliveryStreamName: 'TestFirehose',
    Record: {
        Data:  'firehose test data'
    }
}, function(err, data) {
    if (err) {
        console.log(err, err.stack);
    }
    console.log(data);  // { RecordId: 'Y49Vw8CxcD++gBnq4Ubj8rNpfG08nEz5pZTI7NL5PMoACYFvVhjTeVLvwBpNKWCFn94fJV3zqfNXpTrOC4NtJblZVC25TbscBR6mZe55M3HbQVHUqt3hOfsmMlBl16nYNQNjw0ZgnC/BHZAZTaeMyBai80rAbF/0jA235b/o200D3ATaejlICX+yz5HYNtgM+lNM7ts8Mcd5Wf7RH/3Q6+xklnPIu3pd' }
});

まとめ

  • Firehose、S3をオレゴンに立てる。
  • AWS SDKのputRecord(putRecordBatch)を使う

FirehoseはRedshiftやAnalyticsにもデータをロードできるので次回はその方法について記事を書きたいと思います。

書きました!こちらも参考にしてみてください!

おすすめ書籍

AWSをこれから使う初心者の方から現在使っている中級者の方までおすすめできる書籍です。内容はVPC、セキュリティグループ、IAMなどの基本的なことからWEBサービスを作るのに欠かせない、EC2、RDS、Route53などの扱い方が丁寧に説明されています。

中級者向けにはWEBサーバのオートスケール、Cloud Watchを使ったモニタリング方法、セキュリティ等について解説されています。手元において困ったときに読むのにちょうどいい一冊になると思います。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です