본문 바로가기

nodejs

aws s3 endpoint 적용기

✔ aws-sdk 라이브러리 사용 시 endpoint 변경을 적용해보자

nestjs - service layer 에서 적용했다.

import * as AWS from 'aws-sdk';

export class S3Service {
  private readonly s3: AWS.S3;
  private readonly bucketName = process.env.S3_BUCKET_NAME;

  constructor() {
    this.s3 = new AWS.S3({
      s3ForcePathStyle: true,
      endpoint: process.env.S3_BASE_URL,
      accessKeyId: process.env.S3_ACCESS_KEY,
      secretAccessKey: process.env.S3_SECRET_KEY,
    });
  }

  async uploadFile(path: string, file: Express.Multer.File) {
    const fileName = `${Date.now()}_${file.originalname}`;
    const params = {
      Bucket: `${this.bucketName}/${path}`,
      Key: fileName,
      Body: file.buffer,
    };

    this.s3.putObject(params, (err, data) => {
      if (err) {
        return false;
      }
      return fileName;
    });
  }
}

access key나 secret access key값 모두 맞는데, 권한이 없다, 유효하지 않는 key 값이다 등등의 에러는 이렇게 endpoint 설정을 추가하니 해결됐다.

만난 에러들

  • The AWS Access Key Id you provided does not exist in our records.
  • XXX.com is not in the cert`s altnames
    • s3ForcePathStyle : true 해주면 됨 !
반응형

'nodejs' 카테고리의 다른 글

또 사용할것 같은 custom 함수들  (0) 2022.12.07
redis connect  (0) 2022.06.09
typescript 꿀팁  (0) 2022.03.03
typeorm repository 뿌수기  (0) 2022.02.15
typeorm multiple database  (0) 2021.08.03