Мне кажется, что есть пара проблем с политиками доверия ваших ролей Auth и Unauth:
Во-первых, Action
, разрешенное ролями, должно быть sts:AssumeRoleWithWebIdentity
а не sts:AssumeRole
.
AssumeRole
дает дополнительные временные разрешения существующим пользователям IAM. AssumeRole требует наличия действительных учетных данных пользователя IAM. AssumeRoleWithWebIdentity
предоставляет временные учетные данные пользователям приложения, которые были аутентифицированы каким-либо поставщиком веб-идентификации (например, Cognito User Pools или Facebook и т. Д. c).
Во-вторых, условная часть вашей политики доверия должна выглядеть следующим образом:
Condition:
StringEquals:
cognito-identity.amazonaws.com:aud:
- !Ref MyIdentityPool
ForAnyValue:StringLike:
cognito-identity.amazonaws.com:amr:
- authenticated # or unauthenticated
Часть cognito-identity.amazonaws.com:aud
ограничивает назначение этой роли пользователям, которые являются членами вашей конкретной c пул идентификаторов, в то время как вы ссылались на arn своей корзины S3.