Не удалось создать 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 очень мощные.

Недавно у меня была такая же проблема, и я смог ее исправить.

  1. Перейдите на панель инструментов IAM в консоли AWS и перейдите кRoles
  2. Найдите свою роль администратора (у меня было что-то вроде us-east-XXXX_Full-access)
  3. Нажмите на эту роль, и вы должны увидеть толькоAdministratorAccess-AmplifyиFull-access-Policy, но ничего для AWS AppSync
  4. НажмитеAdd PermissionsиAttach Policies
  5. НайдиAWSAppSyncAdministratorpolicy и добавьте эту политику. После добавления этого мои ошибки доступа исчезли :)
Другие вопросы по тегам