(InvalidParameterValueException)在调用CreateFunction操作时:为函数定义的角



我似乎无法使用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'
)

任何帮助都将非常感激。

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

角色本身看起来很好,所以我想知道它是否是一个竞争条件。AWS IAM是一项全球服务,所以我有时可以花一点时间(通常是几毫秒,但有时会更长一点)。因为您的create_function调用发生在create_role调用之后,所以角色可能还没有传播到Lambda服务。

最新更新