serverless-application-model icon indicating copy to clipboard operation
serverless-application-model copied to clipboard

How can I attach a resolver to a field in Appsync with SAM?

Open peragethemte opened this issue 1 year ago • 2 comments

I have a GraphQL schema with a query. The query uses a lambda resolver that connects to a REST API and fetches the data. I want to have the field TimeSchedules on the type AccessGroup to use a different resolver and I've managed to get this to work in the console but it doesn't seem to be possible with SAM.

Parts of schema:

type Query {
  getAccessGroup(site: ID!, id: ID!): AccessGroup
}

type AccessGroup {
  id: ID!
  customerReference: String!
  lockCount: Int!
  userCount: Int!
  TimeSchedules: TimeSchedulesResults
}

On the REST Api access groups have time schedules but they're two different calls, and as I don't always need the latter, I think it's better to have it like this.

In SAM, I've tried this:

  GraphQLVBVAAPI:
      Type: AWS::Serverless::GraphQLApi
      Properties:
        SchemaUri: ./graphql/schema.graphql
        Resolvers:                                                 
          Query:
            getAccessGroup:
              Runtime:
                Name: APPSYNC_JS
                Version: "1.0.0"
              Pipeline:
                - lambdaResolver  
            AccessGroup:
              Runtime:
                Name: APPSYNC_JS
                Version: "1.0.0"
              Pipeline:
                - lambdaResolver

But then I get an error saying

No field named AccessGroup found on type Query

This is quite easy in the Console where I can just attach a resolver to the spesific field itself.

Any suggestions?

peragethemte avatar Nov 18 '24 13:11 peragethemte

Hi peragethemte, sorry for the delayed response. I understand your request, I see you have defined Query as follows :

type Query {
  getAccessGroup(site: ID!, id: ID!): AccessGroup
}

Which doesn't have a AccessGroup prop, could you help to elaborate more on how did you make it work on console? Thanks

roger-zhangg avatar Jan 24 '25 21:01 roger-zhangg

Hi @roger-zhangg ! The id is the Id of the access group. But as each access group might have a time schedule, it would be nice to request the time schedule along with the access group whenever I like that.

In the console it is easy to attach a resolver to a field

Image

Image

peragethemte avatar Jan 27 '25 09:01 peragethemte