✔ 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 |