Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Uso de resolvedores HTTP no AWS AppSync

Modo de foco
Uso de resolvedores HTTP no AWS AppSync - AWS AppSync
nota

Agora, oferecemos suporte principalmente ao runtime do APPSYNC_JS e sua documentação. Considere usar o runtime do APPSYNC_JS e seus guias disponíveis aqui.

O AWS AppSync permite que você use fontes de dados compatíveis (ou seja, AWS Lambda, Amazon DynamoDB, Amazon OpenSearch Service ou Amazon Aurora) para executar diversas operações, além de quaisquer endpoints HTTP arbitrários para resolver campos do GraphQL. Depois que os endpoints HTTP estiverem disponíveis, conecte-se a eles usando uma fonte de dados. Em seguida, configure um resolvedor no esquema para executar operações do GraphQL, como consultas, mutações e assinaturas. Esse tutorial apresentará alguns exemplos comuns.

Neste tutorial, você usa uma API REST (criada usando Amazon API Gateway e Lambda) com um endpoint AWS AppSync do GraphQL.

Configuração com um clique

Se quiser configurar automaticamente um endpoint do GraphQL no AWS AppSync com um endpoint HTTP configurado (usando o Amazon API Gateway e o Lambda) configurado, use o seguinte modelo do AWS CloudFormation:

Blue button labeled "Launch Stack" with an arrow icon indicating an action to start.

Criar uma API REST

É possível usar o modelo AWS CloudFormation a seguir para configurar um endpoint REST que funcione para este tutorial:

Blue button labeled "Launch Stack" with an arrow icon indicating an action to start.

A pilha do AWS CloudFormation realiza as seguintes etapas:

  1. Configura uma função do Lambda, que contém a lógica de negócios para o seu microsserviço.

  2. Configura uma API REST da API Gateway com a seguinte combinação de endpoint/método/tipo de conteúdo:

Caminho do recurso da API Método HTTP Tipo de conteúdo compatível

/v1/users

POST

application/json

/v1/users

GET

application/json

/v1/users/1

GET

application/json

/v1/users/1

PUT

application/json

/v1/users/1

DELETE

application/json

Criação da API GraphQL

Para criar a API GraphQL no AWS AppSync:

  • Abra o console do AWS AppSync e selecione Criar API.

  • Para o nome da API, digite UserData.

  • Selecione Esquema personalizado.

  • Escolha Criar.

O console do AWS AppSync cria uma nova API GraphQL para você usando o modo de autenticação da chave da API. É possível usar o console para configurar o restante da API GraphQL e executar consultas nela durante o restante desse tutorial.

Criar um esquema do GraphQL

Agora que você tem uma API GraphQL, vamos criar um esquema do GraphQL. No editor de esquemas no console do AWS AppSync, verifique se seu esquema corresponde ao esquema a seguir:

schema { query: Query mutation: Mutation } type Mutation { addUser(userInput: UserInput!): User deleteUser(id: ID!): User } type Query { getUser(id: ID): User listUser: [User!]! } type User { id: ID! username: String! firstname: String lastname: String phone: String email: String } input UserInput { id: ID! username: String! firstname: String lastname: String phone: String email: String }

Configurar a fonte de dados HTTP

Para configurar a fonte de dados HTTP, faça o seguinte:

  • Na guia DataSources, escolha New (Novo) e digite um nome amigável para a fonte de dados (por exemplo, HTTP).

  • Em Tipo de fonte de dados, escolha HTTP.

  • Defina o endpoint como o endpoint da API Gateway criado. Lembre-se de não incluir o nome do estágio como parte do endpoint.

Observação: no momento, somente endpoints públicos são compatíveis com o AWS AppSync.

Observação: para obter mais informações sobre as autoridades certificadoras reconhecidas pelo serviço AWS AppSync, consulte Autoridades de certificação (CA) reconhecidas pelo AWS AppSync para endpoints HTTPS.

Configurar resolvedores

Nesta etapa, conecte a fonte de dados http à consulta getUser.

Como configurar o resolvedor :

  • Escolha a guia Esquema.

  • No painel Tipos de dados à direita no tipo Consulta, localize o campo getUser e escolha Associar.

  • Em Nome da fonte de dados, escolha HTTP.

  • Em Configurar o modelo de mapeamento da solicitação, cole o seguinte código:

