Amazon web services AWS放大应用同步IAM 401

Amazon web services AWS放大应用同步IAM 401,amazon-web-services,amazon-iam,aws-appsync,aws-amplify,Amazon Web Services,Amazon Iam,Aws Appsync,Aws Amplify,我正在获取GraphQLError:请求失败,状态代码为401 我按照以下自动配置说明操作: 我试着寻找,但IAM缺乏资源。看起来一切都应该自动设置,并在我输入IAM访问密钥和密码后使用Amplify CLI完成 是否需要进一步设置?这是我的密码: import Amplify, { API, graphqlOperation, Hub } from "aws-amplify"; import aws_config from "../../aws-exports"; Amplify.conf

我正在获取
GraphQLError:请求失败,状态代码为401

我按照以下自动配置说明操作:

我试着寻找,但IAM缺乏资源。看起来一切都应该自动设置,并在我输入IAM访问密钥和密码后使用Amplify CLI完成

是否需要进一步设置?这是我的密码:

import Amplify, { API, graphqlOperation, Hub } from "aws-amplify";
import aws_config from "../../aws-exports";

Amplify.configure(aws_config);

const ListKeywords = `query ListKeywords {
  listKeyword {
    keyword {
      id
      name
    }
  }
}`;

const loop = async () => {
  const allKeywords = await API.graphql(graphqlOperation(ListKeywords));
}

也可能是因为我的GraphQL解析器尚未为ListKeywords设置?

如果您在AppSync API上使用IAM作为授权类型,那么问题在于调用
Amplify.configure()
时,Auth类别使用的Cognito角色未被授予GraphQL操作的权限。它需要这样的附件:

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "appsync:GraphQL"
         ],
         "Resource": [
            "arn:aws:appsync:us-west-2:123456789012:apis/YourGraphQLApiId/*"
         ]
      }
   ]
}

这里有更多详细信息:

我刚刚更改了
~/.aws/credentials
,现在它开始工作了


看起来,即使您通过Amplify的命令行工具或
~/.awsmobile/aws config.js
进行了特定于项目的配置,它仍然依赖于
~/.aws

不确定这是否有帮助,但我已经为此奋斗了一段时间,发现如果我添加API并使用IAM作为身份验证方法,我也需要将“auth”添加到模式中

见下文:

type TimeLapseCamera @model 
@auth(rules: [
  { allow: private, provider: iam }
])
{
...
}
我刚刚测试了这个,我的网页正在成功添加记录


其他评论的注释;我在这里根本没有AWS-这是一个带有Amplify的简单VUE应用程序。

它应该有AWSAPSyncAdministrator权限。这是使用awsmobile配置设置的同一IAM用户吗?是否有任何方法可以避免~/.aws覆盖您的放大配置?这是在配置了~/.aws目录的用户系统上编写我的应用程序