

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.

# Création de ressources Event Bus personnalisées avec CloudFormation
<a name="eb-custom-bus-cloudformation"></a>

Vous pouvez créer un bus, ses abonnés, ses sources d'événements et sa politique de ressources à partir d'un CloudFormation modèle. Les types de ressources se trouvent dans l'espace de `AWS::EventsV2` noms. Les `AWS::Events` types appartiennent à Custom Event Bus - Classic et ne peuvent pas configurer de bus d'événements personnalisé.

## Les types de ressources
<a name="eb-custom-bus-cloudformation-types"></a>
+ `AWS::EventsV2::EventBus`est un bus, y compris sa durée de conservation et sa clé de chiffrement. Cela nécessite`Name`.
+ `AWS::EventsV2::Subscriber`est un abonné sur un bus : ses filtres, sa transformation, sa politique de nouvelles tentatives et sa cible unique. Elle nécessite `Name``EventBusArn`, et`InvokeConfiguration`, qui elle-même nécessite `TargetArn` et`RoleArn`.
+ `AWS::EventsV2::EventSource`est un flux géré d'événements de AWS service ou d'événements partenaires dans un bus. Cela nécessite `Name``EventBusArn`, et`Configuration`. Consultez [Sources d'événements pour un bus événementiel personnalisé](eb-custom-bus-event-sources.md).
+ `AWS::EventsV2::ResourcePolicy`est la politique de ressources d'un bus qui existe déjà. Cela nécessite `EventBusArn` et`PolicyDocument`. Consultez [Contrôle d'accès pour le Custom Event Bus](eb-custom-bus-access.md).

L'abonné `RoleArn` doit nommer un rôle sur le même compte que lui. Un bus partagé entre plusieurs comptes est donc constitué de plusieurs piles : le bus du compte du propriétaire, le bus de la cible, le rôle de distribution et l'abonné de chaque compte consommateur.

## Exemple : un bus, une file d'attente et un abonné
<a name="eb-custom-bus-cloudformation-example"></a>

Le modèle suivant crée un bus qui conserve les événements pendant sept jours, une file d'attente Amazon SQS, une file d'attente de lettres mortes, un rôle de livraison et un abonné qui livre les commandes de plus de 500 dans la file d'attente. CloudFormation crée le rôle et les files d'attente avant l'abonné, car celui-ci y fait référence par`Fn::GetAtt`. La période de conservation détermine depuis combien de temps un abonné peut commencer à lire ; voir[Rediffusion des événements enregistrés à un abonné](eb-custom-bus-replay.md).

```
AWSTemplateFormatVersion: '2010-09-09'

Resources:
  OrdersBus:
    Type: AWS::EventsV2::EventBus
    Properties:
      Name: orders
      Description: Order events for the fulfillment platform
      StorageConfiguration:
        RetentionPeriodInDays: 7

  OrdersQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: large-orders

  OrdersDeadLetterQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: large-orders-dlq

  DeliveryRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: EventBusDeliveryRole
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: events.amazonaws.com
            Action: sts:AssumeRole
      Policies:
        - PolicyName: DeliverToQueues
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action: sqs:SendMessage
                Resource:
                  - !GetAtt OrdersQueue.Arn
                  - !GetAtt OrdersDeadLetterQueue.Arn

  LargeOrders:
    Type: AWS::EventsV2::Subscriber
    Properties:
      Name: large-orders
      EventBusArn: !Ref OrdersBus
      FilterConfiguration:
        Filters:
          - Scope: DATA
            Pattern: '{"detail":{"total":[{"numeric":[">",500]}]}}'
      InvokeConfiguration:
        TargetArn: !GetAtt OrdersQueue.Arn
        RoleArn: !GetAtt DeliveryRole.Arn
      RetryPolicy:
        MaxRetryAttempts: 10
        MaxEventAgeInSeconds: 3600
      OnFailureConfiguration:
        Arn: !GetAtt OrdersDeadLetterQueue.Arn

Outputs:
  OrdersBusArn:
    Value: !Ref OrdersBus
    Export:
      Name: orders-bus-arn
```

Le rôle de distribution fait confiance au principal du `events.amazonaws.com` service et accorde des autorisations `sqs:SendMessage` sur les deux files d'attente. Sans la subvention dans la file d'attente, un échec de livraison ne peut pas être enregistré et rien n'est observable. L'identité qui déploie la pile doit également être définie `iam:PassRole` sur le rôle de distribution.

## Valeurs renvoyées
<a name="eb-custom-bus-cloudformation-returns"></a>

`Ref`renvoie l'identifiant principal de la ressource, un ARN. `Fn::GetAtt`renvoie les propriétés en lecture seule. Le tableau suivant répertorie les valeurs pour chaque type de ressource.


