

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

# 에서 에페메리스를 AWS Ground Station 사용하는 방법 이해
<a name="ephemeris"></a>

 복수 에페메리스인 [에페메리스](https://en.wikipedia.org/wiki/Ephemeris)는 천체의 궤적을 제공하는 파일 또는 데이터 구조입니다. 과거에는 이 파일이 표 형식의 데이터만 참조했지만 점차 우주선 궤적을 나타내는 다양한 데이터 파일로 이동하게 되었습니다.

 Ephemeris API를 사용하면 위성과 함께 사용하기 위해 사용자 지정 에페메리스를 AWS Ground Station 에 업로드할 수 있습니다. 이러한 에페메리스는 [스페이스 트랙](https://www.space-track.org/)의 기본 에페메리스를 재정의합니다( 참조[기본 에페메리스 데이터](default-ephemeris-data.md)). Orbit Ephemeris Message(OEM), 2줄 요소(TLE) 및 방위각 고도 형식으로 에페메리스 데이터 수신을 지원합니다.

 AWS Ground Station 는 에페메리스 데이터를 사용하여 제공된 에페메리스를 기반으로 연락처를 사용할 수 있는 시기를 결정하고 AWS Ground Station 네트워크에서 안테나를 올바르게 명령합니다. 위성에 할당된 [NORAD ID](https://en.wikipedia.org/wiki/Satellite_Catalog_Number)가 AWS Ground Station 있는 경우 기본적으로 에페메리스를 제공하는 데 필요한 작업은 없습니다.

 사용자 지정 에페메리스를 업로드하면 추적 품질을 개선하고, [스페이스 트랙](https://www.space-track.org/) 에페메리스를 사용할 수 없는 초기 작업을 처리하고 AWS Ground Station, 조작을 고려할 수 있습니다.

 또는 위성 궤도 정보를 제공하지 않고도 안테나 방향 지정을 직접 지정할 수 있는 방위각 고도 형식을 AWS Ground Station 지원합니다. 위성 궤적 정보가 부정확하거나 알 수 없기 때문에 정확한 안테나 포인팅이 필요한 시나리오에 유용합니다.

**Topics**
+ [기본 에페메리스 데이터](default-ephemeris-data.md)
+ [사용자 지정 에페메리스 데이터 제공](providing-custom-ephemeris-data.md)
+ [사용자 지정 에페메리스를 사용하여 연락처 예약](reserving-contacts-with-custom-ephemeris.md)
+ [사용되는 에페메리스 이해](which-ephemeris-is-used.md)
+ [위성의 현재 에페메리스 가져오기](getting-current-ephemeris.md)
+ [기본 에페메리스 데이터로 되돌리기](reverting-to-default-ephemeris-data.md)

# 기본 에페메리스 데이터
<a name="default-ephemeris-data"></a>

 기본적으로는 [Space-Track](https://www.space-track.org/)에서 공개적으로 사용 가능한 데이터를 AWS Ground Station 사용하며 이러한 기본 에페메리스를 제공하는 AWS Ground Station 데 필요한 작업은 없습니다. 이러한 에페메리스는 위성의 [NORAD ID](https://en.wikipedia.org/wiki/Satellite_Catalog_Number)와 연결된 [2줄 요소 세트(TLEs)](https://en.wikipedia.org/wiki/Two-line_element_set)입니다. 모든 기본 에페메리스의 우선 순위는 입니다`0`. 따라서 만료되지 않은 사용자 지정 에페메리스가 에페메리스 API를 통해 업로드되므로 항상 우선 순위가 `1`이상이어야 합니다.

 NORAD ID가 없는 위성은 사용자 지정 에페메리스 데이터를에 업로드해야 합니다 AWS Ground Station. 예를 들어 [스페이스 트랙](https://www.space-track.org/) 카탈로그에서 방금 시작했거나 의도적으로 생략된 위성은 NORAD ID가 없으며 사용자 지정 에페메리스를 업로드해야 합니다. 사용자 지정 에페메리스 데이터 제공에 대한 자세한 내용은 사용자 [지정 에페메리스 데이터 제공을](providing-custom-ephemeris-data.md) 참조하세요.

# 사용자 지정 에페메리스 데이터 제공
<a name="providing-custom-ephemeris-data"></a>

**중요**  
 에페메리스 API는 현재 프리뷰 상태입니다 

 에페메리스 API에 대한 액세스는 필요에 따라 제공됩니다. 사용자 지정 에페메리스 데이터를 업로드하는 기능이 필요한 경우를 통해 AWS Support 티켓을 개설하세요[AWS Support Center Console](https://console.aws.amazon.com/support). 당사 팀은 고객과 협력하여 특정 요구 사항에 맞게이 기능을 활성화합니다.

## 개요
<a name="w2aac28c17b7"></a>

 Ephemeris API를 사용하면 위성과 함께 사용하기 위해 사용자 지정 에페메리스를 AWS Ground Station 에 업로드할 수 있습니다. 이러한 에페메리스는 [스페이스 트랙](https://www.space-track.org/)의 기본 에페메리스를 재정의합니다( 참조[기본 에페메리스 데이터](default-ephemeris-data.md)). Orbit Ephemeris Message(OEM), 2줄 요소(TLE) 및 방위각 고도 형식으로 에페메리스 데이터 수신을 지원합니다.

 AWS Ground Station 는 에페메리스를 [개별화된 사용 데이터](https://aws.amazon.com/service-terms)로 취급합니다. 이 선택적 기능을 사용하는 경우 AWS는 에페메리스 데이터를 사용하여 문제 해결 지원을 제공합니다.

 사용자 지정 에페메리스를 업로드하면 추적 품질을 개선하고, [스페이스 트랙](https://www.space-track.org/) 에페메리스를 사용할 수 없는 작업을 처리하고 AWS Ground Station, 조작을 고려할 수 있습니다.

 잘못된 에페메리스 문제를 해결하려면 다음을 참조하세요. [잘못된 에페메리스 문제 해결](troubleshooting-invalid-ephemerides.md) 

## 예:에서 고객 제공 에페메리스 사용 AWS Ground Station
<a name="w2aac28c17b9"></a>

 에서 고객 제공 에페메리스를 사용하는 방법에 대한 자세한 지침은 [에서 고객 제공 에페메리스 사용 AWS Ground Station](https://aws.amazon.com/blogs/publicsector/using-customer-provided-ephemerides-with-aws-ground-station/) 및 관련 GitHub 리포지토리 [aws-samples/aws-groundstation-cpe](https://github.com/aws-samples/aws-groundstation-cpe)를 AWS Ground Station참조하세요.

# TLE 에페메리스 데이터 제공
<a name="providing-tle-ephemeris-data"></a>

**중요**  
 에페메리스 API는 현재 프리뷰 상태입니다 

 에페메리스 API에 대한 액세스는 필요에 따라 제공됩니다. 사용자 지정 에페메리스 데이터를 업로드하는 기능이 필요한 경우를 통해 AWS Support 티켓을 개설하세요[AWS Support Center Console](https://console.aws.amazon.com/support). 당사 팀은 고객과 협력하여 특정 요구 사항에 맞게이 기능을 활성화합니다.

## 개요
<a name="w2aac28c17c11b7"></a>

 2줄 요소(TLE) 세트는 위성 궤도를 설명하기 위한 표준화된 형식입니다. Ephemeris API를 사용하면 위성과 함께 사용하기 위해 TLE 에페메리스를 AWS Ground Station 에 업로드할 수 있습니다. 이러한 에페메리스는 [스페이스 트랙](https://www.space-track.org/)의 기본 에페메리스를 재정의합니다( 참조[기본 에페메리스 데이터](default-ephemeris-data.md)).

 AWS Ground Station 는 에페메리스를 [개별화된 사용 데이터](https://aws.amazon.com/service-terms)로 처리합니다. 이 선택적 기능을 사용하는 경우 AWS는 에페메리스 데이터를 사용하여 문제 해결 지원을 제공합니다.

 사용자 지정 TLE 에페메리스를 업로드하면 추적 품질을 개선하고, [스페이스 트랙](https://www.space-track.org/) 에페메리스를 사용할 수 없는 초기 작업을 처리하고 AWS Ground Station, 조작을 고려할 수 있습니다.

**참고**  
 위성 카탈로그 번호가 할당되기 전에 사용자 지정 에페메리스를 제공하는 경우 TLE의 `00000` 위성 카탈로그 번호 필드와 TLE의 국제 지정자 필드의 `000` 시작 번호 부분에 `24000A`를 사용할 수 있습니다(예: 2024년에 출시된 차량).  
 TLEs. [https://en.wikipedia.org/wiki/Two-line_element_set](https://en.wikipedia.org/wiki/Two-line_element_set) 

## TLE 에페메리스 생성
<a name="w2aac28c17c11b9"></a>

 TLE 에페메리스는 API의 [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) 작업을 사용하여 생성할 수 있습니다 AWS Ground Station . 이 작업은 요청 본문 또는 지정된 S3 버킷의 데이터를 사용하여 에페메리스를 업로드합니다.

 한 가지 주의할 점은 에피메리스를 업로드하면 에피메리스가 `VALIDATING`로 설정되고 비동기 워크플로가 시작되어 에피메리스를 검증하고 이로부터 잠재적 접촉을 생성하는 비동기 워크플로가 시작된다는 점입니다. 임시 저장소가 이 워크플로를 통과한 후 `ENABLED`가 된 후에만 접촉에 사용됩니다. 에페메리스 상태에 대해 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html)를 폴링하거나 CloudWatch 이벤트를 사용하여 에페메리스의 상태 변경을 추적해야 합니다.

 잘못된 에페메리스 문제를 해결하려면 다음을 참조하세요. [잘못된 에페메리스 문제 해결](troubleshooting-invalid-ephemerides.md) 

## 예: API를 통해 2줄 요소(TLE) 세트 에페메리스 생성
<a name="w2aac28c17c11c11"></a>

 AWS SDKs 및 CLI를 사용하여 [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) 호출을 AWS Ground Station 통해 에페메리스를 로 설정한 두 줄 요소(TLE)를 업로드할 수 있습니다. 이 에페메리스는 위성의 기본 에페메리스 데이터 대신 사용됩니다( 참조[기본 에페메리스 데이터](default-ephemeris-data.md)). 이 예제에서는 [AWS SDK for Python(Boto3)](https://docs.aws.amazon.com/pythonsdk)을 사용하여이 작업을 수행하는 방법을 보여줍니다.

 TLE 세트는 하나 이상의 TLE를 함께 묶어 연속 궤적을 구성하는 JSON 형식의 객체입니다. TLE 세트의 TLE는 궤적을 구성하는 데 사용할 수 있는 연속 세트를 형성해야 합니다(즉, TLE 세트의 TLE 간 시간 간격이 없음). TLE 세트의 예는 다음과 같습니다.

```
[
    {
        "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
        "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
        "validTimeRange": {
            "startTime": 12345,
            "endTime": 12346
        }
    },
    {
        "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
        "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
        "validTimeRange": {
            "startTime": 12346,
            "endTime": 12347
        }
    }
]
```

**참고**  
 TLE 세트의 TLE 시간 범위가 정확히 일치해야 유효하고 연속적인 궤적을 유지할 수 있습니다.

 TLE 세트는 다음과 같이 AWS Ground Station boto3 클라이언트를 통해 업로드할 수 있습니다.

```
import boto3
from datetime import datetime, timedelta, timezone

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# Create TLE ephemeris
tle_ephemeris = ground_station_client.create_ephemeris(
    name="Example Ephemeris",
    satelliteId="2e925701-9485-4644-b031-EXAMPLE01",
    enabled=True,
    expirationTime=datetime.now(timezone.utc) + timedelta(days=3),
    priority=2,
    ephemeris={
        "tle": {
            "tleData": [
                {
                    "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
                    "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
                    "validTimeRange": {
                        "startTime": datetime.now(timezone.utc),
                        "endTime": datetime.now(timezone.utc) + timedelta(days=7),
                    },
                }
            ]
        }
    },
)

print(f"Created TLE ephemeris with ID: {tle_ephemeris['ephemerisId']}")
```

 이 호출은 향후 ephemerisId를 반환합니다. 예를 들어 위의 호출에서 제공된 ephemerisId를 사용하여 ephemeris 상태를 폴링할 수 있습니다.

```
import boto3
from datetime import datetime, timedelta, timezone
import time

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# First, create a TLE ephemeris
print("Creating TLE ephemeris...")

tle_ephemeris = ground_station_client.create_ephemeris(
    name="Example TLE Ephemeris for Description",
    satelliteId="2e925701-9485-4644-b031-EXAMPLE01",
    enabled=True,
    expirationTime=datetime.now(timezone.utc) + timedelta(days=3),
    priority=2,
    ephemeris={
        "tle": {
            "tleData": [
                {
                    "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
                    "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
                    "validTimeRange": {
                        "startTime": datetime.now(timezone.utc),
                        "endTime": datetime.now(timezone.utc) + timedelta(days=7),
                    },
                }
            ]
        }
    },
)

ephemeris_id = tle_ephemeris["ephemerisId"]
print(f"Created TLE ephemeris with ID: {ephemeris_id}")

# Describe the ephemeris immediately to check initial status
print("Describing ephemeris...")

response = ground_station_client.describe_ephemeris(ephemerisId=ephemeris_id)

print(f"Ephemeris ID: {response['ephemerisId']}")
print(f"Name: {response['name']}")
print(f"Status: {response['status']}")
```

 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) 작업의 응답 예제는 다음과 같습니다.

```
{
  "creationTime": 1620254718.765,
  "enabled": true,
  "name": "Example Ephemeris",
  "ephemerisId": "fde41049-14f7-413e-bd7b-EXAMPLE01",
  "priority": 2,
  "status": "VALIDATING",
  "suppliedData": {
    "tle": {
      "ephemerisData": "[{\"tleLine1\": \"1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997\",\"tleLine2\": \"2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906\",\"validTimeRange\": {\"startTime\": 1620254712000,\"endTime\": 1620859512000}}]"
    }
  }
}
```

 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) 경로를 폴링하거나 CloudWatch 이벤트를 사용하여 업로드된 에페메리스의 상태를 추적하는 것이 좋습니다. 업로드된 에페메리스는 로 설정`ENABLED`되고 고객 응대를 예약하고 실행하는 데 사용할 수 있게 되기 전에 비동기 검증 워크플로를 거쳐야 하기 때문입니다.

 위의 예제`25994`에서 TLEs 세트의 모든 TLE에 있는 NORAD ID는 위성이 [Space-Track](https://www.space-track.org/) 데이터베이스에 할당된 NORAD ID와 일치해야 합니다.

## 예: S3 버킷에서 TLE 에페메리스 데이터 업로드
<a name="w2aac28c17c11c13"></a>

 버킷 및 객체 키를 가리켜 S3 버킷에서 직접 TLE 에페메리스 파일을 업로드할 수도 있습니다. AWS Ground Station 는 사용자를 대신하여 객체를 검색합니다. 의 저장 데이터 암호화에 대한 자세한 내용은 단원을 AWS Ground Station 참조하십시오[에 대한 저장 데이터 암호화 AWS Ground Station](security.encryption-at-rest.md).

 다음은 S3 버킷에서 TLE 에페메리스 파일을 업로드하는 예입니다.

```
import boto3
from datetime import datetime, timedelta, timezone
import json

# Create AWS clients
s3_client = boto3.client("s3")
ground_station_client = boto3.client("groundstation")

# Define S3 bucket and key
bucket_name = "ephemeris-bucket"
object_key = "test_data.tle"

# Create sample TLE set data
# Note: For actual satellites, use real TLE data from sources like Space-Track
tle_set_data = [
    {
        "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
        "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
        "validTimeRange": {
            "startTime": datetime.now(timezone.utc),
            "endTime": datetime.now(timezone.utc) + timedelta(days=3),
        },
    },
    {
        "tleLine1": "1 25994U 99068A   20321.54719794  .00000075  00000-0  26688-4 0  9998",
        "tleLine2": "2 25994  98.2007  33.6589 0001234  89.2782  18.9934 14.57114995112342",
        "validTimeRange": {
            "startTime": datetime.now(timezone.utc) + timedelta(days=3),
            "endTime": datetime.now(timezone.utc) + timedelta(days=7),
        },
    },
]

# Convert to JSON string for upload
tle_json = json.dumps(tle_set_data, indent=2)

# Upload sample TLE data to S3
print(f"Uploading TLE set data to s3://{bucket_name}/{object_key}")

s3_client.put_object(
    Bucket=bucket_name, Key=object_key, Body=tle_json, ContentType="application/json"
)
print("TLE set data uploaded successfully to S3")
print(f"Uploaded {len(tle_set_data)} TLE entries covering 7 days")

# Create TLE ephemeris from S3
print("Creating TLE ephemeris from S3...")

s3_tle_ephemeris = ground_station_client.create_ephemeris(
    name="2022-11-05 S3 TLE Upload",
    satelliteId="fde41049-14f7-413e-bd7b-EXAMPLE01",
    enabled=True,
    expirationTime=datetime.now(timezone.utc) + timedelta(days=5),
    priority=2,
    ephemeris={"tle": {"s3Object": {"bucket": bucket_name, "key": object_key}}},
)

print(f"Created TLE ephemeris with ID: {s3_tle_ephemeris['ephemerisId']}")
```

# OEM 에페메리스 데이터 제공
<a name="providing-oem-ephemeris-data"></a>

**중요**  
 에페메리스 API는 현재 프리뷰 상태입니다 

 에페메리스 API에 대한 액세스는 필요에 따라 제공됩니다. 사용자 지정 에페메리스 데이터를 업로드하는 기능이 필요한 경우를 통해 AWS Support 티켓을 개설하세요[AWS Support Center Console](https://console.aws.amazon.com/support). 당사 팀은 고객과 협력하여 특정 요구 사항에 맞게이 기능을 활성화합니다.

## 개요
<a name="w2aac28c17c13b7"></a>

 Orbit Ephemeris Message(OEM)는 우주선 궤적 데이터를 나타내는 표준화된 형식입니다. Ephemeris API를 사용하면 OEM 에페메리스를 AWS Ground Station 에 업로드하여 위성과 함께 사용할 수 있습니다. 이러한 에페메리스는 [스페이스 트랙](https://www.space-track.org/)의 기본 에페메리스를 재정의합니다( 참조[기본 에페메리스 데이터](default-ephemeris-data.md)).

 AWS Ground Station 는 에페메리스를 [개별화된 사용 데이터](https://aws.amazon.com/service-terms)로 취급합니다. 이 선택적 기능을 사용하는 경우 AWS 는 에페메리스 데이터를 사용하여 문제 해결 지원을 제공합니다.

 사용자 지정 OEM 에페메리스를 업로드하면 추적 품질을 개선하고, [스페이스 트랙](https://www.space-track.org/) 에페메리스를 사용할 수 없는 초기 작업을 처리하고 AWS Ground Station, 조작을 고려할 수 있습니다.

**참고**  
 위성 카탈로그 번호가 위성에 할당되기 전에 사용자 지정 에페메리스를 제공하는 경우 OEM의 `satelliteId` `OBJECT_ID` 부분에를 사용할 수 있습니다.  
 OEMs의 형식에 대한 자세한 내용은 단원을 참조하십시오[OEM 에페메리스 형식](#oem-ephemeris-format).

## OEM 에페메리스 형식
<a name="oem-ephemeris-format"></a>

 AWS Ground Station 는 몇 가지 추가 제한과 함께 [CCSDS 표준에](https://ccsds.org/Pubs/502x0b3e1.pdf) 따라 OEM 고객 제공 에페메리스를 처리합니다. OEM 파일은 KVN 형식이어야 합니다. 다음 표에는 OEM의 다양한 필드와가 CCSDS 표준과 어떻게 AWS Ground Station 다른지 요약되어 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ground-station/latest/ug/providing-oem-ephemeris-data.html)

 \$1에서 지원하지 않는 행 AWS Ground Station 이 제공된 OEM에 포함된 경우 OEM은 검증에 실패합니다.

 에 대한 CCSDS 표준과의 중요한 편차는 다음과 AWS Ground Station 같습니다.
+ `CCSDS_OEM_VERS`는 여야 합니다`2.0`.
+ `REF_FRAME`는 `EME2000` 또는 여야 합니다` ITRF2000`.
+ `REF_FRAME_EPOCH`는에서 지원되지 않습니다 AWS Ground Station.
+ `CENTER_NAME`는 여야 합니다`Earth`.
+ `TIME_SYSTEM`는 여야 합니다`UTC`.
+ `INTERPOLATION` 및 `INTERPOLATION_DEGREE`는 모두 AWS Ground Station 고객 제공 에페메리스에 필요합니다.

## KVN 형식의 OEM 에페메리스 예제
<a name="w2aac28c17c13c11"></a>

 다음은 JPSS-1 퍼블릭 브로드캐스터 위성에 대한 KVN 형식의 OEM 에페메리스의 잘린 예입니다.

```
CCSDS_OEM_VERS = 2.0

COMMENT Orbit data are consistent with planetary ephemeris DE-430

CREATION_DATE  = 2024-07-22T05:20:59
ORIGINATOR     = Raytheon-JPSS/CGS

META_START
OBJECT_NAME          = J1
OBJECT_ID            = 2017-073A
CENTER_NAME          = Earth
REF_FRAME            = EME2000
TIME_SYSTEM          = UTC
START_TIME           = 2024-07-22T00:00:00.000000
STOP_TIME            = 2024-07-22T00:06:00.000000
INTERPOLATION        = Lagrange
INTERPOLATION_DEGREE = 5
META_STOP

2024-07-22T00:00:00.000000   5.905147360000000e+02  -1.860082793999999e+03  -6.944807075000000e+03  -5.784245796000000e+00   4.347501391999999e+00  -1.657256863000000e+00
2024-07-22T00:01:00.000000   2.425572045154201e+02  -1.595860765983339e+03  -7.030938457373539e+03  -5.810660250794190e+00   4.457103652219009e+00  -1.212889340333023e+00
2024-07-22T00:02:00.000000  -1.063224256538050e+02  -1.325569732497146e+03  -7.090262617183503e+03  -5.814973972202444e+00   4.549739160042560e+00  -7.639633689161465e-01
2024-07-22T00:03:00.000000  -4.547973959231161e+02  -1.050238305712201e+03  -7.122556683227951e+03  -5.797176562437553e+00   4.625064829516728e+00  -3.121687831090774e-01
2024-07-22T00:04:00.000000  -8.015427368657785e+02  -7.709137891269565e+02  -7.127699477194810e+03  -5.757338007808417e+00   4.682800822515077e+00   1.407953645161997e-01
2024-07-22T00:05:00.000000  -1.145240083085062e+03  -4.886583601179489e+02  -7.105671911254255e+03  -5.695608435738609e+00   4.722731329786999e+00   5.932259682105052e-01
2024-07-22T00:06:00.000000  -1.484582479061495e+03  -2.045451985605701e+02  -7.056557069672793e+03  -5.612218005854990e+00   4.744705579872771e+00   1.043421397392599e+00
```

## OEM 에페메리스 생성
<a name="w2aac28c17c13c13"></a>

 OEM 에페메리스는 API의 [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) 작업을 사용하여 생성할 수 있습니다 AWS Ground Station . 이 작업은 요청 본문 또는 지정된 S3 버킷의 데이터를 사용하여 에페메리스를 업로드합니다.

 한 가지 주의할 점은 에피메리스를 업로드하면 에피메리스가 ` VALIDATING`로 설정되고 비동기 워크플로가 시작되어 에피메리스를 검증하고 이로부터 잠재적 접촉을 생성하는 비동기 워크플로가 시작된다는 점입니다. 임시 저장소가 이 워크플로를 통과한 후 `ENABLED`가 된 후에만 접촉에 사용됩니다. [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html)에서 에페메리스 상태를 폴링하거나 CloudWatch 이벤트를 사용하여 에페메리스의 상태 변경을 추적해야 합니다.

 잘못된 에페메리스 문제를 해결하려면 다음을 참조하세요. [잘못된 에페메리스 문제 해결](troubleshooting-invalid-ephemerides.md) 

## 예: S3 버킷에서 OEM 에페메리스 데이터 업로드
<a name="w2aac28c17c13c15"></a>

 버킷 및 객체 키를 가리켜 S3 버킷에서 OEM 에페메리스 파일을 직접 업로드할 수도 있습니다. AWS Ground Station 는 사용자를 대신하여 객체를 검색합니다. 의 저장 데이터 암호화에 대한 자세한 내용은 단원을 AWS Ground Station 참조하십시오[에 대한 저장 데이터 암호화 AWS Ground Station](security.encryption-at-rest.md).

 다음은 S3 버킷에서 OEM 에페메리스 파일을 업로드하는 예제입니다 

```
import boto3
from datetime import datetime, timedelta, timezone

# Create AWS clients
s3_client = boto3.client("s3")
ground_station_client = boto3.client("groundstation")

# Define S3 bucket and key
bucket_name = "ephemeris-bucket"
object_key = "test_data.oem"

# Create sample OEM data in KVN format
oem_data = """CCSDS_OEM_VERS = 2.0

COMMENT Orbit data are consistent with planetary ephemeris DE-430

CREATION_DATE  = 2024-07-22T05:20:59
ORIGINATOR     = Raytheon-JPSS/CGS

META_START
OBJECT_NAME          = J1
OBJECT_ID            = 2017-073A
CENTER_NAME          = Earth
REF_FRAME            = EME2000
TIME_SYSTEM          = UTC
START_TIME           = 2024-07-22T00:00:00.000000
STOP_TIME            = 2024-07-22T00:06:00.000000
INTERPOLATION        = Lagrange
INTERPOLATION_DEGREE = 5
META_STOP

2024-07-22T00:00:00.000000   5.905147360000000e+02  -1.860082793999999e+03  -6.944807075000000e+03  -5.784245796000000e+00   4.347501391999999e+00  -1.657256863000000e+00
2024-07-22T00:01:00.000000   2.425572045154201e+02  -1.595860765983339e+03  -7.030938457373539e+03  -5.810660250794190e+00   4.457103652219009e+00  -1.212889340333023e+00
2024-07-22T00:02:00.000000  -1.063224256538050e+02  -1.325569732497146e+03  -7.090262617183503e+03  -5.814973972202444e+00   4.549739160042560e+00  -7.639633689161465e-01
2024-07-22T00:03:00.000000  -4.547973959231161e+02  -1.050238305712201e+03  -7.122556683227951e+03  -5.797176562437553e+00   4.625064829516728e+00  -3.121687831090774e-01
2024-07-22T00:04:00.000000  -8.015427368657785e+02  -7.709137891269565e+02  -7.127699477194810e+03  -5.757338007808417e+00   4.682800822515077e+00   1.407953645161997e-01
2024-07-22T00:05:00.000000  -1.145240083085062e+03  -4.886583601179489e+02  -7.105671911254255e+03  -5.695608435738609e+00   4.722731329786999e+00   5.932259682105052e-01
2024-07-22T00:06:00.000000  -1.484582479061495e+03  -2.045451985605701e+02  -7.056557069672793e+03  -5.612218005854990e+00   4.744705579872771e+00   1.043421397392599e+00
"""

# Upload sample OEM data to S3
print(f"Uploading OEM data to s3://{bucket_name}/{object_key}")

s3_client.put_object(
    Bucket=bucket_name, Key=object_key, Body=oem_data, ContentType="text/plain"
)

print("OEM data uploaded successfully to S3")

# Create OEM ephemeris from S3
print("Creating OEM ephemeris from S3...")

s3_oem_ephemeris = ground_station_client.create_ephemeris(
    name="2024-07-22 S3 OEM Upload",
    satelliteId="fde41049-14f7-413e-bd7b-EXAMPLE01",
    enabled=True,
    expirationTime=datetime.now(timezone.utc) + timedelta(days=5),
    priority=2,
    ephemeris={"oem": {"s3Object": {"bucket": bucket_name, "key": object_key}}},
)

print(f"Created OEM ephemeris with ID: {s3_oem_ephemeris['ephemerisId']}")
```

 다음은 이전 예제 코드 블록에 업로드된 OEM 에페메리스에 대해 호출되는 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) 작업에서 반환된 데이터의 예입니다.

```
{
  "creationTime": 1620254718.765,
  "enabled": true,
  "name": "Example Ephemeris",
  "ephemerisId": "fde41049-14f7-413e-bd7b-EXAMPLE02",
  "priority": 2,
  "status": "VALIDATING",
  "suppliedData": {
    "oem": {
      "sourceS3Object": {
          "bucket": "ephemeris-bucket-for-testing",
          "key": "test_data.oem"
      }
    }
  }
}
```

# 방위각 고도 에페메리스 데이터 제공
<a name="providing-azimuth-elevation-ephemeris-data"></a>

**중요**  
 방위각 고도 에페메리스 기능은 현재 미리 보기 상태이며 명시적 온보딩이 필요합니다.  
 방위각 고도 에페메리스 기능은 제한된 수의 사전 결정되고 특수한 사용 사례에 대해 엄격한 액세스 제어 하에 있습니다. 액세스는 표준 고객 제공 임시 기능에 비해 훨씬 더 제한적입니다. 승인된 사용 사례 및 액세스 요청 프로세스에 대한 자세한 내용은를 통해 AWS Support 티켓을 개설하세요[AWS Support Center Console](https://console.aws.amazon.com/support). 전문화된 사용 사례에 대한 승인 프로세스를 안내해 드립니다.

## 개요
<a name="w2aac28c17c15b5"></a>

 방위각 고도 에페메리스는 위성 궤도 정보를 제공하지 않고 안테나 방향 지정을 직접 지정하는 방법을 제공합니다. 위성의 궤도를 설명하는 에페메리스 데이터를 업로드하는 대신 시간 태그가 지정된 방위각과 고도 각도를 제공하여 안테나에 접촉 전체에서 정확히 어디를 가리킬지 알려줍니다.

 AWS Ground Station 는 에페메리스를 [개별화된 사용 데이터](https://aws.amazon.com/service-terms)로 취급합니다. 이 선택적 기능을 사용하는 경우 AWS는 에페메리스 데이터를 사용하여 문제 해결 지원을 제공합니다.

 이 접근 방식은 다음 시나리오에 특히 유용합니다.
+ *초기 작업 지원:* 정확한 궤도 데이터를 사용할 수 없거나 궤도 파라미터가 빠르게 변화하는 시작 및 초기 궤도 단계(LEOP) 중.
+ *사용자 지정 포인팅 패턴:* 안테나 테스트 또는 비표준 작업을 위한 특정 포인팅 시퀀스 구현.

**참고**  
 방위각 고도 에페메리스를 사용하는 경우 연락처 예약 요청에서 위성 ARN을 생략할 수 있습니다. 위성 ARN이 생략되지 않은 경우에도 여전히 접촉 데이터의 일부로 포함되지만 방위각 고도 에페메리스는 에페메리스 우선 순위 확인을 수행하는 대신 안테나를 가리키는 데 사용됩니다. 방위각 고도 에페메리스는 특정 지상국과 연결되며 해당 위치에 대한 안테나 방향이 정의됩니다.

## 방위각 고도 에페메리스 데이터 형식
<a name="w2aac28c17c15b7"></a>

 방위각 고도 에페메리스 데이터는 세그먼트로 구성된 시간 태그 방위각 및 고도 값으로 구성됩니다. 각 세그먼트에는 특정 시간 범위를 포함하는 일련의 방위각과 고도 각도가 포함되어 있습니다.

 방위각 고도 에페메리스 데이터의 주요 구성 요소는 다음과 같습니다.
+ *Ground Station:*이 방위 고도 에페메리스가 사용될 특정 지상국입니다.
+ *각도 단위:* 각도(`DEGREE_ANGLE` 또는 )의 측정 단위입니다`RADIAN`.
+ *세그먼트:* 방위각 및 고도 각도의 시간 경계 모음 하나 이상입니다.
+ *시간 태그가 지정된 각도:* 연결된 타임스탬프가 있는 개별 방위각 및 고도 값입니다.

 각 세그먼트에는 다음이 필요합니다.
+ 참조 에포크(세그먼트의 기본 시간)
+ 유효한 시간 범위(세그먼트의 시작 및 종료 시간)
+ 시간 태그가 지정된 방위각/상승 페어 5개 이상

 방위각 고도 제약 조건: 
+ 각도: -180°\$1360°의 방위각
+ 라디안 단위의 방위각: -π \$1 2π
+ 각도 상승: -90°\$190°
+ 라디안 단위의 상승: -π/2에서 π/2로
+ 시간 값은 각 세그먼트 내에서 오름차순이어야 합니다.
+ 세그먼트는 시간이 겹치지 않아야 합니다.

 자세한 내용은 [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) API 설명서 및 [TimeAzEl](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_TimeAzEl.html) 데이터 유형을 참조하세요.

## 방위각 고도 에페메리스 생성
<a name="w2aac28c17c15b9"></a>

 방위각 고도 에페메리스는 동일한 [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) API 작업을 사용하지만 `azEl` 에페메리스 유형을 사용하여 생성됩니다. TLE와 OEM 에페메리스의 주요 차이점은 다음과 같습니다.
+ `groundStation` 파라미터를 지정해야 합니다.
+ 요청에서 `satelliteId` 파라미터를 생략해야 합니다.
+ 우선 순위 설정은 적용되지 않습니다(각 방위각 고도 에페메리스는 지상국에만 해당됨).
+ 4차 Lagrange 보간을 지원하려면 각 세그먼트에 방위각/상승 지점이 5개 이상 포함되어야 합니다.
+ 추가 제한 및 요구 사항은 [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) API 설명서에 자세히 설명되어 있습니다.

 한 가지 주의할 점은 에피메리스를 업로드하면 에피메리스가 `VALIDATING`로 설정되고 비동기 워크플로가 시작되어 에피메리스를 검증하고 이로부터 잠재적 접촉을 생성하는 비동기 워크플로가 시작된다는 점입니다. 에페메리스는이 워크플로를 통과하고 상태가가 된 후에만 연락처에 사용됩니다`ENABLED`. 에페메리스 상태에 대해 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html)를 폴링하거나 CloudWatch 이벤트를 사용하여 에페메리스의 상태 변경을 추적해야 합니다.

 잘못된 에페메리스 문제를 해결하려면 다음을 참조하세요. [잘못된 에페메리스 문제 해결](troubleshooting-invalid-ephemerides.md) 

## 예: API를 통해 방위각 고도 에페메리스 생성
<a name="w2aac28c17c15c11"></a>

 다음 예제에서는 AWS SDK for Python(Boto3)을 사용하여 방위각 고도 에페메리스를 생성하는 방법을 보여줍니다.

```
import boto3

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# Create azimuth elevation ephemeris
azimuth_elevation_ephemeris = ground_station_client.create_ephemeris(
    name="Azimuth Elevation for Ohio Ground Station",
    ephemeris={
        "azEl": {
            "groundStation": "Ohio 1",
            "data": {
                "azElData": {
                    "angleUnit": "DEGREE_ANGLE",
                    "azElSegmentList": [
                        {
                            "referenceEpoch": "2024-03-15T10:00:00Z",
                            "validTimeRange": {
                                "startTime": "2024-03-15T10:00:00Z",
                                "endTime": "2024-03-15T10:15:00Z",
                            },
                            "azElList": [
                                {"dt": 0.0, "az": 45.0, "el": 10.0},
                                {"dt": 180.0, "az": 50.0, "el": 15.0},
                                {"dt": 360.0, "az": 55.0, "el": 20.0},
                                {"dt": 540.0, "az": 60.0, "el": 25.0},
                                {"dt": 720.0, "az": 65.0, "el": 30.0},
                                {"dt": 900.0, "az": 70.0, "el": 35.0},
                            ],
                        }
                    ],
                }
            },
        }
    },
)

print(f"Created ephemeris with ID: {azimuth_elevation_ephemeris['ephemerisId']}")
```

 이 예시는 다음과 같이 설정되어 있습니다.
+ 방위각 고도 데이터는 "Ohio 1" 지상국과 연결됩니다.
+ 각도는 도 단위로 지정됩니다.
+ 세그먼트는 15분 동안 진행됩니다.
+ `dt` 값은 참조 에포크의 원자 초 오프셋입니다.
+ 방위각/상승 쌍 6개가 제공됩니다(최소 5개).

## 예: S3에서 방위각 고도 데이터 업로드
<a name="w2aac28c17c15c13"></a>

 더 큰 데이터 세트의 경우 S3 버킷에서 방위각 고도 데이터를 업로드할 수 있습니다.

```
import boto3
import json

# Create AWS clients
s3_client = boto3.client("s3")
ground_station_client = boto3.client("groundstation")

# Define S3 bucket and key
bucket_name = "azimuth-elevation-bucket"
object_key = "singapore-azimuth-elevation.json"

# Create sample azimuth elevation data
azimuth_elevation_data = {
    "angleUnit": "DEGREE_ANGLE",
    "azElSegmentList": [
        {
            "referenceEpoch": "2024-03-15T10:00:00Z",
            "validTimeRange": {
                "startTime": "2024-03-15T10:00:00Z",
                "endTime": "2024-03-15T10:15:00Z",
            },
            "azElList": [
                {"dt": 0.0, "az": 45.0, "el": 10.0},
                {"dt": 180.0, "az": 50.0, "el": 15.0},
                {"dt": 360.0, "az": 55.0, "el": 20.0},
                {"dt": 540.0, "az": 60.0, "el": 25.0},
                {"dt": 720.0, "az": 65.0, "el": 30.0},
                {"dt": 900.0, "az": 70.0, "el": 35.0},
            ],
        },
        {
            "referenceEpoch": "2024-03-15T10:15:00Z",
            "validTimeRange": {
                "startTime": "2024-03-15T10:15:00Z",
                "endTime": "2024-03-15T10:30:00Z",
            },
            "azElList": [
                {"dt": 0.0, "az": 70.0, "el": 35.0},
                {"dt": 180.0, "az": 75.0, "el": 40.0},
                {"dt": 360.0, "az": 80.0, "el": 45.0},
                {"dt": 540.0, "az": 85.0, "el": 50.0},
                {"dt": 720.0, "az": 90.0, "el": 55.0},
                {"dt": 900.0, "az": 95.0, "el": 50.0},
            ],
        },
    ],
}

# Upload sample data to S3
print(f"Uploading azimuth elevation data to s3://{bucket_name}/{object_key}")

s3_client.put_object(
    Bucket=bucket_name,
    Key=object_key,
    Body=json.dumps(azimuth_elevation_data, indent=2),
    ContentType="application/json",
)
print("Sample data uploaded successfully to S3")

# Create azimuth elevation ephemeris from S3
print("Creating azimuth elevation ephemeris from S3...")

s3_azimuth_elevation_ephemeris = ground_station_client.create_ephemeris(
    name="Large Azimuth Elevation Dataset",
    ephemeris={
        "azEl": {
            "groundStation": "Singapore 1",
            "data": {"s3Object": {"bucket": bucket_name, "key": object_key}},
        }
    },
)

print(f"Created ephemeris with ID: {s3_azimuth_elevation_ephemeris['ephemerisId']}")
```

 S3 객체에는 직접 업로드 예제와 동일한 형식의 방위각 고도 데이터가 있는 JSON 구조가 포함되어야 합니다.

## 방위 고도 에페메리스를 사용하여 연락처 예약
<a name="w2aac28c17c15c15"></a>

 방위각 고도 에페메리스를 사용하여 고객 응대를 예약하는 경우 프로세스는 TLE 및 OEM 에페메리스와 다릅니다.

1. [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html)를 사용하여 방위각 고도 에페메리스 생성

1. 에페메리스가 `ENABLED` 상태에 도달할 때까지 기다립니다.

1. 추적 재정의와 함께 [ReserveContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ReserveContact.html)를 사용하여 고객 응대 예약

 방위각 고도 에페메리스가 있는 고객 응대를 예약하는 예: 

```
import boto3
from datetime import datetime
import time

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# First, create an azimuth elevation ephemeris
print("Creating azimuth elevation ephemeris...")

create_ephemeris_response = ground_station_client.create_ephemeris(
    name="Azimuth Elevation for Contact Reservation",
    ephemeris={
        "azEl": {
            "groundStation": "Ohio 1",
            "data": {
                "azElData": {
                    "angleUnit": "DEGREE_ANGLE",
                    "azElSegmentList": [
                        {
                            "referenceEpoch": "2024-03-15T10:00:00Z",
                            "validTimeRange": {
                                "startTime": "2024-03-15T10:00:00Z",
                                "endTime": "2024-03-15T10:15:00Z",
                            },
                            "azElList": [
                                {"dt": 0.0, "az": 45.0, "el": 10.0},
                                {"dt": 180.0, "az": 50.0, "el": 15.0},
                                {"dt": 360.0, "az": 55.0, "el": 20.0},
                                {"dt": 540.0, "az": 60.0, "el": 25.0},
                                {"dt": 720.0, "az": 65.0, "el": 30.0},
                                {"dt": 900.0, "az": 70.0, "el": 35.0},
                            ],
                        }
                    ],
                }
            },
        }
    },
)

ephemeris_id = create_ephemeris_response["ephemerisId"]
print(f"Created ephemeris with ID: {ephemeris_id}")

# Wait for ephemeris to become ENABLED
print("Waiting for ephemeris to become ENABLED...")

while True:
    status = ground_station_client.describe_ephemeris(ephemerisId=ephemeris_id)[
        "status"
    ]
    if status == "ENABLED":
        print("Ephemeris is ENABLED")
        break
    elif status in ["INVALID", "ERROR"]:
        raise RuntimeError(f"Ephemeris failed: {status}")
    time.sleep(5)

# Reserve contact with azimuth elevation ephemeris
print("Reserving contact...")

contact = ground_station_client.reserve_contact(
    # Note: satelliteArn is omitted when using azimuth elevation ephemeris
    missionProfileArn="arn:aws:groundstation:us-east-2:111122223333:mission-profile/example-mission-profile",
    groundStation="Ohio 1",
    startTime=datetime(2024, 3, 15, 10, 0, 0),
    endTime=datetime(2024, 3, 15, 10, 15, 0),
    trackingOverrides={"programTrackSettings": {"azEl": {"ephemerisId": ephemeris_id}}},
)

print(f"Reserved contact with ID: {contact['contactId']}")
```

**참고**  
 방위각 고도 에페메리스와의 접촉을 예약할 때 `satelliteArn` 파라미터를 생략할 수 있습니다. 안테나는 접촉 중에 지정된 방위각 및 고도 각도를 따릅니다.

## 사용 가능한 연락처 나열
<a name="w2aac28c17c15c17"></a>

 방위각 고도 에페메리스를 사용하는 경우 [ListContacts](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContacts.html) API에는 특정 파라미터가 필요합니다.
+ 요청에서 `satelliteArn` 파라미터를 생략할 수 있습니다.
+ 사용할 에페메리스를 지정하려면 방위각 고도 에페메리스 ID와 함께 `ephemeris` 파라미터를 제공해야 합니다.
+ 제공된 방위각 및 고도 각도가 요청된 지상국의 [사이트 마스크](https://docs.aws.amazon.com/ground-station/latest/ug/locations.site-masks.html)보다 높을 때 사용 가능한 접촉 창이 표시됩니다.
+ 여전히 `groundStation` 및를 제공해야 합니다. `missionProfileArn` 

 방위각 고도 에페메리스를 생성하고 여기에 사용 가능한 연락처를 나열하는 예: 

```
import boto3
from datetime import datetime, timezone
import time

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# Step 1: Create azimuth elevation ephemeris
print("Creating azimuth elevation ephemeris...")
ephemeris_response = ground_station_client.create_ephemeris(
    name="Stockholm AzEl Ephemeris",
    ephemeris={
        "azEl": {
            "groundStation": "Stockholm 1",
            "data": {
                "azElData": {
                    "angleUnit": "DEGREE_ANGLE",
                    "azElSegmentList": [
                        {
                            "referenceEpoch": "2024-04-01T12:00:00Z",
                            "validTimeRange": {
                                "startTime": "2024-04-01T12:00:00Z",
                                "endTime": "2024-04-01T12:30:00Z",
                            },
                            "azElList": [
                                {"dt": 0.0, "az": 30.0, "el": 15.0},
                                {"dt": 360.0, "az": 45.0, "el": 30.0},
                                {"dt": 720.0, "az": 60.0, "el": 45.0},
                                {"dt": 1080.0, "az": 75.0, "el": 35.0},
                                {"dt": 1440.0, "az": 90.0, "el": 20.0},
                                {"dt": 1800.0, "az": 105.0, "el": 10.0},
                            ],
                        }
                    ],
                }
            },
        }
    },
)

ephemeris_id = ephemeris_response["ephemerisId"]
print(f"Created ephemeris: {ephemeris_id}")

# Step 2: Wait for ephemeris to become ENABLED
print("Waiting for ephemeris to become ENABLED...")
while True:
    describe_response = ground_station_client.describe_ephemeris(
        ephemerisId=ephemeris_id
    )
    status = describe_response["status"]

    if status == "ENABLED":
        print("Ephemeris is ENABLED")
        break
    elif status in ["INVALID", "ERROR"]:
        # Check for validation errors
        if "invalidReason" in describe_response:
            print(f"Ephemeris validation failed: {describe_response['invalidReason']}")
        raise RuntimeError(f"Ephemeris failed with status: {status}")

    print(f"Current status: {status}, waiting...")
    time.sleep(5)

# Step 3: List available contacts using the azimuth elevation ephemeris
print("Listing available contacts with azimuth elevation ephemeris...")

# Convert epoch timestamps to datetime objects
start_time = datetime.fromtimestamp(1760710513, tz=timezone.utc)
end_time = datetime.fromtimestamp(1760883313, tz=timezone.utc)

contacts_response = ground_station_client.list_contacts(
    startTime=start_time,
    endTime=end_time,
    groundStation="Stockholm 1",
    statusList=["AVAILABLE"],
    ephemeris={"azEl": {"id": ephemeris_id}},
    # satelliteArn is optional
    satelliteArn="arn:aws:groundstation::111122223333:satellite/a88611b0-f755-404e-b60d-57d8aEXAMPLE",
    missionProfileArn="arn:aws:groundstation:eu-north-1:111122223333:mission-profile/966b72f6-6d82-4e7e-b072-f8240EXAMPLE",
)

# Process the results
if contacts_response["contactList"]:
    print(f"Found {len(contacts_response['contactList'])} available contacts:")
    for contact in contacts_response["contactList"]:
        print(f"  - Contact from {contact['startTime']} to {contact['endTime']}")
        print(
            f"    Max elevation: {contact.get('maximumElevation', {}).get('value', 'N/A')}°"
        )
else:
    print("No available contacts found for the specified azimuth elevation ephemeris")
```

**참고**  
 접촉 기간을 결정하는 데 사용할 방위각 고도 에페메리스를 지정하기 위해 접촉을 나열할 때 방위각 고도 ID가 있는 `ephemeris` 파라미터를 제공해야 합니다. `satelliteArn`가 포함된 경우 고객 응대 데이터와 연결되지만 방위각 고도 에페메리스는 에페메리스 우선 순위 확인을 수행하는 대신 안테나를 가리키는 데 사용됩니다.

# 사용자 지정 에페메리스를 사용하여 연락처 예약
<a name="reserving-contacts-with-custom-ephemeris"></a>

## 개요
<a name="w2aac28c19b3"></a>

 사용자 지정 에페메리스(TLE, OEM 또는 방위각 고도)를 사용하는 경우 [ReserveContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ReserveContact.html) API를 사용하여 연락처를 예약할 수 있습니다. 이 섹션에서는 고객 응대를 예약하기 위한 두 가지 일반적인 워크플로와 성공적인 고객 응대 예약을 보장하기 위한 중요한 고려 사항에 대해 설명합니다.

 AWS Ground Station 안테나는 여러 고객 간에 공유되는 리소스입니다. 즉, 연락처를 나열할 때 연락처 창을 사용할 수 있더라도 다른 고객이 예약하기 전에 예약할 수 있습니다. 따라서 예약 후 고객 응대가 `SCHEDULED` 상태에 도달하는지 확인하고 고객 응대 상태 변경에 대한 적절한 모니터링을 구현하는 것이 중요합니다.

**중요**  
 방위각 고도 에페메리스의 경우 `ReserveContact` 요청에서 `satelliteArn` 파라미터를 생략할 수 있으며 에페메리스 ID`trackingOverrides`를 제공해야 합니다. TLE 및 OEM 에페메리스의 경우 여전히를 제공해야 합니다`satelliteArn`.

## 고객 응대 예약 워크플로
<a name="w2aac28c19b5"></a>

 사용자 지정 에페메리스로 연락처를 예약하기 위한 두 가지 기본 워크플로가 있습니다.

1. *List-then-reserve 워크플로:* 먼저 [ListContacts](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContacts.html)를 사용하여 사용 가능한 연락처 창을 나열한 다음 특정 창을 선택하고 예약합니다. 이 접근 방식은 선택하기 전에 사용 가능한 모든 기회를 보고 싶을 때 유용합니다.

1. *직접 예약 워크플로:* 사용 가능한 연락처를 먼저 나열하지 않고 특정 기간 동안 연락처를 직접 예약합니다. 이 접근 방식은 원하는 연락 시간을 이미 알고 있거나 미리 결정된 일정으로 작업하는 경우에 유용합니다.

 두 워크플로 모두 유효하며 선택 사항은 운영 요구 사항에 따라 달라집니다. 다음 섹션에서는 각 접근 방식의 예를 제공합니다.

## 워크플로 1: 사용 가능한 연락처를 나열한 다음 예약
<a name="w2aac28c19b7"></a>

 이 워크플로는 먼저 사용 가능한 연락 기간을 쿼리한 다음 특정 기간을 예약합니다. 이는 선택하기 전에 사용 가능한 모든 기회를 보고 싶을 때 유용합니다.

### 예: 방위각 고도 에페메리스를 사용하여 나열 및 예약
<a name="w2aac28c19b7b5"></a>

```
import boto3
from datetime import datetime, timezone
import time

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# Create azimuth elevation ephemeris
print("Creating azimuth elevation ephemeris...")
ephemeris_response = ground_station_client.create_ephemeris(
    name="AzEl Ephemeris for Contact",
    ephemeris={
        "azEl": {
            "groundStation": "Ohio 1",
            "data": {
                "azElData": {
                    "angleUnit": "DEGREE_ANGLE",
                    "azElSegmentList": [
                        {
                            "referenceEpoch": "2024-03-15T10:00:00Z",
                            "validTimeRange": {
                                "startTime": "2024-03-15T10:00:00Z",
                                "endTime": "2024-03-15T10:15:00Z",
                            },
                            "azElList": [
                                {"dt": 0.0, "az": 45.0, "el": 10.0},
                                {"dt": 180.0, "az": 50.0, "el": 15.0},
                                {"dt": 360.0, "az": 55.0, "el": 20.0},
                                {"dt": 540.0, "az": 60.0, "el": 25.0},
                                {"dt": 720.0, "az": 65.0, "el": 30.0},
                                {"dt": 900.0, "az": 70.0, "el": 35.0},
                            ],
                        }
                    ],
                }
            },
        }
    },
)

ephemeris_id = ephemeris_response["ephemerisId"]
print(f"Created ephemeris: {ephemeris_id}")

# Wait for ephemeris to become ENABLED
while True:
    status = ground_station_client.describe_ephemeris(ephemerisId=ephemeris_id)[
        "status"
    ]
    if status == "ENABLED":
        print("Ephemeris is ENABLED")
        break
    elif status in ["INVALID", "ERROR"]:
        raise RuntimeError(f"Ephemeris failed: {status}")
    time.sleep(5)

# List available contacts
print("Listing available contacts...")
contacts = ground_station_client.list_contacts(
    # Note: satelliteArn is omitted for azimuth elevation ephemeris
    groundStation="Ohio 1",
    missionProfileArn="arn:aws:groundstation:us-east-2:111122223333:mission-profile/example-profile",
    startTime=datetime(2024, 3, 15, 10, 0, 0, tzinfo=timezone.utc),
    endTime=datetime(2024, 3, 15, 10, 15, 0, tzinfo=timezone.utc),
    statusList=["AVAILABLE"],
    ephemeris={"azEl": {"id": ephemeris_id}},
)

if contacts["contactList"]:
    # Reserve the first available contact
    contact = contacts["contactList"][0]
    print(f"Reserving contact from {contact['startTime']} to {contact['endTime']}...")

    reservation = ground_station_client.reserve_contact(
        # Note: satelliteArn is omitted when using azimuth elevation ephemeris
        missionProfileArn="arn:aws:groundstation:us-east-2:111122223333:mission-profile/example-profile",
        groundStation="Ohio 1",
        startTime=contact["startTime"],
        endTime=contact["endTime"],
        trackingOverrides={
            "programTrackSettings": {"azEl": {"ephemerisId": ephemeris_id}}
        },
    )

    print(f"Reserved contact: {reservation['contactId']}")
else:
    print("No available contacts found")
```

### 예: TLE 에페메리스를 사용하여 나열 및 예약
<a name="w2aac28c19b7b7"></a>

```
import boto3
from datetime import datetime, timedelta, timezone
import time

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

satellite_id = "12345678-1234-1234-1234-123456789012"
satellite_arn = f"arn:aws:groundstation::111122223333:satellite/{satellite_id}"

# Create TLE ephemeris
print("Creating TLE ephemeris...")
ephemeris_response = ground_station_client.create_ephemeris(
    name="TLE Ephemeris for Contact",
    satelliteId=satellite_id,
    enabled=True,
    expirationTime=datetime.now(timezone.utc) + timedelta(days=7),
    priority=1,  # Higher priority than default ephemeris
    ephemeris={
        "tle": {
            "tleData": [
                {
                    "tleLine1": "1 25994U 99068A   24075.54719794  .00000075  00000-0  26688-4 0  9997",
                    "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
                    "validTimeRange": {
                        "startTime": datetime.now(timezone.utc),
                        "endTime": datetime.now(timezone.utc) + timedelta(days=7),
                    },
                }
            ]
        }
    },
)

ephemeris_id = ephemeris_response["ephemerisId"]
print(f"Created ephemeris: {ephemeris_id}")

# Wait for ephemeris to become ENABLED
while True:
    status = ground_station_client.describe_ephemeris(ephemerisId=ephemeris_id)[
        "status"
    ]
    if status == "ENABLED":
        print("Ephemeris is ENABLED")
        break
    elif status in ["INVALID", "ERROR"]:
        raise RuntimeError(f"Ephemeris failed: {status}")
    time.sleep(5)

# List available contacts
print("Listing available contacts...")
start_time = datetime.now(timezone.utc) + timedelta(hours=1)
end_time = start_time + timedelta(days=1)

contacts = ground_station_client.list_contacts(
    satelliteArn=satellite_arn,  # Required for TLE/OEM ephemeris
    groundStation="Hawaii 1",
    missionProfileArn="arn:aws:groundstation:us-west-2:111122223333:mission-profile/example-profile",
    startTime=start_time,
    endTime=end_time,
    statusList=["AVAILABLE"],
)

if contacts["contactList"]:
    # Reserve the first available contact
    contact = contacts["contactList"][0]
    print(f"Reserving contact from {contact['startTime']} to {contact['endTime']}...")

    reservation = ground_station_client.reserve_contact(
        satelliteArn=satellite_arn,  # Required for TLE/OEM ephemeris
        missionProfileArn="arn:aws:groundstation:us-west-2:111122223333:mission-profile/example-profile",
        groundStation="Hawaii 1",
        startTime=contact["startTime"],
        endTime=contact["endTime"],
        # Note: trackingOverrides is optional for TLE/OEM
        # The system will use the highest priority ephemeris automatically
    )

    print(f"Reserved contact: {reservation['contactId']}")
else:
    print("No available contacts found")
```

## 워크플로 2: 직접 연락처 예약
<a name="w2aac28c19b9"></a>

 이 워크플로는 사용 가능한 기간을 먼저 나열하지 않고 연락처를 직접 예약합니다. 이 접근 방식은 원하는 연락 시간을 이미 알고 있거나 자동 일정을 구현하는 경우에 유용합니다.

### 예: 방위각 고도 에페메리스를 사용한 직접 예약
<a name="w2aac28c19b9b5"></a>

```
import boto3
from datetime import datetime, timezone
import time

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# Define contact window
contact_start = datetime(2024, 3, 20, 14, 0, 0, tzinfo=timezone.utc)
contact_end = datetime(2024, 3, 20, 14, 15, 0, tzinfo=timezone.utc)

# Create azimuth elevation ephemeris for the specific contact time
print("Creating azimuth elevation ephemeris...")
ephemeris_response = ground_station_client.create_ephemeris(
    name="Direct Contact AzEl Ephemeris",
    ephemeris={
        "azEl": {
            "groundStation": "Ohio 1",
            "data": {
                "azElData": {
                    "angleUnit": "DEGREE_ANGLE",
                    "azElSegmentList": [
                        {
                            "referenceEpoch": contact_start.isoformat(),
                            "validTimeRange": {
                                "startTime": contact_start.isoformat(),
                                "endTime": contact_end.isoformat(),
                            },
                            "azElList": [
                                {"dt": 0.0, "az": 45.0, "el": 10.0},
                                {"dt": 180.0, "az": 50.0, "el": 15.0},
                                {"dt": 360.0, "az": 55.0, "el": 20.0},
                                {"dt": 540.0, "az": 60.0, "el": 25.0},
                                {"dt": 720.0, "az": 65.0, "el": 30.0},
                                {"dt": 900.0, "az": 70.0, "el": 35.0},
                            ],
                        }
                    ],
                }
            },
        }
    },
)

ephemeris_id = ephemeris_response["ephemerisId"]
print(f"Created ephemeris: {ephemeris_id}")

# Wait for ephemeris to become ENABLED
while True:
    status = ground_station_client.describe_ephemeris(ephemerisId=ephemeris_id)[
        "status"
    ]
    if status == "ENABLED":
        print("Ephemeris is ENABLED")
        break
    elif status in ["INVALID", "ERROR"]:
        raise RuntimeError(f"Ephemeris failed: {status}")
    time.sleep(5)

# Directly reserve the contact
print(f"Reserving contact from {contact_start} to {contact_end}...")

reservation = ground_station_client.reserve_contact(
    # Note: satelliteArn is omitted for azimuth elevation
    missionProfileArn="arn:aws:groundstation:us-east-2:111122223333:mission-profile/example-profile",
    groundStation="Ohio 1",
    startTime=contact_start,
    endTime=contact_end,
    trackingOverrides={"programTrackSettings": {"azEl": {"ephemerisId": ephemeris_id}}},
)

print(f"Reserved contact: {reservation['contactId']}")
```

### 예: TLE 에페메리스를 사용한 직접 예약
<a name="w2aac28c19b9b7"></a>

```
import boto3
from datetime import datetime, timedelta, timezone
import time

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

satellite_id = "12345678-1234-1234-1234-123456789012"
satellite_arn = f"arn:aws:groundstation::111122223333:satellite/{satellite_id}"

# Define contact window (based on predicted pass)
contact_start = datetime(2024, 3, 21, 10, 30, 0, tzinfo=timezone.utc)
contact_end = datetime(2024, 3, 21, 10, 42, 0, tzinfo=timezone.utc)

# Create TLE ephemeris
print("Creating TLE ephemeris...")
ephemeris_response = ground_station_client.create_ephemeris(
    name="Direct Contact TLE Ephemeris",
    satelliteId=satellite_id,
    enabled=True,
    expirationTime=contact_end + timedelta(days=1),
    priority=1,
    ephemeris={
        "tle": {
            "tleData": [
                {
                    "tleLine1": "1 25994U 99068A   24080.50000000  .00000075  00000-0  26688-4 0  9999",
                    "tleLine2": "2 25994  98.2007  35.6589 0001234  89.2782  18.9934 14.57114995112000",
                    "validTimeRange": {
                        "startTime": (contact_start - timedelta(hours=1)).isoformat(),
                        "endTime": (contact_end + timedelta(hours=1)).isoformat(),
                    },
                }
            ]
        }
    },
)

ephemeris_id = ephemeris_response["ephemerisId"]
print(f"Created ephemeris: {ephemeris_id}")

# Wait for ephemeris to become ENABLED
while True:
    status = ground_station_client.describe_ephemeris(ephemerisId=ephemeris_id)[
        "status"
    ]
    if status == "ENABLED":
        print("Ephemeris is ENABLED")
        break
    elif status in ["INVALID", "ERROR"]:
        raise RuntimeError(f"Ephemeris failed: {status}")
    time.sleep(5)

# Directly reserve the contact
print(f"Reserving contact from {contact_start} to {contact_end}...")

reservation = ground_station_client.reserve_contact(
    satelliteArn=satellite_arn,  # Required for TLE ephemeris
    missionProfileArn="arn:aws:groundstation:us-west-2:111122223333:mission-profile/example-profile",
    groundStation="Hawaii 1",
    startTime=contact_start,
    endTime=contact_end,
    # Note: trackingOverrides is optional for TLE
    # The system will use the highest priority ephemeris automatically
)

print(f"Reserved contact: {reservation['contactId']}")
```

## 고객 응대 상태 변경 모니터링
<a name="w2aac28c19c11"></a>

 고객 응대를 예약한 후에는 상태를 모니터링하여 로 성공적으로 전환`SCHEDULED`되고 모든 문제에 대한 알림을 받는 것이 중요합니다.는 모든 고객 응대 상태 변경에 대해 Amazon EventBridge에 이벤트를 AWS Ground Station 내보냅니다.

 고객 응대 상태는이 수명 주기를 따릅니다.
+ `SCHEDULING` - 고객 응대가 예약을 위해 처리되고 있습니다.
+ `SCHEDULED` - 연락처가 성공적으로 예약되었으며 실행됩니다.
+ `FAILED_TO_SCHEDULE` - 고객 응대를 예약할 수 없음(터미널 상태)

 고객 응대 상태 및 수명 주기에 대한 자세한 내용은 섹션을 참조하세요[고객 응대 수명 주기 이해](contacts.lifecycle.md).

### EventBridge를 사용하여 고객 응대 상태 모니터링 구현
<a name="w2aac28c19c11c11"></a>

 고객 응대 상태 변경을 실시간으로 모니터링하려면 Ground Station 고객 응대 상태가 변경될 때마다 Lambda 함수를 트리거하는 Amazon EventBridge 규칙을 설정할 수 있습니다. 이 접근 방식은 고객 응대 상태를 폴링하는 것보다 더 효율적이고 확장 가능합니다.

#### 구현 단계
<a name="w2aac28c19c11c11b5"></a>

1. 고객 응대 상태 변경 이벤트를 처리하는 Lambda 함수 생성

1. Ground Station 고객 응대 상태 변경 이벤트와 일치하는 EventBridge 규칙 생성

1. Lambda 함수를 규칙의 대상으로 추가

#### Lambda 함수 핸들러 예제
<a name="w2aac28c19c11c11b7"></a>

 고객 응대 상태 변경 이벤트를 처리하는 Lambda 함수의 전체 예는 `AquaSnppJpssTerraDigIF.yml` CloudFormation 템플릿의 `GroundStationCloudWatchEventHandlerLambda` 리소스를 참조하세요. 이 템플릿은 AWS Ground Station 고객 온보딩 Amazon S3 버킷에서 사용할 수 있습니다. 이 템플릿에 액세스하는 방법에 대한 지침은 데이터 흐름 엔드포인트 예제의 [함께 넣기](examples.pbs-data-dataflow-endpoint.md#examples.pbs-dataflow-endpoint.putting-it-together) 섹션을 참조하세요.

#### EventBridge 규칙 구성
<a name="w2aac28c19c11c11b9"></a>

 EventBridge 규칙은 모든 Ground Station 고객 응대 상태 변경과 일치하도록 다음 이벤트 패턴을 사용해야 합니다.

```
{
  "source": ["aws.groundstation"],
  "detail-type": ["Ground Station Contact State Change"]
}
```

 특정 상태(예: 실패)만 필터링하려면 세부 정보 필터를 추가할 수 있습니다.

```
{
  "source": ["aws.groundstation"],
  "detail-type": ["Ground Station Contact State Change"],
  "detail": {
    "contactStatus": [
      "FAILED_TO_SCHEDULE",
      "FAILED",
      "AWS_FAILED",
      "AWS_CANCELLED"
    ]
  }
}
```

 Lambda 대상으로 EventBridge 규칙을 생성하는 방법에 대한 자세한 지침은 Amazon EventBridge 사용 설명서의 [이벤트에 대응하는 규칙 생성을 참조하세요](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html).

### 자동화를 위한 EventBridge 규칙 설정
<a name="w2aac28c19c11c13"></a>

 EventBridge 규칙을 생성하여 고객 응대 상태 변경에 자동으로 응답할 수 있습니다. 예제: 
+ 고객 응대 예약 실패 시 알림 전송
+ Lambda 함수를 트리거하여 고객 응대가 들어올 때 리소스 준비 `PREPASS`
+ 감사 목적으로 고객 응대 완료 기록

 AWS Ground Station 이벤트에 대한 EventBridge 규칙 설정에 대한 자세한 내용은 섹션을 참조하세요[이벤트 AWS Ground Station 로 자동화](monitoring.automating-events.md).

## 모범 사례 및 고려 사항
<a name="w2aac28c19c13"></a>

### 일정 충돌 처리
<a name="w2aac28c19c13b3"></a>

 AWS Ground Station 안테나는 공유 리소스이므로에서 사용할 `ListContacts` 수 있는 고객 응대 기간은 다른 고객이 예약한 후 예약할 수 있습니다. 이를 처리하려면: 

1. 예약 후 항상 고객 응대 상태 확인

1. 대체 기간을 사용하여 재시도 로직 구현

1. 가능하면 미리 연락처를 예약하는 것이 좋습니다.

1. EventBridge 이벤트를 사용하여 `FAILED_TO_SCHEDULE` 상태 모니터링

### 에페메리스 검증 타이밍
<a name="w2aac28c19c13b5"></a>

 에페메리스를 사용하여 연락처를 예약하려면 에페메리스가 `ENABLED` 상태여야 합니다. 검증 프로세스는 일반적으로 에페메리스 유형 및 크기에 따라 몇 초에서 몇 분 정도 걸립니다. 고객 응대를 예약하기 전에 항상 에페메리스 상태를 확인합니다.

### 고객 응대 타이밍 고려 사항
<a name="w2aac28c19c13b7"></a>

 사용자 지정 에페메리스를 사용하는 경우: 
+ 에페메리스가 전체 연락 기간을 포함하는지 확인
+ 방위각 고도 에페메리스의 경우 접촉 전체에서 각도가 안테나를 [사이트 마스크](https://docs.aws.amazon.com/ground-station/latest/ug/locations.site-masks.html) 위에 유지하는지 확인합니다.
+ 향후 연락을 예약할 때 에페메리스 만료 시간 고려

### 에페메리스 유형별 API 차이
<a name="w2aac28c19c13b9"></a>

 `ReserveContact` API는 에페메리스 유형에 따라 다르게 동작합니다.


| 에페메리스 유형 | satelliteArn 필수 | trackingOverrides 필요 | 
| --- | --- | --- | 
| TLE | 예 | 아니요(선택 사항) | 
| OEM | 예 | 아니요(선택 사항) | 
| 방위각 상승 | 아니요(선택 사항) | 예 | 

# 사용되는 에페메리스 이해
<a name="which-ephemeris-is-used"></a>

 에페메리스에는 *우선 순위*, *만료 시간* 및 *활성화* 플래그가 있습니다. 이를 통해 고객 응대 중에 추적에 사용되는 에페메리스가 결정됩니다.

## TLE 및 OEM 에페메리스
<a name="w2aac28c21b5"></a>

 OEM 및 TLE 에페메리스의 경우 각 위성에 대해 하나의 에페메리스만 활성화할 수 있습니다. 사용할 에페메리스는 우선 순위가 가장 높은 활성화된 에페메리스로, 만료 시간은 미래입니다. 우선 순위 값이 클수록 우선 순위가 높음을 나타냅니다. [ListContacts](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContacts.html)에서 반환하는 사용 가능한 연락 시간은 이 에페메리스를 기반으로 합니다. 여러 개의 `ENABLED` 에페메리스의 우선 순위가 동일한 경우 가장 최근에 생성되거나 업데이트된 에페메리스가 사용됩니다.

**참고**  
 AWS Ground Station 에는 위성당 `ENABLED` 고객 제공 에페메리스 수에 대한 서비스 할당량이 있습니다(: [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/gs.html) 참조). 이 할당량에 도달한 후 에페메리스 데이터를 업로드하려면 가장 낮은 우선순위/가장 빠른 생성 에페메리스를 삭제([DeleteEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DeleteEphemeris.html) 사용)하거나 비활성화([UpdateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateEphemeris.html) 사용)합니다.

 에페메리스가 생성되지 않았거나 `ENABLED` 에페메리스 상태가 없는 경우 AWS Ground Station 는 가능한 경우 위성([스페이스 트랙](https://www.space-track.org/))에 기본 에페메리스를 사용합니다. 이 기본 에페메리스의 우선순위는 0입니다.

## 방위각 고도 에페메리스
<a name="w2aac28c21b7"></a>

 방위각 고도 에페메리스는 OEM 및 TLE 에페메리스와 다르게 작동합니다. 각 방위각 고도 에페메리스는 특정 지상국과 연결되며 우선 순위가 없습니다. 방위각 고도 에페메리스로 연락처를 예약할 때 `trackingOverrides` 파라미터를 통해 사용할 방위각 고도 에페메리스를 명시적으로 지정합니다.

 방위각 고도 에페메리스의 주요 차이점: 
+ 우선순위 시스템 없음 - 각 연락처에 대해 에페메리스를 명시적으로 선택합니다.
+ 지상국별 - 각 에페메리스는 특정 지상국과 연결됩니다.
+ 자동 폴백 없음 - 지정된 에페메리스를 사용할 수 없는 경우 고객 응대가 실패합니다.

**참고**  
 방위각 고도 에페메리스는 OEM 및 TLE 에페메리스와 경쟁하지 않습니다. 고객 응대를 예약할 때 명시적으로 선택되며 추적 재정의가 지정된 경우에만 사용됩니다.

## 새 에페메리스가 이전에 예약된 연락처에 미치는 영향
<a name="w2aac28c21b9"></a>

 [DescribeContact API](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContact.html)를 사용하여 활성 가시성 시간을 반환하여 새 에페메리스가 이전에 예약된 연락처에 미치는 영향을 확인합니다.

 OEM 및 TLE 에페메리스의 경우 새 에페메리스를 업로드하기 전에 예약된 연락처는 원래 예약된 연락 시간을 유지하는 반면 안테나 추적은 활성 에페메리스를 사용합니다. 활성 에페메리스를 기반으로 하는 우주선의 위치가 이전 에페메리스와 크게 다른 경우 전송/수신 사이트 마스크 외부에서 작동하는 우주선으로 인해 안테나와의 위성 접촉 시간이 단축될 수 있습니다. 따라서 이전 에페메리스와 크게 다른 새 에페메리스를 업로드한 후 향후 연락처를 취소하고 다시 예약하는 것이 좋습니다.

 [DescribeContact API](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContact.html)를 사용하면 예약된 고객 응대 `startTime` 및를 반환된 `visibilityStartTime` 및 `endTime`와 비교하여 전송/수신 사이트 마스크 외부에서 작동하는 우주선으로 인해 사용할 수 없는 향후 고객 응대 부분을 확인할 수 있습니다`visibilityEndTime`. 향후 고객 응대를 취소하고 다시 예약하기로 선택한 경우 고객 응대 시간 범위가 가시성 시간 범위를 30초 이상 벗어나서는 안 됩니다. 취소된 고객 응대는 연락 시간에 너무 가깝게 취소되면 비용이 발생할 수 있습니다. 취소된 접촉에 대한 자세한 내용은 [Ground Station FAQ](https://aws.amazon.com/ground-station/faqs/)를 참조하세요.

 방위각 고도 에페메리스의 경우 예약된 고객 응대는 고객 응대가 예약될 때 선택한 특정 에페메리스를 사용합니다. 예약된 연락처의 방위각 고도 데이터를 업데이트해야 하는 경우 새 에페메리스로 연락처를 취소하고 다시 예약할 수 있습니다.

# 위성의 현재 에페메리스 가져오기
<a name="getting-current-ephemeris"></a>

 [GetSatellite](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_GetSatellite.html) 또는 [ListSatellites](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListSatellites.html) 작업을 호출하여 특정 위성에 AWS Ground Station 대해에서 사용 중인 현재 에페메리스를 검색할 수 있습니다. 이 두 메서드는 모두 현재 사용 중인 에페메리스에 대한 메타데이터를 반환합니다. 이 에페메리스 메타데이터는에 업로드된 사용자 지정 에페메리스 AWS Ground Station 와 기본 에페메리스에 대해 다릅니다.

**참고**  
 방위각 고도 에페메리스는 위성과 연결되지 않으므로 [GetSatellite](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_GetSatellite.html) 또는 [ListSatellites](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListSatellites.html)에서 반환되지 않습니다. 방위각 고도 에페메리스에 대한 정보를 검색하려면 특정 에페메리스 ID와 함께 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) API를 사용하거나 [ListEphemerides](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListEphemerides.html)를 사용하여 계정에 사용 가능한 모든 에페메리스를 확인합니다.

 기본 에페메리스는 `source` 및 `epoch` 필드만 포함합니다. `epoch`는 [스페이스 트랙](https://www.space-track.org/)에서 가져온 [두 줄 요소 세트](https://en.wikipedia.org/wiki/Two-line_element_set)의 [에포크](https://en.wikipedia.org/wiki/Epoch_(astronomy))이며, 현재 위성의 궤적을 계산하는 데 사용되고 있습니다.

 사용자 지정 에페메리스는 `CUSTOMER_PROVIDED`의 `source` 값을 가지며 `ephemerisId` 필드에 고유한 식별자가 포함됩니다. 이 고유 식별자를 사용하여 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) 작업을 통해 에페메리스를 쿼리할 수 있습니다. [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) 작업을 AWS Ground Station 통해에 업로드하는 동안 에페메리스에 이름이 할당된 경우 선택적 `name` 필드가 반환됩니다.

 에페메리스는에 의해 동적으로 업데이트 AWS Ground Station 되므로 반환된 데이터는 API 호출 시 사용되는 에페메리스의 스냅샷일 뿐입니다.

## 기본 에페메리스를 사용하는 위성에 대한 [GetSatellite](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_GetSatellite.html) 반환 예제
<a name="w2aac28c23c13"></a>

```
{
    "satelliteId": "e1cfe0c7-67f9-4d98-bad2-EXAMPLE",
    "satelliteArn": "arn:aws:groundstation::111122223333:satellite/e1cfe0c7-67f9-4d98-bad2-EXAMPLE",
    "noradSatelliteID": 25994,
    "groundStations": [
        "Ohio 1",
        "Oregon 1"
    ],
    "currentEphemeris": {
        "source": "SPACE_TRACK",
        "epoch": 1528245583.619
    }
}
```

## 사용자 지정 에페메리스를 사용하는 위성에 대한 [GetSatellite](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_GetSatellite.html) 예제
<a name="w2aac28c23c15"></a>

```
{
      "satelliteId": "e1cfe0c7-67f9-4d98-bad2-EXAMPLE",
      "satelliteArn": "arn:aws:groundstation::111122223333:satellite/e1cfe0c7-67f9-4d98-bad2-EXAMPLE",
      "noradSatelliteID": 25994,
      "groundStations": [
            "Ohio 1",
            "Oregon 1"
      ],
      "currentEphemeris": {
          "source": "CUSTOMER_PROVIDED",
          "ephemerisId": "e1cfe0c7-67f9-4d98-bad2-EXAMPLE",
          "name": "My Ephemeris"
      }
  }
```

## 방위각 고도 에페메리스 나열
<a name="w2aac28c23c17"></a>

 방위각 고도 에페메리스는 위성과 연결되지 않으므로 다른 APIs를 사용하여 위성에 대한 정보를 검색하고 검색해야 합니다.

1. [ListEphemerides](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListEphemerides.html)를 사용하여 방위각 고도 에페메리스를 포함하여 계정의 모든 에페메리스를 나열합니다. 상태 및 에페메리스 유형별로 필터링할 수 있습니다.

1. 특정 에페메리스 ID와 함께 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html)를 사용하여 방위각 고도 에페메리스에 대한 자세한 정보를 가져옵니다.

1. 특정 연락처 ID와 함께 [DescribeContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeContact.html)를 사용하여 연락처에 사용되는 에페메리스에 대한 자세한 정보를 가져옵니다.

 방위각 고도 에페메리스를 포함한 [ListEphemerides](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListEphemerides.html) 응답의 예: 

```
{
    "ephemerides": [
        {
            "ephemerisId": "abc12345-6789-def0-1234-5678EXAMPLE",
            "ephemerisType": "AZ_EL",
            "name": "Azimuth Elevation for Ohio Ground Station",
            "status": "ENABLED",
            "creationTime": 1620254718.765
        },
        {
            "ephemerisId": "def45678-9012-abc3-4567-8901EXAMPLE",
            "ephemerisType": "TLE",
            "name": "TLE for Satellite 12345",
            "status": "ENABLED",
            "creationTime": 1620254700.123
        }
    ]
}
```

**참고**  
 [ListEphemerides](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListEphemerides.html) 응답에서 방위각 고도 에페메리스에는 `groundStation` 필드 대신 `satelliteId` 필드가 있으므로 쉽게 식별할 수 있습니다.

# 기본 에페메리스 데이터로 되돌리기
<a name="reverting-to-default-ephemeris-data"></a>

 사용자 지정 에페메리스 데이터를 업로드하면 해당 특정 위성에 대해에서 AWS Ground Station 사용하는 기본 에페메리스를 재정의합니다. AWS Ground Station 는 현재 활성화되어 있고 만료되지 않은 고객 제공 에페메리스를 사용할 수 없을 때까지 기본 에페메리스를 다시 사용하지 않습니다. AWS Ground Station 또한는 만료 시간 이후에 사용할 수 있는 기본 에페메리스가 있더라도 현재 고객이 제공한 에페메리스의 만료 시간이 지난 고객 응대를 나열하지 않습니다.

**참고**  
 방위각 고도 에페메리스에는 기본값이 없으며 위성 에페메리스를 재정의하지 않습니다. `trackingOverrides` 파라미터를 사용하여 연락처를 예약할 때 명시적으로 선택됩니다. 방위각 고도 에페메리스를 더 이상 사용하지 않으려면 추적 재정의를 지정하지 않고 연락처를 예약하면 시스템에서 활성 위성 에페메리스를 대신 사용합니다.

## TLE 및 OEM 에페메리스 되돌리기
<a name="w2aac28c25b7"></a>

 위성의 기본 [스페이스 트랙](https://www.space-track.org/) 에페메리스로 되돌리려면 다음 중 하나를 수행해야 합니다.
+  활성화된 모든 고객 제공 에페메리스를 삭제([DeleteEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DeleteEphemeris.html) 사용)하거나 비활성화([UpdateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UpdateEphemeris.html) 사용)합니다. [ListEphemerides](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListEphemerides.html).
+  고객이 제공한 기존 에페메리스가 모두 만료될 때까지 기다리세요.

 [GetSatellite](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_GetSatellite.html)를 호출하고 위성에 대한 현재 에페메리스`source`의가 인지 확인하여 기본 에페메리스가 사용되고 있는지 확인할 수 있습니다`SPACE_TRACK`. 기본 에페메리스에 [기본 에페메리스 데이터](default-ephemeris-data.md) 대한 자세한 내용은 섹션을 참조하세요.

## 방위각 고도 에페메리스 관리
<a name="w2aac28c25b9"></a>

 방위각 고도 에페메리스는 각 접촉에 대해 명시적으로 선택되고 위성과 연결되지 않으므로 "되돌아가기"라는 개념은 없습니다. 대신 다음과 같이 방위각 고도 에페메리스를 관리할 수 있습니다.
+  방*위각 고도 에페메리스 사용을 중지하려면:*를 지정`trackingOverrides`하고 지정하지 않고 새 연락처를 예약하기만 하면 됩니다`satelliteArn`. 연락처는 대신 지정된 위성에 활성 에페메리스를 사용합니다.
+  *미사용 방위각 고도 에페메리스 제거:* [DeleteEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DeleteEphemeris.html)를 사용하여 더 이상 필요하지 않은 방위각 고도 에페메리스를 삭제합니다. 예약된 고객 응대에서 현재 사용 중인 에페메리스는 삭제할 수 없습니다.

 계정의 모든 방위각 고도 에페메리스를 나열하려면 [ListEphemerides](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListEphemerides.html)를 사용합니다. 방위각 고도 에페메리스는 `ephemerisType` 필드 또는 응답에 `groundStation` 필드 대신 `satelliteId` 필드의 존재로 식별할 수 있습니다.