Uso de políticas basadas en recursos para 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.

Uso de políticas basadas en recursos para Amazon EventBridge

Cuando se ejecuta una regla en EventBridge, se invocan todos los destinos asociados a la regla. Las reglas pueden invocar funciones de AWS Lambda, publicar en temas de Amazon SNS o retransmitir el evento en flujos de Kinesis. Para realizar llamadas a la API contra los recursos que usted posee, EventBridge necesita los permisos adecuados. Para los recursos de Lambda, Amazon SNS, Amazon SQS y Registros de Amazon CloudWatch, EventBridge utiliza políticas basadas en recursos. Para los flujos de Kinesis, EventBridge utiliza políticas basadas en identidades.

Puede usar AWS CLI para agregar permisos a sus destinos. Para obtener más información sobre cómo instalar y configurar la AWS CLI, consulte Configuración inicial de la AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.

Permisos de Amazon API Gateway

Para invocar su punto de conexión de Amazon API Gateway mediante una regla de EventBridge, agregue el siguiente permiso a la política de su punto de conexión de API Gateway.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "execute-api:Invoke", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:region:account-id:rule/rule-name" } }, "Resource": [ "execute-api:/stage/GET/api" ] } ] }

Permisos de Registros de CloudWatch

Cuando Registros de CloudWatch es el destino de una regla, EventBridge crea flujos de registro y Registros de CloudWatch almacena el texto de los eventos como entradas de registro. Para permitir que EventBridge cree el flujo de registro y registre los eventos, Registros de CloudWatch debe incluir una política basada en recursos que permita a EventBridge escribir en Registros de CloudWatch.

Si utiliza la AWS Management Console para agregar Registros de CloudWatch como el destino de una regla, la política basada en recursos se crea automáticamente. Si utiliza la AWS CLI para agregar el destino y la política aún no existe, debe crearla.

Este ejemplo permite a EventBridge escribir en todos los grupos de registro que tienen nombres que empiezan por /aws/events/. Si utiliza una política de nomenclatura diferente para estos tipos de registros, ajuste la política en consecuencia.

{ "Statement": [ { "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Effect": "Allow", "Principal": { "Service": ["events.amazonaws.com", "delivery.logs.amazonaws.com"] }, "Resource": "arn:aws:logs:region:account:log-group:/aws/events/*:*", "Sid": "TrustEventsToStoreLogEvent" } ], "Version": "2012-10-17" }

Para obtener más información, consulte PutResourcePolicy en la Guía de referencia de la API de Registros de CloudWatch.

Permisos de AWS Lambda

Para invocar la función de AWS Lambda utilizando una regla de EventBridge, agregue el siguiente permiso a la política de su función de Lambda.

{ "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:region:account-id:function:function-name", "Principal": { "Service": "events.amazonaws.com" }, "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:events:region:account-id:rule/rule-name" } }, "Sid": "InvokeLambdaFunction" }
Para agregar los permisos anteriores que permiten a EventBridge invocar funciones de Lambda mediante la AWS CLI
  • En el símbolo del sistema, escriba el siguiente comando.

    aws lambda add-permission --statement-id "InvokeLambdaFunction" \ --action "lambda:InvokeFunction" \ --principal "events.amazonaws.com" \ --function-name "arn:aws:lambda:region:account-id:function:function-name" \ --source-arn "arn:aws:events:region:account-id:rule/rule-name"

Para obtener más información sobre la configuración de permisos que permiten a EventBridge invocar funciones de Lambda, consulte AddPermission y Uso de Lambda con eventos programados en la Guía para desarrolladores de AWS Lambda.

Permisos de Amazon SNS

Para permitir a EventBridge publicar en un tema de Amazon SNS, utilice los comandos aws sns get-topic-attributes y aws sns set-topic-attributes.

nota

No puede usar bloques Condition en las políticas de temas de Amazon SNS para EventBridge.

