Я только что решил эту проблему точно так же. Вот что я сделал:
Обновите свой API, запустив amplify update auth
и выберите IAM в качестве обработчика пользователя (все остальное идет по умолчанию)
Войдите в консоль AWS -> Appsync и измените доступ к IAM (вместо Cognito Pool)
Перейдите в консоль IAM и создайте политики IAM для пользователей AUTH и UNAUTH (найдите их в списке, введя имя приложения Appsync)
Найдите пользователя AUTH и прикрепите следующую политику (обновите ее, указав свои данные):
AUTH USER
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "appsync:GraphQL",
"Resource": [
"arn:aws:appsync:<AWS region>:<AWS account ID>:apis/<app sync endpoint ID>/*"
]
}
]
}
Найдите пользователя, не являющегося пользователем, и прикрепите следующую Политику:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "appsync:GraphQL",
"Resource": [
"arn:aws:appsync:<AWS region>:<AWS account ID>:apis/<app sync endpoint ID>/types/Query/fields/<your Query name>",
"arn:aws:appsync:<AWS region>:<AWS account ID>:apis/<app sync endpoint ID>/types/Query/fields/<your Query name>",
"arn:aws:appsync:<AWS region>:<AWS account ID>:apis/<app sync endpoint ID>/types/Query/fields/<your Query name>"
]
}
]
}
- А теперь то, что не задокументировано (люди переходят из Cognito Pools в IAM). Вам нужно импортировать {AUTH_TYPE}
import AWSAppSyncClient, {AUTH_TYPE} from "aws-appsync";
и использовать его для загрузки учетных данных при инициализации AppSync
const client = new AWSAppSyncClient(
{
disableOffline: true,
url: aws_config.aws_appsync_graphqlEndpoint,
region: aws_config.aws_cognito_region,
auth: {
// IAM
type: AUTH_TYPE.AWS_IAM,
credentials: () => Auth.currentCredentials(),
});
Надеюсь, это поможет.