View a markdown version of this page

Perbarui kontak dan versi kontak - AWS Ground Station

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

AWS Ground Station mendukung pembaruan kontak denganSCHEDULED,PREPASS, atau status PASS kontak. Anda dapat menggunakan UpdateContactAPI 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

Ketika Anda memanggil ReserveContact, AWS Ground Station membuat versi pertama dari kontak (versi 1) dan mengembalikan versionId dalam respon. Setiap panggilan berikutnya untuk UpdateContactmembuat versi baru dengan nomor versi tambahan.

DescribeContactAPI mengembalikan versi ACTIVE kontak saat ini, termasuk informasi versi di version bidang respons. ListContactsAPI juga menyertakan informasi versi untuk setiap kontak.

Untuk melihat versi kontak tertentu, gunakan DescribeContactVersionAPI. Untuk mencantumkan semua versi kontak, gunakan ListContactVersionsAPI.

Memperbarui kontak

Anda dapat menelepon UpdateContactsaat 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

UpdateContactAPI 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 menghilangkansatelliteArn, 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 sesuaitrackingOverrides. 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

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

penting

UpdateContactAPI tidak mendukung kontak yang memiliki profil misi yang menggunakan Antena Downlink Demod Decode Config konfigurasi. Untuk mengubah konfigurasi kontak ini, batalkan kontak dan pesan yang baru.

UpdateContactAPI mengembalikan contactId dan yang baruversionId. Pembaruan diproses secara asinkron. Gunakan DescribeContactVersionuntuk 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 fileConflictException. Tunggu pembaruan saat ini mencapai status ACTIVE atau FAILED_TO_UPDATE sebelum mengirimkan pembaruan lain.

Status versi kontak

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

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

Contoh: Perbarui kontak

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

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

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

  • Kontak yang dibuat sebelum fitur versi kontak diperkenalkan tidak memiliki informasi versi. Memanggil DescribeContactVersionatau ListContactVersionsuntuk kontak ini mengembalikan fileResourceNotFoundException.

  • 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 ListContactVersionsuntuk melihat riwayat lengkap perubahan yang dilakukan pada kontak.

  • UpdateContactAPI hanya dapat dipanggil dari wilayah penjadwalan kontak.