Error

[Error]this.client.send is not a function(node와 s3관련 오류 모음)

Uheeking 2024. 6. 4. 09:34
반응형

node와 s3를 연결하면서 나는 오류들을 정리하였다.

1. this.client.send is not a function

this.client.send is not a function
this.client.send is not a function

→ 구글링했을 때 이와 같이 오류난 사람들이 많았다.

https://github.com/anacronw/multer-s3/issues/169

 

this.client.send is not a function · Issue #169 · anacronw/multer-s3

I've been trying to get around this error for a while but it keeps popping up, and S3 keeps billing me the requests even if no files are being uploaded. This is my code: require("dotenv").config();...

github.com

 

github에서 이러한 오류에 대해서 토론한 것이 있어서 이를 참조하여 문제를 해결하였다.

1) 문제 발생 원인 : multer-s3와 aws-sdk는 아마존의 s3와 node를 연결하기 위해서 깔아야 하는 모듈이다. 근데 이 둘의 버전이 아래와 같이 일치해야 한다. 내 경우는 일치하지 않아 나는 오류였다.

2) 문제 해결 : 그래서 multer-s3는 3.x으므로 이를 다운 그레이드를 하여 2.x로 설정하였다. 이렇게 하여 aws-sdk가 2.x이였기에 이와 버전을 맞추어 주었다.

Multer S3 2.x는 AWS SDK 2.x와 호환되고 Multer S3 3.x는 AWS SDK 3.x와 호환됩니다.

2. SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your key and signing method.

Check your key and signing method.
Check your key and signing method.

이는 생각보다 쉬운 문제였다. s3를 연결하려면 accessKeyId와 secretAccessKey가 필요하다. 그런데 이에 대한 오타가 나서 나는 문제였다. 그래서 그것을 확인하여 오류를 정정하였다.

3. The bucket does not allow ACLs

The bucket does not allow ACLs
The bucket does not allow ACLs

  1. 문제 발생 원인 : The bucket does not allow ACLs에 대한 오류는 s3업로드시 옵션 acl에 대해서 지정이 안되어 있는 경우 많이 생기는 오류이다. .
  2. 문제 해결 방안 :

1) Amazon에 들어가서 버킷에 대한 권한을 들어간다.

권한탭
권한탭

2) 권한 메뉴에 들어가 보면 객체 소유권이라는 것이 있는데 이를 편집 기능을 눌러 편집한다.

객체 소유권
객체 소유권

3) acl을 활성화하고 아래에 acl이 복원된다는 것을 확인합니다 버튼을 클릭하여 활성화시켜준다.

객체 소유권 편집
객체 소유권 편집

4) 그러고 나서 코드로 돌아가서 코드를 돌려주면 오류없이 잘 돌아간다.

반응형