目次
AWS Ground Station v2.0 完全ガイド 2026
AWS Ground Station は、低軌道(LEO)・中軌道(MEO)衛星との通信を AWS が運用する地上局ネットワーク経由でマネージド化し、衛星データの受信・処理・クラウド統合を自動化するサービス です。従来は数億~数十億円の地上局設備投資・各国での周波数免許取得が必須でしたが、Ground Station は AWS が世界 20+ 地点に配置した高精度パラボラアンテナ(直径 5m)を従量課金で共有利用でき、地球観測・気象予測・海事追跡・衛星テレメトリ等の衛星データ利用事業を低コストで迅速に立ち上げられます。2025-2026 年は Amazon Leo(AWS の衛星コンステレーション)の拡大に伴い地上局 300+ 地点への増強、衛星データの SageMaker・Bedrock 統合による解析の高度化が加速しており、宇宙スタートアップから大規模エンタープライズまでの衛星データ利用が爆発的に拡大しています。
目次
- 概要・課題・特徴
- アーキテクチャ
- コアコンポーネント
- 主要ユースケース
- 衛星コンタクトのスケジューリング
- ミッションプロファイル
- 設定・操作の具体例
- 受信データの処理・分析
- 類似サービス比較表
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース・参考文献
- 実装例・チェックリスト
- まとめ
概要・課題・特徴
本質
AWS Ground Station は 「衛星との通信をマネージド化し、地球観測・気象データ・衛星テレメトリを低コストで AWS クラウドに直接取り込める宇宙データ基盤サービス」 です。衛星(LEO・MEO 衛星)の軌道上を通過する数分間(タイポイカルな LEO パス 8-12 分)に、AWS の地上局アンテナが RF(高周波)信号を受信、デジタル変換してデータエンドポイント(EC2 UDP サーバー)に配信します。受信データは直接 S3・EBS に保存され、SageMaker・Lambda で即座に処理・解析できるため、衛星画像 AI・気象予測モデル・海事監視を迅速に構築できます。
解決する課題
- 地上局インフラ投資の巨額化:5m パラボラアンテナ 1 台 10-50 億円、冷却・電力・建屋等含め数十億円規模の投資
- 各国での周波数免許申請:各国の通信局に個別申請、承認まで 6-12 ヶ月
- 地上局の恒久的な保守・運用:給電・冷却・点検に常時スタッフが必要
- 衛星パスの限定性:自社地上局では対象衛星が上空を通過する時間帯のみ受信(1-2 時間/日)
- データ処理パイプラインの複雑性:受信した生データの衛星フォーマット(CCSDS)デコード、クラウド転送、AI 解析の統合
- 宇宙スタートアップの参入障壁:初期投資 10-50 億円では事業化が困難
主な特徴
| 特徴 | 説明 |
|---|---|
| グローバル地上局ネットワーク | 世界 20+ 地点(2026 年末に 300+ 予定)、複数地点で衛星追跡により受信機会最大化 |
| フルマネージド化 | アンテナ指向・信号処理・データ転送を全自動、ユーザーは受信スケジュール指定のみ |
| 複数周波数帯対応 | X-band(7750-8400 MHz)・S-band(2025-2300 MHz)・UHF で多様な衛星に対応 |
| Wideband・Narrowband | 広帯域(衛星画像)と狭帯域(テレメトリ・コマンド)の両方を処理 |
| Contact スケジューリング API | 衛星パス予測・地上局可用性を自動計算、ユーザーは希望スケジュール予約 |
| Dataflow Endpoint | EC2 UDP サーバーへのリアルタイムデータ配信、処理システムと統合容易 |
| S3・EBS への直接保存 | 受信データを自動的に S3 に転送、分析パイプラインに即接続 |
| AWS サービス統合 | SageMaker(AI 解析)・Lambda(トリガー処理)・EventBridge(パイプライン自動化) |
| 従量課金 | コンタクト時間単位の課金、固定費 0 |
| 信号処理ソフトウェア SDK | 衛星フォーマット(CCSDS)デコード・復調を AWS SDK で簡素化 |
アーキテクチャ
graph TB
subgraph "Space(宇宙)"
LEO["LEO衛星<br/>(地球観測・気象・通信)<br/>高度: 300-2000 km<br/>周期: 90-120 分"]
MEO["MEO衛星<br/>(測位・通信)<br/>高度: 5000-20000 km"]
end
subgraph "AWS Ground Stations(地上局ネットワーク)"
GS1["Ground Station<br/>(米国オレゴン)<br/>X-band/S-band"]
GS2["Ground Station<br/>(日本 東京)<br/>X-band/S-band"]
GS3["Ground Station<br/>(欧州フランクフルト)<br/>X-band/S-band"]
GSN["+ 17+ Ground Stations<br/>(世界各地)"]
end
subgraph "Signal Processing(信号処理)"
RF["RF信号受信<br/>(7750-8400 MHz)"]
ADC["アナログ-デジタル変換"]
Demod["復調(Demodulation)"]
Decode["CCSDS デコード"]
end
subgraph "AWS Cloud Processing"
EC2["EC2 UDP Endpoint<br/>(リアルタイムデータ受信)"]
S3["Amazon S3<br/>(衛星画像・データ保存)"]
EBS["Amazon EBS<br/>(一時キャッシュ)"]
DDB["Amazon DynamoDB<br/>(メタデータ・軌道情報)"]
end
subgraph "AI/Analytics Pipeline"
SM["SageMaker<br/>(地球観測 AI・解析)"]
Lambda["Lambda<br/>(自動トリガー処理)"]
Athena["Athena<br/>(衛星データクエリ)"]
end
LEO -->|RF信号| GS1
LEO -->|RF信号| GS2
MEO -->|RF信号| GS3
GS1 --> RF
GS2 --> RF
GS3 --> RF
GSN --> RF
RF --> ADC
ADC --> Demod
Demod --> Decode
Decode --> EC2
EC2 --> S3
EC2 --> EBS
S3 --> SM
S3 --> Athena
SM --> Lambda
Lambda --> DDB
データフロー詳細
- 衛星軌道予測:衛星 NORAD TLE データから、Ground Station 上空通過時刻(Contact Window)を計算
- Contact スケジューリング:ユーザーが希望 Contact Window を予約、確認
- 衛星通信:衛星パス継続中(8-15 分)、アンテナが自動追跡、RF 信号受信
- 信号処理:RF → アナログ-デジタル変換 → 復調 → CCSDS フォーマットデコード
- Dataflow Endpoint:処理済みデータを EC2 UDP サーバーにリアルタイム配信
- クラウド統合:S3 保存 → SageMaker で地球観測 AI 実行 → Lambda トリガー処理
- ユーザーアプリケーション:結果を API・ダッシュボード・レポートで提供
コアコンポーネント
1. Ground Station(地上局)
AWS が世界に配置した高性能衛星受信施設。
構成要素:
- パラボラアンテナ:直径 5m、高精度指向制御、3-10°/秒で衛星を自動追跡
- RF 受信機:X-band(7750-8400 MHz)、S-band(2025-2300 MHz)、UHF(400-500 MHz)
- 信号処理装置:リアルタイム復調・デコード
- データネットワーク:AWS ネットワークに直結、低レイテンシー転送
主要地点(2026):
| リージョン | 地点 | 周波数 |
|---|---|---|
| 北米 | us-west-2(オレゴン) | X-band、S-band |
| us-east-2(オハイオ) | X-band、S-band | |
| 欧州 | eu-central-1(フランクフルト) | X-band、S-band |
| アジア太平洋 | ap-northeast-1(東京) | X-band、S-band |
| ap-southeast-1(シンガポール) | X-band |
2. Mission Profile(ミッションプロファイル)
衛星通信の実行方式を定義する設定セット。
構成:
- ミッション名:プロジェクト・衛星識別子
- Tracking Config:衛星追跡方式(Two-line Element TLE 値)
- Dataflow Edges:入力(衛星受信)→ 出力(EC2 UDP サーバー等)のマッピング
- 最小接触時間:Contract が予約対象となる最短時間(通常 180 秒)
3. Contact(衛星パス)
衛星が地上局上空を通過する時間帯。
Contact 属性:
-
Start Time:衛星上空到達時刻
-
End Time:衛星水平線下降時刻
-
Ground Station:受信施設
-
Max Elevation:衛星高仰角(0° = 地平線、90° = 天頂)
-
Status:AVAILABLE(予約可)/ SCHEDULED(予約済)/ PASSED(終了)
-
Contact Window の例:
-
2026-01-15T14:22:00Z → 2026-01-15T14:35:30Z (13 分間)
-
東京地上局、最大仰角 78°、推定受信データ 400 MB
4. Dataflow Endpoint Group(データフロー終端)
受信衛星データを配信する先(EC2 UDP サーバー等)。
# Dataflow Endpoint の例
{
"endpoint": {
"address": {
"name": "satellite-receiver-01",
"port": 55888
},
"name": "satellite-receiver",
"mtu": 1500
},
"securityDetails": {
"subnetIds": ["subnet-0123456789abcdef0"],
"securityGroupIds": ["sg-0123456789abcdef0"],
"roleArn": "arn:aws:iam::123456789012:role/GroundStationRole"
}
}
5. Config(アンテナ・周波数設定)
受信パラメータの詳細設定。
タイプ:
- Antenna Downlink:X-band / S-band ダウンリンク設定
- Antenna Uplink:コマンド送信用アップリンク(Advanced)
- System Uplink:S-band アップリンク
- RF Attenuator:受信信号減衰(強い信号対策)
主要ユースケース
1. 地球観測衛星(Earth Observation)
農業・都市開発・災害監視の画像データ取得。
衛星例:
- Sentinel-1(SAR 衛星、雲を透視)
- Sentinel-2(光学衛星、RGB + 赤外)
- Landsat(USGS、30m 分解能)
- Planet Labs(複数小型衛星コンステレーション)
データフロー:
- Ground Station で衛星 Downlink 受信
- S3 に RAW 画像ファイル保存(1GB-10GB/Contact)
- SageMaker で土地利用分類・作物監視 AI 実行
- 結果を API で農家・金融機関に提供
用途:
- 農業:作物生育監視、肥料・水管理最適化
- 不動産:開発適地評価、資産管理
- 環境:森林減少・生態系監視
- 防災:洪水・地滑り・火災の早期警戒
2. 気象予測衛星(Meteorological Data)
リアルタイム気象データの入手。
衛星例:
- NOAA GOES-R(赤外・可視)
- Meteosat(欧州気象機関)
- Himawari-8/9(日本気象庁、高頻度)
実装:
import boto3
gs = boto3.client('groundstation', region_name='us-west-2')
# Meteosat Contact の確認
response = gs.list_contacts(
groundStation='eu-central-1-gs-001',
statusList=['AVAILABLE'],
startTime='2026-01-15T00:00:00Z',
endTime='2026-01-16T00:00:00Z'
)
# 気象予測モデルへのデータ投入
for contact in response['contactList']:
print(f"Contact: {contact['startTime']} - {contact['endTime']}")
# 気象データ取得 → 予測モデル実行
3. 海事監視・漁業管理(Maritime Monitoring)
船舶位置追跡・漁業資源管理。
データソース:
- VMS(漁業管理・AIS):船舶自動識別信号
- SAR 衛星:不法投棄・密漁検知
- 海面温度データ:好漁場予測
4. 気候変動研究・データアーカイブ
長期的な地球環境監視。
用途:
- 氷床・氷河の衛星観測
- 海水温度・海面水位の長期傾向
- CO2 濃度・メタン検出(分光衛星)
5. 新型衛星のミッション制御・テレメトリ(Spacecraft Telemetry)
宇宙スタートアップの衛星運用基盤。
例:
- Axiom Space:商用宇宙ステーション
- Relativity Space:3D 印刷ロケット
- Rocket Lab:小型ロケット衛星
実装フロー:
- スタートアップが地球観測・通信小型衛星を打ち上げ
- AWS Ground Station で Downlink(テレメトリ・科学データ)受信
- SageMaker で衛星ヘルス監視・データ解析
- 顧客に解析結果 API で提供
6. SAR(Synthetic Aperture Radar)データ処理
合成開口レーダーによる高精度観測。
特徴:
- 雲を透視できる(光学衛星の弱点を補完)
- 地表の微細な変化検知(地震・地滑り変形)
- 24 時間観測可能
用途:
- インフラ監視:橋・ダムの変形検知
- 防災:地震後の地変検出
- 安全保障:軍事施設の活動監視
衛星コンタクトのスケジューリング
衛星パス予測
# 利用可能な Ground Station の確認
aws groundstation list-ground-stations \
--region us-west-2 \
--query 'groundStationList[*].{Name:groundStationName,Region:region}'
# 出力例:
# [
# {'Name': 'us-west-2-gs-001', 'Region': 'us-west-2'},
# {'Name': 'ap-northeast-1-gs-001', 'Region': 'ap-northeast-1'}
# ]
Satellite(衛星)登録
# 衛星の Ephemeris(軌道情報)を登録・更新
# NORAD Catalog Number を指定
aws groundstation describe-satellite \
--satellite-id 25544 # ISS(国際宇宙ステーション)の Catalog ID
--region us-west-2
# Sentinel-1A(地球観測衛星)
aws groundstation describe-satellite \
--satellite-id 39634
--region us-west-2
Mission Profile の作成
aws groundstation create-mission-profile \
--name "earth-observation-mission" \
--minimum-viable-contact-duration-seconds 180 \
--tracking-config-arn arn:aws:groundstation:us-west-2:123456789012:config/tracking/satellite-tle-config \
--dataflow-edges '[{
"source": "arn:aws:groundstation:us-west-2:123456789012:config/antenna-downlink/x-band",
"destination": "arn:aws:groundstation:us-west-2:123456789012:config/dataflow-endpoint/ec2-receiver"
}]' \
--region us-west-2
Contact 検索・予約
# 今後 7 日間の利用可能 Contact を検索
aws groundstation list-contacts \
--ground-station 'ap-northeast-1-gs-001' \
--satellite-arn 'arn:aws:groundstation::satellite/39634' \
--status-list AVAILABLE \
--start-time "2026-01-15T00:00:00Z" \
--end-time "2026-01-22T00:00:00Z" \
--region ap-northeast-1
# 出力例:
# {
# "contactList": [
# {
# "contactId": "contact-abc123",
# "startTime": "2026-01-15T14:22:00Z",
# "endTime": "2026-01-15T14:35:30Z",
# "groundStation": "ap-northeast-1-gs-001",
# "missionProfile": "earth-observation-mission",
# "maximumElevation": 78.5
# }
# ]
# }
# Contact を予約確定
aws groundstation reserve-contact \
--contact-id 'contact-abc123' \
--satellite-arn 'arn:aws:groundstation::satellite/39634' \
--mission-profile-arn 'arn:aws:groundstation:ap-northeast-1:123456789012:mission-profile/earth-observation-mission' \
--ground-station 'ap-northeast-1-gs-001' \
--start-time "2026-01-15T14:22:00Z" \
--end-time "2026-01-15T14:35:30Z" \
--region ap-northeast-1
ミッションプロファイル
Dataflow Edge(データ流線定義)
# YAML 形式の Dataflow Edge 例
DataflowEdges:
- Source:
AntennaDownlink:
AntennaName: "x-band-downlink"
TransmitBandwidth:
Value: 10
Units: MHz
Destination:
DataflowEndpointRegion: "us-west-2"
DataflowEndpointName: "satellite-receiver-01"
# 複数 Dataflow Edge の例
DataflowEdges:
# 衛星 Downlink → EC2
- Source:
AntennaDownlink:
AntennaName: "x-band-downlink"
Destination:
DataflowEndpointRegion: "us-west-2"
# 制御信号 → Uplink
- Source:
DataflowEndpointRegion: "us-west-2"
Destination:
AntennaUplink:
AntennaName: "s-band-uplink"
TransmitBandwidth:
Value: 5
Units: MHz
Config の詳細
# アンテナ Downlink Config 作成
aws groundstation create-config \
--config-data '{
"antennaDownlinkConfig": {
"specificationDetails": {
"polarization": "RIGHT_HAND"
}
}
}' \
--config-type antenna-downlink \
--name "x-band-downlink-config" \
--region us-west-2
# System Uplink Config(テレメトリ/コマンド)
aws groundstation create-config \
--config-data '{
"systemUplinkConfig": {
"specificationDetails": {
"antennaUplinkRateInKbps": 2400
}
}
}' \
--config-type system-uplink \
--name "s-band-uplink-config" \
--region us-west-2
設定・操作の具体例
AWS CLI での実装
#!/bin/bash
# 1. ミッションプロファイル作成
MISSION_PROFILE_ARN=$(aws groundstation create-mission-profile \
--name "sentinel-1-eo-mission" \
--minimum-viable-contact-duration-seconds 240 \
--dataflow-edges '[{
"source": "arn:aws:groundstation:ap-northeast-1:123456789012:config/antenna-downlink/x-band",
"destination": "arn:aws:groundstation:ap-northeast-1:123456789012:config/dataflow-endpoint/ec2-receiver"
}]' \
--region ap-northeast-1 \
--query 'missionProfileArn' \
--output text)
echo "Mission Profile ARN: $MISSION_PROFILE_ARN"
# 2. 衛星の利用可能 Contact を検索
aws groundstation list-contacts \
--ground-station 'ap-northeast-1-gs-001' \
--satellite-arn 'arn:aws:groundstation::satellite/39634' \
--status-list AVAILABLE \
--start-time "2026-01-15T00:00:00Z" \
--end-time "2026-01-22T00:00:00Z" \
--region ap-northeast-1 \
--output json > contacts.json
# 3. 希望する Contact を予約
CONTACT_ID=$(jq -r '.contactList[0].contactId' contacts.json)
aws groundstation reserve-contact \
--contact-id $CONTACT_ID \
--satellite-arn 'arn:aws:groundstation::satellite/39634' \
--mission-profile-arn $MISSION_PROFILE_ARN \
--ground-station 'ap-northeast-1-gs-001' \
--start-time "$(jq -r '.contactList[0].startTime' contacts.json)" \
--end-time "$(jq -r '.contactList[0].endTime' contacts.json)" \
--region ap-northeast-1
echo "Contact reserved: $CONTACT_ID"
# 4. Contact 進捗の監視
while true; do
STATUS=$(aws groundstation describe-contact \
--contact-id $CONTACT_ID \
--region ap-northeast-1 \
--query 'contactStatus' \
--output text)
echo "Contact Status: $STATUS"
if [[ "$STATUS" == "PASS" ]] || [[ "$STATUS" == "FAILED" ]]; then
break
fi
sleep 30
done
Python SDK での実装
import boto3
from datetime import datetime, timedelta
import time
gs = boto3.client('groundstation', region_name='ap-northeast-1')
s3 = boto3.client('s3', region_name='ap-northeast-1')
# 衛星データ受信・処理パイプライン
class SatelliteDataPipeline:
def __init__(self, satellite_id=39634): # Sentinel-1A
self.satellite_id = satellite_id
self.ground_station = 'ap-northeast-1-gs-001'
def find_available_contacts(self, days_ahead=7):
"""利用可能な Contact を検索"""
start_time = datetime.utcnow()
end_time = start_time + timedelta(days=days_ahead)
response = gs.list_contacts(
groundStation=self.ground_station,
satelliteArn=f'arn:aws:groundstation::satellite/{self.satellite_id}',
statusList=['AVAILABLE'],
startTime=start_time.isoformat() + 'Z',
endTime=end_time.isoformat() + 'Z'
)
return response['contactList']
def reserve_contact(self, contact):
"""Contact を予約"""
response = gs.reserve_contact(
contactId=contact['contactId'],
satelliteArn=f'arn:aws:groundstation::satellite/{self.satellite_id}',
missionProfileArn='arn:aws:groundstation:ap-northeast-1:123456789012:mission-profile/eo-mission',
groundStation=self.ground_station,
startTime=contact['startTime'],
endTime=contact['endTime']
)
return response
def monitor_contact(self, contact_id):
"""Contact 進捗を監視"""
while True:
response = gs.describe_contact(contactId=contact_id)
status = response['contactStatus']
print(f"Contact {contact_id} Status: {status}")
if status in ['PASS', 'FAILED', 'CANCELLED']:
return status
time.sleep(30)
def process_satellite_data(self, bucket, key):
"""受信した衛星データを SageMaker で処理"""
sagemaker = boto3.client('sagemaker', region_name='ap-northeast-1')
# SageMaker Processing Job で画像解析
response = sagemaker.create_processing_job(
ProcessingJobName=f'eo-analysis-{datetime.utcnow().timestamp()}',
ProcessingInputs=[{
'InputName': 'input',
'S3Input': {
'S3Uri': f's3://{bucket}/{key}',
'LocalPath': '/opt/ml/processing/input',
'S3DataType': 'S3Prefix',
'S3InputMode': 'File'
}
}],
ProcessingOutputConfig={
'Outputs': [{
'OutputName': 'output',
'S3Output': {
'S3Uri': f's3://{bucket}/eo-results/',
'LocalPath': '/opt/ml/processing/output',
'S3UploadMode': 'EndOfJob'
}
}]
},
ProcessingResources={
'ClusterConfig': {
'InstanceCount': 1,
'InstanceType': 'ml.p3.2xlarge', # GPU インスタンス
'VolumeSizeInGB': 100
}
},
RoleArn='arn:aws:iam::123456789012:role/SageMakerProcessingRole',
ProcessingAppSpecification={
'ImageUri': '123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/eo-processor:latest'
}
)
return response['ProcessingJobArn']
# 使用例
pipeline = SatelliteDataPipeline(satellite_id=39634)
# 1. 利用可能な Contact を検索
contacts = pipeline.find_available_contacts(days_ahead=7)
print(f"Found {len(contacts)} available contacts")
# 2. 最初の Contact を予約
if contacts:
contact = contacts[0]
reserved = pipeline.reserve_contact(contact)
print(f"Reserved contact: {reserved['contactId']}")
# 3. Contact 実行を監視
status = pipeline.monitor_contact(reserved['contactId'])
print(f"Contact execution result: {status}")
受信データの処理・分析
CCSDS フォーマットのデコード
衛星データは CCSDS(Consultative Committee for Space Data Systems)フォーマットで送信される。
import struct
def decode_ccsds_telemetry(raw_data: bytes):
"""
CCSDS Telemetry Header をデコード
"""
# CCSDS Primary Header (6 bytes)
header = struct.unpack('>HHHHH', raw_data[0:6])
packet_version = (header[0] >> 13) & 0x07
packet_type = (header[0] >> 12) & 0x01 # 0=Telemetry, 1=Telecommand
secondary_hdr = (header[0] >> 11) & 0x01
apid = header[0] & 0x7FF # Application Process ID
sequence_flags = (header[1] >> 14) & 0x03
packet_seq_count = header[1] & 0x3FFF
packet_length = header[2] - 1 # バイト単位
print(f"APID: {apid}")
print(f"Packet Length: {packet_length}")
# ペイロードデータ(CCSDS Header 後)
payload = raw_data[6:6+packet_length]
return payload
# 衛星画像処理の例(Sentinel-1 SAR データ)
def process_sar_image(raw_data: bytes):
"""
SAR(合成開口レーダー)画像をデコード・処理
"""
import numpy as np
from PIL import Image
# CCSDS Header をスキップ
payload = decode_ccsds_telemetry(raw_data)
# SAR データを画像配列に変換(例:512x512 ピクセル)
width, height = 512, 512
image_data = np.frombuffer(payload, dtype=np.uint16).reshape((height, width))
# 画像正規化
image_data = (image_data / image_data.max() * 255).astype(np.uint8)
# 画像保存
img = Image.fromarray(image_data, mode='L')
img.save('satellite_image.png')
return image_data
# SageMaker で AI 解析
def analyze_with_sagemaker(image_data):
"""
SageMaker Endpoint で土地利用分類等を実行
"""
import boto3
import json
sagemaker_runtime = boto3.client('sagemaker-runtime', region_name='ap-northeast-1')
# 画像を JPEG に変換
from PIL import Image
import io
img = Image.fromarray(image_data.astype('uint8'))
buf = io.BytesIO()
img.save(buf, format='JPEG')
image_bytes = buf.getvalue()
# SageMaker Endpoint に推論送信
response = sagemaker_runtime.invoke_endpoint(
EndpointName='eo-classification-endpoint',
ContentType='image/jpeg',
Body=image_bytes
)
result = json.loads(response['Body'].read().decode())
print(f"Land Classification: {result['classes']}")
return result
S3 への自動保存・処理パイプライン
import boto3
from datetime import datetime
s3 = boto3.client('s3')
lambda_client = boto3.client('lambda')
def setup_satellite_pipeline():
"""
衛星データ受信 → S3 → Lambda トリガー → SageMaker 解析
"""
# S3 イベント通知の設定
s3.put_bucket_notification_configuration(
Bucket='satellite-data-bucket',
NotificationConfiguration={
'LambdaFunctionConfigurations': [
{
'LambdaFunctionArn': 'arn:aws:lambda:ap-northeast-1:123456789012:function/process-satellite-data',
'Events': ['s3:ObjectCreated:*'],
'Filter': {
'Key': {
'FilterRules': [
{'Name': 'prefix', 'Value': 'raw-data/'},
{'Name': 'suffix', 'Value': '.dat'}
]
}
}
}
]
}
)
# Lambda 関数(S3 イベント駆動)
def lambda_handler(event, context):
"""
衛星データ(S3)を受信 → SageMaker で解析 → 結果を保存
"""
import json
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
print(f"Processing: s3://{bucket}/{key}")
# S3 からダウンロード
response = s3.get_object(Bucket=bucket, Key=key)
raw_data = response['Body'].read()
# CCSDS デコード
payload = decode_ccsds_telemetry(raw_data)
# 画像処理
image_data = process_sar_image(raw_data)
# SageMaker で解析
analysis_result = analyze_with_sagemaker(image_data)
# 結果を S3 に保存
result_key = f"analysis-results/{datetime.utcnow().isoformat()}.json"
s3.put_object(
Bucket=bucket,
Key=result_key,
Body=json.dumps(analysis_result),
ContentType='application/json'
)
print(f"Results saved to: s3://{bucket}/{result_key}")
return {'statusCode': 200, 'message': 'Processing completed'}
類似サービス比較表
| サービス | 地上局ネットワーク | マネージド度 | カスタマイズ度 | 初期投資 | 使用時課金 | AWS 統合 |
|---|---|---|---|---|---|---|
| AWS Ground Station | 20+ (300+ 予定) | ✅ フル | 中 | 0 | ✅ 低 | ✅ ネイティブ |
| Microsoft Azure Orbital | 5+ | ✅ 中 | 中 | 0 | 低 | ✅ Azure 統合 |
| KSAT(ノルウェー) | 30+ | ✅ 中 | 高 | $1-10M | 高 | △ API |
| Inmarsat | 衛星通信 | ✅ 高 | 低 | 0 | 高 | △ API |
| Iridium | 衛星通信 | ✅ 高 | 低 | 0 | 高 | △ API |
| 自社地上局 | 1 | ❌ 0 | ✅ 高 | $10-50M | 0 | △ カスタム |
| Atlas Space Operations | 50+ | △ 中 | 中 | 0 | 中 | △ API |
| Blue Canyon Technologies | 10+ | △ 中 | 高 | $5-20M | 低 | △ API |
AWS Ground Station の強み:
- AWS ネイティブ統合(SageMaker・Lambda・S3)
- グローバルネットワーク(20+ 地点、今後 300+)
- 初期投資 0、従量課金
- Amazon Leo(AWS 衛星)との統合
ベストプラクティス
✅ Do
- 複数地点での Contact 予約:衛星パスをカバーする複数地上局から受信(データ量最大化)
- リアルタイムストリーミング処理:EC2 UDP Endpoint で受信 → Lambda トリガー
- S3 Intelligent-Tiering:頻繁アクセスデータは S3、古いデータは Glacier へ自動遷移
- SageMaker での即座解析:受信直後に AI 処理で付加価値化
- CCSDS フォーマット検証:信号処理エラー検知のため Checksum 確認
- EventBridge での自動化:Contact 完了 → Lambda → 解析開始のパイプライン
- CloudWatch 監視:Contact 成功率・データ転送量・レイテンシーを常時監視
- DynamoDB でメタデータ管理:衛星位置・Contact Window・解析済みフラグを記録
- マルチリージョン構成:高可用性・レイテンシー最小化
- コスト追跡:Contact 数・Dataflow Endpoint 転送量を月次レビュー
❌ Don’t
- 単一地上局のみ使用:受信機会が限定(通常 1-2 時間/日)、複数地点での受信を推奨
- Contact 予約忘れ:自動化されていない場合、受信機会を逃す
- 生データの長期保持:処理後の圧縮済みデータのみ保持すべき
- CCSDS デコードエラーの無視:信号品質悪化の兆候
- EC2 UDP Endpoint の過負荷:受信レート(Mbps)に対応した インスタンスサイズ不足
- セキュリティグループ設定不完全:EC2 へのアクセス制限なし
- CloudWatch ロギング無効化:トラブルシューティング困難
- 衛星 TLE データ更新忘れ:Contact 予測精度低下(2-3 日で古くなる)
- データ転送を NAT Gateway 経由:不要なレイテンシー、Direct Connection推奨
- SageMaker インスタンスの常時稼働:オンデマンド / スポットインスタンス推奨
トラブルシューティング
| 問題 | 原因 | 対策 |
|---|---|---|
| Contact 予約できない | 利用可能な Contact がない / 衛星軌道が上空を通過しない | 衛星 TLE 更新、異なる地上局を確認 |
| 受信データが破損 | RF 信号品質低下 / Modulation Coding Scheme エラー | Contact タイミング・アンテナ向き確認、RSSI 値確認 |
| CCSDS デコード失敗 | ヘッダーフォーマット誤識別 / バイトオーダー違い | 衛星仕様書確認、Packet Version 確認 |
| EC2 がデータを受け取らない | UDP Endpoint ネットワーク接続エラー / ファイアウォール | Security Group 規則確認、UDP ポート 55888 開放確認 |
| S3 転送が遅い | NAT Gateway 経由・ルーティング最適化なし | VPC エンドポイント利用、Direct Connect 検討 |
| Contact 中断 | 地上局機械的故障 / 電源不安定 | AWS Support 報告、別地上局での Contact 予約 |
| データ解析失敗 | SageMaker リソース不足 / イメージフォーマット不対応 | EC2・GPU インスタンスサイズ増加、イメージ形式確認 |
| コスト超過 | Contact 数が想定超過 / Dataflow Endpoint 転送量増加 | 地上局数削減、圧縮率向上、処理最適化 |
2025-2026 最新動向
Amazon Leo(AWS 衛星コンステレーション)
AWS が自社衛星 LEO コンステレーション展開中。
状況(2026 年 4 月):
- 2 個プロトタイプ衛星を軌道上で運用
- 231 個本体衛星を製造・順次打ち上げ
- 目標:500+ 衛星で地球全体をカバー
Ground Station 拡大:
- 現在:20+ 地点
- 2026 年末:300+ 地点を予定
- 受信機会を大幅増加(現在 1-2 時間/日 → 3-4 時間/日)
新機能・統合拡大
- Low Latency Dataflow:UDP 遅延 < 100ms(金融・ライブ配信用)
- SageMaker Autopilot 統合:衛星データの自動 AI 分析
- Bedrock 統合:衛星画像の自然言語解析(“このエリアの作物は?”)
- AWS QuickSight ダッシュボード:衛星データのリアルタイム可視化
- Cost Optimization:Contact 合算割引、Reserved Capacity
用途拡大
- 衛星インターネット:Starlink・OneWeb との連携(AWS ネットワーク拡張)
- 量子通信テスト:Ground Station での量子鍵配送テスト
- 深宇宙通信(Future):月・火星ミッション支援
学習リソース・参考文献
公式 AWS リソース
- AWS Ground Station - 概要
- User Guide
- Pricing
- Tutorials & Samples
- Mission Profile Configuration
- Amazon Leo Announcement
- From Fields to Orbit: AgTech Startups(2026)
ベンダー・技術リソース
- CCSDS - Consultative Committee for Space Data Systems
- NORAD TLE Data
- ESA Sentinel-1 Documentation
- Planet Labs API
- Orbital Mechanics - Algorithms
実装例・チェックリスト
シナリオ:地球観測衛星データを用いた農業監視システム
-
計画フェーズ
- [ ] 対象衛星の選定(Sentinel-1 SAR / Sentinel-2 光学)
- [ ] 監視対象地域・作物タイプ定義
- [ ] 受信スケジュール・データ処理パイプライン設計
- [ ] 月額 Contact 数・データ転送量見積
-
セットアップフェーズ
- [ ] AWS Ground Station アカウント設定
- [ ] Mission Profile 作成(Sentinel-1A Catalog ID: 39634)
- [ ] Dataflow Endpoint Group 作成(EC2 UDP receiver)
- [ ] S3 バケット・KMS 暗号化設定
-
統合フェーズ
- [ ] Contact スケジューリング API 実装
- [ ] CCSDS デコーダー実装
- [ ] SageMaker Processing Job で土地利用分類 AI
- [ ] Lambda トリガー → S3 → SageMaker パイプライン自動化
- [ ] EventBridge で Contact 完了時自動起動
-
テストフェーズ
- [ ] Contact 予約・実行テスト
- [ ] 受信データ品質確認(RSSI・BER)
- [ ] CCSDS デコード検証
- [ ] SageMaker 推論精度確認
-
運用フェーズ
- [ ] 月次 Contact スケジュール確認・予約
- [ ] CloudWatch でデータ受信レート監視
- [ ] 農家向けダッシュボード構築(QuickSight)
- [ ] 月次コスト分析・最適化
実装チェックリスト
準備段階
- [ ] NORAD Catalog ID 取得(衛星識別)
- [ ] Ground Station リージョン選定(地理的カバレッジ)
- [ ] Mission Profile テンプレート作成
- [ ] VPC・セキュリティグループ設定
受信パイプライン
- [ ] EC2 UDP Endpoint 構築
- [ ] CCSDS Header パーサー実装
- [ ] S3 自動保存スクリプト
- [ ] エラー処理・ロギング
AI 処理
- [ ] SageMaker モデル学習(衛星データセット)
- [ ] Inference Endpoint デプロイ
- [ ] Lambda 統合テスト
- [ ] 出力形式定義(JSON・GeoJSON)
監視・運用
- [ ] CloudWatch ダッシュボード構築
- [ ] Contact 予約自動化スクリプト
- [ ] AlertManager 設定(受信失敗等)
- [ ] 月次レポート自動生成
まとめ
AWS Ground Station は 「衛星データの受信・処理・クラウド統合をマネージド化し、低コストで衛星データビジネスを立ち上げられるサービス」 です。
適切な利用場面
- 地球観測衛星(農業・都市開発・災害監視)
- 気象予測データ取得
- 海事・航空機追跡
- 宇宙スタートアップの衛星運用基盤
- 気候変動研究・データアーカイブ
不適切な利用場面
- 地上局が 1 つで十分(通常 1-2 時間/日の受信なら自社地上局検討)
- リアルタイム性不要(数日遅延で問題ない場合は衛星データ購買サービス利用)
導入チェック
- 衛星データビジネスの立ち上げが必要か?
- 地上局インフラ投資を避けたいか?
- グローバルカバレッジが必要か?
- AWS との統合(SageMaker・Lambda)でメリットあるか?
バージョン:v2.0 | 最終更新:2026-04-26