{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::account-id:distribution/distribution-id"
}
}
}
]
}
{
"Rules": [
{
"ID": "DeleteOldVersions",
"Status": "Enabled",
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
}
}
]
}
Triệu chứng: Không thể truy cập đối tượng S3 qua CloudFront Nguyên nhân:
Giải pháp:
# Kiểm tra chính sách bucket
aws s3api get-bucket-policy --bucket your-bucket-name
# Xác minh cấu hình CloudFront OAC
aws cloudfront get-origin-access-control --id your-oac-id
# Cập nhật bucket policy cho OAC
aws s3api put-bucket-policy --bucket your-bucket-name --policy file://policy.json
Vấn đề: Nhầm lẫn giữa S3 website endpoint và bucket endpoint
S3 Website Endpoint:
bucket-name.s3-website-region.amazonaws.com
S3 Bucket Endpoint:
bucket-name.s3.region.amazonaws.com
Triệu chứng: Browser chặn requests từ web applications Giải pháp:
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "HEAD"],
"AllowedOrigins": ["https://yourdomain.com"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3000
}
]
Vấn đề: Chi phí storage cao bất ngờ Monitoring:
# Liệt kê object versions
aws s3api list-object-versions --bucket your-bucket-name
# Kiểm tra storage metrics
aws cloudwatch get-metric-statistics \
--namespace AWS/S3 \
--metric-name BucketSizeBytes \
--dimensions Name=BucketName,Value=your-bucket-name \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-31T23:59:59Z \
--period 86400 \
--statistics Average
# Tạo bucket với encryption
aws s3api create-bucket --bucket my-secure-bucket \
--region us-east-1 \
--create-bucket-configuration LocationConstraint=us-east-1
# Bật versioning
aws s3api put-bucket-versioning --bucket my-bucket \
--versioning-configuration Status=Enabled
# Set lifecycle policy
aws s3api put-bucket-lifecycle-configuration --bucket my-bucket \
--lifecycle-configuration file://lifecycle.json
# Kiểm tra bucket policy
aws s3api get-bucket-policy --bucket my-bucket
# Liệt kê tất cả versions của objects
aws s3api list-object-versions --bucket my-bucket
# Lấy bucket metrics
aws s3api get-bucket-metrics-configuration --bucket my-bucket \
--id my-metrics-config
Trước khi deploy lên production:
Nếu bạn đang sử dụng setup từ tutorial này trong production:
Lưu ý: Tutorial này dành cho mục đích học tập. Môi trường production cần thêm các cân nhắc về bảo mật và hiệu suất.