| Type de ressource | `Ref` renvoie | attributs `Fn::GetAtt` | 
| --- | --- | --- | 
| AWS::EventsV2::EventBus | EventBusArn | EventBusArn, State, CreationTime, LastModifiedTime | 
| AWS::EventsV2::Subscriber | SubscriberArn | SubscriberArn, BusName, CreationTime, LastModifiedTime | 
| AWS::EventsV2::EventSource | EventSourceArn | EventSourceArn, State, Revoked, CreationTime, LastModifiedTime | 
| AWS::EventsV2::ResourcePolicy | EventBusArn | RevisionId | 

La propriété d'un abonné `State` est une propriété que vous définissez, et non un attribut que vous lisez. Réglez-le sur `STOPPED` pour suspendre la livraison, puis revenez `RUNNING` sur pour reprendre. La valeur d'un bus `State` est en lecture seule et sa valeur réglée est. `ACTIVE`

## Propriétés qui remplacent la ressource
<a name="eb-custom-bus-cloudformation-replacement"></a>

Six propriétés d'abonné sont réservées à la création. Par conséquent, la modification de l'une d'entre elles dans un modèle remplace l'abonné : `Name``EventBusArn`,`InvokeConfiguration.TargetArn`, `Type``StartingPosition`, et. `PointInTimeConfiguration` Toutes les autres propriétés de l'abonné, y compris les filtres, la transformation, la politique de nouvelle tentative et la file d'attente de lettres mortes, sont mises à jour sur place.

**Important**  
Un remplacement d'abonné supprime l'ancien abonné avant de créer le nouveau. Aucun abonné n'existe entre les deux étapes. Le nouvel abonné commence alors par le sien `StartingPosition` et `LATEST` commence par les événements les plus récents, de sorte qu'il ne diffuse jamais les événements publiés pendant cette fenêtre. La modification d'un ARN cible, d'un type de commande ou d'une position de départ entraîne donc la suppression d'événements, sauf si vous planifiez l'écart.

Pour éviter cet écart, déployez deux fois. Ajoutez d'abord l'abonné de remplacement sous un nouvel identifiant logique et attendez qu'`State`il soit atteint`RUNNING`. Supprimez ensuite l'ancien abonné lors d'un second déploiement. Les deux abonnés livrent pendant le chevauchement, de sorte que la cible reçoit deux fois chaque événement correspondant ; utilisez cette approche uniquement lorsque les doublons sont acceptables.

Si vous ne pouvez pas déployer deux fois, définissez la valeur du `StartingPosition` nouvel abonné sur `POINT_IN_TIME` et `PointInTimeConfiguration` `PointType` attribuez un « A »`StartingPoint`, en secondes depuis l'ère Unix, avant le déploiement. `TIMESTAMP` L'abonné lit ensuite les événements qu'il a manqués, à condition qu'ils soient toujours dans la période de rétention du bus.

Sur un bus, only `Name` est réservé à la création, de sorte que la période de conservation, la description, la clé de cryptage et les balises sont toutes mises à jour sur place. Sur une source d'événements, `Name` uniquement sur une création, et sur une politique de ressources, `EventBusArn` c'est. `EventBusArn`

## Fait référence à un bus provenant d'une autre pile
<a name="eb-custom-bus-cloudformation-crossstack"></a>

Un abonné a besoin de l'ARN complet du bus, qui inclut l'identifiant généré par le service après le nom du bus. Stockez et transmettez l'ARN, pas le nom. Consultez [Noms, points de terminaison et autorisations IAM pour le bus d'événements personnalisé](eb-custom-bus-names.md).

Au sein d'un compte et d'une région, exportez l'ARN depuis la pile qui possède le bus, comme le montre l'exemple, et importez-le avec`EventBusArn: !ImportValue orders-bus-arn`. CloudFormation ne vous permet pas de modifier ou de supprimer une valeur exportée pendant qu'une autre pile l'importe. Renommer le bus le remplace et modifie son ARN, de sorte qu'un changement de nom échoue tant qu'une importation existe. Supprimez d'abord l'abonné importateur ou exportez sous un nouveau nom.

Une exportation ne peut pas être importée depuis un autre compte ou une autre région. Transmettez plutôt l'ARN du bus à la pile consommatrice en tant que paramètre de modèle. Le propriétaire du bus doit également accorder l'autorisation à l'autre compte sur le bus, ce que vous pouvez faire avec une politique de ressources ou avec AWS Resource Access Manager (AWS RAM). Consultez [Contrôle d'accès pour le Custom Event Bus](eb-custom-bus-access.md).