今回はwebサイトのコンテンツ管理にcsvでやろうと思い、タイトルのサンプルコードをnode.jsで作成しました。
・前提
- s3の作成していること(コンソールから)
- s3にcsvをアップロードしていること(コンソールから)
- ローカルでawsのconfigurationが設定されていることの確認。
※参考:https://qiita.com/yuchaman/items/29458107c8ea7f2e0b42
・コード
const aws = require('aws-sdk');
const csvToJson = require('csvtojson');
module.exports = {
// get csv from s3
getDataFromS3: async () => {
console.log("call getDataFromS3");
const s3Client = new aws.S3({ apiVersion: '2006-03-01' });
let params = {
Bucket: 'bucketの名前を記載',
Key: 'sample.csv',
}
const s3Stream = s3Client.getObject(params).createReadStream();
const json = await csvToJson().fromStream(s3Stream);
console.log(json);
}
}
csvの中身
id,sampleNo,dataNo
2,sample2,data2
3,sample3,data3
4,sample4,data4
・ソースについて
- aws-sdk:awsに対してなにかする際には必要となるもの。
- csvtojson:取得したcsvのデータをjsonに変換するmodule。
- fromstreamを利用するとcsvの1行目を項目と認識してくれて、各値のkeyになります。
・s3に作成されたフォルダ以下のファイルを取得したい場合
上記の場合には、paramsのKeyの値を下記のように記載します。
let params = {
Bucket: 'bucketの名前を記載',
Key: 'sample_dir/sample.csv',
}
## ・最後に
サンプルコードには、errorハンドリングなどは入っていませんが、getObject()だったり、fromstreamについてはtry/catchでerrorハンドリングを追加した方がよいと思います。