View a markdown version of this page

Atualizar contatos e controle de versão de contatos - AWS Ground Station

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Atualizar contatos e controle de versão de contatos

AWS Ground Station suporta a atualização de contatos com umSCHEDULED,PREPASS, ou status de PASS contato. Você pode usar a UpdateContact API para especificar uma substituição de efemérides para um contato azimuth/elevation, incluindo dados de rastreamento de OEM ou TLE, sem cancelá-lo e reagendá-lo. Isso é útil para operações de satélite geossíncronas (GEO), nas quais você precisa reatribuir uma antena a um satélite diferente durante um contato, ou para operações iniciais e de lançamento (LEOPs), nas quais ajustes de apontamento são necessários.

Cada vez que você reserva ou atualiza um contato, AWS Ground Station cria uma nova versão do contato. As versões de contato fornecem um histórico das alterações feitas em um contato e permitem que você acompanhe o status de cada atualização.

Como funciona o controle de versão de contatos

Quando você liga ReserveContact, AWS Ground Station cria a primeira versão do contato (versão 1) e retorna a versionId na resposta. Cada chamada subsequente para UpdateContact cria uma nova versão com um número de versão incrementado.

A DescribeContact API retorna a versão atual do ACTIVE contato, incluindo as informações da versão no version campo da resposta. A ListContacts API também inclui informações sobre a versão de cada contato.

Para ver uma versão específica de um contato, use a DescribeContactVersion API. Para listar todas as versões de um contato, use a ListContactVersions API.

Atualizando um contato

Você pode ligar UpdateContact quando um contato estiver no estado AGENDADO, PREPASS ou PASS. A API aceita os seguintes parâmetros:

  • ContactID — O identificador do contato a ser atualizado.

  • clientToken — Um token de idempotência que garante que a solicitação seja processada apenas uma vez. Se você tentar novamente uma solicitação com o mesmo token de cliente, AWS Ground Station retornará a resposta original sem realizar a atualização novamente. Muitos AWS SDKs geram automaticamente um token de cliente para você se um não for fornecido.

  • TrackingOverrides — A nova configuração de rastreamento para o contato. Isso inclui as configurações da trilha do programa (azimuth/elevationefemérides TLE ou OEM).

  • SatelliteEarn — O ARN do satélite para o contato. Ao alterar o satélite alvo junto com as configurações da trilha do programa, forneça o ARN do novo satélite. Somente clientes aprovados para ângulos de azimuth/elevation apontamento podem definir esse valor como nulo. Todos os outros clientes devem incluir o ARN do satélite do contato.

Importante

A UpdateContact API aplica todos os parâmetros na solicitação. Qualquer parâmetro omitido ou explicitamente definido como nulo é tratado como uma solicitação para limpar esse valor, não para deixá-lo inalterado. Por exemplo, se você fornecer, trackingOverrides mas omitirsatelliteArn, o ARN do satélite será apagado. Certifique-se de incluir todos os valores desejados em cada solicitação de atualização.

Você pode alterar o satélite alvo durante um contato fornecendo um novo satelliteArn junto com o correspondentetrackingOverrides. O novo satélite deve estar visível da estação terrestre durante o contato, porque a hora de início e término do contato não muda com essa API. O novo satélite também deve estar integrado à estação terrestre e ter o licenciamento exigido pelo perfil da missão. O perfil da missão do contato não pode ser alterado, portanto, a troca de satélites só é aplicável quando os dois satélites usam o mesmo perfil de missão.

Importante

A UpdateContact API não permite alterar a hora de início, a hora de término ou o perfil da missão de um contato. Para alterar esses valores, cancele o contato e reserve um novo. A UpdateContact API foi projetada para refazer a configuração de apontamento da antena, como alternar entre satélites ou atualizar dados de efemérides.

Importante

A UpdateContact API não oferece suporte a contatos que tenham um perfil de missão que use Configuração de decodificação de demodulação de downlink de antena configurações. Para alterar a configuração desses contatos, cancele o contato e reserve um novo.

A UpdateContact API retorna o contactId e o novoversionId. A atualização é processada de forma assíncrona. Use DescribeContactVersion para verificar o status da atualização. Alguns AWS SDKs e eles AWS Command Line Interface fornecem um ContactUpdated garçom que pesquisa até que a versão atinja o status ACTIVE ou FAILED_TO_UPDATE.

nota

Somente uma atualização pode estar em andamento por vez. Se a versão mais recente do contato estiver no estado UPDATING, a API retornará ConflictException a. Aguarde até que a atualização atual alcance o status ATIVA ou FAILED_TO_UPDATE antes de enviar outra atualização.

Status da versão de contato

Cada versão de contato tem um dos seguintes status:

Status Description
ATUALIZANDO A versão está sendo aplicada ao contato. A atualização foi enviada e está sendo processada pelo AWS Ground Station.
ATIVO A versão é a configuração atualmente ativa para o contato. A estação terrestre está usando as configurações desta versão.
SUPERSEDED A versão estava ativa anteriormente, mas foi substituída por uma versão mais recente.
FALHOU_DE_ATUALIZAÇÃO A atualização não pôde ser aplicada. O contato é revertido para a versão ativa anteriormente. Verifique os failureMessage campos failureCodes e para obter detalhes.

Exemplos de código

Os exemplos a seguir demonstram como usar as APIs de controle de versão de contato com o AWS SDK para Python (Boto3).

Exemplo: atualizar um contato

O exemplo a seguir atualiza um contato com novas substituições de rastreamento e aguarda a conclusão da atualização usando o garçom Boto3. ContactUpdated

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

Exemplo: Descreva a versão de um contato

O exemplo a seguir recupera os detalhes de uma versão específica do contato, incluindo seu status, configuração e qualquer informação de falha.

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

Exemplo: Listar versões de contatos

O exemplo a seguir lista todas as versões de um contato para visualizar o histórico completo das alterações, usando a paginação para lidar com 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.")

Considerações

  • Os contatos criados antes da introdução do recurso de controle de versão do contato não têm informações sobre a versão. Ligar DescribeContactVersion ou ListContactVersions solicitar esses contatos retorna umResourceNotFoundException.

  • Quando você atualiza as substituições de rastreamento de um contato em andamento, há um breve período de transição enquanto a antena se ajusta à nova configuração de apontamento. Durante esse período, a recepção ou transmissão do sinal pode ser interrompida.

  • As versões de contato não podem ser excluídas. Use ListContactVersions para ver o histórico completo das alterações feitas em um contato.

  • A UpdateContact API só pode ser chamada da região de agendamento do contato.