LoginSignup
0

More than 1 year has passed since last update.

S3からcsvを取得して表示する。(Node.js)

Posted at

今回は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ハンドリングを追加した方がよいと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0