Aws lambda没有连接Dynamo Db

时间:2017-09-18 10:16:35

标签: amazon-web-services lambda

当我试图触发

时,我收到此错误
  

创建触发器时出错:无法访问流   阿尔恩:AWS:dynamodb:美东2:XXXXXX:表/ XXXX /流/ 2017-09-18T07:47:01.834。   请确保该角色可以执行GetRecords,GetShardIterator,   在IAM中对您的流进行DescribeStream和ListStreams操作。

请帮助我,

5 个答案:

答案 0 :(得分:1)

根据错误消息,您的IAM设置不正确。您需要将这些类型的角色分配给您的用户。

您必须创建一个策略,允许您的AWS功能访问Cloudwatch日志以及您刚刚创建的表。转到IAM控制台,选择'角色'然后'创建新角色'。

enter image description here

选择' AWS Lambda'角色: enter image description here

然后点击“下一步”'跳过附加政策'节

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html将帮助您解决此错误。 enter image description here 此外,我尝试按照以下信息:https://github.com/dwyl/learn-aws-lambda#what-is-lambda访问dynamodb,并且它与root(主)用户一起正常工作。

答案 1 :(得分:0)

将触发器附加到DynamoDb表时,您将收到OP发布的错误

您需要向为该lambda函数生成的IAM角色添加策略。

以下是示例JSON,您可以使用它来创建策略,只需替换lambda函数并流ARN。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:region:876204785313:function:functionname"
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:region:accountnumber:table/table-name/stream/2019-02-27T07:41:49.893"
        }
    ]
}

创建策略并将其附加到角色后,您可以返回DynamoDB并使用lambda函数创建一个新触发器。如果操作正确,它将创建无误。

答案 2 :(得分:0)

我要做的就是去IAM管理控制台,并将 AmazonDynamoDBFullAccess 附加到特定角色。

答案 3 :(得分:0)

似乎您只需要使用策略 AWSLambdaDynamoDBExecutionRole 创建此角色,并将其附加到您的lambda。您可能不希望完全访问,因为这是读取操作。 enter image description here

答案 4 :(得分:0)

当您创建 lambda 函数时,Lambda 默认为创建的 lambda 函数创建一个角色,但该角色不足以授予 Dynamo 调用 lambda 函数的权限。因此,在角色部分寻找您的 lambda 函数并附加 AWSLambdaInvocation-DynamoDB 策略。