aws-sdk: Version 2.x 지원종료

2024. 3. 27. 22:16AWS/S3

배포시 S3 버킷을 생성하여 Multer를 활용한 video와 img 파일업로드를 구현해보고자 이글을 작성하였다.

S3버킷을 활용한 파일업로드는 정말 삽질하기 쉽다는 생각이 든다.

관련 정보가 많이 없어 무작정 S3를 활용하여 파일 업로드를 어떻게든 해보겠다는 의지 하나만으로 이를 해결해보았다.

✔️핵심

❗ aws-sdk: Version 2.x 지원종료

❗S3Client의 credentials 설정시 accessKeyId와 secretAccessKey의 .env 파일로 관리시 process.env.AWS_ACCESS_KEY_ID와 같이 AWS를 기입

참고자료:

https://www.npmjs.com/package/aws-sdk?activeTab=readme

 

aws-sdk

AWS SDK for JavaScript. Latest version: 2.1586.0, last published: 18 hours ago. Start using aws-sdk in your project by running `npm i aws-sdk`. There are 20308 other projects in the npm registry using aws-sdk.

www.npmjs.com

npm의 문헌을 참고하자면 aws-sdk에 대한 2.x버전에 대한 종료가 진행될 것임을 알 수 있다.
여기서 aws-sdk에 대한 버전을 참고해봤을 때

최신버전이 2.x임을 확인할 수 있다. 이에 다른 방법이 있지 않을까하여 구글링을 많이 해본결과 @aws-sdk/client-s3를 사용해보는 것을 추천한다는 블로그를 찾을 수 있었다.

npm:

https://www.npmjs.com/package/@aws-sdk/client-s3

 

@aws-sdk/client-s3

AWS SDK for JavaScript S3 Client for Node.js, Browser and React Native. Latest version: 3.540.0, last published: 5 days ago. Start using @aws-sdk/client-s3 in your project by running `npm i @aws-sdk/client-s3`. There are 2697 other projects in the npm regi

www.npmjs.com

참고자료:

https://velog.io/@fud904/AWS-multerS3-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%84%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%97%85%EB%A1%9C%EB%93%9C%ED%95%98%EA%B8%B0

 

[AWS] multerS3 사용해서 이미지 업로드하기

AWS S3에 이미지 업로드 하기

velog.io

import multer from 'multer';
import multerS3 from 'multer-s3';
import { S3Client } from '@aws-sdk/client-s3';

const s3 = new S3Client({
   region: process.env.AWS_REGION,
   credentials: {
      accessKeyId: process.env.AWS_ACCESS_KEY_ID,
      secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
   },
});

const s3ImageUploader = multerS3({
   s3: s3,
   bucket: process.env.AWS_BUCKET,
});

const s3VideoUploader = multerS3({
   s3: s3,
   bucket: process.env.AWS_BUCKET,
});

// 파일 업로드 middleware
// 사용자가 보낸 파일을 uploads 폴더에 저장하도록 설정된 middleware
export const avatarUpload = multer({
   dest: 'uploads/avatars/',
   storage: s3ImageUploader,
   limits: {
      fileSize: 3000000,
   },
});

// fileSize 최대 10000 bytes
export const videoUpload = multer({
   dest: 'uploads/videos/',
   storage: s3VideoUploader,
   limits: {
      fileSize: 10000000,
   },
});

그리고 multerS3 사용시  acl: 'public-read-write', 과 같이 S3 버킷에 대한 ACL(액세스 제어 목록)을 ACL의 옵션을 제거하는 것을 추천한다. 그렇지 않으면 다음과 같은 에러가 발생한다.

AccessControlListNotSupported: The bucket does not allow ACLs at throwDefaultError

multerS3에 대한 acl 정책삭제시 S3 버킷을 생성할 때 정의했던 ACL 기본정책으로 진행이 된다.

❗주의:

S3Client의 credentials 설정하여 accessKeyId와 secretAccessKey의 .env 파일로 관리시 process.env.AWS_ACCESS_KEY_ID와 같이 AWS를 기입

어떤 이유에선지는 모르겠으나 credentials 설정하여 accessKeyId와 secretAccessKey를 .env 파일로 관리시 AWS를 앞에 꼭 기입해야 해당하는 .env를 찾아와 인식하여 실행이 된다.

 

S3를 사용함에 필요한 참고자료:

S3 버킷 생성과 IAM으로 API KEY를 생성할 때 필요한 정책과 역할을 설정에 대한 참고자료로 공유하고자 한다.

https://velog.io/@wndbsgkr/AWS-S3%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%A0%95%EC%B1%85%EA%B3%BC-%EC%97%AD%ED%95%A0-%EC%84%A4%EC%A0%95%EC%9D%84-%ED%95%B4%EB%B3%B4%EC%9E%90

 

AWS S3를 사용하기 위한 정책과 역할 설정을 해보자!

S3는 무엇인가요? S3는 확장성, 강력한 일관성, 보안 및 성능을 제공하는 객체 스토리지 서비스이다. S3는 데이터를 버킷이라고 불리는 객채에 대한 컨테이너 안에 객체로 저장하는데 여기서 객체

velog.io

 

AWS CLI 자격 증명하기:

이 자료는 필요 없을 수도 있으나 참고자료로 남겨 놓는다.

https://kimjingo.tistory.com/209

 

[AWS] AWS CLI 자격 증명하기(aws configure 명령어)

AWS CLI에서 다양한 리소스를 다루기 위해서는 자격 증명이 필요합니다. AWS 계정 혹은 액세스 키를 통하여 자격 증명을 할 수 있는데, 액세스 키를 이용하여 자격 증명을 하는 방법에 대하여 다루

kimjingo.tistory.com

 

[에러] This XML file does not appear to have any style information associated with it. The document tree is shown below.

참고자료:

https://velog.io/@sarifor/0006

 

[에러] This XML file does not appear to have any style information associated with it. The document tree is shown below.

문제 로그인했는데, 특정 사용자의 프로필 이미지가 보이지 않음. 해결 계정과 버킷의 퍼블릭 액세스 차단을 해제하고, S3 > 이 계정의 퍼블릭 액세스 차단 설정 > 네 항목 모두 해제 S3 >

velog.io

 

[에러] AccessControlListNotSupported: The bucket does not allow ACLs

참고자료:

https://velog.io/@shinsw627/The-bucket-does-not-allow-ACLs

 

The bucket does not allow ACLs

S3 bucket 스토리지에 이미지를 업로드 하는 것을 구현하던 중에The bucket does not allow ACLs 라는 오류가 발생하였다.ACL이란Access List => 접근하는 것을 허용 또는 거부하는 접근제어 리스트 ACL을 통해

velog.io

 

참고자료:

https://velog.io/@chrkb1569/AWS-S3-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-IAM-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%84%A4%EC%A0%95

 

AWS S3 적용하기 - IAM & 프로젝트 설정

S3 - IAM & 프로젝트 설정

velog.io