Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Actualiza los contactos y el control de versiones de los contactos
AWS Ground Station admite la actualización de contactos con un estado de PASS contacto SCHEDULEDPREPASS, o. Puedes usar la UpdateContact API para especificar una anulación de efemérides para un contacto (incluidos azimuth/elevation los datos de seguimiento de OEM o TLE) sin cancelarlo ni reprogramarlo. Esto resulta útil para operaciones con satélites geosincrónicos (GEO), en las que es necesario reasignar una antena a otro satélite durante un contacto, o para operaciones de lanzamiento y primeras operaciones (LEOP), en las que es necesario ajustar la orientación.
Cada vez que reservas o actualizas un contacto, se AWS Ground Station crea una nueva versión de contacto. Las versiones de contacto proporcionan un historial de los cambios realizados en un contacto y te permiten realizar un seguimiento del estado de cada actualización.
Cómo funciona el control de versiones de contactos
Cuando llamas ReserveContact, AWS Ground Station crea la primera versión del contacto (versión 1) y la devuelve versionId en la respuesta. Cada llamada subsiguiente UpdateContact crea una nueva versión con un número de versión incrementado.
La DescribeContact API devuelve la versión ACTIVE con la que se está contactando actualmente, incluida la información de la versión en el version campo de la respuesta. La ListContacts API también incluye información sobre la versión de cada contacto.
Para ver una versión específica de un contacto, usa la DescribeContactVersion API. Para ver todas las versiones de un contacto, usa la ListContactVersions API.
Actualización de un contacto
Puedes llamar UpdateContact cuando un contacto esté en estado PROGRAMADO, PREPASS o PASS. La API acepta los siguientes parámetros:
-
ContactID: el identificador del contacto que se va a actualizar.
-
ClientToken: un token de idempotencia que garantiza que la solicitud se procese solo una vez. Si vuelves a intentar una solicitud con el mismo token de cliente, AWS Ground Station devuelve la respuesta original sin volver a realizar la actualización. Muchos AWS SDK generan automáticamente un token de cliente si no se proporciona ninguno.
-
TrackingOverrides: la nueva configuración de seguimiento para el contacto. Esto incluye la configuración del seguimiento del programa (las azimuth/elevation efemérides TLE o OEM).
-
SatelliteARN: el ARN del satélite del contacto. Al cambiar el satélite objetivo junto con la configuración de rastreo del programa, proporcione el ARN del nuevo satélite. Solo los clientes autorizados para los ángulos de azimuth/elevation puntería pueden establecer este valor en nulo. Todos los demás clientes deben incluir el ARN del satélite del contacto.
importante
La UpdateContact API aplica todos los parámetros de la solicitud. Cualquier parámetro que se omita o se establezca explícitamente como nulo se trata como una solicitud para borrar ese valor, no para dejarlo sin cambios. Por ejemplo, si se proporciona trackingOverrides pero se omitesatelliteArn, se borra el ARN del satélite. Asegúrese de incluir todos los valores deseados en cada solicitud de actualización.
Puede cambiar el satélite objetivo durante un contacto proporcionando un satélite nuevo satelliteArn junto con el correspondientetrackingOverrides. El nuevo satélite debe estar visible desde la estación terrestre mientras dure el contacto, ya que la hora de inicio y finalización del contacto no cambia con esta API. El nuevo satélite también debe estar incorporado a la estación terrestre y tener la licencia requerida por el perfil de la misión. El perfil de misión del contacto no se puede cambiar, por lo que el cambio de satélite solo es aplicable cuando ambos satélites utilizan el mismo perfil de misión.
importante
La UpdateContact API no permite cambiar la hora de inicio, la hora de finalización o el perfil de misión de un contacto. Para cambiar estos valores, cancela el contacto y reserva uno nuevo. La UpdateContact API está diseñada para reasignar tareas a la configuración de orientación de la antena, como cambiar de un satélite a otro o actualizar los datos de efemérides.
importante
La UpdateContact API no admite contactos que tengan un perfil de misión que utilice configuraciones. Configuración de descodificación y desmodulación de enlace de bajada de antena Para cambiar la configuración de estos contactos, cancele el contacto y reserve uno nuevo.
La UpdateContact API devuelve el contactId y el nuevoversionId. La actualización se procesa de forma asincrónica. DescribeContactVersionUtilícelo para comprobar el estado de la actualización. Algunos AWS SDK incluyen un sistema de ContactUpdated espera que sondea hasta que la AWS Command Line Interface versión alcance el estado ACTIVE o FAILED_TO_UPDATE.
nota
Solo puede haber una actualización en curso a la vez. Si la última versión del contacto está en estado de ACTUALIZACIÓN, la API devuelve unConflictException. Espera a que la actualización actual alcance el estado ACTIVE o FAILED_TO_UPDATE antes de enviar otra actualización.
Póngase en contacto con los estados de las versiones
Cada versión de contacto tiene uno de los siguientes estados:
| Status | Description (Descripción) |
|---|---|
| ACTUALIZANDO | La versión se está aplicando al contacto. La actualización se ha enviado y está siendo procesada por AWS Ground Station. |
| ACTIVE | La versión es la configuración actualmente activa para el contacto. La estación terrestre utiliza los ajustes de esta versión. |
| SUPERSEDED | La versión estaba activa anteriormente, pero ha sido reemplazada por una versión más reciente. |
| FALLED_TO_UPDATE | No se pudo aplicar la actualización. El contacto vuelve a la versión anterior activa. Consulta los failureMessage campos failureCodes y para obtener más información. |
Ejemplos de código
Los siguientes ejemplos muestran cómo usar las API de control de versiones por contacto con el AWS SDK para Python (Boto3).
Ejemplo: actualizar un contacto
En el siguiente ejemplo, se actualiza un contacto con nuevas anulaciones de seguimiento y se espera a que finalice la actualización con el camarero de 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}")
Ejemplo: Describa la versión de un contacto
El siguiente ejemplo recupera los detalles de una versión de contacto específica, incluidos su estado, configuración y cualquier información sobre errores.
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}")
Ejemplo: Listar las versiones de los contactos
En el siguiente ejemplo, se enumeran todas las versiones de un contacto para ver el historial completo de cambios, y se utiliza la paginación para gestionar grandes conjuntos de resultados.
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.")
Consideraciones
-
Los contactos creados antes de que se introdujera la función de control de versiones de contactos no tienen información sobre la versión. Al llamar DescribeContactVersion o llamar ListContactVersions a estos contactos, se devuelve un
ResourceNotFoundException. -
Al actualizar las anulaciones de seguimiento de un contacto en curso, hay un breve período de transición mientras la antena se ajusta a la nueva configuración de puntería. Durante este tiempo, es posible que se interrumpa la recepción o transmisión de la señal.
-
Las versiones de los contactos no se pueden eliminar. Utilízalo ListContactVersions para ver el historial completo de los cambios realizados en un contacto.
-
Solo se puede llamar a la
UpdateContactAPI desde la región de programación del contacto.