Utilisation de politiques basées sur les ressources pour Amazon EventBridge - Amazon EventBridge

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de politiques basées sur les ressources pour Amazon EventBridge

Quand une règle s'exécute dans EventBridge, toutes les cibles qui lui sont associées sont invoquées. Les règles peuvent invoquer des fonctions AWS Lambda, publier dans des rubriques Amazon SNS ou relayer l'événement vers des flux Kinesis. Pour pouvoir effectuer des appels sur les ressources dont vous êtes propriétaire, EventBridge a besoin des autorisations appropriées. Pour les ressources Lambda, Amazon SNS, Amazon SQS et Amazon CloudWatch Logs, EventBridge utilise des politiques basées sur les ressources. Pour les flux Kinesis, EventBridge utilise des politiques basées sur l'identité.

Vous devez utiliser l'interface AWS CLI pour ajouter des autorisations à vos cibles. Pour plus d'informations sur l'installation et la configuration de la AWS CLI, consultez Préparation de la configuration de AWS Command Line Interface dans le Guide de l'utilisateur AWS Command Line Interface.

Autorisations Amazon API Gateway

Pour invoquer votre point de terminaison Amazon API Gateway à l'aide d'une règle EventBridge, ajoutez l'autorisation suivante à la politique du point de terminaison 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" ] } ] }

Autorisations CloudWatch Logs

Quand CloudWatch Logs est la cible d'une règle, EventBridge crée des flux de journaux, et CloudWatch Logs stocke le texte des événements sous forme d'entrées de journal. Pour permettre EventBridge de créer les flux de journaux et de journaliser les événements, CloudWatch doit inclure une politique basée sur les ressources qui permette à EventBridge d'écrire dans CloudWatch Logs.

Si vous utilisez la AWS Management Console pour ajouter CloudWatch Logs en tant que cible d'une règle, la politique basée sur les ressources est créée automatiquement. Si vous utilisez l'interface AWS CLI pour ajouter la cible et que la politique n'existe pas déjà, vous devez la créer.

L'exemple suivant autorise EventBridge à écrire dans tous les groupes de journaux dont le nom commence par /aws/events/. Si vous utilisez une autre politique de dénomination pour ces types de journaux, ajustez l'exemple en conséquence.

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

Pour plus d'informations, consultez PutResourcePolicy dans le Guide de référence des API CloudWatch Logs.

Autorisations AWS Lambda

Pour invoquer votre fonction AWS Lambda à l'aide d'une règle EventBridge, ajoutez l'autorisation suivante à la politique de votre fonction 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" }
Pour ajouter l'autorisation ci-dessus qui permet à EventBridge d'invoquer des fonctions Lambda à l'aide de l'interface AWS CLI
  • A partir d'une invite de commande, entrez la commande suivante.

    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"

Pour plus d'informations sur la définition d'autorisations qui permettent à EventBridge d'invoquer des fonctions Lambda, consultez AddPermission et Utilisation de Lambda avec des événements planifiés dans le Guide du développeur AWS Lambda.

Autorisations Amazon SNS

Pour permettre à EventBridge de publier dans une rubrique Amazon SNS, utilisez les commandes aws sns get-topic-attributes et aws sns set-topic-attributes.

Note

Vous ne pouvez pas utiliser de blocs Condition dans les politiques de rubriques Amazon SNS pour EventBridge.

Pour ajouter les autorisations qui permettent à EventBridge de publier dans des rubriques SNS
  1. Pour afficher la liste des attributs d'une rubrique SNS, utilisez la commande suivante.

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

    L'exemple suivant montre le résultat d'une nouvelle rubrique 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. Utilisez un convertisseur de JSON en chaîne pour convertir la déclaration suivante en chaîne.

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

    Après avoir converti la déclaration en chaîne, elle se présente comme suit.

    {\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:region:account-id:topic-name\"}
  3. Ajoutez la chaîne que vous avez créée à l'étape précédente à la collection "Statement" à l'intérieur de l'attribut "Policy".

  4. Utilisez la commande aws sns set-topic-attributes pour définir la nouvelle politique.

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

Pour plus d'informations, consultez l'action SetTopicAttributes dans la Référence des API Amazon Simple Notification Service.

Autorisations Amazon SQS

Pour permettre à une règle EventBridge d'invoquer une file d'attente Amazon SQS, utilisez les commandes aws sqs get-queue-attributes et aws sqs set-queue-attributes.

Si la politique de la file d'attente SQS est vide, vous devez d'abord créer une politique et y ajouter la déclaration d'autorisations. La politique d'une nouvelle file d'attente SQS est vide.

Si la file d'attente SQS possède déjà une politique, vous devez copier la politique d'origine et la combiner avec une nouvelle déclaration pour y ajouter la déclaration d'autorisations.

Pour ajouter les autorisations qui permettent à des règles EventBridge d'invoquer une file d'attente SQS
  1. Pour afficher la liste des attributs d'une file d'attente SQS. A partir d'une invite de commande, entrez la commande suivante.

    aws sqs get-queue-attributes \ --queue-url https://sqs.region.amazonaws.com/account-id/queue-name \ --attribute-names Policy
  2. Ajoutez la déclaration suivante.

    { "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. Utilisez un convertisseur de JSON en chaîne pour convertir la déclaration précédente en chaîne. Après avoir converti la politique en chaîne, elle se présente comme suit.

    {\"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. Créez un fichier nommé set-queue-attributes.json avec le contenu suivant.

    { "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. Définissez l'attribut policy en utilisant le fichier set-queue-attributes.json que vous venez de créer en tant qu'entrée, comme dans la commande suivante.

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

Pour plus d'informations, consultez Exemples de politiques Amazon SQS dans le Guide du développeur Amazon Simple Queue Service.

Particularités pour EventBridge Pipes

EventBridge Pipes ne prend pas en charge les politiques basées sur les ressources et ne dispose pas d'API qui prennent en charge les conditions des politiques basées sur les ressources.