您可以使用以下代码示例来限制AWS S3策略仅允许CloudFront分发访问:
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-bucket
MyBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref MyBucket
PolicyDocument:
Statement:
- Sid: AllowCloudFrontAccess
Effect: Allow
Principal:
AWS: "*"
Action: s3:GetObject
Resource:
Fn::Join:
- ""
- - "arn:aws:s3:::"
- !Ref MyBucket
- "/*"
Condition:
StringLike:
aws:Referer:
- "http://xxxxxxxxxxxxx.cloudfront.net/*"
上述示例中,MyBucket
是一个AWS S3存储桶资源,MyBucketPolicy
是一个AWS S3存储桶策略资源。MyBucketPolicy
的PolicyDocument
指定了一个策略语句,通过Condition
部分来限制只有来自特定CloudFront分发的请求才能访问存储桶。
在Condition
部分的aws:Referer
字段中,您需要将xxxxxxxxxxxxx
替换为您的CloudFront分发的ID或域名。如果您有多个CloudFront分发,您可以在列表中添加多个域名或ID。
通过使用上述代码示例,您可以限制AWS S3策略仅允许特定的CloudFront分发访问存储桶。