我正在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 解析器尚未为 ListKeyword 设置吗?
如果您使用 IAM 作为 AppSync API 上的授权类型,那么问题是在调用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
不确定这是否有帮助,但我为此苦苦挣扎了一段时间,发现如果我添加 API 并使用 IAM 作为身份验证方法,我也需要在架构中添加"身份验证"。
见下文:
type TimeLapseCamera @model
@auth(rules: [
{ allow: private, provider: iam }
])
{
...
}
我刚刚对此进行了测试,我的网页已成功添加记录。
注意其他评论;我根本没有AWS - 这是一个带有Amplify的简单VUE应用程序。
我刚刚更改了~/.aws/credentials
,现在它正在工作。
看起来即使您通过 Amplify 的命令行工具或~/.awsmobile/aws-config.js
进行了项目特定的配置,它仍然依赖于~/.aws