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

使用Boto3创建Lambda角色时遇无法被Lambda承担的错误如何解决

解决Lambda角色无法被Assume的问题

错误信息

调用Lambda的CreateFunction操作时触发以下错误:

botocore.errorfactory.InvalidParameterValueException: An error occurred (InvalidParameterValueException) when calling the CreateFunction operation: The role defined for the function cannot be assumed by Lambda.

问题排查及解决步骤

1. 修复信任策略的JSON语法错误

你的lambda_assume_role_policy存在多余的闭合括号,导致JSON结构无效,IAM无法正确解析信任关系。修正后的策略如下:

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

(单值的Action和Service字段可省略数组格式,进一步避免语法错误)

2. 等待IAM策略生效

IAM角色的信任策略存在短暂的生效延迟,创建角色后添加等待再执行Lambda创建操作:

import time

# 创建IAM角色
resp = iam.create_role(
    AssumeRolePolicyDocument=json.dumps(lambda_assume_role_policy),
    RoleName=role_name,
)
# 等待5秒确保策略生效
time.sleep(5)

# 创建Lambda函数
response = lambdaInst.create_function(
    FunctionName='Lambda-Func',
    Runtime='python3.8',
    Role=resp['Role']['Arn'],  # 直接使用返回的ARN避免拼写错误
    Handler='lambda_function.lambda_handler',
    Code={ 'ZipFile': deployment_package, },
    Description=' ',
    Timeout=900,
    MemorySize=128,
    Publish=True,
    PackageType='Zip',
    EphemeralStorage={ 'Size': 1024 }
)

3. 验证角色信任策略是否正确应用

通过IAM API检查角色的信任策略是否生效:

role = iam.get_role(RoleName=role_name)
print(json.loads(role['Role']['AssumeRolePolicyDocument']))

输出结果需包含lambda.amazonaws.com作为可信任服务主体,且授权操作为sts:AssumeRole。

4. 确认RoleArn的准确性

确保传入create_function的Role参数是正确的角色ARN,优先使用create_role返回的resp['Role']['Arn'],避免手动拼接时出现拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:30:54