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

部署包含Elastic Beanstalk栈的AWS CloudFormation模板时遭遇S3权限不足错误,寻求解决方案

解决AWS Elastic Beanstalk部署时的InsufficientPrivilegesException(访问区域公共S3桶权限不足)

我之前在AWS组织子账户里部署EB栈时也遇到过完全一样的问题,核心原因是你用的AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy托管策略权限太有限,没有覆盖访问AWS管理的平台资产S3桶的需求。下面是具体的解决方法:

核心问题分析

报错里的elasticbeanstalk-platform-assets-eu-central-1桶是AWS官方维护的区域级公共桶,用来存储EB的平台镜像、模板等资源。你的EB服务角色(也就是BackendServiceRole)需要具备读取这个桶的权限才能完成环境部署,但AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy只包含了托管更新相关的权限,没有涵盖这部分S3访问权限。

解决方案1:添加自定义S3权限策略(推荐,遵循最小权限原则)

你可以给BackendServiceRole附加一个自定义策略,专门允许访问对应区域的平台资产桶。修改你的CloudFormation模板如下:

BackendServiceRole:
  Type: AWS::IAM::Role
  Properties:
    RoleName: !Sub '${GroupName}BackendServiceRole'
    AssumeRolePolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Principal:
            Service:
              - elasticbeanstalk.amazonaws.com
          Action:
            - 'sts:AssumeRole'
    ManagedPolicyArns: 
      - arn:aws:iam::aws:policy/AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
    # 添加自定义策略,允许访问EB平台资产桶
    Policies:
      - PolicyName: EBPlatformAssetsAccessPolicy
        PolicyDocument:
          Version: "2012-10-17"
          Statement:
            - Effect: "Allow"
              Action:
                - "s3:GetObject"
                - "s3:ListBucket"
              Resource:
                - "arn:aws:s3:::elasticbeanstalk-platform-assets-eu-central-1"
                - "arn:aws:s3:::elasticbeanstalk-platform-assets-eu-central-1/*"

这个策略仅允许读取目标区域的平台资产桶,符合安全领域的最小权限原则。

解决方案2:使用更全面的托管策略(适合测试场景)

如果是测试环境,不想自定义权限,可以直接替换托管策略为AWSElasticBeanstalkFullAccess,它包含了EB运行所需的所有权限,自然也能访问这些公共桶:

BackendServiceRole:
  Type: AWS::IAM::Role
  Properties:
    RoleName: !Sub '${GroupName}BackendServiceRole'
    AssumeRolePolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Principal:
            Service:
              - elasticbeanstalk.amazonaws.com
          Action:
            - 'sts:AssumeRole'
    ManagedPolicyArns: 
      - arn:aws:iam::aws:policy/AWSElasticBeanstalkFullAccess

注意:这个策略权限范围很广,生产环境不建议直接使用。

额外检查点:AWS组织SCP限制

如果上面的方法还是不行,要检查你所在的AWS组织是否有**服务控制策略(SCP)**限制了子账户访问外部S3桶。有些组织会默认阻止访问非本账户的S3桶,这时候需要在SCP里添加允许访问elasticbeanstalk-platform-assets-*系列桶的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 03:07:36