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 um SCHEDULED status de PASS contato ou. PREPASS Você pode usar a UpdateContactAPI para especificar uma substituição de efemérides para um contato, incluindo dados de rastreamento de azimute/elevação, 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), onde ajustes de apontamento são necessários.

Sempre 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 subseqüente UpdateContactcria uma nova versão com um número de versão incrementado.

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

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

Atualizando um contato

Você pode ligar UpdateContactquando um contato estiver no estado SCHEDULED, 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 somente 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 geram AWS SDKs 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 (azimute/elevação, TLE ou efemérides de OEM).

  • SatelliTearn — O ARN do satélite para o contato. Ao alterar o satélite alvo junto com as configurações de rastreamento do programa, forneça o ARN do novo satélite. Somente clientes aprovados para ângulos de apontamento de azimute/elevação 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 definido explicitamente 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 embarcado na estação terrestre e ter o licenciamento exigido pelo perfil da missão. O perfil de 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 suporta a alteração da hora de início, hora de término ou 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 usa 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 DescribeContactVersionpara verificar o status da atualização. Alguns AWS SDKs e outros 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 ATUALIZANDO, a API retornará ConflictException a. Aguarde até que a atualização atual alcance o status ACTIVE 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.
FALHA_NA ATUALIZAÇÃO A atualização não pôde ser aplicada. O contato é revertido para a versão anteriormente ativa. Verifique os failureMessage campos failureCodes e para obter detalhes.

Exemplos de código

Os exemplos a seguir demonstram como usar o controle de versão de contatos APIs 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 do 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: descrever uma versão de 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 ver 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 de contatos não têm informações de versão. Ligar DescribeContactVersionou ListContactVersionsreceber 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 ListContactVersionspara ver o histórico completo das alterações feitas em um contato.

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