🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

Aws에 S3 세팅하고 이미지를 업로드 했을때 404에러 질문

21.08.24 01:31 작성 조회수 470

0

안녕하세요 제로초님 질문드립니다.

Aws에 S3 세팅다하고 front , back 코드 모두 수정후 이미지를 올렸을때 아래 사진과같이 에러가발생합니다.
그런데 아에 front서버 모니터링에는 아무런 문제 안뜨는데 백쪽에서 이런식으로 모니터링에 오류가잡힙니다

CredentialsError: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1
 app >     at IncomingMessage.<anonymous> (/home/ubuntu/Twitter-next.js-node.js/back/node_modules/aws-sdk/lib/util.js:904:34)
app >     at IncomingMessage.emit (events.js:412:35)                                                                                        
app >     at IncomingMessage.emit (domain.js:470:12)                                                                                                                             app >     at processTicksAndRejections (internal/process/task_queues.js:82:21)     

혹시 이러한경우 어떤문제가 있는걸까요 ex) 프론트 코드 / 백 코드


답변 1

답변을 작성해보세요.

1

~/.aws/credentials에 AWS키와 시크릿 적으라고 하는 건데, 원래 제 소스코드라면 저 에러가 나면 안 됩니다. .env에 AWS키와 시크릿 제대로 넣으셨나요?

이전에 넣었는데 초기화가 되어있어서다시 넣었습니다!! 감사합니다!
그러니까 s3에 이미지 업로드가 올라가는데

혹시 s3에는 제대로 올라가는데 image에 링크가 제대로 안올라가서 이렇게 alt로 주소가 나오고
주소가 error가 나는데 혹시 이런문제는 어떤문제일지 알 수 있을까요?


지금 네트워크 탭에서 클릭하신 것은 s3 이미지랑 다른 주소입니다. _next 폴더는 next 빌드할 때 나오는 폴더입니다.

s3 관련해서는 저 주소를 복사해서 새로운 브라우저 창을 열고 주소창에 붙여넣기해보세요. 어떻게 뜨나 봐보세요.

https://s3.ap-northeast-2.amazonaws.com/donghwi-reactbird.shop/original/1629766925628_Simulator%20Screen%20Shot%20-%20iPhone%2012%20mini%20-%202021-08-23%20at%2018.45.45.png

이렇게 주소창에 입력화면 제가 넣은 이미지, 올려서 s3에 올라간 이미지파일이 바로 다운로드 됩니다.

음.. 저 주소가 네트워크 탭에도 떠야 하는데 안 뜬건가요?

네트워크 탭에도 뜨는데 화면에는 안뜨고 alt가 들어가버립니다 ㅠㅠ
그리고 alt에 떠있는 주소 그대로 복사해서 입력하면 해당 이미지 파일 잘 다운로드됩니다.

이미지를 업로드하면 S3에도 들어가있고, 이미지도 요청해서 잘받아오는데 Image로 못들어가고 alt로 들어가버립니다.

alt에 뜨는 주소는 올바른 주소인데 왜 alt로 가는지도 의문입니다 ㅠㅠ

개발자도구에 콘솔 과 network탭 첨부합니다


svg말고 png나 jpg 올려보세요.

png파일도 마찬가지입니다ㅠㅠ 디버깅해보니 PostForm컴포넌트 이곳에서 그냥 바로 alt로 가더라구요 

혹시 s3를 잘못만든거일까요? 
console.log(v) 부분에서 결과가 아래처럼 잘나오고 해당 링크를 누르면 바로 파일이 다운받아집니다.

https://s3.ap-northeast-2.amazonaws.com/donghwi-reactbird.shop/original/1629809780706_screen.png

원래 링크누르면 웹이 켜지는게 아니라 바로 다운받아지는게 맞는건가요???
바로 다운이 아니라 해당 이미지가 웹주소에 떠있어야 정상아닌가싶어서요!!..
뭔가 해답에 가까워지고있는것같은데!!..

Image에 src에  https://s3.ap-northeast-2.amazonaws.com/donghwi-reactbird.shop/original/1629809780706_screen.png

이렇게 올바른 주소가 들어감에도 불구하고 바로 alt가 나와버리는것이 이해가안됩니다

아까 네트워크탭에 뜨는거 보여달라고 말씀드렸는데 네트워크탭에 이미지가 없는데요? Image 말고 img 태그로 해봇0요

올린줄 알고 있었습니다 말씀하신 네트워크탭에 이미지가 아래 사진 맞을까요?

아뇨 s3 주소가 네트워크탭에 떠야합니다

next11버전에서는 next/Image 에 Image태그를 쓰라고 eslint경고를 띄우는데 
그걸 무시하고 
그냥 img 태그로 바꿨을때는 이미지가 잘 업로드가 됩니다!!

왜11버전에 Image태그였을때는 안되는지 모르겠네요 ㅠ

아래는 network탭입니다

https://nextjs.org/docs/api-reference/next/image#src

domains 등록 하셨나요?

도메인 등록은 그런데 모든 올리는 파일을 따라 갈수가없어서 몇몇개만 등록했고 올려서 시도해보는 이미지는 올려놓았습니다

이걸 도메인에 올려서 aws s3에서 가져오는건 전부 허용하도록 했는데 혹시 다른방법이있을까요?

next/Image했을때 문제가있고 그문제에 대한 
정확한 해결법을 모르겠어서 그냥 img태그를 사용해서 해결했습니다!

채널톡 아이콘