

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 les contacts et la gestion des versions des contacts
<a name="contacts.versioning"></a>

 AWS Ground Station prend en charge la mise à jour des contacts `SCHEDULED` dotés d'un [statut de `PASS` contact `PREPASS`](contacts.lifecycle.md#contact-statuses), ou. Vous pouvez utiliser l'[UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)API pour spécifier une dérogation aux éphémérides pour un contact (y compris les données de suivi azimut/élévation, OEM ou TLE) sans l'annuler ni le replanifier. Cela est utile pour les opérations de satellites géosynchrones (GEO) où vous devez rediriger une antenne vers un autre satellite lors d'un contact, ou pour le lancement et les premières opérations (LEOPs) où des ajustements de pointage sont nécessaires. 

 Chaque fois que vous réservez ou mettez à jour un contact, une nouvelle version du contact est AWS Ground Station créée. Les versions de contact fournissent un historique des modifications apportées à un contact et vous permettent de suivre l'état de chaque mise à jour. 

## Comment fonctionne la gestion des versions des contacts
<a name="contacts.versioning.how-it-works"></a>

 Lorsque vous appelez [ReserveContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ReserveContact.html), AWS Ground Station crée la première version du contact (version 1) et la renvoie `versionId` dans la réponse. Chaque appel suivant [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)crée une nouvelle version avec un numéro de version incrémenté. 

 L'[DescribeContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContact.html)API renvoie la [version du `ACTIVE` contact](#contacts.versioning.version-statuses) actuel, y compris les informations de version dans le `version` champ de la réponse. L'[ListContacts](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContacts.html)API inclut également des informations de version pour chaque contact. 

 Pour consulter une version spécifique d'un contact, utilisez l'[DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)API. Pour répertorier toutes les versions d'un contact, utilisez l'[ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)API. 

## Mettre à jour un contact
<a name="contacts.versioning.update-contact"></a>

 Vous pouvez appeler [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)lorsqu'un contact est dans l'état SCHEDULED, PREPASS ou PASS. L'API accepte les paramètres suivants : 
+ **contactId** — Identifiant du contact à mettre à jour.
+ **ClientToken** — Un jeton d'idempuissance qui garantit que la demande n'est traitée qu'une seule fois. Si vous réessayez une demande avec le même jeton client, AWS Ground Station renvoie la réponse d'origine sans effectuer à nouveau la mise à jour. Beaucoup génèrent AWS SDKs automatiquement un jeton client pour vous s'il n'en fournit pas un.
+ **TrackingOverrides** : nouvelle configuration de suivi pour le contact. Cela inclut les paramètres de piste du programme (azimut/élévation, TLE ou éphémérides OEM).
+ **SatelleARN** — L'ARN du satellite pour le contact. Lorsque vous modifiez le satellite cible ainsi que les paramètres de suivi du programme, indiquez l'ARN du nouveau satellite. Seuls les clients approuvés pour les angles de pointage azimut/altitude peuvent définir cette valeur sur null. Tous les autres clients doivent inclure l'ARN satellite du contact.

**Important**  
 L'`UpdateContact`API applique tous les paramètres de la demande. Tout paramètre omis ou défini explicitement sur null est traité comme une demande visant à effacer cette valeur, et non à la laisser inchangée. Par exemple, si vous fournissez `trackingOverrides` mais omettez`satelliteArn`, l'ARN du satellite est effacé. Assurez-vous d'inclure toutes les valeurs souhaitées dans chaque demande de mise à jour. 

 Vous pouvez changer de satellite cible lors d'un contact en fournissant un nouveau `satelliteArn` ainsi que le satellite correspondant`trackingOverrides`. Le nouveau satellite doit être visible depuis la station au sol pendant toute la durée du contact, car l'heure de début et de fin du contact ne change pas avec cette API. Le nouveau satellite doit également être embarqué à bord de la station au sol et disposer de la licence requise par le profil de mission. Le profil de mission du contact ne pouvant pas être modifié, le changement de satellite n'est applicable que lorsque les deux satellites utilisent le même profil de mission. 

**Important**  
 L'`UpdateContact`API ne permet pas de modifier l'heure de début, l'heure de fin ou le profil de mission d'un contact. Pour modifier ces valeurs, annulez le contact et réservez-en un nouveau. L'`UpdateContact`API est conçue pour redéfinir la configuration de pointage de l'antenne, par exemple pour passer d'un satellite à un autre ou mettre à jour les données d'éphémérides. 

