DevOps/AWS

[AWS] S3에서 csv를 다운받아서 json으로 만들기 (Next.js, Node)

세리둥절 2023. 5. 26. 12:05
반응형

먼저 해야할일

S3 bucket을 만들고, IAM에서 S3FullAccess 권한을 가진 IAM을 만들어서 key를 발급받고, bucket에 CSV 파일을 업로드한다

 

메인 코드

그 다음에 Next.js api 폴더에 아래와 같이 만든다. (이 예제는 Next Version 12를 사용함)

import { NextApiHandler } from 'next';
import AWS from 'aws-sdk';
import csv from 'csvtojson';

const BUCKET_NAME = 'BUCKET';
const S3 = new AWS.S3({
    accessKeyId : 'ACCESS',
    secretAccessKey : 'SECRET'
})

const handler: NextApiHandler = async (req, res) => {

    if (req.method === 'GET') {
        const data = req.body;
        
        const params = {
            Bucket : BUCKET_NAME,
            Key : data.fileName, //'table-data.csv'
        }

        // get csv file and create stream
        const stream = S3.getObject(params).createReadStream();

        // convert csv file (stream) to JSON format data
        const json = await csv().fromStream(stream);

        res.status(200).json({ data: json })
    }
};

export default handler;

 

POSTMAN에서 테스트

반응형