View a markdown version of this page

Kontakte und Kontaktversionierung aktualisieren - AWS Ground Station

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Kontakte und Kontaktversionierung aktualisieren

AWS Ground Station unterstützt die Aktualisierung von Kontakten mit dem PASS Kontaktstatus SCHEDULEDPREPASS, oder. Sie können die UpdateContactAPI verwenden, um eine Ephemeridenüberschreibung für einen Kontakt — einschließlich Azimut-/Höhendaten, OEM- oder TLE-Tracking-Daten — anzugeben, ohne den Kontakt zu stornieren und neu zu planen. Dies ist nützlich für geosynchrone Satellitenoperationen (GEO), bei denen Sie eine Antenne während eines Kontakts an einen anderen Satelliten weiterleiten müssen, oder für Start- und Early-Operations (), bei denen Anpassungen der Ausrichtung erforderlich sind. LEOPs

Jedes Mal, wenn Sie einen Kontakt reservieren oder aktualisieren, AWS Ground Station wird eine neue Kontaktversion erstellt. Kontaktversionen bieten eine Historie der an einem Kontakt vorgenommenen Änderungen und ermöglichen es Ihnen, den Status jeder Aktualisierung zu verfolgen.

So funktioniert die Versionierung von Kontakten

Wenn Sie anrufen ReserveContact, AWS Ground Station erstellt die erste Version des Kontakts (Version 1) und gibt das versionId in der Antwort zurück. Bei jedem nachfolgenden Aufruf von UpdateContactwird eine neue Version mit einer inkrementierten Versionsnummer erstellt.

Die DescribeContactAPI gibt die aktuelle ACTIVE Kontaktversion zurück, einschließlich der Versionsinformationen im version Antwortfeld. Die ListContactsAPI enthält auch Versionsinformationen für jeden Kontakt.

Verwenden Sie die DescribeContactVersionAPI, um eine bestimmte Version eines Kontakts anzuzeigen. Verwenden Sie die ListContactVersionsAPI, um alle Versionen eines Kontakts aufzulisten.

Einen Kontakt aktualisieren

Sie können anrufen UpdateContact, wenn sich ein Kontakt im Status SCHEDULED, PREPASS oder PASS befindet. Die API akzeptiert die folgenden Parameter:

  • contactId — Die Kennung des zu aktualisierenden Kontakts.

  • clientToken — Ein Idempotenz-Token, das sicherstellt, dass die Anfrage nur einmal verarbeitet wird. Wenn Sie eine Anfrage mit demselben Client-Token erneut versuchen, wird die ursprüngliche Antwort AWS Ground Station zurückgegeben, ohne die Aktualisierung erneut durchzuführen. Viele generieren AWS SDKs automatisch ein Client-Token für Sie, wenn keines bereitgestellt wird.

  • TrackingOverrides — Die neue Tracking-Konfiguration für den Kontakt. Dazu gehören Einstellungen für die Programmverfolgung (Azimut/Elevation, TLE oder OEM-Ephemeride).

  • SatellitEarn — Der ARN des Satelliten für den Kontakt. Wenn Sie den Zielsatelliten zusammen mit den Einstellungen für die Programmspur ändern, geben Sie den ARN des neuen Satelliten an. Nur Kunden, die für Azimut-/Elevationswinkel zugelassen sind, können diesen Wert auf Null setzen. Alle anderen Kunden müssen den Satelliten-ARN des Kontakts angeben.

Wichtig

Die UpdateContact API wendet alle Parameter in der Anfrage an. Jeder Parameter, der weggelassen oder explizit auf Null gesetzt wird, wird als Aufforderung behandelt, diesen Wert zu löschen und ihn nicht unverändert zu lassen. Wenn Sie beispielsweise angeben, trackingOverrides aber weglassensatelliteArn, wird der Satelliten-ARN gelöscht. Stellen Sie sicher, dass alle gewünschten Werte in jeder Aktualisierungsanforderung enthalten sind.

Sie können den Zielsatelliten während eines Kontakts ändern, indem Sie satelliteArn zusammen mit dem entsprechenden einen neuen angebentrackingOverrides. Der neue Satellit muss für die Dauer des Kontakts von der Bodenstation aus sichtbar sein, da sich die Start- und Endzeit des Kontakts mit dieser API nicht ändern. Der neue Satellit muss außerdem an der Bodenstation installiert sein und über die im Missionsprofil vorgeschriebene Lizenz verfügen. Das Missionsprofil des Kontakts kann nicht geändert werden, sodass ein Satellitenwechsel nur möglich ist, wenn beide Satelliten dasselbe Missionsprofil verwenden.

