

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Solución de problemas de Amazon EventBridge
<a name="eb-troubleshooting"></a>

Puedes usar los temas de esta sección para solucionar problemas de Amazon EventBridge .

**sugerencia**  
Para comprobar que tus patrones de eventos coinciden con los eventos esperados, puedes usar el EventBridge Sandbox para probar los patrones de eventos con ejemplos de eventos. Para obtener más información, consulte [Probar patrones de eventos con EventBridge Sandbox](eb-event-pattern-sandbox.md).

**Topics**
+ [Mi regla se ejecutó pero no se invocó mi función de Lambda](#eb-lam-function-not-invoked)
+ [Acabo de crear o modificar una regla, pero no coincidió con un evento de prueba](#eb-rule-does-not-match)
+ [Mi regla no se ejecutó en el momento que especifiqué en la `ScheduleExpression`](#eb-rule-did-not-trigger)
+ [Mi regla no se ejecutó a la hora esperada](#eb-rule-did-not-trigger-on-time)
+ [Mi regla coincide con las llamadas a la API del servicio AWS global, pero no se ejecutó](#eb-rule-did-not-trigger-iam)
+ [El rol de IAM asociado a mi regla se ignora cuando se ejecuta la regla](#eb-iam-role-ignored)
+ [Mi regla tiene un patrón de eventos que se supone que coincide con un recurso, pero ningún evento coincide](#eb-events-do-not-match-rule)
+ [La entrega de mi evento al destino sufrió un retraso](#eb-delayed-event-delivery)
+ [Algunos eventos no se entregaron en mi destino](#eb-never-delivered-to-target)
+ [Mi regla se ejecutó más de una vez en respuesta a un único evento](#eb-rule-triggered-more-than-once)
+ [Prevención de bucles infinitos](#eb-prevent-infinite-loops)
+ [Mis eventos no se entregan en la cola de Amazon SQS de destino](#eb-sqs-encrypted)
+ [Mi regla se ejecuta, pero no veo ningún mensaje publicado en mi tema de Amazon SNS](#eb-no-messages-published-sns)
+ [Mi tema de Amazon SNS sigue teniendo permisos EventBridge incluso después de haber eliminado la regla asociada al tema de Amazon SNS.](#eb-sns-permissions-persist)
+ [¿Con qué claves de condición de IAM puedo usar? EventBridge](#eb-supported-access-policies)
+ [¿Cómo puedo saber cuándo se infringen EventBridge las reglas?](#eb-create-alarm-broken-event-rules)

## Mi regla se ejecutó pero no se invocó mi función de Lambda
<a name="eb-lam-function-not-invoked"></a>

Una de las razones por las que es posible que la función de Lambda no se ejecute es si no tiene los permisos adecuados. 

**Para comprobar los permisos de la función de Lambda**

1. Con el AWS CLI, ejecuta el siguiente comando con tu función y tu AWS región:

   ```
   aws lambda get-policy --function-name MyFunction --region us-east-1
   ```

   Debería ver la siguiente salida.

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
   "Condition": {
   "ArnLike": {
   "AWS:SourceArn": "arn:aws:events:us-east-1:123456789012:rule/rule-name"
   }
   },
   "Action": "lambda:InvokeFunction",
   "Resource": "arn:aws:lambda:us-east-1:123456789012:function:function-name",
   "Effect": "Allow",
   "Principal": {
   "Service": "events.amazonaws.com"
   },
   "Sid": "MyId"
   }
   ],
   "Id": "default"
   }
   ```

------

1. Si ve el siguiente mensaje.

   ```
   A client error (ResourceNotFoundException) occurred when calling the GetPolicy operation: The resource you requested does not exist.
   ```

   O si ve la salida, pero no puede localizar events.amazonaws.com como entidad de confianza en la política, ejecute el siguiente comando:

   ```
   aws lambda add-permission \
   --function-name MyFunction \
   --statement-id MyId \
   --action 'lambda:InvokeFunction' \
   --principal events.amazonaws.com \
   --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule
   ```

1. Si la salida contiene un campo `SourceAccount`, debe eliminarlo. Un `SourceAccount` ajuste EventBridge impide que se pueda invocar la función.

**nota**  
Si la política es incorrecta, puede editar la [regla](eb-rules.md) en la EventBridge consola quitándola y volviéndola a añadir a la regla. A continuación, la EventBridge consola establece los permisos correctos en el [destino](eb-targets.md).  
Si utiliza un alias o versión de Lambda específica, agregue el parámetro `--qualifier` en los comandos `aws lambda get-policy` y `aws lambda add-permission`, como se muestra en el siguiente comando.   

```
aws lambda add-permission \
--function-name MyFunction \
--statement-id MyId \
--action 'lambda:InvokeFunction' \
--principal events.amazonaws.com \
--source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule
--qualifier alias or version
```

## Acabo de crear o modificar una regla, pero no coincidió con un evento de prueba
<a name="eb-rule-does-not-match"></a>

Al realizar un cambio en una [regla](eb-rules.md) o en sus [destinos](eb-targets.md), los [eventos](eb-events.md) entrantes podrían no comenzar o parar de inmediato la asignación a reglas nuevas o actualizadas. Espere un breve periodo para que los cambios surtan efecto. 

Si los eventos siguen sin coincidir tras un breve periodo de tiempo, comprueba las CloudWatch métricas `TriggeredRules` y `FailedInvocations` comprueba tu regla. `Invocations` Para obtener más información sobre estas métricas, consulta [Monitoring Amazon EventBridge](eb-monitoring.md).

Si la regla pretende coincidir con un evento de un AWS servicio, realiza una de las siguientes acciones:
+ Use la acción `TestEventPattern` para comprobar si el patrón de eventos de la regla coincide con un evento de prueba. Para obtener más información, consulta [TestEventPattern](https://docs.aws.amazon.com/AmazonCloudWatchEvents/latest/APIReference/API_TestEventPattern.html)la *referencia de la EventBridge API de Amazon*.
+ Usa el **Sandbox de** la [EventBridge consola](https://console.aws.amazon.com/events).

## Mi regla no se ejecutó en el momento que especifiqué en la `ScheduleExpression`
<a name="eb-rule-did-not-trigger"></a>

Asegúrese de que ha establecido la programación para la [regla](eb-rules.md) en la zona horaria UTC\$10. Si la `ScheduleExpression` es correcta siga, a continuación, los pasos indicados en [Acabo de crear o modificar una regla, pero no coincidió con un evento de prueba](#eb-rule-does-not-match).

## Mi regla no se ejecutó a la hora esperada
<a name="eb-rule-did-not-trigger-on-time"></a>

EventBridge ejecuta [las reglas](eb-rules.md) en un minuto a partir de la hora de inicio que establezcas. La cuenta atrás hasta la hora de ejecución comienza en cuanto se crea la regla.

**nota**  
Las reglas programadas tienen un tipo de entrega de `guaranteed`, lo que significa que los eventos se desencadenarán para cada hora prevista al menos una vez.

Puede utilizar una expresión cron para invocar [destinos](eb-targets.md) a una hora especificada. Para crear una regla que se ejecute cada cuatro horas en el minuto 0, siga uno de estos procedimientos:
+ En la EventBridge consola, se utiliza la expresión `0 0/4 * * ? *` cron.
+ Al usar el AWS CLI, se usa la expresión`cron(0 0/4 * * ? *)`.

Por ejemplo, para crear una regla denominada `TestRule` que se ejecute cada 4 horas mediante el AWS CLI, utilice el siguiente comando.

```
aws events put-rule --name TestRule --schedule-expression 'cron(0 0/4 * * ? *)'
```

Para ejecutar una regla cada cinco minutos, se utiliza la siguiente expresión de cron.

```
aws events put-rule --name TestRule --schedule-expression 'cron(0/5 * * * ? *)'
```

La resolución más precisa para una EventBridge regla que utiliza una expresión cron es de un minuto. La regla programada se ejecuta dentro de ese minuto, pero no específicamente en el segundo 0.

Como EventBridge los servicios de destino están distribuidos, puede haber un retraso de varios segundos entre el momento en que se ejecuta la regla programada y el momento en que el servicio de destino realiza la acción en el recurso de destino.

## Mi regla coincide con las llamadas a la API del servicio AWS global, pero no se ejecutó
<a name="eb-rule-did-not-trigger-iam"></a>

AWS Los servicios globales, como IAM y Amazon Route 53, solo están disponibles en la región EE. UU. Este (Virginia del Norte), por lo que los eventos de las llamadas a la AWS API desde servicios globales solo están disponibles en esa región. Para obtener más información, consulte [Eventos de los AWS servicios](eb-events.md#eb-service-event).

## El rol de IAM asociado a mi regla se ignora cuando se ejecuta la regla
<a name="eb-iam-role-ignored"></a>

EventBridge solo usa roles de IAM para [las reglas](eb-rules.md) que envían [eventos](eb-events.md) a las transmisiones de Kinesis. Para reglas que invocan funciones de Lambda o temas de Amazon SNS, debe proporcionar [permisos basados en recursos](eb-use-resource-based.md).

Asegúrese de que sus AWS STS puntos de enlace regionales estén habilitados para EventBridge poder usarlos cuando asuma la función de IAM que proporcionó. Para obtener más información, consulte [Activación y desactivación AWS STS en una AWS región en la Guía](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) del usuario de *IAM*.

## Mi regla tiene un patrón de eventos que se supone que coincide con un recurso, pero ningún evento coincide
<a name="eb-events-do-not-match-rule"></a>

La mayoría de los servicios AWS tratan los dos puntos (:) o una barra inclinada (/) como el mismo carácter en Amazon Resource Names (ARNs)., pero EventBridge utilizan una coincidencia exacta en [los patrones de eventos](eb-event-patterns.md) y [las reglas](eb-rules.md). Asegúrese de usar los caracteres de ARN correctos cuando cree patrones de eventos, de modo que se ajusten a la sintaxis de ARN del [evento](eb-events.md) de la correspondencia.

Algunos eventos, como los eventos de llamada a la AWS API desde CloudTrail, no tienen ningún elemento en el campo de recursos.

## La entrega de mi evento al destino sufrió un retraso
<a name="eb-delayed-event-delivery"></a>

EventBridge intenta enviar un [evento](eb-events.md) a un [objetivo](eb-targets.md) durante un máximo de 24 horas, excepto en situaciones en las que los recursos de destino son limitados. El primer intento se realiza en cuanto el evento llega en el flujo de transmisión. Si el servicio de destino tiene problemas, EventBridge reprograma automáticamente otra entrega. Si han pasado 24 horas desde la llegada del evento, EventBridge deja de intentar realizar el evento y publica la `FailedInvocations` métrica en él. CloudWatch Le recomendamos que configure una DLQ para almacenar los eventos que no se hayan podido entregar correctamente a un destino. Para obtener más información, consulte [Uso de colas con letra muerta para procesar los eventos no entregados en EventBridge](eb-rule-dlq.md)

## Algunos eventos no se entregaron en mi destino
<a name="eb-never-delivered-to-target"></a>

Si el [objetivo](eb-targets.md) de una EventBridge [regla](eb-rules.md) está restringido durante un tiempo prolongado, es EventBridge posible que no vuelva a intentar la entrega. Por ejemplo, si el destino no está aprovisionado para gestionar el tráfico de [eventos](eb-events.md) entrante y el servicio de destino limita las solicitudes que se realizan en tu nombre, es posible EventBridge que no vuelva EventBridge a intentar la entrega.

## Mi regla se ejecutó más de una vez en respuesta a un único evento
<a name="eb-rule-triggered-more-than-once"></a>

En casos excepcionales, la misma [regla](eb-rules.md) se puede ejecutar más de una vez para un solo [evento](eb-events.md) o tiempo programado, o el mismo [destino](eb-targets.md) se puede invocar más de una vez para una regla activada determinada. 

## Prevención de bucles infinitos
<a name="eb-prevent-infinite-loops"></a>

En EventBridge, es posible crear una [regla](eb-rules.md) que genere bucles infinitos, en los que la regla se ejecute repetidamente. Si tiene una regla que provoca un bucle infinito, reescríbala para que las acciones que lleve a cabo la regla no coincidan con la misma regla. 

Por ejemplo, una regla ACLs que detecta los cambios en un bucket de Amazon S3 y, a continuación, ejecuta un software para cambiarlos a un nuevo estado, provoca un bucle infinito. Una forma de resolverlo es reescribir la regla para que solo coincida con las ACLs que estén en mal estado. 

Un bucle infinito puede generar cargos superiores a los esperados rápidamente. Le recomendamos que utilice la función de presupuestos, que le avisa cuando los cargos superan el límite especificado. Para obtener más información, consulte [Gestión de costos con presupuestos](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-managing-costs.html).

## Mis eventos no se entregan en la cola de Amazon SQS de destino
<a name="eb-sqs-encrypted"></a>

Si su cola de Amazon SQS está cifrada, debe crear una clave de KMS gestionada por el cliente e incluir la siguiente sección de permisos en su política de claves de KMS. Para obtener más información, consulte [Configuración de AWS KMS permisos](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html#sqs-what-permissions-for-sse).

```
{
  "Sid": "Allow EventBridge to use the key",
  "Effect": "Allow",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*"
}
```

## Mi regla se ejecuta, pero no veo ningún mensaje publicado en mi tema de Amazon SNS
<a name="eb-no-messages-published-sns"></a>

**Escenario 1**

Necesita permiso para que los mensajes se publiquen en su tema de Amazon SNS. Usa el siguiente comando con el AWS CLI, sustituyendo us-east-1 por tu región y usando el ARN del tema.

```
aws sns get-topic-attributes --region us-east-1 --topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic"
```

Para tener el permiso correcto, los atributos de su política son similares a los siguientes.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_policy_ID",
    "Statement": [
    {
    "Sid": "__default_statement_ID",
    "Effect": "Allow",
    "Principal": {
    "AWS": "*"
    },
    "Action": [
    "SNS:Subscribe",
    "SNS:ListSubscriptionsByTopic",
    "SNS:DeleteTopic",
    "SNS:GetTopicAttributes",
    "SNS:Publish",
    "SNS:RemovePermission",
    "SNS:AddPermission",
    "SNS:SetTopicAttributes"
    ],
    "Resource": "arn:aws:sns:us-east-1:123456789012:MyTopic",
    "Condition": {
    "StringEquals": {
    "AWS:SourceOwner": "123456789012"
    }
    }
    },
    {
    "Sid": "Allow_Publish_Events",
    "Effect": "Allow",
    "Principal": {
    "Service": "events.amazonaws.com"
    },
    "Action": "sns:Publish",
    "Resource": "arn:aws:sns:us-east-1:123456789012:MyTopic"
    }
    ]
    }
```

------

Si no aparece `events.amazonaws.com` con el permiso `Publish` en su política, primero copie la política actual y añada la siguiente declaración a la lista de declaraciones.

```
{\"Sid\":\"Allow_Publish_Events\",
\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},
\"Action\":\"sns:Publish\",
\"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}
```

A continuación, defina los atributos del tema mediante AWS CLI el comando siguiente.

```
aws sns set-topic-attributes --region us-east-1 --topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic" --attribute-name Policy --attribute-value NEW_POLICY_STRING
```

**nota**  
Si la política es incorrecta, también puedes editar la [regla](eb-rules.md) en la EventBridge consola quitándola y volviéndola a añadir a la regla. EventBridge establece los permisos correctos en el [destino](eb-targets.md).

**Escenario 2**

Si su tema de SNS está cifrado, debe incluir la siguiente sección en su política de claves de KMS.

```
{
  "Sid": "Allow EventBridge to use the key",
  "Effect": "Allow",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*"
}
```

## Mi tema de Amazon SNS sigue teniendo permisos EventBridge incluso después de haber eliminado la regla asociada al tema de Amazon SNS.
<a name="eb-sns-permissions-persist"></a>

Cuando crea una [regla](eb-rules.md) con Amazon SNS como [destino](eb-targets.md), EventBridge añade permiso a su tema de Amazon SNS en su nombre. Si eliminas la regla poco después de crearla, es EventBridge posible que no elimines el permiso de tu tema de Amazon SNS. Si esto ocurre, puede eliminar el permiso desde el tema utilizando el comando `aws sns set-topic-attributes`. Para obtener más información acerca de los permisos basados en recursos para enviar eventos, consulte [Uso de políticas basadas en recursos para Amazon EventBridge](eb-use-resource-based.md).

## ¿Con qué claves de condición de IAM puedo usar? EventBridge
<a name="eb-supported-access-policies"></a>

EventBridge admite las claves AWS de condición generales (consulte las claves de [IAM y de contexto de AWS STS condición en la *Guía del usuario de IAM*), además de las claves](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html) que se enumeran en. [Uso de las condiciones de la política de IAM en Amazon EventBridge](eb-use-conditions.md)

## ¿Cómo puedo saber cuándo se infringen EventBridge las reglas?
<a name="eb-create-alarm-broken-event-rules"></a>

Puede usar la siguiente alarma para avisarle cuando se infrinjan sus EventBridge [reglas](eb-rules.md).

**Para crear una alarma que avise cuando se infrinjan las reglas**

1. Abre la CloudWatch consola en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Elija **Crear alarma**. En el panel **CloudWatch Métricas por categoría**, elija **Events Metrics**.

1. En la lista de métricas, selecciona **FailedInvocations**.

1. Encima del gráfico, seleccione **Statistic**, **Sum**.

1. En **Período**, seleccione un valor; por ejemplo, **5 minutos**. Elija **Siguiente**.

1. En **Umbral de alarma**, en **Nombre**, escriba un nombre exclusivo para la alarma, por ejemplo **myFailedRules**. En **Descripción**, escriba una descripción de la alarma; por ejemplo, **Reglas que no proporcionan eventos a los destinos**.

1. En **es**, seleccione **>=** y **1**. En **para**, escriba **10**.

1. En **Acciones**, en **Siempre que esta alarma**, seleccione **El estado es ALARMA**.

1. En **Enviar notificación a**, seleccione un tema de Amazon SNS existente o cree uno nuevo. Para crear un nuevo tema, seleccione **Lista nueva**. Escriba un nombre para el nuevo tema de Amazon SNS, por ejemplo:. **myFailedRules** 

1. En **Lista de correos electrónicos**, escriba una lista separada por comas con las direcciones de correo electrónico a las que se van a enviar notificaciones cuando la alarma cambie al estado **ALARMA**.

1. Seleccione **Crear alarma**.