【问题标题】:(InvalidParameterValueException) when calling the CreateFunction operation: The role defined for the function cannot be assumed by Lambda(InvalidParameterValueException) 调用 CreateFunction 操作时:为函数定义的角色不能由 Lambda 承担
【发布时间】:2021-10-24 05:35:30
【问题描述】:

我似乎无法使用 boto3 将 iam 角色分配给 lambda 函数。不断收到错误消息: botocore.errorfactory.InvalidParameterValueException:调用CreateFunction操作时发生错误(InvalidParameterValueException):Lambda无法承担为函数定义的角色。

这是我的简单代码:

import boto3
import json 

# Boto3 Clients

iam = boto3.client('iam')
client = boto3.client('lambda')
rolename = 'lambda_role2'
inputbucket = 'inputbuckgs'

#Assume policy for role policy 

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

#Creating a role and adding assume role policy 

response_role = iam.create_role(
    RoleName= rolename,
    AssumeRolePolicyDocument= json.dumps(assumerolepolicy),                    
    Description='lambda function for role',
)

# generate role arn 
rolearn = response_role['Role']['Arn']
#Lambda Function

response_lam = client.create_function(
    FunctionName='transcoder-lambda',
    Runtime='python3.7',
    Role = rolearn ,
    Handler='index.handler',
    Code={
        'S3Bucket': inputbucket,
        'S3Key': 'function.zip'
    },
    Description='function to transcode videos'
)

任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-iam


    【解决方案1】:

    您是否尝试过使用您创建的角色稍后创建函数?

    角色本身看起来不错,所以我想知道这是否是一种竞争条件。 AWS IAM 是一项全球服务,所以我有时可以一点(通常是毫秒,但有时会稍长一些)。由于您的 create_function 调用是在 create_role 调用之后发生的,因此该角色可能尚未传播到 Lambda 服务。

    【讨论】:

    • 角色创建得很好,它是函数不会。它不会给我一条错误消息,例如“角色不存在而不是无效参数吗?
    • 好点。您是否输出了rolearn 来检查它是否有效?如果您尝试使用该 ARN 手动创建函数会怎样?
    • 是的,我在分配给函数之前尝试了 print(rolearn),它似乎是有效的。我开始相信这是一个 boto3 错误,而不是代码有问题。
    猜你喜欢
    • 2016-09-26
    • 2021-08-30
    • 2016-07-24
    • 2023-04-06
    • 1970-01-01
    • 2017-05-12
    • 2019-12-17
    • 2021-09-17
    • 2021-08-03
    相关资源
    最近更新 更多