S3
- 인터넷 스토리지 서비스
- 개발자나 IT 운영자가 웹 규모 컴퓨팅 작업을 수행하는 데 필요한 데이터 저장 공간을 제공
- 정적 웹 사이트 호스팅, 온라인 백업, 데이터 아카이브, 기업 애플리케이션, Big Data 분석 등 다양한 용도로 사용
S3 서비스의 사용 예
- 웹 사이트 호스팅
- 멀티미디어 파일 저장 및 스트리밍
- 애플리케이션 데이터 저장
- 백업 및 복원
- 아카이브
S3 서비스의 장점
- 높은 내구성, 가용성 및 안정성
- 손쉬운 사용 및 관리
- 보안성
- 높은 확장성
Buckets
- 데이터를 저장하는 가장 상위 레벨의 폴더 형태의 컨테이너
- 데이터를 저장하는 컨테이너 역할
- 객체에 대한 공용 또는 개인적인 접근 권한을 설정하기 위한 위치
- 객체에 대한 특별한 이벤트 알림을 설정하기 위한 위치
- AWS 계정에서 버킷 및 객체 사용에 대한 비용 추적 및 모니터링을 위한 위치
객체: S3에 저장되는 파일들로 모든 객체는 키(디렉터리)로 식별된다.
s3://버켓명/폴더명/파일명.확장자
Buckets 네이밍 컨벤션
- 대문자 금지, 언더스코어(_) 금지
- 최소 3자 ~ 최대 63자 사이
- 소문자, 숫자, 점(.), 하이픈(-)으로만 구성
- 문자 또는 숫자로 끝나야 함
- 두 마침표(..)를 나란히 붙여 사용할 수 없음
- IP 주소 형식을 사용하지 않음
Bucket 생성
- S3로 검색 후 이동 → 우측 상단에서 Seoul로 Region 변경 → [Create bucket]
- Bucket name 설정 - bucket name은 다른 사용자의 bucket과 중복되지 않는 이름으로 설정
- Object Ownership: ACLs disabled (recommended)
- [Create bucket]
Bucket Policy
- IAM과 유사한 JSON 형식의 문서
- Bucket의 모든 객체에 대한 엑세스를 제어할 수 있음
- 특정 객체 또는 객체 그룹에 대한 엑세스를 제어할 수 있음
- 액세스를 허용하는 IP 주소 또는 범위를 지정할 수 있음
- 액세스 할 수 있는 리소스의 범위를 제한할 수 있음
- 암호화된 연결을 사용하도록 강제할 수 있음
Bucket Policy 예시
이 정책은 IAM 사용자 "USERNAME"이 GetBucketLocation 작업을 수행할 수 있도록 지정된 버킷 "BUCKET-NAME"에 대한 액세스를 허용
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUserToGetBucket",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT-ID:user/USERNAME"
},
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::BUCKET-NAME"
}
]
}
- Resource : Bucket 혹은 Object
- Effect: Allow or Deny
- Principal : 대상 유저
ARN
- AWS에서 사용하는 모든 리소스에 대한 고유한 식별자 역할
arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id
//예시
arn:aws:iam::123456789012:user/johndoe
arn:aws:s3:::my_corporate_bucket/
arn:aws:ec2:us-east-1:123456789012:vpc/vpc-0e9801d129EXAMPLE
- arn: AWS 리소스명을 가리키는 고정 문자열
- aws: 리소스가 AWS에서 호스팅 되는 것을 나타내는 고정 문자열
- service: AWS 서비스명을 나타내는 문자열 (예: s3, lambda, ec2 등)
- region: AWS 리전명을 나타내는 문자열 (예: us-east-1, ap-northeast-2 등)
- account-id: AWS 계정 ID를 나타내는 숫자
- resource-id: 해당 리소스의 고유 식별자 (예: S3 버킷 이름, Lambda 함수 이름 등)
Bucket Policy 설정
- 생성된 Bucket의 Permissions로 이동
- Block public access (bucket settings) → [Edit] → Block all public access 체크 해제 → [Save changes]
- Bucket Policy → [Edit] → Bucket ARN 복사 → 우측 상단 [Policy generator]
- Select Type of Policy: S3 Bucket Policy
- Effect: Allow
- Pricipal: *
- Actions: GetObject
- Amazon Resource Name (ARN): 복사한 ARN
- [Add Statement]
- [Generate Policy]
- Policy JSON Document 복사
- Edit bucket policy에 붙여넣기 → Resource값 맨 뒤에 /* 추가(/*가 없으면 버킷을 가리키기 때문에 에러 발생)
- [Save changes]
S3를 이용한 Static Site 호스팅
- Bucket에 호스팅할 파일을 업로드 - 파일명이 index.html여야 함
- [Properties] → Static website hosting → [Edit]
- Static website hosting: Enable
- Hosting a static website: Host a static website
- Index document: index.html
- Error document: 에러가 발생했을 때 이동할 페이지
- [Save changes]
- [Properties] → Static website hosting → Bucket website endpoint로 접속
'AWS' 카테고리의 다른 글
[AWS] Relational Database Service (RDS) (0) | 2024.06.25 |
---|---|
[AWS] Elastic Load Balancer (ELB) (0) | 2024.06.25 |
[AWS] Elastic Compute Cloud (0) | 2024.06.24 |
[AWS] Identity and Access Management (0) | 2024.06.18 |