Solución de problemas de Amazon EventBridge - Amazon EventBridge

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

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

Mi regla se ejecutó pero no se invocó mi función de Lambda

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.

    { "Policy": "{\"Version\":\"2012-10-17\", \"Statement\":[ {\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:us-east-1:123456789012:rule/MyRule\"}}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:MyFunction\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Sid\":\"MyId\"} ], \"Id\":\"default\"}" }
  2. 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
  3. 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 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.

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

Al realizar un cambio en una regla o en sus destinos, los eventos 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.

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 TestEventPatternAmazon EventBridge API Reference.

  • Usa el Sandbox de la EventBridge consola.

Mi regla no se ejecutó en el momento que especifiqué en la ScheduleExpression

Asegúrese de haber establecido el horario de la regla en la zona horaria de UTC +0. 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.

Mi regla no se ejecutó a la hora esperada

EventBridge ejecuta las reglas en el plazo de un minuto a partir de la hora de inicio que hayas establecido. 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 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óncron(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 API llamadas de servicio AWS globales, pero no se ejecutó

AWS los servicios globales, como Amazon Route 53, IAM solo están disponibles en la región EE. UU. Este (Virginia del Norte), por lo que los eventos de AWS API las llamadas desde servicios globales solo están disponibles en esa región. Para obtener más información, consulte Eventos de AWS los servicios de Amazon EventBridge.

El IAM rol asociado a mi regla se ignora cuando se ejecuta la regla

EventBridge solo usa IAM roles para las reglas que envían eventos a las transmisiones de Kinesis. Para las reglas que invocan funciones de Lambda o temas de SNS Amazon, debe proporcionar permisos basados en recursos.

Asegúrese de que sus AWS STS puntos de enlace regionales estén habilitados para EventBridge poder usarlos cuando asuma la función que le asignó. IAM Para obtener más información, consulte Activación y desactivación AWS STS en una AWS región en la Guía del IAMusuario.

Mi regla tiene un patrón de eventos que se supone que coincide con un recurso, pero ningún evento coincide

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 y las reglas. Asegúrese de utilizar los ARN caracteres correctos al crear los patrones de eventos para que coincidan con la ARN sintaxis en el caso de que coincidan.

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

La entrega de mi evento al destino sufrió un retraso

EventBridge intenta enviar un evento a un objetivo 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 Te recomendamos que configures una tienda DLQ para almacenar los eventos que no se hayan podido entregar correctamente a un objetivo. Para obtener más información, consulte Utilice colas de texto sin formato para procesar los eventos no entregados en EventBridge.

Algunos eventos no se entregaron en mi destino

Si el objetivo de una EventBridge regla 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 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

En casos excepcionales, la misma regla se puede ejecutar más de una vez para un solo evento o tiempo programado, o el mismo destino se puede invocar más de una vez para una regla activada determinada.

Prevención de bucles infinitos

En EventBridge, es posible crear una regla 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.

Mis eventos no se envían a la SQS cola de Amazon de destino

Si tu SQS cola de Amazon está cifrada, debes crear una KMS clave gestionada por el cliente e incluir la siguiente sección de permisos en tu KMS política de claves. Para obtener más información, consulta Cómo configurar los permisos. AWS KMS

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

Mi regla es válida, pero no veo ningún mensaje publicado en mi SNS tema de Amazon

Escenario 1

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

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.

"{\"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 el AWS CLI 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 en la EventBridge consola quitándola y volviéndola a añadir a la regla. EventBridge establece los permisos correctos en el destino.

Escenario 2

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

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

Mi SNS tema de Amazon sigue teniendo permisos EventBridge incluso después de haber eliminado la regla asociada al SNS tema de Amazon

Cuando creas una regla con Amazon SNS como objetivo, EventBridge añades permiso a tu SNS tema de Amazon en tu nombre. Si eliminas la regla poco después de crearla, es EventBridge posible que no elimines el permiso de tu SNS tema de Amazon. 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.

¿Con qué claves de IAM condición puedo usar EventBridge?

EventBridge admite las claves AWS condicionales amplias (consulte IAMy AWS STS condicione las claves contextuales en la Guía del IAM usuario), además de las claves enumeradas enUso de las condiciones IAM de la política en Amazon EventBridge.

¿Cómo puedo saber cuándo se EventBridge infringen las reglas?

Puede usar la siguiente alarma para avisarle cuando se infrinjan sus EventBridge reglas.

Para crear una alarma que avise cuando se infrinjan las reglas
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. Seleccione Crear alarma. En el panel CloudWatch Métricas por categoría, elija Events Metrics.

  3. En la lista de métricas, selecciona FailedInvocations.

  4. Encima del gráfico, seleccione Statistic, Sum.

  5. En Período, seleccione un valor; por ejemplo, 5 minutos. Seleccione Siguiente.

  6. 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.

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

  8. En Acciones, en Siempre que haya una alarma, elija El estado es ALARM.

  9. En Enviar notificación a, selecciona un SNS tema de Amazon existente o crea uno nuevo. Para crear un nuevo tema, seleccione Lista nueva. Escribe un nombre para el nuevo SNS tema de Amazon, por ejemplo: myFailedRules.

  10. Para la lista de correo electrónico, escriba una lista de direcciones de correo electrónico separadas por comas para recibir notificaciones cuando la alarma cambie al ALARMestado.

  11. Seleccione Crear alarma.