[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 |