用户无权执行:dynamodb:GetItem

User is not authorized to perform: dynamodb:GetItem

我在使用 aws lambda 的 vercel 中创建了我的 api。在我的函数中,我在我的 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

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

猜猜看,经过几个小时梳理 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 个多小时。