Para agregar permisos que permitan a EventBridge publicar temas de SNS
  1. Utilice el siguiente comando para ver una lista de los atributos de un tema de SNS.

    aws sns get-topic-attributes --topic-arn "arn:aws:sns:region:account-id:topic-name"

    El siguiente ejemplo muestra el resultado de un tema de SNS nuevo.

    { "Attributes": { "SubscriptionsConfirmed": "0", "DisplayName": "", "SubscriptionsDeleted": "0", "EffectiveDeliveryPolicy": "{\"http\":{\"defaultHealthyRetryPolicy\":{\"minDelayTarget\":20,\"maxDelayTarget\":20,\"numRetries\":3,\"numMaxDelayRetries\":0,\"numNoDelayRetries\":0,\"numMinDelayRetries\":0,\"backoffFunction\":\"linear\"},\"disableSubscriptionOverrides\":false}}", "Owner": "account-id", "Policy": "{\"Version\":\"2012-10-17\",\"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__default_statement_ID\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"SNS:GetTopicAttributes\",\"SNS:SetTopicAttributes\",\"SNS:AddPermission\",\"SNS:RemovePermission\",\"SNS:DeleteTopic\",\"SNS:Subscribe\",\"SNS:ListSubscriptionsByTopic\",\"SNS:Publish\"],\"Resource\":\"arn:aws:sns:region:account-id:topic-name\",\"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"account-id\"}}}]}", "TopicArn": "arn:aws:sns:region:account-id:topic-name", "SubscriptionsPending": "0" } }
  2. Utilice un conversor de JSON a cadena para convertir la siguiente instrucción en una cadena.

    { "Sid": "PublishEventsToMyTopic", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:region:account-id:topic-name" }

    Después de convertir la instrucción en una cadena, debe parecerse al siguiente ejemplo.

    {\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:region:account-id:topic-name\"}
  3. Agregue la cadena que creó en el paso anterior a la colección "Statement" incluida en el atributo "Policy".

  4. Para especificar la política nueva, use el comando aws sns set-topic-attributes.

    aws sns set-topic-attributes --topic-arn "arn:aws:sns:region:account-id:topic-name" \ --attribute-name Policy \ --attribute-value "{\"Version\":\"2012-10-17\",\"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__default_statement_ID\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"SNS:GetTopicAttributes\",\"SNS:SetTopicAttributes\",\"SNS:AddPermission\",\"SNS:RemovePermission\",\"SNS:DeleteTopic\",\"SNS:Subscribe\",\"SNS:ListSubscriptionsByTopic\",\"SNS:Publish\"],\"Resource\":\"arn:aws:sns:region:account-id:topic-name\",\"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"account-id\"}}}, {\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:region:account-id:topic-name\"}]}"

Para obtener más información, consulte la acción SetTopicAttributes en la Referencia de la API de Amazon Simple Notification Service.

Permisos de Amazon SQS

Para permitir que una regla de EventBridge invoque una cola de Amazon SQS, utilice los comandos aws sqs get-queue-attributes y aws sqs set-queue-attributes.

Si la política de la cola de SQS está vacía, primero debe crear una política y, a continuación, agregarle la instrucción de permisos. Una nueva cola de SQS tiene una política vacía.

Si la cola de SQS ya tiene una política, debe copiar la política original y combinarla con una nueva instrucción para agregarle la instrucción de permisos.

Para agregar permisos que permitan a las reglas de EventBridge invocar una cola de SQS
  1. Para enumerar los atributos de la cola de SQS. En el símbolo del sistema, escriba el siguiente comando.

    aws sqs get-queue-attributes \ --queue-url https://sqs.region.amazonaws.com/account-id/queue-name \ --attribute-names Policy
  2. Agregue la siguiente instrucción.

    { "Sid": "AWSEvents_custom-eventbus-ack-sqs-rule_dlq_sqs-rule-target", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:region:account-id:queue-name", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:region:account-id:rule/bus-name/rule-name" } } }
  3. Utilice un conversor de JSON a cadena para convertir la instrucción anterior en una cadena. Después de convertir la política en una cadena, debe parecerse al siguiente ejemplo.

    {\"Sid\": \"EventsToMyQueue\", \"Effect\": \"Allow\", \"Principal\": {\"Service\": \"events.amazonaws.com\"}, \"Action\": \"sqs:SendMessage\", \"Resource\": \"arn:aws:sqs:region:account-id:queue-name\", \"Condition\": {\"ArnEquals\": {\"aws:SourceArn\": \"arn:aws:events:region:account-id:rule/rule-name\"}}
  4. Cree un archivo denominado set-queue-attributes.json con el siguiente contenido.

    { "Policy": "{\"Version\":\"2012-10-17\",\"Id\":\"arn:aws:sqs:region:account-id:queue-name/SQSDefaultPolicy\",\"Statement\":[{\"Sid\": \"EventsToMyQueue\", \"Effect\": \"Allow\", \"Principal\": {\"Service\": \"events.amazonaws.com\"}, \"Action\": \"sqs:SendMessage\", \"Resource\": \"arn:aws:sqs:region:account-id:queue-name\", \"Condition\": {\"ArnEquals\": {\"aws:SourceArn\": \"arn:aws:events:region:account-id:rule/rule-name\"}}}]}" }
  5. Establezca el atributo de política mediante el archivo set-queue-attributes.json que acaba de crear como entrada, tal y como se muestra en el siguiente comando.

    aws sqs set-queue-attributes \ --queue-url https://sqs.region.amazonaws.com/account-id/queue-name \ --attributes file://set-queue-attributes.json

Para obtener más información, consulte Ejemplos de políticas de Amazon SQS en la Guía para desarrolladores de Amazon Simple Queue Service.

Aspectos específicos de EventBridge Pipes

EventBridge Pipes no admite políticas basadas en recursos y no tiene API que admitan políticas basadas en recursos.