AWS 放大 AppSync IAM 401

AWS Amplify AppSync IAM 401

我得到 GraphQLError: Request failed with status code 401

我遵循了以下的自动配置说明:

https://aws.github.io/aws-amplify/media/api_guide#automated-configuration-with-cli

我试过寻找,但缺乏 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 作为授权类型,那么问题是调用时与 Auth 类别一起使用的 Cognito 角色 Amplify.configure() 未被授予 GraphQL 权限操作。它需要附加这样的东西:

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

此处有更多详细信息:https://docs.aws.amazon.com/appsync/latest/devguide/security.html

我刚刚更改了 ~/.aws/credentials,现在可以使用了。

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

不确定这是否有帮助,但我已经为此苦苦挣扎了一段时间,发现如果我添加 API 并使用 IAM 作为身份验证方法,我需要将 'auth' 添加到架构也是。

见下文:

type TimeLapseCamera @model 
@auth(rules: [
  { allow: private, provider: iam }
])
{
...
}

我刚刚测试了这个,我的网页成功添加了一条记录。

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