我想将现有角色附加到使用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
答案 0 :(得分:1)
根据评论,问题是角色中的信任策略不正确。
通过在trust policy上添加lambda.amazonaws.com
解决了该问题。
答案 1 :(得分:0)
根据role
参数文档:
Lambda执行角色。
这是函数在执行时将承担的角色。它控制该功能将具有的权限。 该角色必须由“ lambda.amazonaws.com”服务负责人承担。。
这可以通过授予lambda服务权限来实现:
role1.grant(new iam.ServicePrincipal("lambda.amazonaws.com"))