AWS DynamoDB问题:用户无权执行:dynamodb:PutItem在资源上

Tir*_*hah 26 amazon-web-services node.js amazon-dynamodb aws-cli aws-sdk

我试图从我在AWS ElasticBeanStalk上部署的Node应用程序访问DynamoDB.我收到错误"用户无权执行:dynamodb:PutItem on resource"

它在本地运行得非常好,只有当我部署到AWS时才停止执行.

谁知道修复?提前致谢!

Abh*_*mar 21

dynamoDB访问被拒绝通常是一个政策问题.检查您正在使用的IAM /角色策略.快速检查是添加

AmazonDynamoDBFullAccess 
Run Code Online (Sandbox Code Playgroud)

您可以转到AWS控制台的"权限"标签中的政策.如果它在此之后有效,则表示您需要创建正确的访问策略并将其附加到您的角色.

  • @DanSalo阅读海报的评论,我认为他说要添加FullAccess,看看是否能解决问题.如果确实如此,那么您就知道它是权限问题,然后可以适当地调整您的权限. (5认同)
  • 尽管“ AmazonDynamoDBFullAccess”应该可以工作,但是更好的做法是仅对您希望调用的函数授予权限,在这种情况下,该函数为“ dynamodb:PutItem”。这可以帮助避免意外呼叫和后果。[此处](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/api-permissions-reference.html)是可能的许可的完整列表。 (2认同)
  • 在我的情况下,所需角色是“ AWSLambdaInvocation-DynamoDB” (2认同)

smc*_*art 2

检查您用于连接到 AWS 上的 Node 应用程序中的 DynamoDB 的访问密钥。此访问密钥将属于在 IAM 中没有必要权限的用户。因此,找到 IAM 用户,创建或更新适当的策略,就可以了。

对于 Beanstalk,您需要在发布时设置用户策略。在这里查看官方文档

也可以查看这里的示例,由 @Tirath Shah 提供。