【问题标题】:User is not authorized to perform: dynamodb:GetItem用户无权执行:dynamodb:GetItem
【发布时间】:2021-02-26 06:11:08
【问题描述】:

我在 vercel 中创建了我的 api,它使用 aws lambda。在我的函数中,我在我的 aws 帐户中使用了对 dynamodb 的调用。

但我不断收到AccessDeniedException
但是,当我在本地运行它时,没有问题。

AccessDeniedException: User: arn:aws:sts::764717618004:assumed-role/cloudwatch_logs_events_putter/L0ZFqQmkoVXQ44u8QwB1yH0f-805fd9d54732e5470e54bf12bd9a25672e379b5 
is not authorized to perform: dynamodb:GetItem on resource: arn:aws:dynamodb:ap-south-1:764717618004:table/users

this 解决了 lambda 和 dynamo 属于同一用户帐户时的问题。

【问题讨论】:

  • 您是否为cloudwatch_logs_events_putter 角色授予dynamodb:GetItem 的权限?
  • 我找不到任何具有该名称的角色。我是新手。我应该以该名称创建角色吗?我已将AmazonDynamoDBFullAccess 提供给 IAM 用户。
  • 您必须更新 Role 的策略,而不是 User
  • 该角色存在是因为您的 Lambda 已承担该角色,并且 STS 已颁发未经授权的凭证。如果您没有看到该角色,是否它可能在其他帐户中,或者您无权查看它?
  • 对不起,对vercel.com不熟悉;可能会与他们联系以获得跨帐户权限的支持。

标签: amazon-web-services aws-lambda amazon-dynamodb amazon-iam vercel


【解决方案1】:

你猜怎么着,经过数小时梳理 aws 文档后,我找到了问题的根源。 用户:arn:aws:sts::764717618004:assumed-role/arn:aws:dynamodb:ap-south-1:764717618004:table/users是同一个,想想就觉得奇怪。

因为 dynamodb 的 aws Id 应该是我的,但显然不是。所以我尝试记录accessKeyId,令我惊讶的是这不是我在环境中设置的。
然后我刚刚查看了vercel env ls 中的内容。乍一看没有错,但后来我注意到DYNAMODB_ACCESS_KYE_ID 中有一个小错字。

是的,这只是一个错字。成功地在环境变量中的一个错字上浪费了 6 个多小时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-07
    • 2016-03-18
    • 1970-01-01
    • 2016-09-26
    • 2016-02-16
    • 2016-04-19
    • 2019-01-22
    • 2021-02-08
    相关资源
    最近更新 更多