You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无IAM GetRole权限下使用Serverless/Zappa的解决方案咨询

绕过AWS Educate账户iam:GetRole权限限制的可行方案

嘿,我刚好碰到过类似的AWS Educate Starter账户权限问题,给你几个亲测有效的解决方法,帮你搞定Serverless和Zappa的部署报错:

方法1:手动创建Lambda执行角色,直接指定使用

AWS Educate账户通常允许手动创建基础的IAM角色,只是限制了iam:GetRole这类读取检查操作。你可以先手动建好角色,再让部署工具直接用它:

  1. 登录AWS控制台,进入IAM服务,创建一个新的角色:
    • 信任实体类型选"AWS服务",然后选择"Lambda"作为使用该角色的服务。
    • 附加AWSLambdaBasicExecutionRole策略(用来写CloudWatch日志),再加上你已有的Lambda、S3、API Gateway全权限策略。
    • 给角色起个好记的名字,比如my-lambda-exec-role,记录下它的ARN。
  2. 修改部署工具的配置文件:
    • Serverless框架:在serverless.ymlprovider部分添加指定角色的配置:
      provider:
        name: aws
        runtime: python3.9 # 替换成你的实际运行时
        role: arn:aws:iam::XXXXXXXXXXX:role/my-lambda-exec-role
      
    • Zappa:在zappa_settings.json的环境配置里添加:
      {
        "dev": {
          "role_name": "my-lambda-exec-role",
          // 保留你原有的其他配置项
        }
      }
      

这样工具就不会再尝试检查或创建角色,直接使用你手动建好的角色,自然就避开了iam:GetRole的权限限制。

方法2:让Serverless跳过权限验证检查

如果你用的是Serverless框架,还可以通过配置跳过它的权限预检查步骤:
serverless.ymlprovider部分添加:

provider:
  skipPermissionsValidation: true

这个配置会让Serverless跳过包括iam:GetRole在内的权限检查,但要注意:这个方法只是跳过检查,如果你没有提前手动创建角色,工具尝试自动创建角色时可能还是会因为Educate的权限限制失败,所以建议配合方法1一起使用。

关键提醒

AWS Educate Starter账户的权限管控比较严格,可能还会限制iam:CreateRole这类操作,所以手动创建角色是最稳妥的方案。如果手动创建角色时也遇到权限问题,可以联系AWS Educate的管理员调整你的账户权限,一般基础的Lambda执行角色创建是被允许的。

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

火山引擎 最新活动