As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Como usar políticas baseadas em recursos para esquemas do Amazon EventBridge
Quando uma regra é executada no EventBridge, todos os destinos associados à regra são invocados. As regras podem invocar funções do AWS Lambda, publicar em tópicos do Amazon SNS ou retransmitir o evento para os fluxos do Kinesis. Para fazer chamadas de API com seus próprios recursos, o EventBridge precisa das permissões adequadas. Para recursos do Lambda, do Amazon SNS, do Amazon SQS e do Amazon CloudWatch Logs o EventBridge conta com políticas baseadas em recursos. Para fluxos do Kinesis, o EventBridge usa políticas baseadas em identidade.
Você usa a AWS CLI para adicionar permissões aos seus destinos. Para obter informações sobre como instalar e configurar a AWS CLI, consulte Configuração com a AWS Command Line Interface no Guia do usuário do AWS Command Line Interface.
Tópicos
Permissões do Amazon API Gateway
Para invocar seu endpoint do Amazon API Gateway usando uma regra do EventBridge, adicione a permissão a seguir à política do seu endpoint do 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" ] } ] }
Permissões do CloudWatch Logs
Quando o CloudWatch Logs é o destino de uma regra, o EventBridge cria fluxos de logs e o CloudWatch Logs armazena o texto dos eventos de disparo como entradas de log. Para permitir que o EventBridge crie o fluxo de logs e os eventos de log, o CloudWatch Logs deve incluir uma política baseada em recursos que permita ao EventBridge fazer a gravação no CloudWatch Logs.
Se usar o AWS Management Console para adicionar o CloudWatch Logs como destino de uma regra, essa política será criada automaticamente. Se usar a AWS CLI para adicionar o destino, deve criar essa política se ela não existir.
Este exemplo permite que o EventBridge grave em todos os grupos de logs que têm nomes que começam com /aws/events/
. Se usar uma política diferente para dar nome a esses tipos de logs, ajuste a política de acordo com a necessidade.
{ "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 obter mais informações, consulte PutResourcePolicy na Guia de referência de APIs do Amazon CloudWatch Logs.
Permissões AWS Lambda
Para invocar sua função do AWS Lambda usando uma regra do EventBridge, adicione a seguinte permissão à política da função do 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 adicionar as permissões acima que permitem que o EventBridge invoque funções do Lambda usando a AWS CLI
-
Em um prompt de comando, digite o seguinte 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 obter mais informações sobre a configuração de permissões que permitem ao invocar funções do Lambda, consulte Adicionar permissão e Como usar o Lambda com eventos programados no Manual do desenvolvedor do AWS Lambda.
Permissões do Amazon SNS
Para permitir que o EventBridge publique um tópico do Amazon SNS, use os comandos aws sns
get-topic-attributes
e aws sns set-topic-attributes
.
nota
Não é possível usar blocos de Condition
nas políticas de tópicos do Amazon SNS para o EventBridge.
Como adicionar permissões que permitam ao EventBridge publicar tópicos do SNS
-
Para listar os atributos de um tópico do SNS, use o comando a seguir.
aws sns get-topic-attributes --topic-arn "arn:aws:sns:
region
:account-id
:topic-name
"O exemplo a seguir mostra o resultado de um novo tópico do SNS.
{ "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" } } -
Use um Conversor de JSON para string
para converter a seguinte declaração em uma string. { "Sid": "PublishEventsToMyTopic", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:
region
:account-id
:topic-name
" }Depois de converter a instrução em uma string, ela deve ter a seguinte aparência:
{\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:
region
:account-id
:topic-name
\"} -
Adicione a string que criada na etapa anterior à coleção de
"Statement"
dentro do atributo"Policy"
. -
Use o comando
aws sns set-topic-attributes
para especificar a nova política.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 obter mais informações, consulte a ação SetTopicAttributes na Referência de API do Amazon Simple Notification Service.
Permissões do Amazon SQS
Para permitir que uma regra do EventBridge invoque uma fila do Amazon SQS, use os comandos aws sqs
get-queue-attributes
e aws sqs set-queue-attributes
.
Se a política da fila SQS estiver vazia, primeiro será preciso criar uma política e depois adicionar a declaração de permissões a ela. Uma nova fila SQS tem uma política vazia.
Se a fila do SQS já tiver uma política, será preciso copiar a política original e combiná-la com uma nova instrução para adicionar a declaração de permissões a ela.
Para adicionar permissões que permitam ao EventBridge invocar uma fila do SQS
-
Para listar os atributos da fila do SQS. Em um prompt de comando, digite o seguinte comando.
aws sqs get-queue-attributes \ --queue-url https://sqs.
region
.amazonaws.com/account-id
/queue-name
\ --attribute-names Policy -
Adicione a instrução a seguir.
{ "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
" } } } -
Use um Conversor de JSON para string
para converter a declaração anterior em uma string. Depois de converter a política em uma string, ela deve ter a seguinte aparência: {\"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
\"}} -
Crie um arquivo denominado
set-queue-attributes.json
com o seguinte conteúdo.{ "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
\"}}}]}" } -
Defina o atributo da política usando o arquivo
set-queue-attributes.json
que acabou de criar como entrada, conforme mostrado no comando a seguir.aws sqs set-queue-attributes \ --queue-url https://sqs.
region
.amazonaws.com/account-id
/queue-name
\ --attributes file://set-queue-attributes.json
Para obter mais informações, consulte Exemplos de políticas do Amazon SQS, no Guia do desenvolvedor do Amazon Simple Queue Service.
Especificações do EventBridge Pipes
O EventBridge Pipes não é compatível com políticas baseadas em recursos nem tem APIs compatíveis com as condições de políticas baseadas em recursos.
No entanto, se você configurar o acesso ao pipe por meio de um endpoint da VPC de interface, esse endpoint da VPC aceitará políticas de recursos que permitem gerenciar o acesso às APIs do EventBridge Pipe. Para ter mais informações, consulte Usar o Amazon EventBridge com endpoints da VPC de interface.