

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
<a name="eb-use-resource-based"></a>

Lorsqu'une [règle](eb-rules.md) s'exécute EventBridge, toutes les [cibles](eb-targets.md) 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 Amazon CloudWatch Logs, EventBridge utilise des politiques basées sur les ressources. Pour les ressources Lambda, Amazon SNS et Amazon SQS, vous pouvez utiliser un rôle d'exécution IAM ou une politique basée sur les ressources EventBridge . Pour les flux Kinesis, EventBridge utilise des politiques basées sur l'[identité](eb-use-identity-based.md).

**Important**  
Pour les cibles Amazon CloudWatch Logs, ne spécifiez pas de `RoleArn` dans la configuration 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:InvokeFunction`, ou). `sns:Publish` `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 les utilisez AWS CLI pour ajouter des autorisations à vos cibles. Pour plus d'informations sur l'installation et la configuration du AWS CLI, voir [Getting Set Up with the AWS Command Line Interface dans le](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) *guide de AWS Command Line Interface l'utilisateur*.

**Topics**
+ [Autorisations Amazon API Gateway](#eb-api-gateway-permissions)
+ [CloudWatch Autorisations de journalisation](#eb-cloudwatchlogs-permissions)
+ [AWS Lambda des autorisations](#eb-lambda-permissions)
+ [Autorisations Amazon SNS](#eb-sns-permissions)
+ [Autorisations Amazon SQS](#eb-sqs-permissions)
+ [EventBridge Spécificités des tuyaux](#eb-pipes-identity-diff)

## Autorisations Amazon API Gateway
<a name="eb-api-gateway-permissions"></a>

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 Autorisations de journalisation
<a name="eb-cloudwatchlogs-permissions"></a>

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 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](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutResourcePolicy.html)de référence de l'API CloudWatch Logs*.

## AWS Lambda des autorisations
<a name="eb-lambda-permissions"></a>

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'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 [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)des événements planifiés](https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html) dans le manuel du développeur.AWS Lambda *

## Autorisations Amazon SNS
<a name="eb-sns-permissions"></a>

 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:SourceAccount\":\"{{account-id}}\"}}}]}", 
           "TopicArn": "arn:aws:sns:{{region}}:{{account-id}}:{{topic-name}}", 
           "SubscriptionsPending": "0"
       }
   }
   ```

1. Utilisez un [convertisseur de JSON en chaîne](https://tools.knowledgewalls.com/jsontostring) 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}}\"}
   ```

1. Ajoutez la chaîne que vous avez créée à l’étape précédente à la collection `"Statement"` à l’intérieur de l’attribut `"Policy"`.

1. 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'[SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)action dans le manuel *Amazon Simple Notification Service API Reference*.

## Autorisations Amazon SQS
<a name="eb-sqs-permissions"></a>

Pour autoriser une EventBridge règle à 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 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
   ```

1. 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}}"
           }
         }
       }
   ```

1. Utilisez un [convertisseur de JSON en chaîne](https://tools.knowledgewalls.com/jsontostring) 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}}\"}}
   ```

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

1. 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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSExamples.html) dans le *Guide du développeur Amazon Simple Queue Service*.

## EventBridge Spécificités des tuyaux
<a name="eb-pipes-identity-diff"></a>

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 les points de terminaison VPC d'interface](eb-related-service-vpc.md).