Error
[Error] this.client.send is not a function(node와 s3관련 오류 모음)
Uheeking
2023. 2. 8. 08:36
반응형
node와 s3를 연결하면서 나는 오류들을 정리하였다.
1. this.client.send is not a function
→ 구글링했을 때 이와 같이 오류난 사람들이 많았다.
https://github.com/anacronw/multer-s3/issues/169
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.
이는 생각보다 쉬운 문제였다. s3를 연결하려면 accessKeyId와 secretAccessKey가 필요하다. 그런데 이에 대한 오타가 나서 나는 문제였다. 그래서 그것을 확인하여 오류를 정정하였다.
3. The bucket does not allow ACLs
- 문제 발생 원인 : The bucket does not allow ACLs에 대한 오류는 s3업로드시 옵션 acl에 대해서 지정이 안되어 있는 경우 많이 생기는 오류이다.
문제 해결방안
- Amazon에 들어가서 버킷에 대한 권한을 들어간다.
2. 권한 메뉴에 들어가 보면 객체 소유권이라는 것이 있는데 이를 편집 기능을 눌러 편집한다.
3. acl을 활성화하고 아래에 acl이 복원된다는 것을 확인합니다 버튼을 클릭하여 활성화시켜준다.
4. 그러고 나면 코드로 돌아가서 코드를 돌려주면 오류없이 잘 돌아간다.
반응형