CloudFront通过Lambda@Edge访问KMS加密S3桶返回ListBucketResult错误
你当前拿到的是S3 ListBucket接口的返回结果,说明请求触发了列桶操作而非目标对象获取,按以下步骤排查即可解决:
- 路径适配修正:当访问根路径/时,Lambda@Edge的源请求触发逻辑里必须主动将请求uri修改为/index.html再转发给S3,S3不会自动处理默认首页跳转,收到/路径默认执行列桶操作。同时检查CloudFront源配置的「源路径」字段留空,不要额外加/前缀。
- S3权限校验:确认Lambda@Edge执行角色的权限策略同时包含
s3:GetObject和s3:ListBucket权限,其中s3:GetObject的资源配置为arn:aws:s3:::<你的桶名>/*,不要遗漏末尾的通配符。 - 源模式确认:必须用「自定义源」模式接入S3,填写S3的区域级访问域名(格式为
.s3. .amazonaws.com),不能使用CloudFront默认的S3源接入模式,否则签名逻辑不生效。 - Sigv4签名校验:确认签名计算时已将Host请求头纳入签名参数,签名对应的服务名填
s3、区域和S3桶实际部署区域一致,避免签名校验失败导致S3拒绝对象访问请求。
内容的提问来源于stack exchange,提问作者Donne Shaw
相关产品推荐
相关产品推荐

