View a markdown version of this page

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

Lorsqu'une règle est exécutée EventBridge, toutes les cibles associées à la règle sont invoquées. Les règles peuvent invoquer AWS Lambda des fonctions, publier sur des rubriques Amazon SNS ou relayer l'événement vers Kinesis Streams. Pour effectuer des appels d'API sur les ressources que vous possédez, vous EventBridge devez disposer des autorisations appropriées. Pour les ressources Amazon CloudWatch Logs, EventBridge utilise des politiques basées sur les ressources. Pour les ressources Lambda, Amazon SNS et Amazon SQS, EventBridge vous pouvez utiliser un rôle d'exécution IAM ou une politique basée sur les ressources. Pour Kinesis Streams, EventBridge utilise des politiques basées sur l'identité.

Important

Pour les cibles Amazon CloudWatch Logs, ne spécifiez pas de a RoleArn dans la configuration de la cible. Pour les cibles Lambda, Amazon SNS et Amazon SQS, vous pouvez utiliser un rôle d'exécution IAM ou une politique basée sur les ressources. Si vous spécifiez un RoleArn pour les cibles Lambda, Amazon SNS ou Amazon SQS, assurez-vous que le rôle dispose des autorisations requises (par exemple, lambda:InvokeFunctionsns:Publish, ou). sqs:SendMessage Si aucun rôle d'exécution n'est configuré, EventBridge utilise des politiques basées sur les ressources sur la ressource cible.

Vous utilisez le AWS CLI pour ajouter des autorisations à vos cibles. Pour plus d'informations sur l'installation et la configuration de AWS CLI, reportez-vous à la section Configuration AWS Command Line Interface à l'aide du guide de l'AWS Command Line Interface utilisateur.

Autorisations Amazon API Gateway

Pour appeler votre point de terminaison Amazon API Gateway à l'aide d'une EventBridge règle, ajoutez l'autorisation suivante à la politique de votre point de terminaison API Gateway.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "execute-api:Invoke", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:us-east-1:123456789012:rule/rule-name" } }, "Resource": [ "arn:aws:execute-api:us-east-1:123456789012:API-id/stage/GET/api" ] } ] }

CloudWatch Consigne les autorisations

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

Si vous utilisez le Console de gestion AWS pour ajouter CloudWatch des journaux comme cible d'une règle, la politique basée sur les ressources est créée automatiquement. Si vous utilisez le AWS CLI pour ajouter la cible et que la politique n'existe pas encore, vous devez la créer.

L'exemple de politique basée sur les ressources suivant permet EventBridge d'écrire dans tous les groupes de journaux dont le nom commence par. /aws/events/ Si vous utilisez une politique de dénomination différente pour ces types de journaux, ajustez l'ARN de la ressource en conséquence.

{ "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/*:*" }
Pour créer une politique de ressources pour les CloudWatch journaux à l'aide du AWS CLI
  • A partir d'une invite de commande, entrez la commande suivante.

    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/*:*"}]}'

Pour plus d'informations, consultez le guide PutResourcePolicy de référence de l'API CloudWatch Logs.

AWS Lambda des autorisations

Pour appeler votre AWS Lambda fonction à l'aide d'une EventBridge règle, ajoutez l'autorisation suivante à la politique de votre fonction Lambda.

Note

Vous pouvez également configurer un rôle d'exécution IAM sur la cible avec lambda:InvokeFunction autorisation. Resource-based les politiques ne sont requises que lorsqu'aucun rôle d'exécution n'est configuré sur la cible.

{ "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 les autorisations ci-dessus qui permettent d' EventBridge invoquer des fonctions Lambda à l'aide du 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 des autorisations permettant d' EventBridge invoquer des fonctions Lambda, consultez AddPermission la section Utilisation de Lambda avec des événements planifiés dans le Guide du AWS Lambda développeur.

Autorisations Amazon SNS

EventBridge Pour autoriser la publication sur une rubrique Amazon SNS, utilisez les aws sns set-topic-attributes commandes aws sns get-topic-attributes et.

Pour ajouter des autorisations permettant de EventBridge publier des sujets 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:SourceAccount\":\"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:SourceAccount\":\"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'SetTopicAttributesaction dans le manuel Amazon Simple Notification Service API Reference.

Autorisations Amazon SQS

Pour autoriser une EventBridge règle à invoquer une file d'attente Amazon SQS, utilisez les commandes aws sqs get-queue-attributes etaws 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 des autorisations permettant aux EventBridge règles 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.

EventBridge Spécificités des tuyaux

EventBridge Pipes ne prend pas en charge les politiques basées sur les ressources et ne possède aucune API prenant en charge les conditions de politique basées sur les ressources.

Toutefois, si vous configurez l'accès au canal via un point de terminaison VPC d'interface, ce point de terminaison VPC prend en charge les politiques de ressources qui vous permettent de gérer l'accès aux API EventBridge Pipe. Pour de plus amples informations, veuillez consulter Utilisation d'Amazon EventBridge avec les points de terminaison VPC d'interface.