Desactivación de las plantillas de mapeo de VTL con solucionadores de Lambda directos (VTL)
Ahora admitimos de forma básica el tiempo de ejecución APPSYNC_JS y su documentación. Considere la opción de utilizar el tiempo de ejecución APPSYNC_JS y sus guías aquí.
Con los solucionadores de Lambda directos, puede evitar usar plantillas de asignación de VTL al utilizar los orígenes de datos de AWS Lambda. AWS AppSync puede proporcionar una carga predeterminada a la función de Lambda, así como una traducción predeterminada de la respuesta de una función de Lambda a un tipo de GraphQL. Puede optar por proporcionar una plantilla de solicitud, una plantilla de respuesta o ninguna de las dos, y AWS AppSync se ocupará de su gestión en consecuencia.
Para obtener más información sobre la carga de solicitudes y la traducción de respuestas predeterminadas que AWS AppSync proporciona, consulte la referencia sobre solucionadores de Lambda directos. Para obtener más información sobre la configuración de un origen de datos de AWS Lambda y de una política de confianza de IAM, consulte Asociar un origen de datos.
Configurar solucionadores de Lambda directos
En las secciones siguientes, se muestra cómo asociar orígenes de datos de Lambda y cómo añadir solucionadores de Lambda a los campos.
Añadir un origen de datos de Lambda
Para poder activar los solucionadores de Lambda directos, debe añadir un origen de datos de Lambda.
- Console
-
-
Inicie sesión en la AWS Management Console y abra la consola de AppSync.
-
En el panel de API, seleccione su API de GraphQL.
-
En la barra lateral, seleccione Origen de datos.
-
Elija Crear origen de datos.
-
En Nombre de origen de datos, introduzca un nombre para el origen de datos (por ejemplo, myFunction
).
-
En Tipo de origen de datos, elija AWS LambdaNinguno.
-
En Región, elija la región apropiada.
-
En ARN de la función, elija la función de Lambda en la lista desplegable. Puede buscar el nombre de la función o introducir manualmente el ARN de la función que desee utilizar.
-
Cree un nuevo rol de IAM (recomendado) o elija un rol existente que tenga el permiso de IAM lambda:invokeFunction
. Los roles existentes necesitan una política de confianza, tal y como se explica en la sección Asociar un origen de datos.
El siguiente es un ejemplo de política de IAM que tiene los permisos necesarios para llevar a cabo operaciones en el 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:*"
]
}
]
}
-
Pulse el botón Crear.
- CLI
-
-
Cree un origen de datos ejecutando el comando create-data-source
.
Deberá escribir 4 parámetros para este comando concreto:
-
El api-id
de su API.
-
El name
de origen de datos. En el ejemplo de la consola, este es el nombre del origen de datos.
-
El type
de origen de datos. En el ejemplo de la consola, se trata de una función AWS Lambda.
-
El lambda-config
, que es el ARN de la función el ejemplo de la consola.
Hay otros parámetros, como Region
, que deben configurarse pero que normalmente se utilizarán de forma predeterminada en los valores de configuración de la CLI.
Un comando de ejemplo puede tener este aspecto:
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
Aparecerá un resultado en la CLI. A continuación se muestra un ejemplo:
{
"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 los atributos de un origen de datos, ejecute el comando update-data-source
.
Con la excepción del parámetro api-id
, los parámetros utilizados en el comando create-data-source
se sobrescribirán con los nuevos valores del comando update-data-source
.
Activar los solucionadores de Lambda directos
Tras crear un origen de datos de Lambda y configurar el rol de IAM adecuada para permitir que AWS AppSync invoque la función, puede vincularlo a una función de solucionador o de canalización.
- Console
-
-
Inicie sesión en la AWS Management Console y abra la consola de AppSync.
-
En el panel de API, seleccione su API de GraphQL.
-
En la barra lateral, seleccione Esquema.
-
En la ventana Solucionadores, elija un campo u operación y, a continuación, seleccione el botón Asociar.
-
En la página Crear nuevo solucionador, elija la función de Lambda en la lista desplegable.
-
Para aprovechar los solucionadores de Lambda directos, confirme que las plantillas de asignación de solicitud y respuesta estén deshabilitadas en la sección Configurar plantillas de asignación.
-
Pulse el botón Guardar solucionador.
- CLI
-
-
Cree un solucionador ejecutando el comando create-resolver
.
Deberá escribir 6 parámetros para este comando concreto:
-
El api-id
de su API.
-
El type-name
del tipo de su esquema.
-
El field-name
del campo de su esquema.
-
El data-source-name
o el nombre de su función de Lambda.
-
La request-mapping-template
, que es el cuerpo de la solicitud. En el ejemplo de la consola, esto estaba deshabilitado:
" "
-
La response-mapping-template
, que es el cuerpo de la respuesta. En el ejemplo de la consola, esto también estaba deshabilitado:
" "
Un comando de ejemplo puede tener este aspecto:
aws appsync create-resolver --api-id abcdefghijklmnopqrstuvwxyz --type-name Subscription --field-name onCreateTodo --data-source-name LambdaTest --request-mapping-template " " --response-mapping-template " "
Aparecerá un resultado en la CLI. A continuación se muestra un ejemplo:
{
"resolver": {
"resolverArn": "arn:aws:appsync:us-west-2:102847592837:apis/abcdefghijklmnopqrstuvwxyz/types/Subscription/resolvers/onCreateTodo",
"typeName": "Subscription",
"kind": "UNIT",
"fieldName": "onCreateTodo",
"dataSourceName": "LambdaTest"
}
}
Al deshabilitar las plantillas de asignación, en AWS AppSync se producen varios comportamientos adicionales:
-
Al deshabilitar una plantilla de asignación, indica a AWS AppSync que acepta las traducciones de datos predeterminadas especificadas en la referencia sobre solucionadores de Lambda directos.
-
Al deshabilitar la plantilla de asignación de solicitudes, el origen de datos de Lambda recibirá una carga compuesta por todo el objeto Context.
-
Al deshabilitar la plantilla de asignación de respuestas, el resultado de la invocación de Lambda se traducirá en función de la versión de la plantilla de asignación de solicitudes o de si la plantilla de asignación de solicitudes también está deshabilitada.