Пользователь не авторизован для выполнения: Dynamodb: GetItem

Я создал свой api в Vercel, в котором используется лямбда aws. В своей функции я использовал вызов Dynamodb в моей учетной записи aws.

Но я продолжаю получать 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 решает проблему, когда и лямбда, и динамо той же учетной записи пользователя.


person srx    schedule 14.11.2020    source источник
comment
Вы дали cloudwatch_logs_events_putter разрешения роли для dynamodb:GetItem?   -  person hephalump    schedule 14.11.2020
comment
Я не могу найти ни одной роли с таким именем. Я новичок в этом. Должен ли я создавать роль под этим именем? Я уже отдал AmazonDynamoDBFullAccess пользователю IAM.   -  person srx    schedule 14.11.2020
comment
Вам нужно будет обновить политику для Role, а не для User.   -  person hephalump    schedule 14.11.2020
comment
Изначально такой роли не было, поэтому я создал ее и дал разрешения, но она все еще не работает.   -  person srx    schedule 14.11.2020
comment
Роль существует, потому что ваша Lambda приняла ее, а служба STS выдала учетные данные, которые не авторизованы. Если вы не видите роль, возможно, она находится в другом аккаунте или у вас нет прав на ее просмотр?   -  person hephalump    schedule 14.11.2020
comment
Лямбда находится в другой учетной записи (vercel.com), и у меня нет разрешения что-либо делать. Как я могу позволить этой лямбде использовать мой динамодб? Создание роли не сильно помогло. А может я что-то упускаю.   -  person srx    schedule 14.11.2020
comment
Извините, я не знаком с vercel.com; возможно, обратитесь к ним за поддержкой с разрешениями для нескольких учетных записей.   -  person hephalump    schedule 14.11.2020
comment
У них нет возможности что-либо изменить. Я просмотрел всю документацию и ничего не нашел. Я также начал обсуждение в github / vercel, но до сих пор не получил ответа.   -  person srx    schedule 14.11.2020


Ответы (1)


Угадайте, что после нескольких часов изучения документации AWS я добрался до корня проблемы. Пользователь: arn:aws:sts::764717618004:assumed-role/ и arn:aws:dynamodb:ap-south-1:764717618004:table/users - это одно и то же, что было странно, когда я подумал об этом.

Потому что идентификатор aws для Dynamodb должен был быть моим, но, очевидно, это не так. Итак, я попытался зарегистрировать accessKeyId, и, к моему удивлению, это было не то, что я установил в Environment.
Затем я просто проверил, что находится в vercel env ls. На первый взгляд все было в порядке, но потом я заметил небольшую опечатку в DYNAMODB_ACCESS_KYE_ID.

ДА, ЭТО БЫЛ ПРОСТО ТИПО. успешно потратил 6+ часов на опечатку в переменной окружения.

person srx    schedule 15.11.2020