{ "version": "2018-05-29", "method": "GET", "params": { "headers": { "Content-Type": "application/json" } }, "resourcePath": $util.toJson("/v1/users/${ctx.args.id}") }
  • Em Configurar o modelo de mapeamento da solicitação, cole o seguinte código:

## return the body #if($ctx.result.statusCode == 200) ##if response is 200 $ctx.result.body #else ##if response is not 200, append the response to error block. $utils.appendError($ctx.result.body, "$ctx.result.statusCode") #end
  • Escolha a guia Consulta e, depois, execute a seguinte consulta:

query GetUser{ getUser(id:1){ id username } }

Isso deve retornar a seguinte resposta:

{ "data": { "getUser": { "id": "1", "username": "nadia" } } }
  • Escolha a guia Esquema.

  • No painel Tipos de dados à direita em Mutação, localize o campo addUser e escolha Anexar.

  • Em Nome da fonte de dados, escolha HTTP.

  • Em Configurar o modelo de mapeamento da solicitação, cole o seguinte código:

{ "version": "2018-05-29", "method": "POST", "resourcePath": "/v1/users", "params":{ "headers":{ "Content-Type": "application/json", }, "body": $util.toJson($ctx.args.userInput) } }
  • Em Configurar o modelo de mapeamento da solicitação, cole o seguinte código:

## Raise a GraphQL field error in case of a datasource invocation error #if($ctx.error) $util.error($ctx.error.message, $ctx.error.type) #end ## if the response status code is not 200, then return an error. Else return the body ** #if($ctx.result.statusCode == 200) ## If response is 200, return the body. $ctx.result.body #else ## If response is not 200, append the response to error block. $utils.appendError($ctx.result.body, "$ctx.result.statusCode") #end
  • Escolha a guia Consulta e, depois, execute a seguinte consulta:

mutation addUser{ addUser(userInput:{ id:"2", username:"shaggy" }){ id username } }

Isso deve retornar a seguinte resposta:

{ "data": { "getUser": { "id": "2", "username": "shaggy" } } }

Invocar serviços da AWS

É possível usar resolvedores HTTP para configurar uma interface de API GraphQL para serviços da AWS. As solicitações HTTP para AWS devem ser assinadas com o Processo do Signature versão 4 para que a AWS seja possível identificar quem as enviou. AWS O AppSync calcula a assinatura em seu nome quando você associa um perfil do IAM à fonte de dados HTTP.

Você fornece dois componentes adicionais para invocar serviços da AWS com resolvedores HTTP:

  • Um perfil do IAM com permissões para chamar as APIs de serviço da AWS

  • Configurar a assinatura na fonte de dados

Por exemplo, se você quiser chamar a operação ListGraphqlApis com resolvedores HTTP, primeiro crie um perfil do IAM a ser assumida pelo AWS AppSync com a seguinte política associada:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "appsync:ListGraphqlApis" ], "Effect": "Allow", "Resource": "*" } ] }

Depois, crie a fonte de dados HTTP para o AWS AppSync. Neste exemplo, você chamará AWS AppSync na região Oeste dos EUA (Oregon). Configure a seguinte configuração HTTP em um arquivo chamado http.json, que inclui a região de assinatura e o nome do serviço:

{ "endpoint": "https://appsync.us-west-2.amazonaws.com/", "authorizationConfig": { "authorizationType": "AWS_IAM", "awsIamConfig": { "signingRegion": "us-west-2", "signingServiceName": "appsync" } } }

Depois, use a AWS CLI para criar a fonte de dados com uma função associada da seguinte forma:

aws appsync create-data-source --api-id <API-ID> \ --name AWSAppSync \ --type HTTP \ --http-config file:///http.json \ --service-role-arn <ROLE-ARN>

Ao associar um resolvedor ao campo no esquema, use o seguinte modelo de mapeamento de solicitação para chamar AWS AppSync:

{ "version": "2018-05-29", "method": "GET", "resourcePath": "/v1/apis" }

Quando você executa uma consulta do GraphQL para essa fonte de dados, o AWS AppSync assina a solicitação usando a função fornecida e inclui a assinatura na solicitação. A consulta retorna uma lista de APIs AWS AppSync do GraphQL em sua conta nessa região da AWS.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.