View a markdown version of this page

연락처 및 연락처 버전 관리 업데이트 - AWS Ground Station

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

연락처 및 연락처 버전 관리 업데이트

AWS Ground Station 는 SCHEDULED, PREPASS또는 고객 응대 상태의 PASS 고객 응대 업데이트를 지원합니다. AWS Ground Station 고객 응대 상태 UpdateContact API를 사용하여 방위각/상승, OEM 또는 TLE 추적 데이터를 포함한 연락처에 대한 에페메리스 재정의를 취소하고 다시 예약하지 않고 지정할 수 있습니다. 이는 접촉 중에 안테나를 다른 위성에 재작업해야 하는 지리동기식(GEO) 위성 작업 또는 포인팅 조정이 필요한 Launch and Early Operations(LEOPs)에 유용합니다.

연락처를 예약하거나 업데이트할 때마다는 새 연락처 버전을 AWS Ground Station 생성합니다. 연락처 버전은 연락처에 대한 변경 기록을 제공하며 각 업데이트의 상태를 추적할 수 있습니다.

고객 응대 버전 관리 작동 방식

ReserveContact를 호출하면가 연락처의 첫 번째 버전(버전 1)을 AWS Ground Station 생성하고 응답versionId에를 반환합니다. 이후에 UpdateContact를 호출할 때마다 버전 번호가 증가하는 새 버전이 생성됩니다.

DescribeContact API는 응답 version 필드의 버전 정보를 포함하여 현재 ACTIVE 연락처 버전을 반환합니다. 고객 응대 버전 상태 ListContacts API에는 각 연락처에 대한 버전 정보도 포함되어 있습니다.

연락처의 특정 버전을 보려면 DescribeContactVersion API를 사용합니다. 연락처의 모든 버전을 나열하려면 ListContactVersions API를 사용합니다.

연락처 업데이트

연락처가 예약됨, PREPASS 또는 PASS 상태일 때 UpdateContact를 호출할 수 있습니다. API는 다음 파라미터를 허용합니다.

  • contactId - 업데이트할 연락처의 식별자입니다.

  • clientToken - 요청이 한 번만 처리되도록 하는 멱등성 토큰입니다. 동일한 클라이언트 토큰으로 요청을 다시 시도하면는 업데이트를 다시 수행하지 않고 원래 응답을 AWS Ground Station 반환합니다. AWS SDKs 제공되지 않은 경우 클라이언트 토큰이 자동으로 생성됩니다.

  • trackingOverrides - 연락처에 대한 새 추적 구성입니다. 여기에는 프로그램 트랙 설정(azimuth/elevation, TLE 또는 OEM 에페메리스)이 포함됩니다.

  • satelliteArn - 연락처에 대한 위성의 ARN입니다. 프로그램 트랙 설정과 함께 대상 위성을 변경할 때 새 위성의 ARN을 제공합니다. 방위각/상승 각도에 대해 승인된 고객만이 값을 null로 설정할 수 있습니다. 다른 모든 고객은 연락처의 위성 ARN을 포함해야 합니다.

중요

UpdateContact API는 요청의 모든 파라미터를 적용합니다. 생략되거나 null로 명시적으로 설정된 모든 파라미터는 변경되지 않고 해당 값을 지우는 요청으로 처리됩니다. 예를 들어를 제공trackingOverrides했지만 satelliteArn를 생략하면 위성 ARN이 지워집니다. 각 업데이트 요청에 원하는 값을 모두 포함해야 합니다.

해당와 satelliteArn 함께 새를 제공하여 고객 응대 중에 대상 위성을 변경할 수 있습니다trackingOverrides. 고객 응대 시작 및 종료 시간은이 API로 변경되지 않으므로 고객 응대 기간 동안 지상국에서 새 위성을 볼 수 있어야 합니다. 또한 새 위성을 지상국에 온보딩하고 미션 프로파일에 필요한 라이선스를 보유해야 합니다. 접촉의 미션 프로파일은 변경할 수 없으므로 위성 전환은 두 위성이 동일한 미션 프로파일을 사용하는 경우에만 적용됩니다.

