Ruby на Rails: как использовать AWS пулы Cognito для доступа к S3 как пользователю? - PullRequest
0 голосов
/ 01 апреля 2020

Я использую 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, который получает доступ к файлам.

...