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

AWS Amplify调用StartDeployment时遭遇S3 AccessDenied错误求助

问题:GitHub Actions + AWS Amplify部署时S3访问被拒(403)

我正在为一系列小型项目搭建基于GitHub Actions和AWS Amplify的CI/CD流程:

  • 最初尝试Amplify的「从Git构建」功能,但第二次构建部署后站点出现异常,因此改为在GitHub Actions中完成构建并生成产物
  • 目前产物已成功上传至S3存储桶,但调用StartDeployment命令时始终返回以下错误:

An error occurred (UnauthorizedException) when calling the StartDeployment operation: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied;

已为应用附加具备S3和Amplify访问权限的角色,但问题仍存在。手动更新站点或标记产物为公共可读可临时解决,但不符合安全规范。


现有权限配置

S3存储桶策略

{
   "Sid":"Stmt1677734301706",
   "Effect":"Allow",
   "Principal":{
      "Service":"amplify.amazonaws.com",
      "AWS":"arn:aws:iam::USERID:role/AmplifyRole"
   },
   "Action":"s3:GetObject",
   "Resource":"arn:aws:s3:::websites-builds/*"
}

Amplify服务角色信任策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "amplify.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
  • 该服务角色已附加亚马逊托管策略AdministratorAccess-Amplify,理论上具备完整S3访问权限

排查方向与解决方案

  1. 补充S3存储桶必要权限
    当前桶策略仅允许s3:GetObject,但Amplify部署时需要ListBucket权限遍历存储桶中的产物。更新后的桶策略如下:

    {
       "Sid":"Stmt1677734301706",
       "Effect":"Allow",
       "Principal":{
          "Service":"amplify.amazonaws.com",
          "AWS":"arn:aws:iam::USERID:role/AmplifyRole"
       },
       "Action": [
           "s3:GetObject",
           "s3:ListBucket"
       ],
       "Resource": [
           "arn:aws:s3:::websites-builds",
           "arn:aws:s3:::websites-builds/*"
       ]
    }
    

    注意:s3:ListBucket的资源目标是存储桶本身,而非对象路径。

  2. 验证角色关联与调用记录

    • 在AWS IAM控制台检查AmplifyRole的「访问顾问」,确认近期是否有amplify.amazonaws.com的调用记录,排除角色未被正确关联的问题
    • 进入Amplify应用设置页面,确认已绑定指定的AmplifyRole,避免使用默认角色导致权限不足
  3. 检查GitHub Actions上传配置

    • 确保GitHub Actions中用于上传S3的身份拥有PutObject权限,且上传的对象ACL保持私有(无需设置公共可读)
    • 排除上传时意外设置了限制Amplify访问的对象级ACL
  4. 确认角色权限生效
    若上述配置调整后问题仍存在,可通过AWS IAM的「模拟策略」功能,验证AmplifyRole对目标S3存储桶的s3:GetObject和s3:ListBucket权限是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:43:10