Node.js + Express 앱에서 특정 회원이 로그인하는 경우 프로필 이미지가 보이지 않음.
이미지가 저장된 곳은 AWS S3이다. 링크를 복사하여 별도 탭에서 열어보면, This XML file does not (후략)
및 Access Denied
라고 뜬다.
(깃허브에서 해당 커밋 보기)
Node.js 16.14.0
NPM 8.3.1
AWS S3
해당 이미지 객체 ACL
에서, 퍼블릭 액세스
객체 읽기 권한이 해제되어 있었다.
2021년에 이미지를 업로드했을 땐 분명 잘 보였으니, S3 콘솔에서 권한을 변경하고 원래대로 되돌리는 걸 깜박한 듯하다.
AWS 계정
과 해당 버킷
의 퍼블릭 액세스
차단을 해제
버킷 ACL
은 변경하지 않음.
객체 ACL
에서, 퍼블릭 액세스 시 읽기 권한 부여
위의 이슈를 해결하며 추가로 조사한 내용이다.
주로 AWS의 근간 서비스인 IAM의 기본 개념과, S3에 업로드/다운로드하는 방법들에 대해 정리하였다.
IAM
User
Group
Role
Policy
VPC
EC2
권한 결정 요소
Overview (직접 만든 요약도라 정확하지 않을 수 있음)
Access Key/Secret Key
Policy
(User, Bucket)
ACL
(Bucket, 파일 객체)
미리 제공된 ACL
라는, 사전 정의된 권한 부여 집합을 지원한다. 이걸로 multer 객체에 acl 지정 가능퍼블릭 액세스
설정
크게 ACL 방식과 policy 방식으로 나뉜다.
ACL 방식
policy 방식
비교
S3
에 Public 공개
로 업로드한 이미지가 깨져 있으면, 계정(S3)
/버킷
/객체
별로 관련 설정이 빠짐없이 돼 있나 체크
퍼블릭 액세스
차단 해제객체 ACL
: Public-ReadIAM
은 AWS 근간 서비스 중 하나로, AWS 리소스에 대한 액세스 제어를 할 수 있음.
S3
업로드에는 ACL
방식보다 Policy
방식이 권장됨.