[2] 250909~ 클라우드/[b] 12월 : Terraform + Ansible

[33] S3 + cloudfront

서버관리자 페페 2026. 1. 31. 19:18

[INDEX]

1. bucket + public Access block

2. bucket object 생성 (html web page)

3. OAC + Cloudfront_DST

4. GetObject IAMPOLICY + S3 연결

 

-

 

5. cloudfront 접속 테스트 (200)

6. s3 직접 접속 테스트 (403)

----------------

 

1. 버킷 생성

 

2.

 

3. 배포 + OAC

 

 

4. 

 

5. 테스트

 

S3 직접접근 -> 403

 

cloudfront로 200 

 

 

-------------------------------------------------------

S3에는 URL(DNS)이 2개 있다

 

**# [1] S3 REST Endpoint(API EP)**
https://.s3..amazonaws.com/
<https://my-bucket.s3.ap-northeast-2.amazonaws.com/index.html>

# [2] **S3 staatic Website Endpoint (웹서버 흉내)**
http://.s3-website-.amazonaws.com
<http://my-bucket.s3-website-ap-northeast-2.amazonaws.com>

API기반 객체저장소

IAM / Bucket Policy / OAC / OAI 적용 가능

SigV4 서명 가능

dir 개념x

index.html 명시

→ CloudFront가 내부에서 사용

웹서버처럼 동작

index.html / error.html 자동처리

HTTPS / IAM / OAC / SigV4 지원 x

버킷 퍼블릭 필수

→ CloudFront OAC와 구조적으로 충돌

 

---------------------------------

 

USER 관점

[USER] https://cdn.example.com

[CloudFront] (HTTPS / 캐시 / 인증)

[S3 REST Endpoint] (bucket.s3.region.amazonaws.com)

 

-

 

Terraform 코드

origin {
  domain_name = aws_s3_bucket.site.bucket_regional_domain_name
}

[4]

IAM Role Policy vs S3 Bucket Policy

# 누가 무엇을 할 수 있는가
# IAM콘솔 -> 역할 -> 권한

{
  "Effect": "Allow",
  "Action": "s3:GetObject",
  "Resource": "*"
} 
// IAM 역할에 붙는 정책
"Principal": {
	"Service": "cloudfront.amazonaws.com"
}
// 이 리소스를 누가 사용할 수 있는가
// S3코솔 -> 버킷 -> 권한 -> 버킷 정책
// json이 보이면 즉시 활성화

[IAM Role]
   ❌ 관련 없음

[CloudFront Distribution]
   └─ OAC (SigV4)

[S3 Bucket Policy]
   └─ Principal: cloudfront.amazonaws.com
   └─ Condition: SourceArn = distribution ARN

 

-

 

[5]

CloudFront는 AWS  내부 Servie Principal

IAM Role Assume X

STS AssumeRole X

 

-

 

[6]

OAI(Origin Access Identity)

CloudFront전용 가짜 IAM 사용자

버킷 정책에서 Canonical User Id 허용

deprecated

 

Origin Acess Control

Service Principal + SourceArn 조건

SigV4기반

'[2] 250909~ 클라우드 > [b] 12월 : Terraform + Ansible' 카테고리의 다른 글

[34] tier-3  (0) 2026.02.04
[32] RDS Multi-AZ  (0) 2026.01.26
[31] ALB + ASG  (0) 2026.01.22
[30] Github -> Ansible  (0) 2026.01.12
[29] Ansible  (0) 2026.01.12