Консоли AWS в значительной степени отделены от ролей, которые взял на себя текущий пользователь, поэтому ожидается, что они просто потерпят неудачу и скажут, что вы не авторизованы, если вошедший в систему пользователь пытается перешагнуть эту роль.
Что касается API и схем, API определяется документом схемы.Сначала вы должны создать API, а затем установить схему для этого API.StartSchemaCreation - это API-интерфейс AppSync, который «вставляет» схему (сохраняя ее независимо от того, что уже существует или не существует) для API-интерфейса GraphQL, но требует, чтобы она уже существовала.
Создание API выполняется с помощьюCreateGraphQLApi, API, который в сообщении об ошибке отсутствует в ваших правах.Как сказал Гейб в комментарии, вы можете просто добавить это разрешение в политику, которую вы используете.В качестве альтернативы, управляемой политике AWSAppSyncAdministrator разрешен «appsync: *», поэтому он должен позволить вам создать API и задать схему.Стоит отметить, что он предназначен скорее как администратор CLI, и в нем отсутствуют некоторые разрешения, необходимые для полного использования консоли AppSync.
Большинство примеров в консоли AppSync выполняются через CloudFormation, а не по отдельным вызовамСлужба AppSync, поэтому необходимые разрешения различны.Однако с пустой схемой вы вызываете API CreateGraphQLApi напрямую.Вот почему пример сработал, а пустая схема - нет.
Редактировать:
Возможно, вам удастся заставить консоль работать со следующими дополнительными разрешениями:
...
"iam:ListRoles",
"iam:CreateRole",
"iam:AttachRolePolicy",
"iam:CreatePolicy",
"lambda:AddPermission2*",
"lambda:ListFunctions2*",
"es:DescribeElasticsearchDomain",
"es:ListDomainNames",
"dynamodb:CreateTable",
"dynamodb:DescribeTable",
"dynamodb:ListTables",
"cognito-idp:ListUserPools"
...
В частности, это те операции, которые консоль AppSync может выполнять, но держу пари, что вы работаете с iam.AppSync использует их, чтобы дать службе разрешение на доступ к этим источникам данных (например, если в качестве источника данных у вас есть таблица DynamoDB, она создаст роль, которую служба может выполнять для чтения и записи в эту таблицу).
Вы можете отфильтровать разрешения es (ElasticSearch), DynamoDB и Lambda, если вы не пытаетесь создать источник данных этих типов, и Cognito, если вы не используете аутентификацию Cognito.
В качестве рекомендации по безопасности убедитесь, что вы заблокировали ресурсы, к которым они могут применяться, и / или удалите эти разрешения, когда они вам больше не нужны, поскольку эти разрешения iam очень мощные.