🗃️스토리지
데이터를 오랫동안 저장하는 것을 목적으로 제공되는 데이터 저장 장소
- 보조 기억 장치라고도 한다.
- 주 기억장치인 메모리와 차이는 여러가지가 있지만, 주된 차이점은 스토리지는 전원을 꺼도 데이터를 저장할 수 있다는 것이다.
S3
🔥EC2 내부 스토리지 사용시 문제점
EC2 인스턴스에서 제공되는 스토리지는 EBS라고한다.
RDS도 EBS를 사용한다.
- EBS 스토리지로 DB저장공간으로 사용하게되면 여러 문제가 발생한다.
- EC2 인스턴스의 OS 자체도 관리해야 됨
- 예측하지 못한 장애 발생 시 대응 준비 필요
- EC2가 SLA에 의해 잠깐 (5분정도)정지될 시, 사용 못하게되는 이슈가 발생한다.
💰S3 작업 범위와 비용
- 위 문제를 해결할 수 있는 것이 스토리지 관리서비스를 수행하는
S3
이다.
- 또한, 내결함성과 비용 측면에서도 EBS보다 압도적으로 우수하다.(약 5배)
- 대신 외부 스토리지 서비스(외장하드 개념)이기에 C드라이브로 활용하거나, 파일시스템처럼 마운트할 수 없다.
🔁 S3와 VPC의 관계
S3는 VPC 밖에 생성해야 한다. 따라서 S3에 접근하는 방법은 크게 2가지로 나타난다.
- 인터넷으로 부터 직접 접근
- VPC로 부터 접근

👣 VPC로 부터 접근
- S3 버킷에 대한 접근 권한이 필요하다.(역할 활용)
- S3 버킷에 접근하기 위한 정책을 가진 역할을 생성하고,
- EC2에 역할 적용한다.
- 다른 방법으로 하는 방법도 있다.(정책 활용)
- S3에 접근할 수 있는 정책을 가진 사용자
- 사용자의 권한 + 엑세스키 조합으로 S3에 접근
하지만 이 방식 보단 역할 방식을 더 많이 이용한다.
S3 시스템
- S3에 데이터를 저장할 때 버킷에 저장한다.
- 버킷 : S3에서 관리하는 데이터를 하나로 모은 단위
- 즉, 여러 버킷을 만들 수 있다.
- 버킷 안에는 서비스에서 이용하는 데이터인 객체를 저장한다.
- 객체 : 파일을 말한다.
- 텍스트, 이미지, 음성, 동영상 등
- 파일들을 폴더구조로도 관리할 수 있다.
💻 S3 저장장소 준비 실습
버킷 생성하기
- 이름 설정시 같은 리전안에서는 중복되지 않아야 한다.
- 다른 계정에서 이용되는 이름이라고 해도 버킷 이름이 중복되면 안된다.
- 따라서, 보통 서비스 이름이나 도메인 이름을 포함시켜 만든다.
액세스 차단 설정
- 모든 퍼블릭 액세스 차단이 체크되어 있으면 데이터는 공개되지 않느다.
역할 생성후, EC2 적용
- IAM에서 역할 만들기 클릭
- 엔티티와 사용사례
- 권한 추가
- AmazonS3FullAccess 체크
- 생성할 모든 S3 버킷으로 액세스권한을 가지게되는 역할임으로, 해당 S3버킷만 액세스할 수 있는 정책을 생성해서 할당해주는 것이 좋다.
- 이름지정, 검토 및 생성
- 역할의 경우 Global 리소스임으로, 네이밍 컨벤션이 따로 있다.
- 참고링크
- {{app_naming}} – {{product_used}} – {{level_of_access}} – iam – policy
- EC2 인스턴스 목록에서 적용할 인스턴스를 선택하고 역할을 부여한다.
- 인스턴스 하나만 선택 -> 작업 -> 보안 -> IAM 역할 수정을 선택
- 내가 만들었던 IAM 역할로 선택 후 저장
작동 확인
- EC2을 열어 접근한 뒤, 간단하게 테스트용 파일을 홈디렉토리에 만든다.
- 그리고
aws s3 cp
명령어를 이용해 S3에 업로드 한다.
$ aws s3 cp test.txt s3://{버킷이름}
- 에러가 표시되지 않으면 업로드 완료.
- 실제 버킷에서도 확인해보면 업로드된 것을 확인할 수 있다.