𝒫𝓇ℯ𝓈𝒾ℊ𝓃ℯ𝒹 𝒰ℛℒ과 프로필 사진

2025. 1. 6. 16:08TIL

 

기존 코드의 흐름

1. Client 이미지 선택

2. Server 해당 유저의 ID에 해당하는 위치로 Presigned URL생성후 반환

3. Client 받은 Presigned URL로 접속하여 이미지 업로드

 

이런식으로 코드를 작성한다면 DB에는 실제 URL을 담을수 없게 된다.

왜냐하면 Presigned URL을 이용하기 때문에 해당 Presigned URL의 유효기간이 끝나면 그 URL은 쓸수가 없기때문에 유저의 프로필 주소를 DB에 담아두는 의미가 없다.

1대1 채팅이나 채팅방에서 주고받은 파일의 경우에는 외부에서 접근이 가능해서는 안되는 보안이 중요한 형태이지만

프로필 사진일 경우에는 우리가 주로 사용하는 SNS만 보더라도 꼭 친구가 아니어도 다른 사람의 프로필 이미지를 조회할수 있는것 처럼 보안에 비교적 개방되어 있는것을 확인할 수 있다.

따라서 프로필 사진의 경우 퍼블릭 엑세스 제한에서 예외로 오픈하여 Presigned URL을 사용하지 않고 고정된 주소를 통해 통신이 가능하도록 수정할 것이다.

프로필 사진을 수정하거나 업로드할때는 Presigned URL을 기존처럼 이용하고

단순히 조회를 할때는 고정된 주소를 참조하여 참조가 가능하도록 한다.

 

S3 퍼블릭 엑세스 접근 권한 수정

프로필이 업로드 되는 경로의 경우 접근 허용

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::hjchat-s3-bucket1/uploads/profile/*"
    }
  ]
}

 

https://hjchat-s3-bucket1.s3.ap-northeast-2.amazonaws.com/uploads/profile/1/profile

이제 해당 주소로 접근하여 프로필사진 조회가 가능하다.

 

채팅방에서 이제 자신의 프로필을 같이 표시할 수 있게 되었다.