

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.

# Mettre à jour, suspendre et reprendre un abonné
<a name="eb-custom-bus-update"></a>

`UpdateSubscriber`change un abonné en place. Un membre de niveau supérieur que vous omettez conserve sa valeur stockée ; un objet de configuration que vous fournissez remplace l'objet stocké dans son intégralité. Par conséquent, pour modifier un filtre, transmettez le filtre complet `FilterConfiguration` à chaque filtre que vous souhaitez conserver. Pour suspendre un abonné, passez `--state STOPPED` ; pour reprendre, passez `--state RUNNING` avec un`--resume-position`.

## Ce que vous pouvez changer
<a name="eb-custom-bus-update-properties"></a>

La requête suivante remplace l'ensemble `InvokeConfiguration` de l'abonné. Elle nomme donc le rôle et tous les paramètres cibles que l'abonné doit conserver. `TargetArn`ne fait pas partie de la mise à jour ; la cible d'un abonné ne peut pas changer.

```
{
    "SubscriberArn": "arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890",
    "InvokeConfiguration": {
        "RoleArn": "arn:aws:iam::111122223333:role/NewSubscriberTargetRole",
        "SqsParameters": {
            "MessageGroupId": "{% $events.Data.customerId %}"
        }
    }
}
```

Le tableau suivant répertorie chaque membre de la demande et explique comment le fournir.


| Demander un membre | Effet | 
| --- | --- | 
| Description | Remplace la description. Une valeur vide ou vide l'efface. | 
| State | Déplace l'abonné entre RUNNING et STOPPED ; voir [Suspension et reprise](#eb-custom-bus-update-pause) | 
| ResumePosition | Où une RUNNING transition STOPPED vers une reprise | 
| InvokeConfiguration | Remplace le rôle de diffusion et les paramètres cibles. TargetArnreste tel quel. | 
| FilterConfiguration | Conserve, efface ou remplace l'ensemble de la configuration du filtre ; voir [Mettre à jour les filtres](#eb-custom-bus-update-filters) | 
| BatchConfiguration | Remplace l'ensemble de la configuration de traitement par lots | 
| Transformer | Remplace l'ensemble du transformateur. Définissez sur Type pour RAW supprimer une métadonnée ou un transformateur JSonata. | 
| RetryPolicy | Remplace l'ensemble de la politique relative aux nouvelles tentatives. Un membre omis prend sa valeur par défaut : 5 nouvelles tentatives, 300 secondes, et la seule valeur RetryStrategyALL, qui réessaie chaque catégorie d'échec. | 
| OnFailureConfiguration | Remplace l'ensemble de la configuration en cas de défaillance. Envoyer {} pour supprimer la destination ; en l'absence de destination, un événement est abandonné lorsque ses nouvelles tentatives sont épuisées. | 
| LogConfiguration | Remplace l'ensemble de la configuration de journalisation. Envoyer {} pour rétablir les valeurs par défaut, Level OFF et IncludePayloadON\_ERROR\_ONLY, qui désactive la journalisation des livraisons. | 

`Name`,`EventBusArn`,, `Type` `StartingPosition``PointInTimeConfiguration`, et `TargetArn` identifiez l'abonné ou fixez son point de départ et ne peut pas être modifié ; les balises changent via `TagResource` et`UntagResource`. La réponse de mise à jour contient l'identité, l'état, la position de départ de l'abonné et `LastModifiedTime` permet de relire la configuration avec`DescribeSubscriber`.

Une mise à jour ne modifie jamais la position de l'abonné dans le bus : elle ne revient pas en arrière, ne saute pas et ne rejoue pas. Pour rediffuser les événements passés dans une nouvelle configuration, créez plutôt un nouvel abonné avec une position de départ ; voir[Rediffusion des événements enregistrés à un abonné](eb-custom-bus-replay.md).

## Résolution des problèmes : une mise à jour a effacé les paramètres que vous n'aviez pas modifiés
<a name="eb-custom-bus-update-cleared"></a>

