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 EventBridge, se invocan todos los objetivos asociados a la regla. Las reglas pueden invocar AWS Lambda funciones, publicar temas en Amazon SNS o retransmitir el evento a las transmisiones de Kinesis. Para realizar llamadas a la API desde los recursos de su propiedad, EventBridge necesita los permisos adecuados. Para los recursos de Amazon CloudWatch Logs, EventBridge utiliza políticas basadas en los recursos. En el caso de los recursos de Lambda, Amazon SNS y Amazon SQS, EventBridge puede utilizar un rol de ejecución de IAM o una política basada en recursos. Para las transmisiones de Kinesis, utiliza políticas basadas en la identidad. EventBridge Uso de políticas basadas en la identidad (políticas de IAM) para Amazon EventBridge
importante
En el caso de CloudWatch los destinos de Amazon Logs, no especifique una RoleArn en la configuración de destino. Para los objetivos de Lambda, Amazon SNS y Amazon SQS, puede utilizar un rol de ejecución de IAM o una política basada en los recursos. Si especifica un destino RoleArn para Lambda, Amazon SNS o Amazon SQS, asegúrese de que el rol tenga los permisos necesarios (por ejemplo, o). lambda:InvokeFunction sns:Publish sqs:SendMessage Si no hay ningún rol de ejecución configurado, EventBridge usa políticas basadas en recursos en el recurso de destino.
La usa AWS CLI para agregar permisos a sus objetivos. Para obtener información sobre cómo instalar y configurar el AWS CLI, consulte Cómo configurarlo AWS Command Line Interface en la Guía del AWS Command Line Interface usuario.
Temas
Permisos de Amazon API Gateway
Para invocar su punto de enlace de Amazon API Gateway mediante una EventBridge regla, añada el siguiente permiso a la política de su punto de enlace de API Gateway.
CloudWatch Registra los permisos
Cuando CloudWatch Logs es el objetivo de una regla, EventBridge crea flujos de registro y CloudWatch Logs almacena el texto de los eventos como entradas de registro. Para poder crear el flujo de registros y registrar los eventos, los CloudWatch registros deben incluir una política basada en los recursos que permita EventBridge escribir CloudWatch en los registros. EventBridge
Si usa el Consola de administración de AWS para agregar CloudWatch registros como el objetivo de una regla, la política basada en los recursos se crea automáticamente. Si usa el AWS CLI para agregar el objetivo y la política aún no existe, debe crearla.
El siguiente ejemplo de política basada en recursos permite EventBridge escribir en todos los grupos de registros cuyos nombres comiencen por. /aws/events/ Si utiliza una política de nomenclatura diferente para estos tipos de registros, ajuste el ARN del recurso en consecuencia.
{ "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", "delivery.logs.amazonaws.com" ] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:region:account-id:log-group:/aws/events/*:*" }
Para crear una política de recursos para los CloudWatch registros mediante el AWS CLI
-
En el símbolo del sistema, escriba el siguiente comando.
aws logs put-resource-policy --policy-name EventBridgeToCWLogsPolicy \ --policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["events.amazonaws.com","delivery.logs.amazonaws.com"]},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource":"arn:aws:logs:region:account-id:log-group:/aws/events/*:*"}]}'
Para obtener más información, consulta la guía PutResourcePolicy de referencia de la API de CloudWatch Logs.
AWS Lambda permisos
Para invocar tu AWS Lambda función mediante una EventBridge regla, agrega el siguiente permiso a la política de tu función de Lambda.
nota
Como alternativa, puede configurar un rol de ejecución de IAM en el destino con permiso. lambda:InvokeFunction Resource-based las políticas solo son necesarias cuando no hay ningún rol de ejecución configurado en el destino.
{ "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 añadir los permisos anteriores que EventBridge permiten invocar funciones de Lambda mediante el 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 los permisos que EventBridge permiten invocar funciones de Lambda, consulte AddPermission la sección Uso de Lambda con eventos programados en la Guía para desarrolladores. AWS Lambda
Permisos de Amazon SNS
EventBridge Para permitir la publicación en un tema de Amazon SNS, utilice los aws sns
get-topic-attributes comandos y. aws sns set-topic-attributes
Para agregar permisos que permitan EventBridge publicar temas de SNS
-
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:SourceAccount\":\"account-id\"}}}]}", "TopicArn": "arn:aws:sns:region:account-id:topic-name", "SubscriptionsPending": "0" } } -
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\"} -
Agregue la cadena que creó en el paso anterior a la colección
"Statement"incluida en el atributo"Policy". -
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:SourceAccount\":\"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 SetTopicAttributes acción en la referencia de la API de Amazon Simple Notification Service.
Permisos de Amazon SQS
Para permitir que una EventBridge regla invoque una cola de Amazon SQS, utilice los aws sqs
get-queue-attributes comandos 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 añadir permisos que permitan a EventBridge las reglas invocar una cola de SQS
-
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 -
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" } } } -
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\"}} -
Cree un archivo denominado
set-queue-attributes.jsoncon 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\"}}}]}" } -
Establezca el atributo de política mediante el archivo
set-queue-attributes.jsonque 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.
EventBridge Especificaciones de las tuberías
EventBridge Pipes no admite políticas basadas en recursos y no tiene API que admitan condiciones de políticas basadas en recursos.
Sin embargo, si configuras el acceso canalizado a través de un punto final de VPC de interfaz, ese punto final de VPC admite políticas de recursos que te permiten gestionar el acceso a las API de Pipe. EventBridge Para obtener más información, consulte Uso de Amazon EventBridge con puntos de enlace de VPC de interfaz