Utilizzo di policy basate su risorse per Amazon EventBridge - Amazon EventBridge

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di policy basate su risorse per Amazon EventBridge

Quando una regola viene eseguita in EventBridge, vengono richiamate tutte le destinazioni associate alla regola. Le regole possono richiamare funzioni AWS Lambda, pubblicare su argomenti Amazon SNS o inoltrare l'evento a flussi Kinesis. Per effettuare chiamate API alle risorse di tua proprietà, EventBridge necessita delle autorizzazioni appropriate. Per le risorse Lambda, Amazon SNS, Amazon SQS e File di log Amazon CloudWatch, EventBridge utilizza le policy basate su risorse. Per i flussi Kinesis, EventBridge utilizza le policy basate su identità.

L'AWS CLI ti consente di aggiungere autorizzazioni alle tue destinazioni. Per ulteriori informazioni su come installare e configurare l'AWS CLI, consulta Eseguire la configurazione con l'AWS Command Line Interface nella Guida per l'utente di AWS Command Line Interface.

Autorizzazioni di Gateway Amazon API

Per richiamare il tuo endpoint Gateway Amazon API utilizzando una regola EventBridge, aggiungi la seguente autorizzazione alla policy del tuo endpoint Gateway API.

{ "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" ] } ] }

Autorizzazioni per File di log CloudWatch

Quando File di log CloudWatch è la destinazione di una regola, EventBridge crea flussi di log e File di log CloudWatch archivia il testo degli eventi come voci di log. Per consentire a EventBridge di creare il flusso di log e registrare gli eventi, File di log CloudWatch deve includere una policy basata su risorse che consenta a EventBridge di scrivere su File di log Amazon CloudWatch.

Se utilizzi AWS Management Console per aggiungere File di log CloudWatch come destinazione di una regola, la policy basata su risorse viene creata automaticamente. Se utilizzi AWS CLI per aggiungere la destinazione, devi creare questa policy se non esiste già.

L'esempio seguente consente a EventBridge di scrivere su tutti i gruppi di log i cui nomi iniziano con /aws/events/. Se utilizzi una policy di denominazione differente per questi tipi di log, modifica l'esempio di conseguenza.

{ "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" }

Per ulteriori informazioni, consulta PutResourcePolicy in Riferimento API di File di log Amazon CloudWatch.

Autorizzazioni di AWS Lambda

Per richiamare la funzione AWS Lambda utilizzando una regola EventBridge, aggiungi l'autorizzazione seguente alla policy della funzione 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" }
Per aggiungere le autorizzazioni precedenti che consentono a EventBridge di richiamare le funzioni Lambda tramite l'AWS CLI
  • Al prompt dei comandi, immetti il comando seguente.

    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"

Per ulteriori informazioni sull'impostazione di autorizzazioni che consentono a EventBridge di richiamare funzioni Lambda, consulta AddPermission e Utilizzo di Lambda con eventi pianificati nella Guida per gli sviluppatori di AWS Lambda.

Autorizzazioni di Amazon SNS

Per consentire a EventBridge di pubblicare su un argomento Amazon SNS, utilizza i comandi aws sns get-topic-attributes e aws sns set-topic-attributes.

Nota

Non puoi utilizzare blocchi Condition nelle policy degli argomenti Amazon SNS per EventBridge.

Per aggiungere autorizzazioni che consentono a EventBridge di pubblicare argomenti SNS
  1. Per elencare gli attributi di un argomento SNS, utilizza il comando seguente.

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

    L'esempio seguente mostra il risultato di un nuovo argomento 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" } }
  2. Utilizza un convertitore da JSON a stringa per convertire la seguente istruzione in una stringa.

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

    Dopo la conversione dell'istruzione in una stringa, la stringa dovrebbe risultare simile a quanto segue:

    {\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:region:account-id:topic-name\"}
  3. Aggiungi la stringa creata nel passaggio precedente alla raccolta "Statement" nell'attributo "Policy".

  4. Per impostare la nuova policy, utilizza il 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\"}]}"

Per ulteriori informazioni, vedi l'azione SetTopicAttributes in Riferimento API di Amazon Simple Notification Service.

Autorizzazioni di Amazon SQS

Per consentire a una regola EventBridge di richiamare una coda Amazon SQS, utilizza i comandi aws sqs get-queue-attributes e aws sqs set-queue-attributes.

Se la policy per la coda SQS è vuota, devi prima creare una policy e poi aggiungervi l'istruzione di autorizzazione. Una nuova coda SQS ha una policy vuota.

Se la coda SQS ha già una policy, devi copiare la policy originale e combinarla con una nuova istruzione per aggiungervi l'istruzione di autorizzazione.

Per aggiungere autorizzazioni che consentono alle regole EventBridge di richiamare una coda SQS
  1. Per elencare gli attributi della coda SQS, Al prompt dei comandi, immetti il comando seguente.

    aws sqs get-queue-attributes \ --queue-url https://sqs.region.amazonaws.com/account-id/queue-name \ --attribute-names Policy
  2. Aggiungi l'istruzione seguente.

    { "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. Utilizza un convertitore da JSON a stringa per convertire l'istruzione precedente in una stringa. Dopo la conversione della policy in una stringa, la stringa dovrebbe risultare simile a quanto segue.

    {\"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. Crea un file denominato set-queue-attributes.json, con il seguente contenuto:

    { "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. Imposta l'attributo della policy utilizzando il file set-queue-attributes.json appena creato come input, come mostrato nel comando seguente.

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

Per ulteriori informazioni, vedi Esempi di policy di Amazon SQS nella Guida per gli sviluppatori di Amazon Simple Queue Service.

Specifiche di EventBridge Pipes

EventBridge Pipes non supporta policy basate su risorse e non dispone di API che supportino le condizioni delle policy basate su risorse.