

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

# 연락처 및 연락처 버전 관리 업데이트
<a name="contacts.versioning"></a>

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

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

## 고객 응대 버전 관리 작동 방식
<a name="contacts.versioning.how-it-works"></a>

 [ReserveContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ReserveContact.html)를 호출하면가 연락처의 첫 번째 버전(버전 1)을 AWS Ground Station 생성하고 응답`versionId`에를 반환합니다. 이후에 [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)를 호출할 때마다 버전 번호가 증가하는 새 버전이 생성됩니다.

 [DescribeContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContact.html) API는 응답 `version` 필드의 버전 정보를 포함하여 현재 `ACTIVE` 연락처 버전을 반환합니다. [고객 응대 버전 상태](#contacts.versioning.version-statuses) [ListContacts](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContacts.html) API에는 각 연락처에 대한 버전 정보도 포함되어 있습니다.

 연락처의 특정 버전을 보려면 [DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html) API를 사용합니다. 연락처의 모든 버전을 나열하려면 [ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html) API를 사용합니다.

## 연락처 업데이트
<a name="contacts.versioning.update-contact"></a>

 연락처가 예약됨, PREPASS 또는 PASS 상태일 때 [UpdateContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateContact.html)를 호출할 수 있습니다. 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는 [안테나 다운링크 복조 디코드 구성](how-it-works.config.md#how-it-works.config-antenna-downlink-demod-decode) 구성을 사용하는 미션 프로파일이 있는 연락처를 지원하지 않습니다. 이러한 연락처의 구성을 변경하려면 연락처를 취소하고 새 연락처를 예약합니다.

 `UpdateContact` API는 `contactId` 및 새를 반환합니다`versionId`. 업데이트는 비동기적으로 처리됩니다. [DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html)을 사용하여 업데이트 상태를 확인합니다. AWS SDKs 및는 버전이 ACTIVE 또는 FAILED\_TO\_UPDATE 상태가 될 때까지 폴링하는 `ContactUpdated`웨이터를 AWS Command Line Interface 제공합니다.

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

## 고객 응대 버전 상태
<a name="contacts.versioning.version-statuses"></a>

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


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

## 코드 예제
<a name="contacts.versioning.examples"></a>

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

### 예: 연락처 업데이트
<a name="contacts.versioning.examples.update-contact"></a>

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

### 예: 연락처 버전 설명
<a name="contacts.versioning.examples.describe-contact-version"></a>

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

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

### 예: 연락처 버전 나열
<a name="contacts.versioning.examples.list-contact-versions"></a>

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

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

## 고려 사항
<a name="contacts.versioning.considerations"></a>
+  고객 응대 버전 관리 기능이 도입되기 전에 생성된 고객 응대에는 버전 정보가 없습니다. 이러한 연락처에 대해 [DescribeContactVersion](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContactVersion.html) 또는 [ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)를 호출하면가 반환됩니다`ResourceNotFoundException`.
+  진행 중인 고객 응대의 추적 재정의를 업데이트하면 안테나가 새 포인팅 구성으로 조정되는 동안 전환 기간이 짧아집니다. 이 시간 동안 신호 수신 또는 전송이 중단될 수 있습니다.
+  연락처 버전은 삭제할 수 없습니다. [ListContactVersions](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContactVersions.html)를 사용하여 연락처에 대한 전체 변경 기록을 봅니다.
+  `UpdateContact` API는 연락처의 예약 리전에서만 호출할 수 있습니다.