2025. 1. 6. 16:08ㆍTIL
기존 코드의 흐름
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
이제 해당 주소로 접근하여 프로필사진 조회가 가능하다.
채팅방에서 이제 자신의 프로필을 같이 표시할 수 있게 되었다.
'TIL' 카테고리의 다른 글
Swagger failed to load api definition 오류 (0) | 2025.01.13 |
---|---|
신규 회원가입시 𝐷𝑒𝑓𝑎𝑢𝑙𝑡-𝐼𝑚𝑎𝑔𝑒 설정 및 접근 가능한 채팅방만 조회 (0) | 2025.01.07 |
S3을 이용한 프로필 사진 업로드 구현 (1) | 2025.01.03 |
AWS S3 버킷 생성하기 (0) | 2025.01.02 |
친구 추가 요청,거절 및 리팩토링 (2) | 2025.01.01 |