

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Perbarui kontak dan versi kontak
<a name="contacts.versioning"></a>

 AWS Ground Station mendukung pembaruan kontak dengan`SCHEDULED`,`PREPASS`, atau [status `PASS` kontak](contacts.lifecycle.md#contact-statuses). Anda dapat menggunakan [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)API untuk menentukan penggantian ephemeris untuk kontak — termasuk data pelacakan azimuth/elevation, OEM, atau TLE — tanpa membatalkan dan menjadwalkannya kembali. Ini berguna untuk operasi satelit geosynchronous (GEO) di mana Anda perlu menugaskan ulang antena ke satelit yang berbeda selama kontak, atau untuk Peluncuran dan Operasi Awal (LEOPs) di mana penyesuaian penunjuk diperlukan. 

 Setiap kali Anda memesan atau memperbarui kontak, AWS Ground Station buat versi kontak baru. Versi kontak memberikan riwayat perubahan yang dilakukan pada kontak dan memungkinkan Anda melacak status setiap pembaruan. 

## Cara kerja pembuatan versi kontak
<a name="contacts.versioning.how-it-works"></a>

 Ketika Anda memanggil [ReserveContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ReserveContact.html), AWS Ground Station membuat versi pertama dari kontak (versi 1) dan mengembalikan `versionId` dalam respon. Setiap panggilan berikutnya untuk [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)membuat versi baru dengan nomor versi tambahan. 

 [DescribeContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContact.html)API mengembalikan [versi `ACTIVE` kontak](#contacts.versioning.version-statuses) saat ini, termasuk informasi versi di `version` bidang respons. [ListContacts](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContacts.html)API juga menyertakan informasi versi untuk setiap kontak. 

 Untuk melihat versi kontak tertentu, gunakan [DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)API. Untuk mencantumkan semua versi kontak, gunakan [ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)API. 

## Memperbarui kontak
<a name="contacts.versioning.update-contact"></a>

 Anda dapat menelepon [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)saat kontak berada dalam status TERJADWAL, PREPASS, atau LULUS. API menerima parameter berikut: 
+ **Contactid** — Pengenal kontak yang akan diperbarui.
+ **ClientToken** — Token idempotensi yang memastikan permintaan diproses hanya sekali. Jika Anda mencoba lagi permintaan dengan token klien yang sama, AWS Ground Station mengembalikan respons asli tanpa melakukan pembaruan lagi. Banyak yang AWS SDKs secara otomatis menghasilkan token klien untuk Anda jika tidak disediakan.
+ **TrackingOverrides** - Konfigurasi pelacakan baru untuk kontak. Ini termasuk pengaturan trek program (azimuth/elevasi, TLE, atau OEM ephemeris).
+ **SatellitEarn** — ARN satelit untuk kontak. Saat mengubah satelit target bersama dengan pengaturan trek program, berikan ARN satelit baru. Hanya pelanggan yang disetujui untuk sudut penunjuk azimuth/elevasi yang dapat mengatur nilai ini ke nol. Semua pelanggan lain harus menyertakan ARN satelit kontak.

**penting**  
 `UpdateContact`API menerapkan semua parameter dalam permintaan. Parameter apa pun yang dihilangkan atau secara eksplisit disetel ke null diperlakukan sebagai permintaan untuk menghapus nilai itu, bukan untuk membiarkannya tidak berubah. Misalnya, jika Anda memberikan `trackingOverrides` tetapi menghilangkan`satelliteArn`, ARN satelit dihapus. Pastikan untuk menyertakan semua nilai yang diinginkan dalam setiap permintaan pembaruan. 

 Anda dapat mengubah satelit target selama kontak dengan memberikan yang baru `satelliteArn` bersama dengan yang sesuai`trackingOverrides`. Satelit baru harus terlihat dari stasiun bumi selama durasi kontak, karena waktu mulai dan akhir kontak tidak berubah dengan API ini. Satelit baru juga harus diangkut ke stasiun bumi dan memiliki lisensi yang diperlukan oleh profil misi. Profil misi kontak tidak dapat diubah, jadi peralihan satelit hanya berlaku ketika kedua satelit menggunakan profil misi yang sama. 

**penting**  
 `UpdateContact`API tidak mendukung perubahan waktu mulai, waktu akhir, atau profil misi kontak. Untuk mengubah nilai-nilai ini, batalkan kontak dan pesan yang baru. `UpdateContact`API dirancang untuk menugaskan ulang konfigurasi penunjuk antena, seperti beralih antar satelit atau memperbarui data ephemeris. 

**penting**  
 `UpdateContact`API tidak mendukung kontak yang memiliki profil misi yang menggunakan [Antena Downlink Demod Decode Config](how-it-works.config.md#how-it-works.config-antenna-downlink-demod-decode) konfigurasi. Untuk mengubah konfigurasi kontak ini, batalkan kontak dan pesan yang baru. 

 `UpdateContact`API mengembalikan `contactId` dan yang baru`versionId`. Pembaruan diproses secara asinkron. Gunakan [DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)untuk memeriksa status pembaruan. Beberapa AWS SDKs dan AWS Command Line Interface menyediakan `ContactUpdated` pelayan yang melakukan polling hingga versi mencapai status ACTIVE atau FAILED\_TO\_UPDATE. 

**catatan**  
 Hanya satu pembaruan yang dapat berlangsung dalam satu waktu. Jika versi kontak terbaru dalam status UPDATE, API akan mengembalikan file`ConflictException`. Tunggu pembaruan saat ini mencapai status ACTIVE atau FAILED\_TO\_UPDATE sebelum mengirimkan pembaruan lain. 

## Status versi kontak
<a name="contacts.versioning.version-statuses"></a>

Setiap versi kontak memiliki salah satu status berikut:


| Status | Deskripsi | 
| --- | --- | 
| UPDATING | Versi sedang diterapkan ke kontak. Pembaruan telah dikirimkan dan sedang diproses oleh AWS Ground Station. | 
| AKTIF | Versi ini adalah konfigurasi yang saat ini aktif untuk kontak. Stasiun bumi menggunakan pengaturan versi ini. | 
| DIGANTIKAN | Versi ini sebelumnya aktif tetapi telah digantikan oleh versi yang lebih baru. | 
| FAILED\_TO\_UPDATE | Pembaruan tidak dapat diterapkan. Kontak kembali ke versi yang sebelumnya aktif. Periksa failureCodes dan failureMessage bidang untuk detailnya. | 

## Contoh kode
<a name="contacts.versioning.examples"></a>

 Contoh berikut menunjukkan cara menggunakan versi kontak APIs dengan AWS SDK for Python (Boto3). 

### Contoh: Perbarui kontak
<a name="contacts.versioning.examples.update-contact"></a>

 Contoh berikut memperbarui kontak dengan penggantian pelacakan baru dan menunggu pembaruan selesai menggunakan pelayan 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}")
```

### Contoh: Jelaskan versi kontak
<a name="contacts.versioning.examples.describe-contact-version"></a>

 Contoh berikut mengambil rincian dari versi kontak tertentu, termasuk status, konfigurasi, dan informasi kegagalan. 

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

### Contoh: Daftar versi kontak
<a name="contacts.versioning.examples.list-contact-versions"></a>

 Contoh berikut mencantumkan semua versi kontak untuk melihat riwayat lengkap perubahan, menggunakan pagination untuk menangani set hasil besar. 

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

## Pertimbangan-pertimbangan
<a name="contacts.versioning.considerations"></a>
+  Kontak yang dibuat sebelum fitur versi kontak diperkenalkan tidak memiliki informasi versi. Memanggil [DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)atau [ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)untuk kontak ini mengembalikan file`ResourceNotFoundException`. 
+  Saat Anda memperbarui penggantian pelacakan kontak yang sedang berlangsung, ada periode transisi singkat sementara antena menyesuaikan dengan konfigurasi penunjuk yang baru. Selama waktu ini, penerimaan sinyal atau transmisi dapat terganggu. 
+  Versi kontak tidak dapat dihapus. Gunakan [ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)untuk melihat riwayat lengkap perubahan yang dilakukan pada kontak. 
+  `UpdateContact`API hanya dapat dipanggil dari wilayah penjadwalan kontak. 