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 s'exécute EventBridge, toutes les cibles associées à la règle sont invoquées. Les règles peuvent appeler 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 Lambda, Amazon SNS, Amazon SQS et CloudWatch Amazon Logs, utilise des politiques basées sur les ressources. EventBridge Pour les flux Kinesis, EventBridge utilise des politiques basées sur l'identité.

Vous les utilisez AWS CLI pour ajouter des autorisations à vos cibles. Pour plus d'informations sur l'installation et la configuration du AWS CLI, reportez-vous à la section Getting Set Up with the AWS Command Line Interface dans le guide de AWS Command Line Interface l'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.

{ "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 Autorisations de journalisation

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 de consigner les événements, CloudWatch les journaux doivent inclure une politique basée sur les ressources qui permet d' EventBridge écrire dans les CloudWatch journaux.

Si vous utilisez le AWS Management Console 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 suivant permet EventBridge d'é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 le guide PutResourcePolicyde référence de l'API CloudWatch Logs.

AWS Lambda autorisations

Pour appeler votre AWS Lambda fonction à l'aide d'une EventBridge règle, 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 les autorisations ci-dessus qui permettent d'invoquer EventBridge 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 EventBridge permettant d'invoquer des fonctions Lambda, consultez la section Utilisation de Lambda avec AddPermissiondes événements planifiés dans le manuel du développeur.AWS Lambda

Autorisations Amazon SNS

EventBridge Pour autoriser la publication sur 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 Condition blocs dans les politiques des rubriques Amazon SNS pour. EventBridge

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: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'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 aux canaux 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 de canal. EventBridge Pour de plus amples informations, veuillez consulter Utilisation d'Amazon EventBridge avec des points de terminaison VPC d'interface .