[S3 오류] http → https 통신 시키기

두의 개발 고민 블로그·2024년 2월 25일

CarryAWay 프로젝트

목록 보기
7/7

오류 상황

💡 react를 배포하고 난 후, 이미지가 뜨지 않는 현상이 발생했다. S3의 파일의 절대 주소를 보여주는 형태였는데, 이미지가 저장된 주소를 검색해보니, 아래처럼 https 통신을 하지 않고 있었다. 그래서 알아보니, url 주소를 조금 수정해야 하는 걸로 알게 되었다.

현재 : https://{버킷명}.s3.ap-northeast-2.amazonaws.com /{파일명}/{파일이름}

수정 : https://s3.ap-northeast-2.amazonaws.com/{버킷명} /{파일명}/{파일이름}

이렇게 수정을 해줘야 했다.

어떤 작업이 필요할까 ?

  • 서버 코드 내부에서 URL을 정상 URL로 수정해주는 코드가 필요하다.
  • 데이터베이스에 저장되어 있는 URL 수정해야 한다.

Spring 코드 수정

// S3로 업로드
private String putS3(File uploadFile, String fileName) {
    amazonS3Client.putObject(new PutObjectRequest(bucket, fileName, uploadFile).withCannedAcl(CannedAccessControlList.PublicRead));
    String manualUrl = "https://s3.ap-northeast-2.amazonaws.com/" + bucket + "/" + fileName;
    return manualUrl;
}

아래 manualUrl 을 통해서 이미지 주소를 수정해준다.

MySQL 데이터 수정

use career;

UPDATE article
SET img1 = REPLACE(img1, 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com', 'https://s3.ap-northeast-2.amazonaws.com/{버킷명}'),
    img2 = REPLACE(img2, 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com', 'https://s3.ap-northeast-2.amazonaws.com/{버킷명}'),
    img3 = REPLACE(img3, 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com', 'https://s3.ap-northeast-2.amazonaws.com/{버킷명}'),
    img4 = REPLACE(img4, 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com', 'https://s3.ap-northeast-2.amazonaws.com/{버킷명}')
WHERE img1 LIKE 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com%'
   OR img2 LIKE 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com%'
   OR img3 LIKE 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com%'
   OR img4 LIKE 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com%';

UPDATE user
SET profile_img = REPLACE(profile_img, 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com', 'https://s3.ap-northeast-2.amazonaws.com/{버킷명}')
WHERE profile_img LIKE 'https://{버킷명}.s3.ap-northeast-2.amazonaws.com%';

SQL문의 REPLACE 메서드를 통해서 img URL이 저장되어 있는 데이터 명을 수정해준다.

마무리 확인

이제 데이터가 잘 뜨는 것을 볼 수 있다 !

profile
고민이 많은 개발자

0개의 댓글