Resolvedor - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Resolvedor

Configure resolvedores para os campos da sua GraphQL API. AWS Serverless Application Model(AWS SAM) suporta resolvedores de pipeline em JavaScript.

Sintaxe

Para declarar esta entidade no modelo do AWS Serverless Application Model (AWS SAM), use a seguinte sintaxe:

YAML

OperationType: LogicalId: Caching: CachingConfig CodeUri: String FieldName: String InlineCode: String MaxBatchSize: Integer Pipeline: List Runtime: Runtime Sync: SyncConfig

Propriedades

Caching

A configuração de cache para o resolvedor que tenha o cache ativado.

Type: CachingConfig

Obrigatório: não

Compatibilidade CloudFormation: essa propriedade é passada diretamente para a propriedade CachingConfig de um recurso AWS::AppSync::Resolver.

CodeUri

O URI do código da função do resolvedor Amazon Simple Storage Service (Amazon S3) ou o caminho para uma pasta local.

Se você especificar um caminho para uma pasta local, o CloudFormation exigirá que o arquivo seja primeiro carregado no Amazon S3 antes da implantação. Você pode usar o AWS SAM CLI para facilitar esse processo. Para obter mais informações, consulte Como o AWS SAM faz upload de arquivos locais na implantação.

Se nem CodeUri ou InlineCode for fornecido, AWS SAM gerará InlineCode que redirecionará a solicitação para a primeira função do pipeline e receberá a resposta da última função do pipeline.

Tipo: string

Obrigatório: não

Compatibilidade CloudFormation: essa propriedade é passada diretamente para a propriedade CodeS3Location de um recurso AWS::AppSync::Resolver.

FieldName

O nome do seu resolvedor. Especifique essa propriedade para substituir o valor LogicalId.

Tipo: string

Obrigatório: não

Compatibilidade CloudFormation: essa propriedade é passada diretamente para a propriedade FieldName de um recurso AWS::AppSync::Resolver.

InlineCode

O código do resolvedor que contém as funções de solicitação e resposta.

Se nem CodeUri ou InlineCode for fornecido, AWS SAM gerará InlineCode que redirecionará a solicitação para a primeira função do pipeline e receberá a resposta da última função do pipeline.

Tipo: string

Obrigatório: não

Compatibilidade CloudFormation: essa propriedade é passada diretamente para a propriedade Code de um recurso AWS::AppSync::Resolver.

LogicalId

O nome exclusivo do seu resolvedor. Em um esquema GraphQL, o nome do resolvedor deve corresponder ao nome do campo para o qual ele é usado. Use o mesmo nome de campo para LogicalId.

Tipo: string

Obrigatório: Sim

Compatibilidade CloudFormation: Essa propriedade é exclusiva do AWS SAM e não tem CloudFormation equivalente.

MaxBatchSize

O número máximo de entradas de solicitações do resolvedor que serão enviadas a uma única função do AWS Lambda em uma operação BatchInvoke.

Tipo: inteiro

Obrigatório: não

Compatibilidade CloudFormation: essa propriedade é passada diretamente para a propriedade MaxBatchSize de um recurso AWS::AppSync::Resolver.

OperationType

O tipo de operação GraphQL associada ao seu resolvedor. Por exemplo, Query, Mutation ou Subscription. Você pode agrupar vários resolvedores por LogicalId em um único OperationType.

Tipo: string

Obrigatório: Sim

Compatibilidade CloudFormation: essa propriedade é passada diretamente para a propriedade TypeName de um recurso AWS::AppSync::Resolver.

Pipeline

Funções vinculadas ao resolvedor de pipeline. Especifique as funções por ID lógica em uma lista.

Tipo: lista

Obrigatório: Sim

Compatibilidade CloudFormation: Essa propriedade é exclusiva do AWS SAM e não tem CloudFormation equivalente. É semelhante à propriedade PipelineConfig de um recurso AWS::AppSync::Resolver.

Runtime

O tempo de execução do seu resolvedor ou função de pipeline. Especifica o nome e a versão a serem usados.

Tipo: Tempo de execução

Obrigatório: Sim

Compatibilidade CloudFormation: Essa propriedade é exclusiva do AWS SAM e não tem CloudFormation equivalente. É semelhante à propriedade Runtime de um recurso AWS::AppSync::Resolver.

Sync

Descreve uma configuração de sincronização para um resolvedor.

Especifica quais estratégias de detecção de conflitos e de resolução devem ser usadas quando o resolvedor for invocado.

Type: SyncConfig

Obrigatório: não

Compatibilidade CloudFormation: essa propriedade é passada diretamente para a propriedade SyncConfig de um recurso AWS::AppSync::Resolver.

Exemplos

Use o código da função resolvedor AWS SAM gerado e salve os campos como variáveis

Aqui está o esquema GraphQL do nosso exemplo:

schema { query: Query mutation: Mutation } type Query { getPost(id: ID!): Post } type Mutation { addPost(author: String!, title: String!, content: String!): Post! } type Post { id: ID! author: String title: String content: String }

Aqui está um trecho do nosso modelo AWS SAM:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyGraphQLApi: Type: AWS::Serverless::GraphQLApi Properties: ... Functions: preprocessPostItem: ... createPostItem: ... Resolvers: Mutation: addPost: Runtime: Name: APPSYNC_JS Version: 1.0.0 Pipeline: - preprocessPostItem - createPostItem

Em nosso modelo AWS SAM, não especificamos CodeUri ou InlineCode. Na implantação, AWS SAM gera automaticamente o seguinte código embutido para nosso resolvedor:

export function request(ctx) { return {}; } export function response(ctx) { return ctx.prev.result; }

Esse código de resolução padrão redireciona a solicitação para a primeira função do pipeline e recebe a resposta da última função do pipeline.

Em nossa primeira função de pipeline, podemos usar o campo args fornecido para analisar o objeto de solicitação e criar nossas variáveis. Podemos então usar essas variáveis em nossa função. Veja um exemplo da nossa função preprocessPostItem:

import { util } from "@aws-appsync/utils"; export function request(ctx) { const author = ctx.args.author; const title = ctx.args.title; const content = ctx.args.content; // Use variables to process data } export function response(ctx) { return ctx.result; }