**Important**  
 L'`UpdateContact`API ne prend pas en charge les contacts dont le profil de mission utilise des [Config de décodage/démodulation des signaux d’antenne de liaison descendante](how-it-works.config.md#how-it-works.config-antenna-downlink-demod-decode) configurations. Pour modifier la configuration de ces contacts, annulez-les et réservez-en un nouveau. 

 L'`UpdateContact`API renvoie le `contactId` et le nouveau`versionId`. La mise à jour est traitée de manière asynchrone. Permet [DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)de vérifier l'état de la mise à jour. Certains AWS SDKs AWS Command Line Interface proposent un `ContactUpdated` serveur qui interroge jusqu'à ce que la version atteigne le statut ACTIVE ou FAILED\_TO\_UPDATE. 

**Note**  
 Une seule mise à jour peut être en cours à la fois. Si la dernière version du contact est en état UPDATING, l'API renvoie un`ConflictException`. Attendez que la mise à jour en cours atteigne le statut ACTIVE ou FAILED\_TO\_UPDATE avant de soumettre une autre mise à jour. 

## Statuts des versions de contact
<a name="contacts.versioning.version-statuses"></a>

Chaque version de contact possède l'un des statuts suivants :


| Statut | Description | 
| --- | --- | 
| MISE À JOUR | La version est appliquée au contact. La mise à jour a été soumise et est en cours de traitement par AWS Ground Station. | 
| ACTIF | La version est la configuration actuellement active pour le contact. La station au sol utilise les paramètres de cette version. | 
| REMPLACÉE | La version était auparavant active mais a été remplacée par une version plus récente. | 
| ÉCHEC DE LA MISE À JOUR | La mise à jour n'a pas pu être appliquée. Le contact revient à la version précédemment active. Vérifiez les failureMessage champs failureCodes et pour plus de détails. | 

## Exemples de code
<a name="contacts.versioning.examples"></a>

 Les exemples suivants montrent comment utiliser le versionnement des contacts APIs avec le AWS SDK pour Python (Boto3). 

### Exemple : mise à jour d'un contact
<a name="contacts.versioning.examples.update-contact"></a>

 L'exemple suivant met à jour un contact avec de nouvelles dérogations de suivi et attend que la mise à jour soit terminée à l'aide du serveur `ContactUpdated` Boto3. 

```
import boto3
import uuid

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# The contact ID of an existing scheduled contact to update
contact_id = "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

# Generate a unique client token for idempotency.
# If you retry the same request with the same client token,
# the API returns the same response without creating a duplicate version.
client_token = str(uuid.uuid4())

# Update the contact to use a different TLE ephemeris for tracking.
# The UpdateContact API applies all parameters in the request.
# Any parameter set to null is treated as a request to clear that value,
# not to leave it unchanged. Include all desired values in each request.
print(f"Updating contact {contact_id}...")

update_response = ground_station_client.update_contact(
    contactId=contact_id,
    clientToken=client_token,
    satelliteArn="arn:aws:groundstation::111122223333:satellite/a88611b0-f755-404e-b60d-57d8aEXAMPLE",
    trackingOverrides={
        "programTrackSettings": {
            "tle": {"ephemerisId": "b2c3d4e5-6789-01ab-cdef-EXAMPLE22222"}
        }
    },
)

contact_id = update_response["contactId"]
version_id = update_response["versionId"]
print(f"Update submitted. Contact: {contact_id}, Version: {version_id}")

# Wait for the update to complete using the ContactUpdated waiter.
# The waiter polls DescribeContactVersion until the version reaches
# ACTIVE (success) or FAILED_TO_UPDATE (failure) status.
# The waiter raises WaiterError if the version reaches FAILED_TO_UPDATE
# or if MaxAttempts is exceeded, so we use try/except to handle both cases.
print("Waiting for update to complete...")

from botocore.exceptions import WaiterError

waiter = ground_station_client.get_waiter("contact_updated")

try:
    waiter.wait(
        contactId=contact_id,
        versionId=version_id,
        WaiterConfig={
            "Delay": 5,
            "MaxAttempts": 180,
        },
    )
    print(f"Contact updated successfully. Version {version_id} is now active.")
except WaiterError as e:
    # WaiterError is raised when the version reaches FAILED_TO_UPDATE
    # or when MaxAttempts is exceeded. Retrieve the current version to inspect.
    version_response = ground_station_client.describe_contact_version(
        contactId=contact_id,
        versionId=version_id,
    )
    version_status = version_response["version"]["status"]
    if version_status == "FAILED_TO_UPDATE":
        failure_codes = version_response["version"].get("failureCodes", [])
        failure_message = version_response["version"].get("failureMessage", "")
        print(f"Update failed. Codes: {failure_codes}, Message: {failure_message}")
    else:
        print(f"Waiter timed out. Current version status: {version_status}. Error: {e}")
```

