Не удалось создать API-интерфейс AWS AppSync на консоли AWS даже после выполнения следующих инструкций
Когда я создал свою первую учетную запись IAM на консоли AWS, я поместил ее в группу с политикой для создания схем AppSync. Я мог бы создать таблицу в DynamodB, используя мою учетную запись IAM. Однако, когда я попытался создать схему на консоли AWS с использованием этой учетной записи IAM, он выдал следующую ошибку:
Пользователь: arn: aws: iam:: XXXX: пользователь /XXXX не авторизован для выполнения: appsync:CreateGraphqlApi на ресурсе: arn:aws:appsync:us-west-2:XXXX:/creategraphqlapi
Есть идеи, почему это происходит? Благодарю.
Обновление: я попытался создать, используя образец Event App, и он работает для меня. Эта ошибка появляется, я пытался создать пустую схему.
2 ответа
Консоли 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 очень мощные.
Недавно у меня была такая же проблема, и я смог ее исправить.
- Перейдите на панель инструментов IAM в консоли AWS и перейдите к
Roles
- Найдите свою роль администратора (у меня было что-то вроде us-east-XXXX_Full-access)
- Нажмите на эту роль, и вы должны увидеть только
AdministratorAccess-Amplify
иFull-access-Policy
, но ничего для AWS AppSync - Нажмите
Add Permissions
иAttach Policies
- Найди
AWSAppSyncAdministrator
policy и добавьте эту политику. После добавления этого мои ошибки доступа исчезли :)