Я использую AWS Amplify with Appsyn c. Я хочу добавить publi c query listproducts
, и это доставляет мне больше всего трудностей. Насколько я понимаю, я знаю, что доступ к publi c должен быть предоставлен с использованием apiKey
или iam
. Проблема в том, что моя лямбда-функция мутации enroll
внутренне делает мутацию create
и использует разрешения iam
для создания этих записей. Я включил allowUnauthenticatedIdentities=true
, но при использовании разрешений iam все еще получаю отказ в доступе для запроса listproducts
. Мне нужно убедиться, что если я go использую метод iam, у меня есть способ различать guish между publi c iam и частным iam, выполняющим административную работу в моем enroll
позвоните, и я не вижу способа определить, хочу ли я использовать роль iam с проверкой подлинности или без проверки подлинности.
type Product @aws_iam {
id: ID!
}
type UserCourse
@model
@auth(
rules: [
{ allow: groups, groups: ["Admin"] }
{ allow: owner, operations: [read] }
{ allow: private, provider: iam, operations: [create, read] }
]
) {
id: ID!
courseId: String
invoice: String
}
type Query {
listproducts: [Product]
@function(name: "listproducts-${env}")
@auth(rules: [{ allow: public, provider: iam }])
}
type Mutation {
enroll(courseId: String, priceId: String, source: String): UserCourse
@function(name: "coursesenroll-${env}")
}
Что мне здесь не хватает? Я подключаюсь с помощью Gatsby и AWSAppSyncClient
. Есть ли какой-нибудь тривиальный способ сделать это, что мне просто не хватает? В моем идеальном мире я мог бы запускать неаутентифицированный запрос с пулами когнитивов, и он возвращался бы, поэтому мне не приходилось иметь дело с созданием экземпляров различных приложений-синхронистов в зависимости от того, вошел ли я в систему или нет. Я попытался вручную добавить разрешения для роли unauth, и я не уверен, что это правильный подход, но я был бы счастлив go и для этого маршрута, если я не могу сделать unauth из коробки с ampify.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"appsync:GraphQL"
],
"Resource": [
"arn:aws:appsync:eu-central-1:SOME_LONG_STRING:apis/SOME_LONG_STRING/types/Query/fields/listproducts"
]
}
]
}