팀 프로젝트에서 저는 AWS S3에 이미지를 업로드하는 일을 담당했습니다.
그러던 중 나는 내 인생을 어렵게 만든 실수를 저질렀다.
기억이 희미해지기 전에 조금 정리하자.
(1라운드) 첫 번째 실수
(노드:50054) 참고: 2023년에 JavaScript용 AWS SDK(v2)를 유지 관리 모드로 전환할 계획을 공식화하고 있습니다.
JavaScript용 AWS SDK(v3)를 사용하려면 코드를 마이그레이션하십시오.
자세한 내용은 마이그레이션 가이드를 참조하세요. https://a.co/7PzMCcy
(`node –trace-warnings …`를 사용하여 경고가 생성된 위치를 확인하십시오.)
영어에 대한 막연한 지식이지만, 총론은 v3를 쓰라고 하는 것 같은 느낌이 듭니다.
많은 인터넷 검색과 유능한 팀원들의 조언으로 모든 문제를 해결했습니다.
먼저 유지 관리 모드란 무엇입니까?
의 세계에서 소프트웨어 개발유지 보수 모드는 컴퓨터 프로그램모든 목표를 달성하고 일반적으로 “완전”한 것으로 간주되는 의 삶 곤충-무료. 이 용어는 또한 소프트웨어 제품다른 제품과 더 이상 경쟁력이 없거나 작동하는 기술 환경과 관련하여 최신 상태일 때. 두 경우 모두 추가 개발이 불필요하거나 잘못된 조언으로 간주되지만 때때로 버그 수정 및 보안 조치가 적용됩니다.
얼룩 여전히 발행되므로 유지보수 모드라는 용어가 사용됩니다.
유지 관리 모드가 자주 전환됨 철거 물품.https://en.wikipedia.org/wiki/Maintenance_mode
오류를 검색했을 때 다른 날짜가 나타났습니다.
(모두가 고통받는 것 같습니다.
)
https://stackoverflow.com/questions/75479425/suppress-aws-sdk-v2-deprecation-message
↳ 어떻게든 막아보세요
https://community.opendronemap.org/t/aws-sdk-v2-enter-maintenance-mode-in-2023-warning/14872
↳ 사전 공지가 있었던 것 같은 느낌
https://github.com/serverless/serverless/discussions/11750
https://www.reddit.com/r/aws/comments/117aybn/migrate_node_awssdk_code_from_v2_to_v3/
↳ 많은 분들이 그렇게 힘들어 하시는 것 같습니다.
https://docs.aws.amazon.com/en_us/sdk-for-javascript/v3/developer-guide/migrating-to-v3.html
https://docs.aws.amazon.com/en_us/sdk-for-javascript/v3/developer-guide/getting-started-nodejs.html
↳
AWS도 마이그레이션하라고 알려주고 가이드도 v3입니다.
나는 억압보다 이주를 선택했다.
AWS는 codemod 스크립트를 사용하라고 했고,
이것이 더 어렵다고 생각하여 v3 이후의 가이드를 따르기로 결정했습니다.
package.json의 “종속성”
"@aws-sdk/client-s3": "^3.292.0"
이렇게 변경
npm install @aws-sdk/client-s3
하라고 말해
import { S3Client } from "@aws-sdk/client-s3";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create an Amazon S3 service client object.
const s3Client = new S3Client({ region: REGION });
export { s3Client };
그리고 이렇게 하라고 말해줘
지침에 따라 완료되고 실행됩니다.
언제나처럼 또 다른 오류가 발생했습니다.
(라운드 2) 두 번째 오류
(오류) uncaughtException: this.s3.upload는 함수가 아닙니다.
나는 당황…
구글링을 해도 잘 나오지 않으니 함수, 변수, 경로 등을 조작해 보세요.
나는 또한 오류 메시지의 링크를 읽고 읽었습니다.
안절부절..
관계는 복잡하고 일부는 TS입니다 …
AWS S3가 처리되었다고 가정하고, 무엇을 해야할지 생각했습니다.
(사실 더 이상 S3로 무엇을 해야할지 알 수 없었습니다.
)
멀터-s3
아….
그 친구가 달라졌나봐…
https://www.npmjs.com/package/multer-s3?activeTab=readme
multer-s3의 3.xx 버전은 AWS JavaScript SDK v3을 사용합니다.
특히 @aws-sdk/lib-storage의 업로드 클래스를 사용하며, 이는 다시 모듈식 S3Client를 호출합니다.
Multer-s3용 2.xx 릴리스는 s3.upload 호출을 통해 AWS JavaScript SDK v2를 사용합니다.
↳AWS JavaScript SDK v3를 사용하려면 버전 3.xx를 사용하라는 메시지가 표시됩니다.
이 프로젝트를 시작할 때 신선했기 때문에 3.xx 버전인 줄 알았습니다.
package.json을 확인했는데 버전 2.xx였습니다.
npm install [email protected]
당신과 함께 새로운 것을 가지고
나는 숨을 쉬면서 그것을 타려고 노력했다.
오류가 발생했습니다.
(라운드 3) 버킷이 ACL을 허용하지 않음
검색해보니 ACL 권한 문제라고 나오네요.
드디어 S3에 도달했다고 생각했습니다.
끝이 보인다.
S3의 설정을 조정한 후 확실히 엉망이었습니다.
글을 쓰다 보니 오류 분류기라기보다 다이어리 같은 느낌이 듭니다.
암튼 먼 길이지만 무사히 해결되어 다행입니다.
(끝)
공식 문서를 참조하십시오
인터넷 검색은 가능하면 영어로 합니다.
좋은 팀원의 중요성