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

AWS Lambda调用sts:AssumeRole遇AccessDenied错误排查

Lambda角色假设AccessDenied问题排查与修复

问题描述

在AWS Lambda中使用角色假设功能时,触发如下权限错误:

ClientError: An error occurred (AccessDenied) when calling the AssumeRole operation:
User: "..." is not authorized to perform: sts:AssumeRole on resource: "..."

当前使用的CloudFormation模板(template.yml)配置:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Parameters:
  Role1:
    Type: String
Resources:
  Function1:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: core.lambda_function.lambda_handler
      Policies:
        - Statement:
            - Sid: AssumeRol
              Effect: Allow
              Action:
                - sts:AssumeRole
              Resource: '*'
      Environment:
        Variables:
          ROLE: !Ref Role1

Lambda Python代码片段:

role_arn = get_role_arn_from_env_parameter()
assumed_role_object = sts_client.assume_role(
                    RoleArn=role_arn,
                    RoleSessionName="AssumeRoleSession")

补充的目标角色信任策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

问题原因与修复方案

1. 策略拼写小问题

模板中策略的Sid为AssumeRol(缺失末尾的'e'),虽不影响权限生效,但建议修正为AssumeRole以保证配置可读性。

2. 核心权限配置调整

当前Policies的配置位置是正确的,但需要同时确认两个关键环节:

  • Lambda执行角色权限:确保sts:AssumeRole权限精准指向目标角色ARN(避免使用Resource: '*',降低权限范围更安全)。修改后的策略片段:
    Policies:
      - Statement:
          - Sid: AssumeRole
            Effect: Allow
            Action:
              - sts:AssumeRole
            Resource: !Ref Role1
    
  • 目标角色信任策略:当前信任策略允许所有Lambda服务角色假设该角色,若要限制到当前Lambda的执行角色,需将Principal修改为Lambda执行角色的ARN:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "AllowSpecificLambdaRole",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::你的账号ID:role/你的Lambda执行角色名称"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    

3. 验证步骤

  • 重新部署更新后的CloudFormation模板,确保权限策略正确附加到Lambda执行角色。
  • 登录IAM控制台,检查Lambda执行角色的权限列表,确认sts:AssumeRole权限存在且Resource为目标角色ARN。
  • 检查目标角色的信任策略,确认Principal包含Lambda执行角色ARN或lambda.amazonaws.com(按需选择)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:15:57