У меня есть временный генератор токенов, который получает токен для браузера aws -sdk. js для пользовательских сессий, взаимодействующих с S3 и lambda. У меня есть существующая роль с доступом к S3 и лямбда-вызову, затем я прикрепляю определенные c пользовательские политики к временному токену, чтобы они могли видеть только свои собственные файлы и вызывать только те функции, которые требуют пользовательской информации (только для просмотра пользовательских указаний c files)
Я хотел добавить возможность определять, существует ли объект с заданным ключом через лямбду, а не с помощью браузера / javascript, поскольку последний показывает ошибки в консоли, когда объекты это делают не существует. (это не останавливает выполнение кода, но может сбить с толку пользователей)
, но, не сделав ничего, кроме изменения существующей политики, чтобы добавить дополнительное разрешение на лямбда-вызов для новой функции (которую я уже тестировал), он все равно говорит «AccessDeniedException». Я добавил отладку, чтобы увидеть, что политика, прикрепленная к токену, включает список ресурсов.
Что мне здесь не хватает? Все, что я сделал с приведенной ниже политикой, это добавил строку 'ObjectExists':
{
"Version":"2012-10-17",
"Statement": [
{
"Sid" : "AllowUserInvokeLambda",
"Action": [
"lambda:InvokeAsync",
"lambda:InvokeFunction"
],
"Effect": "Allow",
"Resource": [
"arn:aws:lambda:us-east-2:*:function:CreateThumbnail",
"arn:aws:lambda:us-east-2:*:function:ObjectExists",
"arn:aws:lambda:us-east-2:*:function:GetCachedThumbnail"
]
}
]
}
Ошибка:
AwsHelper.js:699 {method: "AwsHelper::lambdaObjectExists", message: "lambda invocation error"} AccessDeniedException: User: arn:aws:sts::109876543210:assumed-role/test_sts_role/user-12345 is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-east-2:123456789012:function:ObjectExists
Обновление: я думал, что заставил остальных работать, но пока у меня все еще есть встроенная функция, я никогда ее не реализовывал. (это было несколько месяцев go, так что теперь я задаюсь вопросом, не возникла ли у меня тогда такая же проблема с лямбда-вызовом) Так что, возможно, другие тоже никогда не работали.