요기조기 프로젝트를 진행하면서 팀 이미지를 S3로 관리할 계획을 세웠습니다.
로직은 다음과 같습니다. AWS S3로 이미지를 관리하고, RDS에서 이미지 경로를 관리할 예정입니다.
AWS 서비스를 접속하여 S3 검색하면 버킷을 생성할 수 있습니다.
'버킷 만들기' 버튼을 누릅니다.
버킷 이름을 입력하고, 객체 소유권을 설정합니다.
저는 제 AWS 계정으로 EC2를 빌드했고, 이 계정으로만 관리 할 예정이기 때문에 ACL을 비활성화 했습니다.
다음으로 퍼블릭 엑세스 권한을 설정해주었습니다.
일단 퍼블릭 상태로 생성했고, 생성할 때 필요에 따라서 차단을 체크를 진행하면 됩니다.
버킷 버전 관리는 비활성화로 진행했습니다. 활성화 한다면 버전별로 관리를 할 수 있지만, 비용이 더 많이 듭니다. 그래서 비활성화로 진행하였습니다.
기본 암호화를 활성화했습니다. 이렇게 진행하면 버킷에 저장되는 객체들은 암호화를 해서 저장합니니다. 객체를 다운로드할 때에는 복호화해서 제공해줍니다.
설정이 완료되면 버킷을 만듭니다!
이렇게 yogijogi-file 버킷이 생성된 것을 확인할 수 있습니다.
끝이 아닙니다!!!
yogijogi-file을 클릭하여 -> 권한 -> 버킷 정책의 편집을 클릭합니다.
편집창에 버킷 ARN을 복사하고 정책 생성기를 클릭합니다.
Json형식으로 정보들이 생깁니다. JSON 형식들의 정보들을 복사하여 정책생성기에 붙여넣기를 합니다.
이때 오류가 발생했습니다.
arn:aws:s3:::yogijogi-file끝에 /*을 넣어주면 해결됩니다.
그 이유는
리소스 지정의 정확성: AWS에서는 리소스를 정확하게 지정할 것을 권장합니다. S3 버킷의 경우 버킷 이름만으로는 정확한 리소스 지정이 되지 않습니다.
와일드카드 사용: arn:aws:s3:::yogijogi-file/ 와 같이 와일드카드()를 사용하면 해당 버킷 내의 모든 객체에 대한 정책을 적용할 수 있습니다. 이렇게 하면 버킷 내 모든 파일에 대한 권한 관리가 가능합니다.
그리고 변경사항 저장!!
이렇게 Json형식으로 정보가 생겼습니다.
그 후 S3에서 생성한 버킷을 누르고, 폴더를 하나 만들었습니다.
됩니다!!
IAM에 들어와 역할 생성 버튼을 누릅니다.
사용 사례에서 EC2로 선택합니다.
역할 세부정보를 입력하고 넘어갑니다.
IAM 역할을 방금 만든 이름을 클릭하여 역할을 선택해줍니다.
IAM 역할에서 어떠한 정책도 설정하지 않았습니다. 따로 설정을 해줍니다.
IAM 메뉴에서 정책 메뉴를 클릭하고, 정책 생성 버튼을 누릅니다.
시각적 편집기에서 다음과 같이 설정한다.
서비스 - S3
작업 - ListBucket, GetObject, PutObject를 검색하여 선택한다.
리소스 - 특정 을 선택한 후, bucket과 object에 각각 ARN 추가를 합니다.
ARN을 지정해주고, 그 후 검토를 눌러서 정책이름과 설명을 입력한 다음 정책 생성을 누릅니다.
(화면 캪쳐를 못했습니다!)
그 후 정책사용에서 연결을 클릭한 다음, 생성한 IAM 역할을 클릭하여 오른쪽 위에 정책 연결을 클릭합니다.
CLI을 클릭하고, 아래 권장사항 확인 체크를 한후 다음을 클릭합니다.
설명 태그 값을 입력후 액세스 키 만들기 버튼을 클릭합니다.
이렇게 액세스 키가 만들어 졌습니다. 이 키로 Ubuntu 환경에서 ec2에 접근후 s3 연결을 해보겠습니다.
ssh를 이용하여 ec2에 접근합니다.
aws cli를 설치합니다.
sudo apt update
sudo apt install awscli
그 후 방금 만든 키를 입력합니다.
그리고 region과 output format을 입력하는데
region은 ap-northeast-2(서울)
output format은 json을 입력합니다.
그리고 확인하면 s3 yogijogi-file이 잘나옵니다!!!
이렇게 ec2환경에서 s3접근을 진행했고, 이를 토대로 이미지 업로드를 테스트해서 잘되는지 확인해보겠습니다.