首页 > 解决方案 > InvalidParameterValueException:为函数定义的角色不能由 Lambda 承担(Python Boto3)

问题描述

我在 python 上使用 boto3 API,我遇到了这个问题。

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

标签: pythonaws-lambdaboto3

解决方案


我发现 AWS lambda 需要一些时间才能使用新创建的角色。

我的修复如下:

  1. 创建一个重试装饰器以重试命令

     def retry(ExceptionToCheck=Exception, tries=4, delay=3, backoff=2):
         def deco_retry(func):
    
             @wraps(func)
             def wrapper(*args, **kwargs):
                 cnt, mdelay = tries, delay
                 while cnt > 1:
                     try:
                         return func(*args, **kwargs)
                     except ExceptionToCheck as e:
                         print(f'{str(e)}, Retrying in {mdelay} seconds...')
                         time.sleep(mdelay)
                         cnt -= 1
                         mdelay *= backoff
                 return func(*args, **kwargs)
    
             return wrapper
    
         return deco_retry
    
  2. 从装饰器包装函数

     @retry()
     def create(input):
         response = lambda_client.create_function(**input)
         return response
    

推荐阅读