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) oferece suporte a resolvedores de JavaScript pipeline.

Sintaxe

Para declarar essa entidade em seu modelo AWS Serverless Application Model (AWS SAM), use a sintaxe a seguir.

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.

Tipo: CachingConfig

Obrigatório: não

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

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, AWS CloudFormation exigirá que o arquivo seja primeiro carregado no Amazon S3 antes da implantação. Você pode usar o AWS SAMCLI para facilitar esse processo. Para ter mais informações, consulte Como AWS SAM carrega arquivos locais na implantação.

Se nenhum deles CodeUri InlineCode for fornecido, AWS SAM será gerado 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

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

FieldName

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

Tipo: string

Obrigatório: não

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

InlineCode

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

Se nenhum deles CodeUri InlineCode for fornecido, AWS SAM será gerado 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

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

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

AWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS 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

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

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

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

Pipeline

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

Tipo: lista

Obrigatório: Sim

AWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS 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

AWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS 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.

Tipo: SyncConfig

Obrigatório: não

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

Exemplos

Use o código da função resolvedor AWS SAM gerada 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 AWS SAM modelo:

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 AWS SAM modelo, não especificamos CodeUri ouInlineCode. Na implantação, gera AWS SAM 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; }