S3 (Simple Storage Service)

-
개발자나 IT 운영자가 웹 규모 컴퓨팅 작업을 수행하는 데 필요한 데이터 저장 공간을 제공한다.
-
웹 사이트 호스팅, 온라인 백업, 데이터 아카이브, 기업 애플리케이션, Big Data 분석 등 다양한 용도로 사용 된다.
-
S3 서비스의 사용 예
-
데이터 백업 및 복구:
- 시스템 데이터, 애플리케이션 로그, 사용자 파일 등을 안전하게 백업하고 복구 가능.
-
정적 웹사이트 호스팅:
- HTML, CSS, JavaScript 등 정적 콘텐츠를 빠르게 제공하며, 비용 효율적인 정적 웹 호스팅에 활용.
-
데이터 분석 및 빅데이터 저장:
- 데이터 레이크(Data Lake)로 활용하여 분석 및 머신러닝 작업을 위한 원시 데이터를 저장.
-
미디어 파일 저장 및 제공:
- 이미지, 동영상, 오디오 등 대용량 멀티미디어 콘텐츠를 저장하고 전 세계 사용자에게 스트리밍 제공.
-
소프트웨어 배포 및 콘텐츠 전달:
- 애플리케이션 업데이트 파일, 소프트웨어 설치 프로그램, 게임 리소스 등을 저장하고 다운로드 서비스 제공.
-
S3 서비스의 장점
-
무한에 가까운 확장성:
- 저장 용량에 제한 없이 데이터를 저장 가능하며, 필요에 따라 자동으로 확장.
-
높은 내구성 및 가용성:
- 데이터 내구성은 99.999999999% (11 9s)로 보장되며, 다중 리전 복제를 통해 데이터 손실 위험 최소화.
-
비용 효율성:
- 사용한 만큼만 비용을 지불하는 종량제 요금제 제공.
S3 Glacier 및 Glacier Deep Archive를 통해 저비용 장기 데이터 저장 옵션 활용 가능.
Buckets?
- 데이터를 저장하는 가장 상위 레벨의 폴더 형태의 컨테이너이다.
- S3에 저장되는 파일들을 ‘객체’ 라고 부르고 모든 객체는 ‘키’(디렉토리)로 식별된다.
prefix/delimiter/object-name
s3://my-bucket/my_folder/my_file.txt
사용하는 이유
- 데이터를 저장하는 컨테이너 역할
- 객체에 대한 공용 또는 개인적인 접근 권한을 설정하기 위한 위치
- 객체에 대한 특별한 이벤트 알림을 설정하기 위한 위치
- AWS 계정에서 버킷 및 객체 사용에 대한 비용 추적 및 모니터링을 위한 위치
네이밍 컨벤션
- 대문자 금지, 언더스코어 금지
- 버킷 이름은 3자(최소)에서 63자(최대) 사이여야 합니다.
- 버킷 이름은 소문자, 숫자, 점(.) 및 하이픈(-)으로만 구성될 수 있습니다.
- 버킷 이름은 문자 또는 숫자로 시작하고 끝나야 합니다.
- 버킷 이름에 두 마침표를 나란히 붙여 사용하면 안 됩니다.
- 버킷 이름은 IP 주소 형식(예: 192.168.5.4)을 사용하지 않습니다.
S3 생성하기

-
가장 큰 특징은 버킷은 Global Unique 하다는 것이다. 즉 전세계에서 유일한 이름을 가져야한다.
-
서비스 형태 또 한 글로벌 서비스 형태를 지닌다.

-
콘솔내에서 모든 리전안의 버킷들을 전부 볼수 있다.


-
버킷내의 파일을 업로드도 가능하며, 해당 파일의 정보 및 URL을 확인 가능하다.

- 하지만 S3 내의 이미지를
URL을 통해 접근하려고 하면 권한이 막혀있다 나오게되는데, S3내부에 있는 파일에 접근을 하려할때 사용해야하는 기능 중 하나이다.
버킷 폴리시
- IAM과 유사하며 JSON 형식의 문서 이다.
- 버킷의 모든 객체에 대한 액세스를 제어할 수 있다.
- 특정 객체 또는 객체 그룹에 대한 액세스를 제어할 수 있다.
- 특정 객체 또는 객체 그룹에 대한 액세스를 제어할 수 있다.
- 액세스를 허용하는 IP 주소 또는 범위를 지정할 수 있다.
- 액세스할 수 있는 리소스의 범위를 제한할 수 있다.
- 암호화된 연결을 사용하도록 강제할 수 있다.
{
"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 : 버킷 혹은 오브젝트 를 가르킨다.
- Effect: Allow 혹은 Deny 속성을 가진다.
- Principal : 대상 유저를 가르킨다.
ARN
- AWS에서 사용하는 고유한 식별자로 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 함수 이름 등)
버킷폴리시 적용하기


- 현재 버킷의 상태를 보면 퍼블릭접근들을 차단하고있다.
- 모든 퍼블릭 액세스차단을 해제하고 버킷 폴리시 정책을 편집해보도록 하겠다.

- 버킷 폴리시 정책 또한 사용자가 직접 JSON을 입력할 필요없이 정책생성기를 통해 간단하게 정책생성이 가능하다.

- 이를 통해 파일의대한 접근을 URL을 통해 하더라도 접근이 가능하다.
Cloudfront
Content Delivery Network

-
사용자에게 웹 콘텐츠를 더 빠르고 안정적으로 제공하기 위한 분산 네트워크 시스템 이다.
-
전 세계 여러 위치에 분산된 서버로 구성되며, 사용자가 특정 웹사이트에 접속할 때 물리적으로 가장 가까운 서버에서 콘텐츠를 전달하게된다.
-
특히 글로벌 웹사이트나 영상 스트리밍, 소프트웨어 다운로드 등 대규모 트래픽이 발생하는 서비스에서 중요하게 사용되며, 대표적인 CDN 제공업체로는 Cloudflare, Akamai, AWS CloudFront 등이 있다.
-
장점
- 향상된 속도 : 지리적으로 가까운 서버에 캐싱된 데이터를 갖고 오기 때문에 무척 빠르다.
- 안전 : CDN 서비스를 해주는 업체에서 방화벽을 제공할 뿐만 아니라 DDoS 공격이 와도 서버가 분산되어 있고 캐시기능으로 오리진 서버 트래픽은 늘어나지 않는다.
-
단점
- 캐시 : 최신 동적 컨텐츠를 제공해야하는 경우에 적합하지 않다.
- 비용이 추가 발생한다.
