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 应用程序。
我得到 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 应用程序。