### Exemple : décrire une version de contact
<a name="contacts.versioning.examples.describe-contact-version"></a>

 L'exemple suivant permet de récupérer les détails d'une version de contact spécifique, notamment son statut, sa configuration et toute information relative à une défaillance. 

```
import boto3

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

contact_id = "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
version_id = 2

# Describe a specific version of a contact.
# Use this API to check the status of an update or to view the
# configuration that was active at a specific point in time.
print(f"Describing version {version_id} of contact {contact_id}...")

response = ground_station_client.describe_contact_version(
    contactId=contact_id,
    versionId=version_id,
)

# Display version details
version = response["version"]
print(f"Version ID: {version['versionId']}")
print(f"Status: {version['status']}")
print(f"Created: {version.get('created', 'N/A')}")

if version.get("activated"):
    print(f"Activated: {version['activated']}")

if version.get("superseded"):
    print(f"Superseded: {version['superseded']}")

# Display contact details for this version
print(f"\nContact ID: {response['contactId']}")
print(f"Contact Status: {response['contactStatus']}")
print(f"Ground Station: {response['groundStation']}")
print(f"Start Time: {response['startTime']}")
print(f"End Time: {response['endTime']}")

if response.get("satelliteArn"):
    print(f"Satellite ARN: {response['satelliteArn']}")

if response.get("trackingOverrides"):
    print(f"Tracking Overrides: {response['trackingOverrides']}")

# Check for failure details if the version failed to update
if version["status"] == "FAILED_TO_UPDATE":
    failure_codes = version.get("failureCodes", [])
    failure_message = version.get("failureMessage", "")
    print(f"\nFailure Codes: {failure_codes}")
    print(f"Failure Message: {failure_message}")
```

### Exemple : Répertorier les versions des contacts
<a name="contacts.versioning.examples.list-contact-versions"></a>

 L'exemple suivant répertorie toutes les versions d'un contact pour afficher l'historique complet des modifications, en utilisant la pagination pour gérer de grands ensembles de résultats. 

```
import boto3

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

contact_id = "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

# List all versions of a contact to view the full history of changes.
# Results are paginated. Use the nextToken to retrieve additional pages.
print(f"Listing versions for contact {contact_id}...")

paginator = ground_station_client.get_paginator("list_contact_versions")
page_iterator = paginator.paginate(
    contactId=contact_id,
    PaginationConfig={
        "MaxItems": 100,
        "PageSize": 20,
    },
)

for page in page_iterator:
    for version in page["contactVersionsList"]:
        version_id = version["versionId"]
        status = version["status"]
        created = version.get("created", "N/A")

        print(f"  Version {version_id}: status={status}, created={created}")

        if version.get("activated"):
            print(f"    Activated: {version['activated']}")

        if version.get("superseded"):
            print(f"    Superseded: {version['superseded']}")

        if status == "FAILED_TO_UPDATE":
            failure_codes = version.get("failureCodes", [])
            failure_message = version.get("failureMessage", "")
            print(f"    Failure Codes: {failure_codes}")
            print(f"    Failure Message: {failure_message}")

        if status == "UPDATING":
            print(f"    Update is currently in progress.")
```

## Considérations
<a name="contacts.versioning.considerations"></a>
+  Les contacts créés avant l'introduction de la fonctionnalité de gestion des versions des contacts ne disposent pas d'informations de version. Le fait [DescribeContactVersion[ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)d'appeler ou de contacter ces contacts renvoie un`ResourceNotFoundException`. 
+  Lorsque vous mettez à jour les dérogations de suivi d'un contact en cours, il y a une brève période de transition pendant laquelle l'antenne s'adapte à la nouvelle configuration de pointage. Pendant ce temps, la réception ou la transmission du signal peuvent être interrompues. 
+  Les versions de contact ne peuvent pas être supprimées. Permet [ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)d'afficher l'historique complet des modifications apportées à un contact. 
+  L'`UpdateContact`API ne peut être appelée qu'à partir de la région de planification du contact. 