Une mise à jour remplace chaque objet de configuration que vous fournissez dans son ensemble ; voir[Ce que vous pouvez changer](#eb-custom-bus-update-properties).

Symptôme  
Après une mise à jour, un filtre, un paramètre de journal, une limite de nouvelles tentatives ou une période de rétention que vous n'avez pas touchés sont rétablis à leur valeur par défaut et aucune erreur n'a été renvoyée.

Cause  
Une mise à jour laisse un membre de niveau supérieur omis inchangé mais remplace l'ensemble d'un bloc fourni. Une mise à jour `FilterConfiguration` réussie `LogConfiguration` ou `RetryPolicy` visant `StorageConfiguration` à modifier un champ efface les autres champs du bloc. Une source d'événements mise à jour `Pattern` sans retour sans aucun modèle, ce qui l'élargit à chaque événement.

Solution  
Lisez la ressource, modifiez l'ensemble du bloc, réécrivez le bloc entier, puis relisez-le. La relecture est la seule confirmation, car les réponses de création et de mise à jour ne font pas écho à tous les champs.  

```
aws eventsv2 describe-subscriber --subscriber-arn "$SUBSCRIBER_ARN" --query 'LogConfiguration'

aws eventsv2 update-subscriber --subscriber-arn "$SUBSCRIBER_ARN" \
    --log-configuration '{ "Level": "INFO", "IncludePayload": "FULL" }'

aws eventsv2 describe-subscriber --subscriber-arn "$SUBSCRIBER_ARN" --query 'LogConfiguration'
```

Vérification  
La deuxième description montre chaque champ du bloc avec les valeurs que vous vouliez.

## Mettre à jour les filtres
<a name="eb-custom-bus-update-filters"></a>

Pour remplacer les filtres, transmettez un `FilterConfiguration` dont la `Filters` liste contient tous les filtres que l'abonné devrait avoir ; EventBridge combine les filtres pour différentes étendues avec ET. Pour supprimer tous les filtres, passez `FilterConfiguration` sous`{}`.


| Demande | Résultat | 
| --- | --- | 
| FilterConfigurationomis | Les filtres enregistrés restent | 
| FilterConfiguration est {} | Chaque filtre stocké est supprimé | 
| Filtersest une liste non vide | La liste est validée et remplace l'ensemble de la configuration du filtre | 
| Filtersest une liste vide, ou Language est donnée sans Filters | InvalidInputException; une alimentation FilterConfiguration doit contenir au moins un filtre | 

Les changements de filtre sont limités à 24 par abonné par période de 24 heures consécutives. Seule une modification de l'ensemble des étendues et des modèles compte ; le fait de soumettre à nouveau une version identique `FilterConfiguration` ne compte pas. Le 25e changement échoue avec`FILTER_CHANGE_LIMIT_EXCEEDED`. Cette limite n'est pas un quota de service et ne peut pas être augmentée. Par conséquent, une conception qui réécrit les filtres en permanence devrait plutôt publier la valeur variable dans l'événement et ne filtrer qu'une seule fois cette valeur.

## Quelle configuration utilise un événement déjà correspondant
<a name="eb-custom-bus-update-inflight"></a>

EventBridge associe un événement à un abonné et le diffuse à différents moments, et il enregistre la version des filtres correspondant à chaque événement. Une mise à jour qui modifie la correspondance des filtres crée une nouvelle version du filtre et EventBridge stocke les paramètres du transformateur et de la cible avec celle-ci. Un événement mis en correspondance avant la modification est fourni avec l'ancien transformateur et les paramètres cibles ; un événement mis en correspondance après avoir utilisé les nouveaux paramètres. Il en va de même après l'arrêt et la reprise d'un abonné.


| Mise à jour du filtre | Crée une nouvelle version de filtre | 
| --- | --- | 
| Modifier un schéma | Oui | 
| Modifier les scopes dotés d'un filtre | Oui | 
| Ajouter le premier filtre | Oui | 
| Effacer tous les filtres | Oui, quand les filtres étaient stockés | 
| Réorganisation des filtres équivalents | Non | 
| Modification uniquement Language | Non | 

Ainsi, lorsqu'un filtre et un transformateur ou un paramètre cible forment un même comportement, modifiez-les dans la même requête. La demande suivante associe un nouveau `DATA` filtre au transformateur écrit pour celui-ci, de sorte qu'aucun événement n'est fourni avec une paire non concordante.

```
{
    "SubscriberArn": "arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890",
    "FilterConfiguration": {
        "Filters": [
            { "Scope": "DATA", "Pattern": "{\"type\":[\"priority\"]}" }
        ]
    },
    "Transformer": {
        "Type": "JSONATA",
        "JsonataConfiguration": {
            "Expression": "{% {\"version\": 2, \"event\": $events.Data} %}"
        }
    }
}
```

Une mise à jour qui modifie uniquement le transformateur ou les paramètres cibles ne crée aucune version de filtre. Une fois qu'elle s'est propagée, la nouvelle configuration s'applique aux événements en attente de livraison et aux nouvelles tentatives ultérieures. Le rôle de diffusion, la politique de nouvelle tentative, la destination en cas d'échec, le traitement par lots et la configuration de journalisation prennent toujours les dernières valeurs propagées, quelle que soit la version correspondant à l'événement. Comme il est EventBridge possible d'évaluer à nouveau les paramètres du transformateur et de la cible en cas de nouvelle tentative, une fonction JSonata dépendante du temps ou non déterministe `$now()` peut produire un résultat différent à chaque tentative ; ne supposez pas qu'une nouvelle demande contient des octets identiques.

`UpdateSubscriber`stocke la modification avant son retour, et les composants de diffusion la récupèrent après un délai de propagation, pendant lequel les événements peuvent toujours utiliser la configuration précédente. `DescribeSubscriber`confirme ce qui est enregistré, et non pas que tous les composants ont été commutés. Après une mise à jour, publiez un événement de test et vérifiez la charge utile cible avant de vous fier au nouveau comportement.

La création ou la suppression d'un seul abonné s'exécute à la fois sur un bus, pour chaque compte qui l'utilise ; un appel simultané échoue avec`ConcurrentModificationException`. Réessayez.

## Suspension et reprise
<a name="eb-custom-bus-update-pause"></a>

Un abonné livre uniquement pendant qu'`State`il est`RUNNING`. Réglez-le sur pause ; les événements continuent de s'accumuler dans le bus, limités par la rétention. `STOPPED` Lorsque vous le remettez à`RUNNING`, `ResumePosition` décide de ce qu'il adviendra de l'arriéré.
+ `LAST_PROCESSED`, valeur par défaut : continuer à partir de l'endroit où la diffusion s'est arrêtée, de sorte que chaque événement publié alors que l'abonné était arrêté soit diffusé, le plus ancien en premier.
+ `LATEST`: évitez le backlog et ne diffusez que les événements publiés à partir de maintenant. Un abonné qui rejoue ne peut pas l'utiliser : une rediffusion illimitée est toujours en train de rattraper son retard, et une rediffusion limitée n'atteint jamais les événements en direct.

```
aws eventsv2 update-subscriber \
    --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890 \
    --state STOPPED

aws eventsv2 update-subscriber \
    --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890 \
    --state RUNNING \
    --resume-position LAST_PROCESSED
```

`ResumePosition`n'est accepté que pour l'appel qui déplace l'état de `STOPPED` à`RUNNING`. Lors de cet appel EventBridge , le point de terminaison de distribution de l'abonné est à nouveau détectable ; si cette étape échoue, l'appel est renvoyé`InternalException`, rien n'est enregistré et l'abonné reste`STOPPED`, alors réessayez de faire la demande. Un abonné que le propriétaire du bus a révoqué ne livre dans aucun des États ; voir[Révocation d'un abonné ou d'une source d'événement](eb-custom-bus-access-revoke.md).

## Erreurs qu'une mise à jour peut renvoyer
<a name="eb-custom-bus-update-errors"></a>

EventBridge valide la configuration mise à jour par rapport au type de cible stocké de l'abonné, de sorte qu'un `SqsParameters` bloc sur un abonné dont la cible est une fonction Lambda est rejeté.


| Condition | Erreur | 
| --- | --- | 
| L'abonné n'existe pas | ResourceNotFoundException | 
| L'abonné est révoqué | InvalidStateException | 
| La demande comporte plusieurs blocs de paramètres cibles | InvalidInputException | 
| Les paramètres de cible ne correspondent pas au type de cible enregistré | InvalidInputException | 
| Le transformateur n'est pas pris en charge pour la cible | InvalidInputException | 
| Une expression JSonata n'est pas valide | InvalidInputException | 
| Une valeur de lot est en dehors des limites de la cible | InvalidInputException | 