

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
<a name="contacts.versioning"></a>

 AWS Ground Station suporta a atualização de contatos com um `SCHEDULED` [status de `PASS` contato](contacts.lifecycle.md#contact-statuses) ou. `PREPASS` Você pode usar a [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)API 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
<a name="contacts.versioning.how-it-works"></a>

 Quando você liga [ReserveContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ReserveContact.html), AWS Ground Station cria a primeira versão do contato (versão 1) e retorna a `versionId` na resposta. Cada chamada subseqüente [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)cria uma nova versão com um número de versão incrementado. 

 A [DescribeContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContact.html)API retorna a [versão atual do `ACTIVE` contato](#contacts.versioning.version-statuses), incluindo informações da versão no `version` campo da resposta. A [ListContacts](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContacts.html)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](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)API. Para listar todas as versões de um contato, use a [ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)API. 

## Atualizando um contato
<a name="contacts.versioning.update-contact"></a>

 Você pode ligar [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)quando 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 omitir`satelliteArn`, 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 correspondente`trackingOverrides`. 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](how-it-works.config.md#how-it-works.config-antenna-downlink-demod-decode) configurações. Para alterar a configuração desses contatos, cancele o contato e reserve um novo. 

 A `UpdateContact` API retorna o `contactId` e o novo`versionId`. A atualização é processada de forma assíncrona. Use [DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)para 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
<a name="contacts.versioning.version-statuses"></a>

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
<a name="contacts.versioning.examples"></a>

 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
<a name="contacts.versioning.examples.update-contact"></a>

 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
<a name="contacts.versioning.examples.describe-contact-version"></a>

 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
<a name="contacts.versioning.examples.list-contact-versions"></a>

 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
<a name="contacts.versioning.considerations"></a>
+  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 [DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)ou [ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)receber esses contatos retorna um`ResourceNotFoundException`. 
+  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](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)para 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. 