Verwenden ressourcenbasierter Richtlinien für Amazon EventBridge - Amazon EventBridge

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden ressourcenbasierter Richtlinien für Amazon EventBridge

Wenn eine Regel in EventBridge ausgeführt wird, werden alle Ziele aufgerufen, die mit der Regel verknüpft sind. Regeln können AWS Lambda-Funktionen aufrufen, in Amazon-SNS-Themen veröffentlichen oder das Ereignis an Kinesis-Streams weiterleiten. Um API-Aufrufe für die Ressourcen auszuführen, die Sie besitzen, muss EventBridge über die entsprechenden Berechtigungen verfügen. Für Lambda-, Amazon-SNS-, Amazon-SQS- und Amazon-CloudWatch-Logs-Ressourcen verwendet EventBridge ressourcenbasierte Richtlinien. Für Kinesis-Streams verwendet EventBridge identitätsbasierte Richtlinien.

Sie verwenden die AWS CLI, um Ihren Zielen Berechtigungen hinzuzufügen. Informationen zur Installation und Konfiguration der AWS CLI finden Sie unter Einrichtung mit der AWS Command Line Interface im AWS Command Line Interface-Benutzerhandbuch.

Amazon-API-Gateway-Berechtigungen

Um Ihren Amazon-API-Gateway-Endpunkt mithilfe einer EventBridge-Regel aufzurufen, fügen Sie der Richtlinie Ihres API-Gateway-Endpunkts die folgende Berechtigung hinzu.

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

CloudWatch-Logs-Berechtigungen

Wenn CloudWatch Logs das Ziel einer Regel ist, erstellt EventBridge Protokollstreams und CloudWatch Logs speichert den Text aus den Ereignissen als Protokolleinträge. Um EventBridge das Erstellen des Protokollstreams und das Protokollieren der Ereignisse zu ermöglichen, muss CloudWatch Logs eine ressourcenbasierte Richtlinie enthalten, die EventBridge zum Schreiben in CloudWatch Logs berechtigt.

Wenn Sie die AWS Management Console verwenden, um CloudWatch Logs als Ziel einer Regel hinzuzufügen, wird diese Richtlinie automatisch erstellt. Wenn Sie das Ziel mithilfe der AWS CLI hinzufügen und die Richtlinie noch nicht vorhanden ist, müssen Sie sie erstellen.

Das folgende Beispiel ermöglicht EventBridge, in alle Protokollgruppen zu schreiben, deren Namen mit /aws/events/ beginnen. Wenn Sie bei Protokollen dieser Art eine andere Benennungsrichtlinie verwenden, müssen Sie das Beispiel entsprechend anpassen.

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

Weitere Informationen finden Sie im API-Referenzhandbuch für CloudWatch Logs unter PutResourcePolicy.

AWS Lambda-Berechtigungen

Zum Aufrufen Ihrer AWS Lambda-Funktion mittels einer EventBridge-Regel fügen Sie der Richtlinie Ihrer Lambda-Funktion die folgende Berechtigung hinzu.

{ "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" }
So fügen Sie die oben genannten Berechtigungen hinzu, die es EventBridge ermöglichen, Lambda-Funktionen mit der AWS CLI aufzurufen
  • Geben Sie in der Eingabeaufforderung den folgenden Befehl ein.

    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"

Weitere Informationen zum Einrichten von Berechtigungen, mit denen EventBridge Lambda-Funktionen aufrufen kann, finden Sie unter AddPermission und Verwenden von Lambda mit geplanten Ereignissen im AWS Lambda-Entwicklerhandbuch.

Amazon-SNS-Berechtigungen

Damit EventBridge in einem Amazon-SNS-Thema veröffentlichen kann, verwenden Sie die Befehle aws sns get-topic-attributes und aws sns set-topic-attributes.

Anmerkung

Sie können keine Condition-Blöcke in Amazon-SNS-Themenrichtlinien für EventBridge verwenden.

So fügen Sie Berechtigungen hinzu, mit denen EventBridge SNS-Themen veröffentlichen kann
  1. Verwenden Sie den folgenden Befehl, um die Attribute eines SNS-Themas aufzulisten.

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

    Das folgende Beispiel zeigt das Ergebnis eines neuen SNS-Themas.

    { "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. Verwenden Sie einen JSON-in-Zeichenfolgen-Konverter, um die folgende Anweisung in eine Zeichenfolge zu konvertieren.

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

    Nachdem Sie die Anweisung in eine Zeichenfolge konvertiert haben, sieht sie wie im folgenden Beispiel aus.

    {\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:region:account-id:topic-name\"}
  3. Fügen Sie die Zeichenfolge, die Sie im vorherigen Schritt erstellt haben, der "Statement"-Sammlung innerhalb des "Policy"-Attributs hinzu.

  4. Verwenden Sie den Befehl aws sns set-topic-attributes, um die neue Richtlinie einzurichten.

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

Weitere Informationen finden Sie in der Aktion SetTopicAttributes in der API-Referenz zu Amazon Simple Notification Service.

Amazon-SQS-Berechtigungen

Damit eine EventBridge-Regel eine Amazon-SQS-Warteschlange aufrufen kann, verwenden Sie die Befehle aws sqs get-queue-attributes und aws sqs set-queue-attributes.

Wenn die Richtlinie für die SQS-Warteschlange leer ist, müssen Sie zuerst eine Richtlinie erstellen und dann können Sie ihr die Berechtigungsanweisung hinzufügen. Eine neue SQS-Warteschlange verfügt über eine leere Richtlinie.

Wenn die SQS-Warteschlange bereits über eine Richtlinie verfügt, müssen Sie die ursprüngliche Richtlinie kopieren und sie mit einer neuen Anweisung kombinieren, um ihr die Berechtigungsanweisung hinzuzufügen.

So fügen Sie Berechtigungen hinzu, mit denen EventBridge-Regeln eine SQS-Warteschlange aufrufen können
  1. So listen Sie SQS-Warteschlangenattribute auf. Geben Sie in der Eingabeaufforderung den folgenden Befehl ein.

    aws sqs get-queue-attributes \ --queue-url https://sqs.region.amazonaws.com/account-id/queue-name \ --attribute-names Policy
  2. Fügen Sie die folgende Anweisung hinzu.

    { "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. Verwenden Sie einen JSON-in-Zeichenfolgen-Konverter, um die vorherige Anweisung in eine Zeichenfolge zu konvertieren. Nachdem Sie die Richtlinie in eine Zeichenfolge konvertiert haben, sieht sie wie folgt aus.

    {\"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. Erstellen Sie eine Datei mit dem Namen set-queue-attributes.json und folgendem Inhalt.

    { "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. Legen Sie das Richtlinienattribut fest, indem Sie die soeben erstellte set-queue-attributes.json-Datei als Eingabe wie im folgenden Befehl gezeigt verwenden.

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

Weitere Informationen finden Sie unter Beispiele für Amazon-SQS-Richtlinien im Entwicklerhandbuch für Amazon Simple Queue Service.

Einzelheiten zu EventBridge Pipes

EventBridge Pipes unterstützt keine ressourcenbasierten Richtlinien und hat keine APIs, die ressourcenbasierte Richtlinienbedingungen unterstützen.