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

时间:2020-05-14 00:11:21

标签: typescript amazon-web-services aws-lambda aws-cdk 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.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

2 个答案:

答案 0 :(得分:1)

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

通过在trust policy上添加lambda.amazonaws.com解决了该问题。

答案 1 :(得分:0)

根据role参数文档:

Lambda执行角色。

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

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

role1.grant(new iam.ServicePrincipal("lambda.amazonaws.com"))