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

Serverless部署AWS Lambda时出现s3:CreateBucket访问被拒绝权限报错

报错核心原因

结合日志中明确抛出的s3:CreateBucket Access Denied报错,即便你使用的是带有管理员权限的账号,权限被拦截的场景通常集中在以下几类,和CloudFormation的基础关联权限没有直接关系:

  • 本地凭证实际未匹配到你预期的管理员身份:Serverless CLI会优先读取环境变量中的AWS凭证配置,而非~/.aws/credentials中的default段配置。如果本地提前设置了权限更低的临时访问密钥、切换到了其他低权限profile,就会出现“看起来用的是管理员账号,实际调用的是低权限身份”的偏差。
  • 组织层面的策略拦截:如果AWS账号属于Organizations管理的组织单元,绑定的服务控制策略(SCP)、身份权限边界规则会对所有身份生效,哪怕IAM本身挂了管理员权限,只要策略中拒绝了未满足标签要求、未开启特定加密配置的S3桶创建操作,就会直接触发拒绝。
  • CloudFormation执行角色权限缺失:Serverless部署时,CloudFormation栈创建资源的操作是通过绑定的服务执行角色完成的,而非直接使用你本地CLI的调用身份。如果这个执行角色曾经被修改过权限,移除了S3桶创建相关的操作权限,就会在资源创建阶段触发拒绝。
  • 桶级别的历史策略拦截:如果当前账号在eu-west-1区域曾经创建过同前缀的S3部署桶,且对该桶配置了禁止其他主体创建同前缀桶的策略,也会触发创建时的权限拒绝。

可落地的修复操作步骤

  1. 验证当前CLI实际使用的凭证身份
    在终端直接执行命令确认调用身份:
    aws sts get-caller-identity
    对比输出的账号ID、用户ARN是否和你预期的管理员身份一致。如果身份不匹配,检查本地环境中的AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_PROFILE变量,清空相关临时配置后重新操作。
  2. 适配组织策略的合规要求
    如果确认身份正确,就检查组织策略中对S3桶的创建要求(比如必须携带指定标签、必须开启默认加密、必须开启公共访问拦截),在serverless.yml中补充部署桶的对应配置,满足策略合规要求:
    service: slstest
    frameworkVersion: '2'
    provider:
      name: aws
      runtime: python3.8
      lambdaHashingVersion: 20201221
      deploymentBucket:
        # 匹配策略要求的标签
        tags:
          Team: "dev"
        # 开启服务端加密
        serverSideEncryption: AES256
        # 开启公共访问拦截
        blockPublicAccess: true
    functions:
      hello:
        handler: handler.hello
        events:
          - httpApi:
             path: /hello
             method: post
    
  3. 核对CloudFormation执行角色权限
    进入IAM控制台,找到CloudFormation对应的服务关联角色,确认角色权限策略中没有移除s3:CreateBucket、s3:PutBucketVersioning等部署S3桶所需的操作权限。如果角色被修改过,临时为角色绑定管理员权限测试部署流程,排除角色权限缺失的问题。
  4. 兜底绕过方案
    如果前述排查无法快速定位拦截点,可以手动在eu-west-1区域创建一个全局命名唯一的S3存储桶,在serverless.yml中指定该桶作为部署存储位置,跳过CloudFormation自动创建S3桶的流程:
    provider:
      name: aws
      runtime: python3.8
      lambdaHashingVersion: 20201221
      # 替换为你手动创建的桶名
      deploymentBucket: slstest-manual-deploy-bucket-175264504000
    
    配置完成后重新执行部署命令,即可绕过自动创建S3桶的权限拦截环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 12:06:03