Wichtig

Die UpdateContact API unterstützt nicht das Ändern der Startzeit, Endzeit oder des Missionsprofils eines Kontakts. Um diese Werte zu ändern, stornieren Sie den Kontakt und reservieren Sie einen neuen. Die UpdateContact API wurde entwickelt, um die Konfiguration der Antennenausrichtung zu ändern, z. B. das Umschalten zwischen Satelliten oder das Aktualisieren von Ephemeridendaten.

Wichtig

Die UpdateContact API unterstützt keine Kontakte mit einem Missionsprofil, das Konfigurationen verwendet. Antennen-Downlink-Demod-Decode-Config Um die Konfiguration dieser Kontakte zu ändern, stornieren Sie den Kontakt und reservieren Sie einen neuen.

Die UpdateContact API gibt das contactId und das Neue zurückversionId. Das Update wird asynchron verarbeitet. Wird verwendet DescribeContactVersion, um den Status des Updates zu überprüfen. In einigen AWS SDKs Fällen gibt es einen AWS Command Line Interface ContactUpdated Kellner, der so lange fragt, bis die Version den Status ACTIVE oder FAILED_TO_UPDATE erreicht.

Anmerkung

Es kann jeweils nur ein Update ausgeführt werden. Wenn sich die neueste Kontaktversion im Status UPDATE befindet, gibt die API a zurückConflictException. Warten Sie, bis das aktuelle Update den Status ACTIVE oder FAILED_TO_UPDATE erreicht hat, bevor Sie ein weiteres Update einreichen.

Versionsstatus des Kontakts

Jede Kontaktversion hat einen der folgenden Status:

Status Description
WIRD AKTUALISIERT Die Version wird auf den Kontakt angewendet. Das Update wurde eingereicht und wird von bearbeitet AWS Ground Station.
ACTIVE Die Version ist die derzeit aktive Konfiguration für den Kontakt. Die Bodenstation verwendet die Einstellungen dieser Version.
SUPERSEDED Die Version war zuvor aktiv, wurde aber durch eine neuere Version ersetzt.
KONNTE NICHT AKTUALISIERT WERDEN Das Update konnte nicht angewendet werden. Der Kontakt kehrt zur zuvor aktiven Version zurück. Einzelheiten finden Sie in den failureMessage Feldern failureCodes und.

Codebeispiele

Die folgenden Beispiele zeigen, wie die Kontaktversionierung APIs mit dem AWS SDK for Python (Boto3) verwendet wird.

Beispiel: Einen Kontakt aktualisieren

Das folgende Beispiel aktualisiert einen Kontakt mit neuen Tracking-Overrides und wartet, bis die Aktualisierung mit dem ContactUpdated Boto3-Kellner abgeschlossen ist.

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}")

Beispiel: Beschreiben Sie eine Kontaktversion

Im folgenden Beispiel werden die Details einer bestimmten Kontaktversion abgerufen, einschließlich Status, Konfiguration und aller Fehlerinformationen.

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}")

Beispiel: Kontaktversionen auflisten

Das folgende Beispiel listet alle Versionen eines Kontakts auf, um den vollständigen Verlauf der Änderungen einzusehen. Bei großen Ergebnismengen wird Seitennummerierung verwendet.

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.")

Überlegungen

  • Kontakte, die vor der Einführung der Funktion zur Versionsverwaltung für Kontakte erstellt wurden, verfügen nicht über Versionsinformationen. Beim Anrufen DescribeContactVersionoder ListContactVersionsfür diese Kontakte wird a ResourceNotFoundException zurückgegeben.

  • Wenn Sie die Tracking-Overrides eines in Bearbeitung befindlichen Kontakts aktualisieren, gibt es eine kurze Übergangsphase, während der sich die Antenne an die neue Pointing-Konfiguration anpasst. Während dieser Zeit kann der Signalempfang oder die Signalübertragung unterbrochen werden.

  • Kontaktversionen können nicht gelöscht werden. ListContactVersionsDient zum Anzeigen des vollständigen Verlaufs der an einem Kontakt vorgenommenen Änderungen.

  • Die UpdateContact API kann nur von der Planungsregion des Kontakts aus aufgerufen werden.