Lambda.InvokeAccess从Kinesis Firehose拒绝

Nat*_*own 2 amazon-kinesis aws-lambda aws-iam amazon-kinesis-firehose

我正在尝试使用Firehose交付流设置Lambda转换。我为Firehose定义了一个IAM角色,其中包括以下策略文档:

{
    "Statement": {
        "Action": [
            "lambda:InvokeFunction",
            "lambda:GetFunctionConfiguration"
        ],
        "Resource": [<Arn>, ...],
        "Effect": "Allow"
    }
}
Run Code Online (Sandbox Code Playgroud)

我还授予了sts:AssumeRole从Firehose访问Lambda角色的权限。

从理论上讲,这应允许我的Firehose“调用”访问指定的lambda ARN。但是转换失败了

{
  "errorCode":"Lambda.InvokeAccessDenied",
  "errorMessage":"Access was denied. Ensure that the access policy allows access to the Lambda function."
}
Run Code Online (Sandbox Code Playgroud)

而且从Lambda控制台看不到函数调用。我的IAM组件是否配置正确?还是这里有其他问题?

小智 5

这句话对我有用。请注意:*资源末尾的。

{
    "Sid": "",
    "Effect": "Allow",
    "Action": [
        "lambda:InvokeFunction",
        "lambda:GetFunctionConfiguration"
    ],
    "Resource": "arn:aws:lambda:us-west-2:11111111111:function:transform-lambda:*"
}
Run Code Online (Sandbox Code Playgroud)


Nat*_*own 3

在我的 Firehose 的处理配置中的其他地方,我提供了一个角色来执行没有足够权限的 lambda。通过删除

- ParameterName: RoleArn
  ParameterValue:
    Fn::GetAtt: [<Role>, Arn]
Run Code Online (Sandbox Code Playgroud)

从ProcessingConfiguration配置集中,lambda能够使用适当的角色/策略成功执行。