即使遵循以下说明,也无法在AWS控制台上创建AWS AppSync API



当我在AWS控制台上创建我的第一个IAM帐户时,我将其放在一个具有创建AppSync架构策略的组中。我可以使用我的IAM帐户在dynamodb中创建一个表。然而,当我试图使用这个IAM帐户在AWS控制台上创建一个模式时,它给了我以下错误:

用户:arn:aws:iam::XXXX:User/XXX未被授权对资源:arn:aws:appsync:us-west-2:XXXX:/CreateGraphqlApi 执行:appsync:CreateGraphqlApi

知道为什么会发生这种事吗?谢谢

更新:我尝试使用示例事件应用程序创建,它对我有效。我尝试创建一个空白架构时出现此错误。

AWS控制台与当前用户所扮演的角色是非常独立的,因此如果登录用户试图超越该角色,它会失败并表示您未被授权,这是意料之中的行为。

就API和模式而言,API是由模式文档定义的。您必须首先创建一个API,然后为该API设置架构。StartSchemaCreation是一个AppSync API,它"打乱"GraphQL API的架构(无论什么已经存在或不存在都保存它(,但这需要它已经存在。

创建API是通过CreateGraphQLApi完成的,错误消息称您的权限中缺少API。正如Gabe在评论中所说,你可以将该权限添加到你正在使用的策略中。或者,AWSAppSyncAdministrator管理的策略允许"appsync:*",因此应允许您创建API并设置架构。值得注意的是,这更多的是作为CLI管理员,并且缺少完全使用AppSync控制台所需的一些权限。

AppSync控制台上的大多数示例都是通过CloudFormation完成的,而不是单独调用AppSync服务,因此所需的权限不同。然而,对于空白模式,您直接调用CreateGraphQLApi API。这就是为什么样本有效,而空白模式无效的原因。

编辑:

您可能能够使用这些额外的权限使控制台部分工作:

...
"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 auth,则可以筛选出Cognito权限。

作为一种安全最佳做法,请确保锁定这些资源,并在不再需要时删除这些权限,因为这些iam权限非常强大。

我最近遇到了同样的问题,我能够解决它。

  1. 转到AWS控制台中的IAM仪表板并导航到Roles
  2. 搜索您的管理员访问角色(我的是类似于us-east-XXXX_Full-access的角色(
  3. 单击该角色,您应该只看到AdministratorAccess-AmplifyFull-access-Policy,而不会看到AWS AppSync
  4. 单击Add PermissionsAttach Policies
  5. 查找AWSAppSyncAdministrator策略并添加该策略。添加后,我的访问错误消失了:(

最新更新