Amazon web services 用户无权执行:dynamodb:GetItem

Amazon web services 用户无权执行:dynamodb:GetItem,amazon-web-services,aws-lambda,amazon-dynamodb,amazon-iam,vercel,Amazon Web Services,Aws Lambda,Amazon Dynamodb,Amazon Iam,Vercel,我已经在vercel中创建了我的api,它使用aws lambda。在我的函数中,我在aws帐户中使用了对dynamodb的调用 但我不断收到AccessDeniedException 但是,当我在本地运行它时,没有问题 AccessDeniedException: User: arn:aws:sts::764717618004:assumed-role/cloudwatch_logs_events_putter/L0ZFqQmkoVXQ44u8QwB1yH0f-805fd9d54732e547

我已经在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

当lambda和dynamo都是同一个用户帐户时解决问题。

好吧,猜猜看,经过几个小时的aws文档梳理,我找到了问题的根源。 用户:
arn:aws:sts::764717618004:假定角色/
arn:aws:dynamodb:ap-south-1:764717618004:表/用户
都是一样的,我一想到就觉得奇怪

因为dynamodb的aws Id应该是我的,但显然不是。因此,我尝试记录
accessKeyId
,令我惊讶的是,它不是我在环境中设置的。
然后我刚刚查看了vercel env ls中的内容。乍一看并没有什么问题,但后来我注意到DYNAMODB_ACCESS_KYE_ID中有一点输入错误


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

您是否为
dynamodb:GetItem
授予了
cloudwatch\u logs\u events\u putter
角色权限?我找不到任何具有该名称的角色。我是新来的。我应该以这个名字创建一个角色吗?我已经为IAM用户提供了
AmazondynamodFullAccess
。您必须更新
角色
的策略,而不是
用户
。该角色的存在是因为您的Lambda假设了该角色,并且STS已颁发未经授权的凭据。如果您没有看到该角色,是否可能该角色位于其他帐户中,或者您没有查看该角色的权限?抱歉,我不熟悉vercel.com;也许可以通过跨帐户权限向他们寻求支持。