Lambda 和 DynamoDB:无权执行:dynamodb:Scan

Posted

技术标签:

【中文标题】Lambda 和 DynamoDB:无权执行:dynamodb:Scan【英文标题】:Lambda and DynamoDB : is not authorized to perform: dynamodb:Scan 【发布时间】:2017-07-24 23:24:38 【问题描述】:

在我将 API 部署到 lambda 后,我使用无服务器创建了我的 API,我们尝试通过 GatewayAPI 中的“测试”按钮测试端点,我收到错误:

“用户:arn:aws:sts::245912153055:assumed-role/pets-service-dev-us-east-1-lambdaRole/pets-service-dev-listPets 无权执行:dynamodb:Scan on资源:arn:aws:dynamodb:us-east-1:245912153055:table/Pets"

我可能需要向 Lambda 授予权限,但我有点迷茫......

【问题讨论】:

你的问题到底是什么? 向分配给 Lambda 函数的 IAM 角色添加适当的权限。 我不知道该怎么做,我是 AWS 新手,是在 lambda 配置上吗? 【参考方案1】:

如前所述,您需要将权限添加到无服务器定义中。

有关此主题的文档非常广泛: serverless IAM guide

在您的情况下,您可能只需要向您的 serverless.yml 添加类似以下权限的内容。

provider:
  iamRoleStatements:
    -  Effect: "Allow"
       Action:
         - "dynamodb:Scan"
       Resource: "arn:aws:dynamodb:us-east-1:245912153055:table/Pets"

【讨论】:

谢谢,我在 IAM 控制台上找到了。【参考方案2】:

我参加聚会有点晚了,但它仍然可以帮助某人知道目前(2019 年 3 月)在创建 lambda 时使用 nodejs 与 8.10 似乎存在问题。添加所有必要的权限仍然会导致上述错误。一个简单的解决方法是暂时使用较低的 nodejs 版本。希望问题能尽快解决

【讨论】:

这仍然是个问题吗?你从哪里发现这个问题存在的?我现在在使用 node v 8.10 时遇到了这个问题,似乎找不到任何方法来添加发电机策略

以上是关于Lambda 和 DynamoDB:无权执行:dynamodb:Scan的主要内容,如果未能解决你的问题,请参考以下文章

用户无权执行:dynamodb:PutItem on resource

AmazonServiceException:用户无权执行:dynamodb:DescribeTable 状态码:400;错误代码:AccessDeniedException

EB Worker cron.yaml - 无权执行:dynamodb:UpdateItem

无服务器调用错误:“无权执行:dynamodb:BatchWriteItem on resource:arn:aws:...”

调用扫描操作时如何解决 (AccessDeniedException):用户:arn:aws:sts... 无权执行:dynamodb:Scan on resource.."?

Lambda 无权执行:cognito-idp:AdminInitiateAuth