중요

UpdateContact API는 연락의 시작 시간, 종료 시간 또는 미션 프로파일 변경을 지원하지 않습니다. 이러한 값을 변경하려면 연락처를 취소하고 새 연락처를 예약합니다. UpdateContact API는 위성 간 전환 또는 에페메리스 데이터 업데이트와 같은 안테나 포인팅 구성을 재작업하도록 설계되었습니다.

중요

UpdateContact API는 안테나 다운링크 복조 디코드 구성 구성을 사용하는 미션 프로파일이 있는 연락처를 지원하지 않습니다. 이러한 연락처의 구성을 변경하려면 연락처를 취소하고 새 연락처를 예약합니다.

UpdateContact API는 contactId 및 새를 반환합니다versionId. 업데이트는 비동기적으로 처리됩니다. DescribeContactVersion을 사용하여 업데이트 상태를 확인합니다. AWS SDKs 및는 버전이 ACTIVE 또는 FAILED_TO_UPDATE 상태가 될 때까지 폴링하는 ContactUpdated웨이터를 AWS Command Line Interface 제공합니다.

참고

한 번에 하나의 업데이트만 진행할 수 있습니다. 최신 연락처 버전이 업데이트 중 상태인 경우 API는를 반환합니다ConflictException. 다른 업데이트를 제출하기 전에 현재 업데이트가 ACTIVE 또는 FAILED_TO_UPDATE 상태가 될 때까지 기다립니다.

고객 응대 버전 상태

각 연락처 버전에는 다음 상태 중 하나가 있습니다.

Status 설명
업데이트 중 버전이 연락처에 적용되고 있습니다. 업데이트가 제출되어에서 처리 중입니다 AWS Ground Station.
ACTIVE 버전은 연락처에 대한 현재 활성 구성입니다. 지상국이이 버전의 설정을 사용하고 있습니다.
SUPERSEDED 버전은 이전에 활성화되었지만 최신 버전으로 대체되었습니다.
FAILED_TO_UPDATE 업데이트를 적용할 수 없습니다. 고객 응대가 이전 활성 버전으로 돌아갑니다. 자세한 내용은 failureCodesfailureMessage 필드를 확인하세요.

코드 예제

다음 예제에서는 AWS SDK for Python(Boto3)과 함께 고객 응대 버전 관리 APIs를 사용하는 방법을 보여줍니다.

예: 연락처 업데이트

다음 예시에서는 새 추적 재정의로 연락처를 업데이트하고 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}")

예: 연락처 버전 설명

다음 예시에서는 상태, 구성 및 실패 정보를 포함하여 특정 연락처 버전의 세부 정보를 검색합니다.

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

예: 연락처 버전 나열

다음 예제에서는 페이지 매김을 사용하여 대규모 결과 집합을 처리하여 변경 사항의 전체 기록을 볼 수 있는 연락처의 모든 버전을 나열합니다.

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

고려 사항

  • 고객 응대 버전 관리 기능이 도입되기 전에 생성된 고객 응대에는 버전 정보가 없습니다. 이러한 연락처에 대해 DescribeContactVersion 또는 ListContactVersions를 호출하면가 반환됩니다ResourceNotFoundException.

  • 진행 중인 고객 응대의 추적 재정의를 업데이트하면 안테나가 새 포인팅 구성으로 조정되는 동안 전환 기간이 짧아집니다. 이 시간 동안 신호 수신 또는 전송이 중단될 수 있습니다.

  • 연락처 버전은 삭제할 수 없습니다. ListContactVersions를 사용하여 연락처에 대한 전체 변경 기록을 봅니다.

  • UpdateContact API는 연락처의 예약 리전에서만 호출할 수 있습니다.