S3 업로드와 조회(HTTP get) 코드 샘플
본문 바로가기

Backend/AWS

S3 업로드와 조회(HTTP get) 코드 샘플

S3 넣기

s3에 접근하기 위해서 aws-sdk라는 모듈이 필요하다.

한가지 주의할점은 await를 사용해야 s3에 온전히 넣을때까지 기다릴 수 있다.

 

s3.upload(params)를 호출하면되는데 이때 params에 들어가는 옵션들을 확인해보자.

params 옵션

* Bucket : s3에 만든 bucket이름을 넣는다.

* Key : 해당 bucket에 넣을 폴더명을 입력한다. 데이터는 이곳 안에 들어간다.

* Body : json 형태의 데이터가 들어간다. JSON.stringify() 처리를 해줘야한다.

* ACL: ACL은 "Access Control List"의 약자로, AWS S3에서 객체(파일)에 대한 액세스 권한을 제어하기 위한 메커니즘이다. ACL은 S3 객체에 대한 여러 사용자 또는 역할의 액세스 권한을 설정하는 데 사용됩니다.  "private", "authenticated-read", "public-read-write" 

* Content-type: 매우 다양해서 여기서는 'application/json'의 예시만 담았다.

아래 예제는 json형태로 넣는방법이다. 

const mysql = require('mysql2/promise');

const AWS = require('aws-sdk');
const s3 = new AWS.S3({
    accessKeyId: '',
    secretAccessKey: '',
    region: ''//ap-northeast-2
});

const result = []

function uploadBufferToS3(buffer, fileName) {
    const params = {
        Bucket: '',//bucket 이름
        Key: fileName,
        Body: buffer,
        ACL: 'public-read',//private 도 있음
        ContentType: 'application/json'
    };
    return s3.upload(params).promise();
}

//주의! await안달면 안기다리고 넘어감
await uploadBufferToS3(JSON.stringify({result}), `[폴더명]/[파일명].json`)

 

S3 데이터 가져오기

매우 쉽다 일반 HTTP get 형식으로 불러오면된다.

const result = await fetch(`https://s3.ap-northeast-2.amazonaws.com/...[파일명].json`).then(e => e.json())
console.log(result)

 

반응형