Lambdaでログ整形
Kinesis FirehoseでログをS3に転送し、そのログをLambdaで受け取りログを整形する場合を想定しています。そのときのLambdaの処理をNode.jsでどう書くか説明します。
ソースコード
exports.handler = (event, context, callback) => { const output = event.records.map(record => { const data = Buffer.from(record.data, 'base64').toString('utf8'); const parsedData = JSON.parse(data); parsedData.text = "textを追加" return { recordId: record.recordId, result: 'Ok', data: Buffer.from(parsedData, 'utf8').toString('base64') }; }); callback(null, {records: output}); };
上記がデータを受け取ってから返すまでの処理です。ES6で書いているのでBabelでトランスパイルしてからソースコードをアップしてください。関数名をhandlerとしていますがどんな名称を使用しても大丈夫です。
トランスパイルは下記記事を参考にしてください。
ES6をトランスパイルしてAWS Lambdaで使用する方法
データの受け取り方
第一引数のevent.recordsから取得できます。Kinesis Firehoseから受け取るデータは複数になります。
データはbase64エンコードされたものが渡されるのでこれをutf8に変換してあげないといけません。またJSONで送っている場合はJSON.parseもしないといけません。
まとめると今回のデータ変換の流れは下記です。
Binary(base64)-> String(UTF8) -> JSON
データの返し方
データを返すときは変更したdataを上書きし、resultキーに’Ok’という文字列を設定します。最後に受け取ったときと同じ状態に戻すためにbase64エンコードでバイナリデータに変換し、callbackの第二引数に渡してあげれば完了です。
おすすめ本
初めてAWSでサービス構築する方はこの本がおすすめです。IAMを使ったユーザ管理からVPCやセキュリティグループの設定、EC2・RDSなどを使った基本的なインフラ構築が丁寧に解説されています。初心者の入門本としておすすめの一冊になります。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す