Como desabilitar modelos de mapeamento VTL com resolvedores diretos do Lambda (VTL)
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.
Com resolvedores diretos do Lambda, você pode contornar o uso de modelos de mapeamento de VTL ao usar fontes de dados AWS Lambda. AWS O AppSync pode fornecer uma payload para sua função do Lambda, bem como uma tradução padrão da resposta de uma função do Lambda para um tipo GraphQL. Você pode optar por fornecer um modelo de solicitação, um modelo de resposta ou nenhum dos dois, e o AWS AppSync lidará com isso adequadamente.
Para saber mais sobre a payload padrão da solicitação e a tradução de respostas que o AWS AppSync fornece, consulte a referência do resolvedor direto do Lambda. Para obter mais informações sobre como configurar uma fonte de dados AWS Lambda e configurar uma política de confiança do IAM, consulte Anexar uma fonte de dados.
Configurar resolvedores diretos do Lambda
As seções a seguir mostrarão como anexar fontes de dados do Lambda e adicionar resolvedores do Lambda aos seus campos.
Adicionar uma fonte de dados do Lambda
Antes de ativar os resolvedores diretos do Lambda, você deve adicionar uma fonte de dados do Lambda.
- Console
-
-
Faça login no AWS Management Console e abra o Console do AppSync.
-
No painel de APIs, escolha sua API GraphQL.
-
Na barra lateral, selecione Fontes de dados.
-
Escolha Criar fonte de dados.
-
Para Nome da fonte de dados, digite um nome para sua fonte de dados, como myFunction
.
-
Para Tipo de fonte de dados, escolha a opção Função AWS Lambda.
-
Para Região, escolha a região apropriada.
-
Para Função ARN, escolha a função do Lambda na lista suspensa. Você pode pesquisar o nome da função ou inserir manualmente o ARN da função que deseja usar.
-
Crie um perfil do IAM (recomendado) ou escolha uma função existente que tenha permissão lambda:invokeFunction
do IAM. Os perfis existentes precisam de uma política de confiança, conforme explicado na seção Anexar uma fonte de dados.
Veja a seguir um exemplo de política do IAM que tem as permissões necessárias para executar as operações no recurso:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [ "lambda:invokeFunction" ],
"Resource": [
"arn:aws:lambda:us-west-2:123456789012:function:myFunction",
"arn:aws:lambda:us-west-2:123456789012:function:myFunction:*"
]
}
]
}
-
Selecione o botão Criar.
- CLI
-
-
Crie um objeto da fonte de dados executando o comando create-data-source
.
Você precisará digitar 4 parâmetros para esse comando específico:
-
O api-id
da sua API.
-
O name
da sua fonte de dados. No exemplo do console, esse é o Nome da fonte de dados.
-
O type
da fonte de dados. No exemplo do console, isso é função AWS Lambda.
-
O lambda-config
, que é o ARN da função no exemplo do console.
Existem outros parâmetros, como Region
, que devem ser configurados, mas geralmente usam como padrão os valores de configuração da CLI.
Veja um exemplo de comando:
aws appsync create-data-source --api-id abcdefghijklmnopqrstuvwxyz --name myFunction --type AWS_LAMBDA --lambda-config lambdaFunctionArn=arn:aws:lambda:us-west-2:102847592837:function:appsync-lambda-example
Uma saída será retornada na CLI. Veja um exemplo abaixo:
{
"dataSource": {
"dataSourceArn": "arn:aws:appsync:us-west-2:102847592837:apis/abcdefghijklmnopqrstuvwxyz/datasources/myFunction",
"type": "AWS_LAMBDA",
"name": "myFunction",
"lambdaConfig": {
"lambdaFunctionArn": "arn:aws:lambda:us-west-2:102847592837:function:appsync-lambda-example"
}
}
}
-
Para modificar os atributos de uma fonte de dados, execute o comando update-data-source
.
Com exceção do api-id
parâmetro, os parâmetros usados no comando create-data-source
serão substituídos pelos novos valores do comando update-data-source
.
Ativar resolvedores diretos do Lambda
Depois de criar uma fonte de dados do Lambda e configurar o perfil do IAM apropriado para permitir que o AWS AppSync invoque a função, você pode vinculá-la a uma função de resolução ou pipeline.
- Console
-
-
Faça login no AWS Management Console e abra o Console do AppSync.
-
No painel de APIs, escolha sua API GraphQL.
-
Na barra lateral, escolha Esquema.
-
Na janela Resolvedores, selecione um campo ou operação e selecione o botão Anexar.
-
Na página Criar novo resolvedor, escolha a função do Lambda na lista suspensa.
-
Para aproveitar os resolvedores diretos do Lambda, confirme se os modelos de mapeamento de solicitação e resposta estão desativados na seção Configurar modelos de mapeamento.
-
Selecione o botão Salvar resolvedor.
- CLI
-
-
Crie um resolvedor executando o comando create-resolver
.
Você precisará digitar 6 parâmetros para este comando específico:
-
O api-id
da sua API.
-
O type-name
do tipo no seu esquema.
-
O field-name
do campo no seu esquema.
-
O data-source-name
, ou o nome da sua função do Lambda.
-
O request-mapping-template
, que é o corpo da solicitação. No exemplo do console, desabilitamos o seguinte:
" "
-
O response-mapping-template
, que é o corpo da resposta. No exemplo do console, o seguinte também foi desabilitado:
" "
Veja um exemplo de comando:
aws appsync create-resolver --api-id abcdefghijklmnopqrstuvwxyz --type-name Subscription --field-name onCreateTodo --data-source-name LambdaTest --request-mapping-template " " --response-mapping-template " "
Uma saída será retornada na CLI. Veja um exemplo abaixo:
{
"resolver": {
"resolverArn": "arn:aws:appsync:us-west-2:102847592837:apis/abcdefghijklmnopqrstuvwxyz/types/Subscription/resolvers/onCreateTodo",
"typeName": "Subscription",
"kind": "UNIT",
"fieldName": "onCreateTodo",
"dataSourceName": "LambdaTest"
}
}
Quando você desativa seus modelos de mapeamento, há vários comportamentos adicionais que ocorrerão no AWS AppSync:
-
Ao desativar um modelo de mapeamento, você está sinalizando ao AWS AppSync que você aceita as traduções de dados padrão especificadas na referência do resolvedor direto do Lambda.
-
Ao desativar o modelo de mapeamento de solicitações, sua fonte de dados do Lambda receberá uma payload que consiste em todo o objeto Contexto.
-
Ao desativar o modelo de mapeamento de resposta, o resultado da sua invocação do Lambda será traduzido de acordo com a versão do modelo de mapeamento da solicitação ou se o modelo de mapeamento da solicitação também estiver desativado.