You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions创建CloudFront缓存失效失败:无身份策略授权

CloudFront缓存失效CI流水线AccessDenied问题解决

问题复现

使用chetan/invalidate-cloudfront-action@v2在GitHub Actions中创建CloudFront缓存失效时,触发以下权限错误:

调用CreateInvalidation操作时发生错误(AccessDenied):User: arn:aws:iam::000000000000:user/my-user-id 无权对资源arn:aws:cloudfront::000000000000:distribution/***执行cloudfront:CreateInvalidation操作,原因是没有基于身份的策略允许该动作。
Error: Process completed with exit code 254.

已完成的配置:

  • 创建目标IAM用户并附加自定义权限策略
  • 在GitHub仓库中配置了对应密钥与分发ID的Secrets
  • IAM自定义策略内容:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "cloudfront:CreateInvalidation",
            "Resource": "arn:aws:cloudfront::000000:distribution/E000000000 "
        }
    ]
}
  • GitHub Actions流水线配置片段:
- name: Invalidate CloudFront
  uses: chetan/invalidate-cloudfront-action@v2
  env:
    DISTRIBUTION: ${{ secrets.DISTRIBUTION }}
    PATHS: "/*"
    AWS_REGION: "us-east-1"
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET }}

核心修复方案

1. 修正IAM策略中的ARN格式错误

观察策略内的Resource值末尾存在多余空格:"arn:aws:cloudfront::000000:distribution/E000000000 ",这会导致ARN与实际CloudFront分发的标识不匹配,直接造成权限校验失败。

操作步骤:

  • 进入AWS IAM控制台,找到该自定义策略
  • 编辑策略内容,删除Resource值末尾的空格后保存
  • 等待策略生效(通常1分钟内即可完成)

2. 额外排查方向(若修复后仍报错)

  • Secrets值校验:确认GitHub Secrets中的DISTRIBUTION值与CloudFront分发ID完全一致,无大小写错误或多余字符
  • 权限边界/SCP限制:检查该IAM用户是否被设置了权限边界,或所在AWS组织是否有服务控制策略(SCP)禁止了cloudfront:CreateInvalidation动作
  • CLI手动验证:使用该IAM用户的密钥,通过AWS CLI执行以下命令,直接验证权限是否正常:
aws cloudfront create-invalidation --distribution-id YOUR_DISTRIBUTION_ID --paths "/*" --region us-east-1

内容的提问来源于stack exchange,提问作者Kaigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:52:47