Я использую AWS Cognito User Pool для аутентификации в моем Ruby приложении Rails. Я также создал Identity Pool для User Pool с намерением, чтобы вошедшие в систему пользователи могли читать файлы из заданной c S3 корзины. Однако у меня возникают проблемы с доступом к объектам в S3 как вошедшему в систему пользователю. У меня есть токены для вошедшего в систему пользователя (id_token
, access_token
), но я не знаю, где их предоставить.
После образца кода из Ruby SDK do c позволяет мне получать доступ к S3 только как общий пользователь, а не как зарегистрированный пользователь:
s3 = Aws::S3::Resource.new(region: aws_region)
obj = s3.bucket('my-bucket').object('my-item')
obj.get(response_target: './my-code/my-item.txt')
Затем я обнаружил это do c об использовании временных учетных данных , но я также не знаю, как использовать токены пользователя где-либо. Я также попробовал STS '1012 * AssumeRoleWithWebIdentity , который позволяет мне передать id_token
, и использовал Identity Pool role_arn
, но я получаю ошибку AccessDenied
. Я запутался в отношениях между STS, IAM и Cognito Identity Pool. Кто-нибудь может помочь?
Примечание: я также включил ведение журнала доступа S3, и он должен регистрировать пользователя Cognito, который получает доступ к файлам.