Typescript 使用AWS CDK将现有角色附加到AWS Lambda

Typescript 使用AWS CDK将现有角色附加到AWS Lambda,typescript,amazon-web-services,aws-lambda,aws-cdk,Typescript,Amazon Web Services,Aws Lambda,Aws Cdk,我想将现有角色附加到使用CDK创建的lambda 我正在做下面的工作 const role1 = iam.Role.fromRoleArn(this, 'Role', 'ARN', { mutable: true, }); const lambda1 = new lambda.Function(this, 'lambda1', { runtime: lambda.Runtime.PYTHON_3_7, code: lambda.Co

我想将现有角色附加到使用CDK创建的lambda 我正在做下面的工作

  const role1 = iam.Role.fromRoleArn(this, 'Role', 'ARN', {
         mutable: true,
    });
 const lambda1 = new lambda.Function(this, 'lambda1', {
        runtime: lambda.Runtime.PYTHON_3_7,
        code: lambda.Code.asset('lambda/lambda1_function'),
        handler: 'lambda_function.lambda_handler',
        role:role1,
             reservedConcurrentExecutions: 1
    });
运行cdk deploy时获取以下异常

The role defined for the function cannot be assumed by Lambda. (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID:
如果有人能帮忙解决这个问题
PS:我正在使用打字脚本CDK@1.27.0

根据
角色
参数文档:

Lambda执行角色

这是功能在执行时将承担的角色。它控制函数将具有的权限该角色必须可由“lambda.amazonaws.com”服务主体承担

这可以通过向lambda服务授予权限来实现:

role1.grant(新的iam.ServicePrincipal(“lambda.amazonaws.com”))

根据评论,问题在于角色中的信任策略不正确


通过将
lambda.amazonaws.com
添加到中解决了此问题。

所述角色的信任策略是什么?@Marcin It有一个通用的批处理操作服务条目,我没有看到任何与lamda相关的内容。我应该在其中添加lambda服务吗?如果信任策略不允许
iam::AssumeRole
添加lambda服务,则您的函数无法使用该角色。谢谢,这解决了issueNo问题。如果你不介意的话,我会添加一个答案供将来参考。