如何为CloudFront配置默认根对象以修复安全合规问题
解决CloudFront默认根对象配置问题
首先明确核心问题:你的场景是CloudFront作为API Gateway的分发层,默认根对象需要直接在CloudFront分发的SAM配置中定义,而非在S3桶或项目根目录设置——因为你的CloudFront源是API Gateway,不是S3存储桶,之前操作S3的方向不对,所以没生效。
在SAM模板中配置CloudFront默认根对象的具体方法
找到模板中定义CloudFront分发的AWS::CloudFront::Distribution资源段,在其DistributionConfig节点下添加DefaultRootObject属性,值为你API Gateway的默认触发路径(比如/,或Lambda对应的具体端点路径如/api/v1/handler)。
示例配置片段
Resources: MyCloudFrontDistro: Type: AWS::CloudFront::Distribution Properties: DistributionConfig: DefaultRootObject: "/prod" # 替换为你的API Gateway阶段路径或端点路径 Origins: - Id: APIGatewayOrigin DomainName: !Sub "${MyAPIGateway}.execute-api.${AWS::Region}.amazonaws.com" CustomOriginConfig: HTTPPort: 80 HTTPSPort: 443 OriginProtocolPolicy: https-only # 其他CloudFront配置(缓存策略、行为规则等)...
关键注意事项
- 如果用的是REST API,默认根对象要匹配API部署的阶段路径(比如stage为
prod就填/prod);如果是HTTP API,直接填对应的端点路径即可。 - 无需在S3或项目目录添加任何文件,这个配置是CloudFront层面的规则:当用户访问CloudFront根域名时,会自动将请求转发到你指定的默认路径,触发对应的Lambda。
- 配置完成后重新部署SAM应用(执行
sam deploy或sam deploy --guided),CloudFront分发更新后,安全告警就会消除。
内容的提问来源于stack exchange,提问作者Ido Segal
相关产品推荐
相关产品推荐

