У меня есть схема AWS AppSyn c с режимом авторизации по умолчанию Пул пользователей Amazon Cognito . Я вызываю эту конечную точку AppSyn c из веб-приложения, используя AWS Amplify GraphQL Client , и, соответственно, его конфигурация указывает пользовательские пулы Cognito в качестве типа аутентификации:
aws_appsync_authenticationType: 'AMAZON_COGNITO_USER_POOLS'
Работает, как ожидалось, когда пользователь аутентифицирован ; однако (хотя в пуле идентификаторов Cognito уже установлены надлежащие роли Auth и Unath), когда веб-сайт запускает некоторую команду Amplify fetch, например, для неаутентифицированного (гостя) пользователя:
const item = await API.graphql(graphqlOperation(getItem, { id: 'my-id' }))
Заканчивается выдачей ошибки:
"No current user"
Ну, я ожидал, что это сработает, если я разрешаю неаутентифицированным пользователям, но это просто не удается. В поисках выхода я нашел несколько обсуждений, например:
И все вышеперечисленное предлагает пересмотреть конфигурации Amplify, чтобы тип аутентификации AppSyn c был преобразован из * С 1034 * на AWS_IAM
или API_KEY
. Однако по какой-то конкретной причине 1 :
- Я хочу придерживаться
AMAZON_COGNITO_USER_POOLS
типа аутентификации, - И все же иметь возможность для получения некоторых ресурсов AppSyn c в качестве гостевого пользователя, если они не ограничены
@aws_auth
декораторами и т. д.
Возможно ли это каким-либо образом?
1 У меня есть более детальные элементы управления в зависимости от группы пользователя (admin, normal et c.) С декораторами, такими как @aws_auth(cognito_groups: ["default-user-group"])
в схеме AppSyn c. Итак, мне нужны пулы пользователей Cognito для этого использования.