Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
¿Cómo puedo crear una regla de EventBridge que utilice el transformador de entrada de modo que las notificaciones de Amazon SNS sean legibles para las personas?
Quiero crear una regla de Amazon EventBridge para iniciar una notificación personalizada de Amazon Simple Notification Service (Amazon SNS) que sea legible para las personas.
Breve descripción
Para que las notificaciones de eventos de Amazon SNS sean legibles para las personas, utilice el transformador de entrada de EventBridge. El transformador de entrada puede personalizar el texto de un evento antes de enviarlo al destino de una regla de EventBridge. Para más información, consulte el Tutorial: Uso de transformadores de entrada para transformar eventos en EventBridge.
Puede configurar un tema de SNS como destino para recibir un texto de evento personalizado del transformador de entrada. También puede crear una regla de EventBridge para que coincida con las llamadas a la API relacionadas con los grupos de seguridad que captura AWS CloudTrail. La regla se configura con un patrón de eventos que coincide con las llamadas a la API pertinentes.
La siguiente solución incluye dos eventos de ejemplo que puede utilizar para crear su propia regla de EventBridge y hacer que una notificación de Amazon SNS sea legible para las personas.
Resolución
Evento de ejemplo para el cambio de estado de Amazon EC2
En el siguiente ejemplo se configura un tema de SNS como destino para recibir un texto de evento personalizado desde el transformador de entrada. El evento es un cambio de estado de Amazon Elastic Compute Cloud (Amazon EC2) que se publica en el bus de eventos de EventBridge en formato JSON:
{ "version": "0", "id": "2ad63080-2526-d42c-4983-123456789", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "0123456789", "time": "2023-05-17T16:30:32Z", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:0123456789:instance/i-12345abcdefg" ], "detail": { "instance-id": "i-12345abcdefg", "state": "running" } }
El transformador de entrada tiene las siguientes secciones:
- Ruta de entrada: donde se definen las variables que utilizan una ruta JSON para hacer referencia a valores del origen del evento original.
- **Plantilla:**una plantilla para la información que desea transferir a su destino.
Ruta de entrada
Para crear una ruta de entrada, consulte Input transform examples. En este ejemplo, utilice la siguiente ruta de entrada:
{ "timestamp": "$.time", "instance": "$.detail.instance-id", "state": "$.detail.state" }
Plantillas
En este ejemplo, utilice las siguientes plantillas.
Ejemplo 1:
"Instance <instance> is in <state> state"
Ejemplo 2:
"At <timestamp>, Instance <instance> changed its state to <state>. "
Las plantillas del ejemplo anterior envían mensajes al destino en los siguientes formatos.
Ejemplo 1:
"Instance i-12345abcdefg is in running state"
Ejemplo 2:
"At 2023-05-17T16:30:32Z, Instance i-12345abcdefg changed its state to running. "
Configuración de EventBridge de modo que utilice el transformador de entrada
Para configurar EventBridge de modo que envíe mensajes personalizados a un tema de SNS, siga estos pasos:
Nota: Estas instrucciones siguen los pasos para configurar el transformador de entrada en Creación de reglas que reaccionan a los eventos en Amazon EventBridge.
-
Defina una regla de EventBridge para los eventos de cambio de estado de Amazon EC2.
-
Cree el patrón de eventos. En la sección Método de creación, en Método, elija Patrón personalizado (editor JSON).
-
En Patrón de eventos, introduzca el siguiente ejemplo de JSON para los eventos de cambio de estado de Amazon EC2:
{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }
-
Seleccione Siguiente.
-
En Tipos de destino, elija Servicio de AWS.
-
En Seleccionar un destino, seleccione Tema de SNS. A continuación, seleccione su tema en la lista desplegable.
-
En Configuración adicional, en la lista desplegable Configurar la entrada de destino, elija Transformador de entrada. A continuación, elija Configurar transformador de entrada.
-
En la sección Transformador de entrada de destino, en Ruta de entrada, copie y pegue el siguiente JSON:
{ "timestamp": "$.time", "instance": "$.detail.instance-id", "state": "$.detail.state" }
-
En Plantilla de entrada, copie y pegue las siguientes plantillas de cadenas:
"Instance <instance> is in <state> state" "At <timestamp>, Instance <instance> changed its state to <state>. "
-
Elija Confirmar y, a continuación, Siguiente.
-
(Opcional) Añada etiquetas a la regla y, a continuación, elija Siguiente.
-
Revise los detalles de la regla y, a continuación, elija Crear regla.
Evento de ejemplo para una llamada a la API del grupo de seguridad de Amazon EC2
En el siguiente evento de ejemplo, utilice CreateSecurityGroup en una nube virtual privada (VPC) para crear un grupo de seguridad. CloudTrail captura el evento y lo publica en CloudWatch en el siguiente formato JSON:
{ "version": "0", "id": "41dff147-cfbc-492a-9a98-9dd00d082417", "detail-type": "AWS API Call via CloudTrail", "source": "aws.ec2", "account": "123456789012", "time": "2017-07-14T16:36:23Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "1.05", "userIdentity": { "type": "Root", "principalId": "123456789012", "arn": "arn:aws:iam::123456789012:root", "accountId": "123456789012", "accessKeyId": "ASIAIRP4G1234567891Q", "userName": "iamuser", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2017-07-14T16:27:38Z" } } }, "eventTime": "2017-07-14T16:36:23Z", "eventSource": "ec2.amazonaws.com", "eventName": "CreateSecurityGroup", "awsRegion": "us-east-1", "sourceIPAddress": "72.21.196.64", "userAgent": "console.ec2.amazonaws.com", "requestParameters": { "groupName": "test", "groupDescription": "test", "vpcId": "vpc-54a4232d" }, "responseElements": { "_return": true, "groupId": "sg-82d531f3" }, "requestID": "a4609e55-69ac-4a2d-8057-843dc8b4658b", "eventID": "7774b898-59c1-48a5-9c41-af1bcaa04612", "eventType": "AwsApiCall" } }
Ejemplo de cómo crear una notificación personalizada legible para las personas
Utilice el siguiente ejemplo para crear notificaciones personalizadas legibles para las personas desde EventBridge en formato JSON.
-
Utilice Crear regla de EventBridge para las llamadas a la API relacionadas con grupos de seguridad. En Patrón de eventos, elija Crear un patrón de eventos personalizado. Modifique el patrón de eventos de ejemplo según su caso de uso. Tenga en cuenta que la notificación de ejemplo corresponde a CreateSecurityGroup. Sin embargo, el siguiente patrón de eventos de ejemplo incluye todas las acciones de llamada a la API relacionadas con grupos de seguridad:
{ "source": [ "aws.ec2" ], "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventSource": [ "ec2.amazonaws.com" ], "eventName": [ "CreateSecurityGroup", "AuthorizeSecurityGroupEgress", "AuthorizeSecurityGroupIngress", "DeleteSecurityGroup", "RevokeSecurityGroupEgress", "RevokeSecurityGroupIngress", "DescribeStaleSecurityGroups", "DescribeSecurityGroups", "DescribeSecurityGroupReferences" ] } }
-
En Tipos de destino, elija Servicio de AWS.
-
En Seleccionar un destino, seleccione Tema de SNS. A continuación, seleccione su tema en la lista desplegable.
-
En Configuración adicional, en la lista desplegable Configurar la entrada de destino, elija Transformador de entrada. A continuación, elija Configurar transformador de entrada.
-
En la sección Transformador de entrada de destino, en Ruta de entrada, pegue el siguiente JSON. Incluya los pares clave-valor que desee utilizar en la notificación. Modifique la siguiente ruta de entrada de ejemplo según su caso de uso:
{ "sgname": "$.detail.requestParameters.groupName", "sourceip": "$.detail.sourceIPAddress", "vpcid": "$.detail.requestParameters.vpcId", "action": "$.detail.eventName", "sgid": "$.detail.responseElements.groupId", "time": "$.detail.eventTime", "region": "$.detail.awsRegion", "user": "$.detail.userIdentity.userName", "reqid": "$.detail.requestID" }
-
En Plantilla de entrada, pegue las siguientes plantillas de cadenas. Incluya una cadena con marcadores de posición para los valores de su ruta de entrada. Esta cadena es el texto de su notificación legible para las personas. Modifique la siguiente plantilla de entrada de ejemplo según su caso de uso:
"User <user> has executed API call <action> from source IP <sourceip> on security group <sgid>/<sgname> that belongs to vpc <vpcid> in region <region> at time(UTC) <time>. The Request ID is <reqid>."
-
Elija Confirmar y, a continuación, Siguiente.
-
(Opcional) Añada etiquetas a la regla y, a continuación, elija Siguiente.
-
Revise los detalles de la regla y, a continuación, elija Crear regla.
Solución de problemas
Si se muestra el error Invalid InputTemplate al guardar una plantilla con saltos de línea, cierre cada línea con comillas dobles. Observe los siguientes ejemplos:
"<type> <arn> has executed action API <action> on Security Group <sgid> located in AWS region <region> at <time> (UTC)." "Request ID: <requestid>" "Event ID: <eventid>" "Event Source: <eventsource>" "Event Type: <eventtype>"
Si la regla se ejecuta pero no invoca el destino, configure una cola de mensajes fallidos para que EventBridge reciba los errores relacionados con el transformador de entrada.
EventBridge admite un máximo de 100 variables en las asignaciones de rutas de entrada. Para extraer más de 10 variables, transfiera todo el evento a una función de AWS Lambda. Escriba esta función para analizar sus variables y cree un cuerpo de mensaje en el formato requerido para publicarlo. A continuación, cree el cuerpo del mensaje en el formato necesario para publicarlo en Amazon SNS. Para obtener más información, consulte ¿Cómo puedo publicar un mensaje en un tema de Amazon SNS mediante una función de Lambda?

Contenido relevante
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace 2 meseslg...
- preguntada hace 3 meseslg...
- preguntada hace 22 díaslg...
- preguntada hace 18 díaslg...
- Respuesta aceptadapreguntada hace 19 díaslg...
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año