Не удалось создать API-интерфейс AWS AppSync на консоли AWS даже после выполнения следующих инструкций - PullRequest
0 голосов
/ 21 ноября 2018

Когда я создал свою первую учетную запись IAM на консоли AWS, я поместил ее в группу с политикой для создания схем AppSync.Я мог бы создать таблицу в Dynamodb, используя мою учетную запись IAM.Однако когда я попытался создать схему на консоли AWS с использованием этой учетной записи IAM, он выдал следующую ошибку:

Пользователь: arn: aws: iam :: XXXX: пользователь / XXXX не авторизован для выполнения:appsync: CreateGraphqlApi на ресурсе: arn: aws: appsync: us-west-2: XXXX: / creategraphqlapi

Есть идеи, почему это происходит?Спасибо.

Обновление: я попытался создать с помощью примера приложения Event, и оно работает для меня.Эта ошибка возникает при попытке создать пустую схему.

1 Ответ

0 голосов
/ 21 ноября 2018

Консоли 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 очень мощные.

...