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

关于AWS SAM自动创建Lambda IAM角色的命名及权限边界问题

关于SAM部署Lambda自动创建角色的疑问解答

1. 每次SAM部署都会创建新角色吗?

不会。SAM的默认行为逻辑如下:

  • 当模板未显式定义Lambda执行角色时,SAM会先检查当前CloudFormation栈中是否存在符合要求的现有角色——即具备lambda.amazonaws.com的信任关系,且附加了AWSLambdaBasicExecutionRole策略。
  • 若找到匹配角色,会直接复用;仅当栈内无符合条件的角色时,才会自动创建新角色。
  • 例外场景:删除原有栈后重新部署,或修改Lambda配置(比如添加需要额外权限的触发器)导致原有角色不再满足需求时,SAM会创建新角色。

2. 能否控制角色名称并添加权限边界?

完全可以,核心方法是在SAM模板中显式定义IAM角色,再让Lambda函数引用该角色,具体实现如下:

示例模板配置

Resources:
  # 自定义Lambda执行角色
  MyCustomLambdaRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: MyFixedLambdaRoleName  # 自定义固定角色名称
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole  # 保留基础执行策略
      PermissionsBoundary: arn:aws:iam::123456789012:policy/MyCustomPermissionsBoundary  # 替换为你的权限边界ARN

  # Lambda函数绑定自定义角色
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello-world/
      Handler: app.lambdaHandler
      Runtime: nodejs18.x
      Role: !GetAtt MyCustomLambdaRole.Arn  # 引用自定义角色的ARN

部署后,SAM会使用你定义的固定名称角色,不再自动生成带随机字符串的默认角色,同时该角色会严格遵循你指定的权限边界限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:17:02