S3이란?
Simple Storage Service 의 약자로 객체 기반 인터넷용 스토리지로
99.9999 의 높은 내구성 저렴한 비용으로 파일 저장을 할 수 있습니다.
DB 와 같이 데이터 수정이나 입출력이 빈번한 파일보다 이미지 파일 같은 정적파일 저장에 용이하고
단일 파일 5TB 지원가능하고 저장할수 있는 파일 수에는 제한이 없습니다.
다양한 AWS 서비스와 호환이 잘 되있고 유용성도 커서 효율적인 자원이용이 가능합니다.
Bucket : s3 최상의 디렉토리
Folder : 버킷 안 여러 파일을 저장하는 폴더
Object : 버킷안에 저장되는 파일
1. S3 버킷 생성하기 (+퍼블릭 권한)
다음과 같이 퍼블릭하게 파일에 접근이 가능한 S3 를 생성 해 보겠습니다.
AWS S3- 버킷 생성하기를 클릭합니다.
버킷 네임을 지정해주는데 이는 고유한 유니크한 이름으로 생성해줘야 합니다.
리전은 S3 버킷이 자주 사용될 지역으로 선택 해 줍니다.
퍼블릭 접근이 가능하도록 하기위해 ACLs 활성화를 해 줍니다.
마찬가지로 퍼블릭 한 접근을 위해 모두 체크하지 않도록 합니다.
실제 실무나 중요한 파일 일 경우 퍼블릭 차단을 옵션으로 지정해서 설정해주어야 합니다. 이때 추후 IAM 에서 지정한 키로 접근할 수 있습니다.
버킷 버전은 활성화시 버킷 객체 수정이 덮어쓰기를 방지하는 기능입니다.
하단 서버사이드 인크립션은 자동으로 객체를 보안설정 해주는 기능입니다.
이렇게 생성 된 객체로 들어와 파일을 넣기위해 업로드 버튼을 눌러줍니다.
파일 하나를 넣어주기위해 Add files 를 눌러 컴퓨터 바탕화면에 있는 33KB 파일 하나를 추가 해 주었습니다.
그리고 하단에 추가 설정 부분에 보면 ACL 설정이 있습니다. 퍼블릭 읽기를 허락해주는 Grant public-read access 를 체크해줍니다. 이는 추후에 따로 설정할 수도 있습니다.
S3 스토리지 클래스를 지정할 수 있는 옵션도 있습니다.
이것도 추후에 파일을 사용하다가 사용목적에 따라 바꿀 수 있습니다. 나머지 전부 기본값으로 설정해두고 객체를 업로드 하였습니다.
업로드 한 객체 설정에 생성된 URL 로 접근을 해보겠습니다.
이렇게 파일에 접근이 가능하게 되었습니다.
다시 객체 설정에서 ACL 옵션으로 가서 중간 옵션 Everyone- Read 의 체크를 풀어서 접근이 불가능하게 해보겠습니다.
똑같은 URL 로 접속 해 보겠습니다.
이전과 달리 접근이 불가능하며 AccessDenied 메세지가 뜹니다.
따라서 퍼블릭하게 만든 버킷에 있는 객체이지만 객체의 설정도 퍼블릭하게 만들어줘야함을 확인 할 수 있습니다.
객체 옵션 Permissions 으로 가서 아예 모든 객체의 권한을 퍼블릭하게 만드는 하나의 버킷폴리시를 만들어서 지정 해 보겠습니다.
아직 아무것도 지정되어있지 않은 버킷폴리시의 부분에서 Edit 을 누르고 Policy Generator 로 들어가 줍니다.
Select Type of Policy - S3 Bucket Policy
Effect - Allow
Principal - * (모두 허용)
Actions - Getobject (읽기 허용)
ARN - arn:aws:s3:::${bucketname}/*
해당 버킷에 들어가는 모든 객체들은 퍼블릭 하게 읽기 허용가능하도록 정책을 설정해두고 Add statement 를 눌러줍니다.
이때 ARN 입력에 오류가 생겨 일단 ARN 칸에 * 만 입력해주고 아래 JSON 에서 직접 수정 해 보겠습니다.
다음과 같이 생성된 JSON 문구를 복사 해 옵니다.
이렇게 직접 ARN 을 확인 할 수 도 있고 아래 폴리시 칸에 복사한 JSON 구문을 붙여 넣어주고 bucket policy 생성을 완료 해 줍니다.
다시 같은 URL 을 눌러서 파일 접근이 되는지 확인 해 줍니다.
버킷 폴리시로 얻은 권한에 파일이 다시 열림을 확인 할 수 있습니다.
S3 버킷은 안에 들어있는 객체를 지운 뒤 버킷을 지움으로써 완전히 삭제할 수 있습니다.
'AWS - KOR' 카테고리의 다른 글
#013) AWS Route 53 생성하기 (0) | 2022.07.18 |
---|---|
#012) AWS RDS 생성 하기 (0) | 2022.07.07 |
#010) 테라폼 terraform 으로 VPC, EC2 생성하기 (0) | 2022.07.03 |
#009) CloudFormation 으로 VPC, EC2 생성하기 (0) | 2022.07.01 |
#008) AWS CLI 로 VPC 와 EC2 생성하기 (0) | 2022.07.01 |