Referencia a la función de solucionador de JavaScript de AWS AppSync para el origen de datos de EventBridge
La respuesta y solicitud de función del solucionador de AWS AppSync utilizadas con el origen de datos de EventBridge permiten enviar eventos personalizados al bus de Amazon EventBridge.
Solicitud
El controlador de solicitudes permite enviar varios eventos personalizados a un bus de eventos de EventBridge:
export function request(ctx) { return { "operation" : "PutEvents", "events" : [{}] } }
Una solicitud PutEvents de EventBridge tiene la siguiente definición de tipos:
type PutEventsRequest = { operation: 'PutEvents' events: { source: string detail: { [key: string]: any } detailType: string resources?: string[] time?: string // RFC3339 Timestamp format }[] }
Respuesta
Si la operación PutEvents se realiza correctamente, la respuesta de EventBridge se incluirá en ctx.result:
export function response(ctx) { if(ctx.error) util.error(ctx.error.message, ctx.error.type, ctx.result) else return ctx.result }
Los errores que se produzcan al realizar operaciones PutEvents como InternalExceptions o Timeouts aparecerán en ctx.error. Para ver una lista de errores comunes de EventBridge, consulte la referencia de errores comunes de EventBridge.
El result tendrá la siguiente definición de tipos:
type PutEventsResult = { Entries: { ErrorCode: string ErrorMessage: string EventId: string }[] FailedEntryCount: number }
-
Entradas
Resultados de los eventos ingeridos, tanto correctos como incorrectos. Si la ingesta se realizó correctamente, la entrada contiene el
EventID. De lo contrario, puede usarErrorCodeyErrorMessagepara identificar el problema con la entrada.Para cada registro, el índice del elemento de respuesta es el mismo que el de la matriz de solicitudes.
-
FailedEntryCount
Número de entradas con error. Este valor se representa como un entero.
Para obtener más información sobre la respuesta de PutEvents, consulte PutEvents.
Ejemplo de respuesta de muestra 1
El siguiente ejemplo es una operación PutEvents con dos eventos correctos:
{ "Entries" : [ { "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860" }, { "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82" } ], "FailedEntryCount" : 0 }
Ejemplo de respuesta de muestra 2
El siguiente ejemplo es una operación PutEvents con tres eventos, dos correctos y uno incorrecto:
{ "Entries" : [ { "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860" }, { "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82" }, { "ErrorCode" : "SampleErrorCode", "ErrorMessage" : "Sample Error Message" } ], "FailedEntryCount" : 1 }
PutEventsCampos
PutEvents contiene los siguientes campos de plantillas de mapeo:
-
Versión
El campo
versiones común a todas las plantillas de mapeo de solicitudes y define la versión utilizada por la plantilla. Este campo es obligatorio. El valor2018-05-29es la única versión admitida para las plantillas de mapeo de EventBridge. -
Operación
La única operación admitida es
PutEvents. Esta operación permite añadir eventos personalizados a su bus de eventos. -
Events (Eventos
Una matriz de eventos que se añadirán al bus de eventos. Esta matriz debe tener una asignación de entre 1 y 10 elementos.
El objeto
Eventtiene los siguientes campos:-
"source": cadena que define el origen del evento. -
"detail": objeto JSON que puede usar para asociar información sobre el evento. Este campo puede ser un mapa vacío ({ }). -
"detailType: cadena que identifica el tipo de evento -
"resources": matriz JSON de cadenas que identifica los recursos involucrados en el evento. Este campo puede ser una matriz vacía. -
"time": marca temporal del evento proporcionada como cadena. Debe seguir el formato de marca temporal RFC3339.
-
Los siguientes fragmentos de código son algunos ejemplos de objetos Event válidos:
Ejemplo 1
{ "source" : "source1", "detail" : { "key1" : [1,2,3,4], "key2" : "strval" }, "detailType" : "sampleDetailType", "resources" : ["Resouce1", "Resource2"], "time" : "2022-01-10T05:00:10Z" }
Ejemplo 2
{ "source" : "source1", "detail" : {}, "detailType" : "sampleDetailType" }
Ejemplo 3
{ "source" : "source1", "detail" : { "key1" : 1200 }, "detailType" : "sampleDetailType", "resources" : [] }