- 객체 스토리지 서비스
- Restful api를 사용하여 객체에 엑세스
- HTTP / HTTPS 프로토콜을 사용
- 저장 가능한 파일 개수의 제한 없음
- 단일 파일 5TB 크기까지 저장
- 데이터를 여러 데이터센터에 중복저장
- 99.999999%의 내구성
- 데이터 암호화 기능 제공
- 버전 관리기능 / 정적 웹사이트 호스팅
- 객체(파일)이 여러 버전을 가질 수 있음
- 동일한 파일이름을 업로드하면 여러 버전으로 저장됨(ex: 버전1, 버전2)
- 실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능
- 실수로 객체를 삭제하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있음
- 객체를 하나의 파일이 아닌 여러 버전으로 보존할 수 있음
- 버전관리 기능을 사용하려면 해당 기능을 활성화 해야함
- 데이터를 전송 중에 그리고 스토리지에 저장된 동안 보호하기 위해 암호화 사용
- 서버 측 암호화 (SSE / Server Side Encryption)
- 데이터가 서버에 저장되기 전에 객체를 암호화
- SSE-S3 : S3에서 관리하는 암호화
- SSE-KMS : KMS에서 관리하는 암호화, KMS를 이용하므로 키를 자동으로 교체하거나 감사기능을 지원
- SSE-C : 사용자가 관리하는 암호화, 데이터 전송시 반드시 HTTPS를 사용해야 함
- 클라이언트 측 암호화 (CSE / Client Side Encryption)
- 데이터를 전송하기 전에 클라이언트에서 암호화
- 전송 중 암호화
- 전송 보안 프로토콜 SSL/TLS를 이용해 데이터를 암호화, HTTPS 보안 프로토콜을 사용하여 전송
- S3 버킷 엑세스 제어 정책
JSON
형식- 조건에 따라 버킷에 엑세스를 부여학 제한하는 기능으로 사용
- Ex
- 특정 AWS 리소스에서만 S3 버킷에 엑세스 허용
- 다른 AWS 계정에 버킷 엑세스 권한을 부여 가능
{
"Id": "Policy1609562393728",
"Version" : "2012-10-17",
"Statement" : [
{
"Sid" : "Stmt16095623653131",
"Effect" : "Deny",
"Action" : [
"s3:GetObject",
"s3:PutObject"
],
"Resource" : "arn:aws:s3:::test1234",
"Principal" : "*"
}
]
}
- 버킷과 객체에 대한 퍼블릭 엑세스를 차단하거나 허용
- 데이터 보호를 위해 기본적으로 퍼블릭 엑세스를 차단
- AWS 계정에 버킷이나 객체에 읽기 / 쓰기 권한을 부여하는 기능
- 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL을 적용 가능
- S3에서 정적 웹사이트 호스팅 가능
- 정적 웹사이트
- 언제 접속해도 항상 같은 내용을 보여주는 변하지 않는 사이트
- 웹 사이트 호스팅을 하면 EC2등의 별도의 웹서버 운영을 하지 않아도 됨
- 웹사이트 주소는
버킷이름.s3-website-리전.amazonaws.com
형식 - 사이트 접속시
**403**
http 상태 코드가 나오면 버킷의 퍼블릭 엑세스 허용이 안되어 있다는 것
- Origin
- S3 버킷 주소 (
버킷이름.s3-website-리전.amazonaws.com
)
- S3 버킷 주소 (
- 다른 오리진에 버킷에 대한 엑세스를 공유하는 것
-
S3 버킷의 모든 활동을 파일로 만들어 S3 버킷이 저장하는 기능
-
감사 목적으로 활용 가능
-
로그 분석을 위해 Amazon Athena같은 분석 도구를 사용 가능
-
로그 파일 저장소를 같은 버킷에 저장하면 무한 루프로 인해 로그파일이 지속적으로 증가
- S3 버킷간에 객체를 자동으로 복제하는 기능
- 교차 리전 복제 (CRR, Cross Region Replication)
- 서로 다른 AWS 리전의 S3 버킷으로 객체를 복사
- 동일 리전 복제 (SRR, Same Region Replicaiton)
- 같은 AWS 리전의 S3 버킷으로 객체를 복사
- 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 함
- 다른 AWS 계정으로 복제 가능
- 접근 빈도로 클래스를 나눔
- 높은 내구성, 가용성
- 객체 스토리지
- 정적 웹사이트, 콘텐츠 배포, 모바일 게임 어플리케이션에 사용
- 비용절감 효과
- 객체의 접근 빈도의 패턴을 판단하여 자동으로 클래스를 이동함
- 해당 스토리지에 업로드되거나 이전된 객체는 Frequent Access 계층에 저장
- 엑세스 패턴을 모니터링한 후 30일 연속 엑세스되지 않은 객체를 Infrequent Access 계층으로 이동
- 90일 연속으로 엑세스되지 않으면 객체를 Archive Access 계층으로 이동
- 180일 연속으로 엑세스되지 않으면 Deep Archive Access 계층으로 이동
- Standard Infrequent Access의 줄임말
- 데이터 접근을 자주 하지 않고 필요할 때 빠르게 접근해야 할 때 적합한 서비스
- 최소 과금 기간 30일 (30일이 끝나기전에 객체를 삭제하면 30일 요금이 부과)
- 데이터 접근을 자주 하지 않고 필요할 때 빠르게 접근해야 할 때 적합한 서비스
- 다른 S3와는 다르게 단일 가용영역에 저장
- 가격이 20% 정도 저렴
- 자주 접속하지 않는 장기 데이터를 위한 서비스
- 분기에 한 번 엑세스하는 오래된 아카이브 데이터 용도
- 밀리초 내에 즉시 검색
- 가장 저렴
- 1년의 1~2번 정도 접근하는 데이터를 장기 보관용도로 저장하는 서비스
- 객체가 저장되어 삭제될 때까지의 수명주기를 비용효율적으로 저장 되도록 관리하는 기능
- 버전 관리가 활성화 되어 있을 경우 객체의 버전 별로 수명 주기 정책을 적용할 수 있음
- Amazon S3 Analytics
- 스토리지 클래스 분석
- 데이터 엑세스 패턴을 관찰해 자주 엑세스하지 않는 STANDARD 스토리지를 STANDARD IA 스토리지 클래스로 옮길 시점을 알려줌
- 일정시간 또는 무기한으로 객체가 삭제되거나 덮어쓰이지 않도록 하는 기능으로 읽기만 가능
- 보관 기간을 설정하여 정해진 시간 동안 객체를 보호하도록 설정 가능
- Write Once Read Many(WORM) 모델을 적용
- 객체를 잠금을 사용하기 위해선 버전관리가 활성화 되어있어야 함
- 거버넌스 모드(Governance Mode)
- 필요에 따라 일부 사용자에게 보관 설정을 변경하거나 객체를 삭제할 수 있는 권한을 부여할 수 있음
- 규정준수 모드(Compliance Mode)
- AWS 계정의 루트 사용자를 포함한 어떤 사용자도 덮어쓰거나 삭제할 수 없음
- Legal Hold(법적 보존)
- 객체를 덮어쓰거나 삭제할 수 없도록 하는 기능
- 객체를 수정해야하는 사용자의 IAM 정책에 s3
PubOjbectLegalHold
권한을 추가하면 해당 사용자는 객체를 수정, 삭제 가능
- S3의 이벤트가 발생할 때마다 알리는 기능
- 이벤트는 객체의 생성, 복제, 복원 등이 있음
- 생성된 이벤트 알림을 Amazon SNS, Amazon SQS, AWS Lambda로 보낼 수 있음
- 객체가 생성될 때마다 Lambda를 이용하여 파일을 처리하는 함수 구성
- 이벤트 알림을 Amazon EventBridge와 통합하여 이벤트 애플리케이션 구축 가능
- SQL 구분을 사용해 S3 객체의 콘텐츠를 필터링하여 원하는 데이터만 가져오는 기능
- 데이터를 검색하는데 필요한 비용을 절감하고 지연시간을 감소 (성능 향상)
- 일반적으로 버킷에 데이터를 다운로드 하거나 업로드 할 때 비용은 버킷 소유자가 지불
- 데이터 전송비용을 버킷 소유자가 아닌 요청자(데이터를 다운로드,업로드 하는 사람)이 지불하는 기능
- PreSignedURL을 사용하여 제한된 시간동안 객체를 공유 또는 없로드하는 만료 시간을 설정
- 특정한 그룹, 사용자, 애플리케이션이 허용된 S3 데이터만 엑세스 할 수 있게 하는 기능
- S3 버킷의 객체를 사용자에게 더 빠르게 전송해 주는 기능
- AWS의 엣지로케이션을 활용해서 S3데이터를 사용자와 가까운 곳에 캐싱하여 전송
- 전 세계 각지에서 중앙의 버킷으로 업로드하는 고객이 있는 경우에 사용
- S3 버킷을 저장소로 하는 서비스
- SFTP(Secure File Transfer Protocol)는 보안 파일 전송 프로토콜
- 온프레미스나 외부의 다른 시스템에서 SFTP를 이용하여 S3 버킷으로 파일을 전송하고 관리 가능
- 대용량의 파일을 분할하여 병렬로 S3에 업로드 하는 방식
- 파트를 병령로 업로드 하기에 빠른 처리 속도로 업로드 가능
- 업로드가 실패하면 재전송 또는 수명 주기 정책을 통해 완료되지 않은 업로드 삭제 가능
- Athena, S3 Select, Redshift 등의 서비스를 사용하여 S3의 데이터를 다른 플랫폼으로 이동하지 않고 바로 검색 가능
- SQL 쿼리문을 사용하여 검색할 수 있음
- 단일 요청으로 많은 수의 S3 객체를 간편하게 처리하는 기능
- 다른 버킷에 객체 복사, 태그 또는 ACL을 설정, Glacier에서 복원을 시작
- AWS Lambda를 사용해 S3 객체의 데이터를 수정 및 처리하는 기능
- 데이터 추가, 파일 압축 / 해제, 이미지 크기 조정 및 워터 마킹