用户无权执行: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 个多小时。
我在使用 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
猜猜看,经过几个小时梳理 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 个多小时。