使用數據流端點的公共廣播衛星(解調和解碼) - AWS Ground Station

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用數據流端點的公共廣播衛星(解調和解碼)

此範例以使用者指南一JPSS-1-公共廣播衛星(PBS)-評估 節中完成的分析為基礎。

若要完成此範例,您需要假設您想要使用資料流端點將HRD通訊路徑擷取為解調和解碼直接廣播資料的案例。如果您計劃使用NASA直接讀出實驗室軟體 (RT-STPS 和IPOPP) 處理資料,這個範例是一個很好的起點。

通訊路徑

本節表示入門步驟 2:規劃資料流通訊路徑的內容。在此範例中,您將在 AWS CloudFormation 樣板中建立兩個區段:「參數」和「資源」區段。

注意

如需 AWS CloudFormation 範本內容的詳細資訊,請參閱範本區段

對於參數部分,您將添加以下參數。透過 AWS CloudFormation 主控台建立堆疊時,您將指定這些值。

Parameters: EC2Key: Description: The SSH key used to access the EC2 receiver instance. Choose any SSH key if you are not creating an EC2 receiver instance. For instructions on how to create an SSH key see https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html Type: AWS::EC2::KeyPair::KeyName ConstraintDescription: must be the name of an existing EC2 KeyPair. ReceiverAMI: Description: The Ground Station DDX AMI ID you want to use. Please note that AMIs are region specific. For instructions on how to retrieve an AMI see https://docs.aws.amazon.com/ground-station/latest/ug/dataflows.ec2-configuration.html#dataflows.ec2-configuration.amis Type: AWS::EC2::Image::Id
注意

需要創建一個 key pair,並提供 Amazon EC2 EC2Key 參數的名稱。請參閱為您的 Amazon EC2 執行個體建立 key pair

此外,在建立 AWS CloudFormation 堆疊時,您需要提供正確的區域特定 AMI ID。請參閱AWS Ground Station Amazon Machine Images (AMIs)

其餘的範本程式碼片段屬於範 AWS CloudFormation 本的 [資源] 區段中。

Resources: # Resources that you would like to create should be placed within the resource section.

鑑於我們提供單一通訊路徑至EC2執行個體的案例,您將擁有單一同步傳遞路徑。在同步資料傳送本節中,您必須使用資料流端點應用程式設定和設定 Amazon EC2 執行個體,並建立一或多個資料流端點群組。

# The EC2 instance that will send/receive data to/from your satellite using AWS Ground Station. ReceiverInstance: Type: AWS::EC2::Instance Properties: DisableApiTermination: false IamInstanceProfile: !Ref GeneralInstanceProfile ImageId: !Ref ReceiverAMI InstanceType: m5.4xlarge KeyName: !Ref EC2Key Monitoring: true PlacementGroupName: !Ref ClusterPlacementGroup SecurityGroupIds: - Ref: InstanceSecurityGroup SubnetId: !Ref ReceiverSubnet BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeType: gp2 VolumeSize: 40 Tags: - Key: Name Value: !Join [ "-" , [ "Receiver" , !Ref "AWS::StackName" ] ] UserData: Fn::Base64: | #!/bin/bash exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1 echo `date +'%F %R:%S'` "INFO: Logging Setup" >&2 GROUND_STATION_DIR="/opt/aws/groundstation" GROUND_STATION_BIN_DIR="${GROUND_STATION_DIR}/bin" STREAM_CONFIG_PATH="${GROUND_STATION_DIR}/customer_stream_config.json" echo "Creating ${STREAM_CONFIG_PATH}" cat << STREAM_CONFIG > "${STREAM_CONFIG_PATH}" { "ddx_streams": [ { "streamName": "Downlink", "maximumWanRate": 4000000000, "lanConfigDevice": "lo", "lanConfigPort": 50000, "wanConfigDevice": "eth1", "wanConfigPort": 55888, "isUplink": false } ] } STREAM_CONFIG echo "Waiting for dataflow endpoint application to start" while netstat -lnt | awk '$4 ~ /:80$/ {exit 1}'; do sleep 10; done echo "Configuring dataflow endpoint application streams" python "${GROUND_STATION_BIN_DIR}/configure_streams.py" --configFileName "${STREAM_CONFIG_PATH}" sleep 2 python "${GROUND_STATION_BIN_DIR}/save_default_config.py" exit 0
# The AWS Ground Station Dataflow Endpoint Group that defines the endpoints that AWS Ground # Station will use to send/receive data to/from your satellite. DataflowEndpointGroup: Type: AWS::GroundStation::DataflowEndpointGroup Properties: ContactPostPassDurationSeconds: 180 ContactPrePassDurationSeconds: 120 EndpointDetails: - Endpoint: Name: !Join [ "-" , [ !Ref "AWS::StackName" , "Downlink" ] ] # needs to match DataflowEndpointConfig name Address: Name: !GetAtt ReceiverInstanceNetworkInterface.PrimaryPrivateIpAddress Port: 55888 SecurityDetails: SecurityGroupIds: - Ref: "DataflowEndpointSecurityGroup" SubnetIds: - !Ref ReceiverSubnet RoleArn: !GetAtt DataDeliveryServiceRole.Arn # The security group that the ENI created by AWS Ground Station belongs to. DataflowEndpointSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Security Group for AWS Ground Station registration of Dataflow Endpoint Groups VpcId: !Ref ReceiverVPC SecurityGroupEgress: - IpProtocol: udp FromPort: 55888 ToPort: 55888 CidrIp: 10.0.0.0/8 Description: "AWS Ground Station Downlink Stream To 10/8" - IpProtocol: udp FromPort: 55888 ToPort: 55888 CidrIp: 172.16.0.0/12 Description: "AWS Ground Station Downlink Stream To 172.16/12" - IpProtocol: udp FromPort: 55888 ToPort: 55888 CidrIp: 192.168.0.0/16 Description: "AWS Ground Station Downlink Stream To 192.168/16" # The placement group in which your EC2 instance is placed. ClusterPlacementGroup: Type: AWS::EC2::PlacementGroup Properties: Strategy: cluster # The security group for your EC2 instance. InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: AWS Ground Station receiver instance security group. VpcId: !Ref ReceiverVPC SecurityGroupIngress: # To allow SSH access to the instance, add another rule allowing tcp port 22 from your CidrIp - IpProtocol: udp FromPort: 55888 ToPort: 55888 SourceSecurityGroupId: !Ref DataflowEndpointSecurityGroup Description: "AWS Ground Station Downlink Stream" ReceiverVPC: Type: AWS::EC2::VPC Properties: CidrBlock: "10.0.0.0/16" Tags: - Key: "Name" Value: "AWS Ground Station - PBS to dataflow endpoint Demod Decode Example VPC" - Key: "Description" Value: "VPC for EC2 instance receiving AWS Ground Station data" ReceiverSubnet: Type: AWS::EC2::Subnet Properties: CidrBlock: "10.0.0.0/24" Tags: - Key: "Name" Value: "AWS Ground Station - PBS to dataflow endpoint Demod Decode Example Subnet" - Key: "Description" Value: "Subnet for EC2 instance receiving AWS Ground Station data" VpcId: !Ref ReceiverVPC # An ENI providing a fixed IP address for AWS Ground Station to connect to. ReceiverInstanceNetworkInterface: Type: AWS::EC2::NetworkInterface Properties: Description: Floating network interface providing a fixed IP address for AWS Ground Station to connect to. GroupSet: - !Ref InstanceSecurityGroup SubnetId: !Ref ReceiverSubnet # Attach the ENI to the EC2 instance. ReceiverInstanceInterfaceAttachment: Type: AWS::EC2::NetworkInterfaceAttachment Properties: DeleteOnTermination: false DeviceIndex: "1" InstanceId: !Ref ReceiverInstance NetworkInterfaceId: !Ref ReceiverInstanceNetworkInterface # The instance profile for your EC2 instance. GeneralInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Roles: - !Ref InstanceRole

您還需要適當的策略、角色和設定檔,才能 AWS Ground Station 在您的帳戶中建立 elastic network interface (ENI)。

# AWS Ground Station assumes this role to create/delete ENIs in your account in order to stream data. DataDeliveryServiceRole: Type: AWS::IAM::Role Properties: Policies: - PolicyDocument: Statement: - Action: - ec2:CreateNetworkInterface - ec2:DeleteNetworkInterface - ec2:CreateNetworkInterfacePermission - ec2:DeleteNetworkInterfacePermission - ec2:DescribeSubnets - ec2:DescribeVpcs - ec2:DescribeSecurityGroups Effect: Allow Resource: '*' Version: '2012-10-17' PolicyName: DataDeliveryServicePolicy AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - groundstation.amazonaws.com Action: - sts:AssumeRole # The EC2 instance assumes this role. InstanceRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "ec2.amazonaws.com" Action: - "sts:AssumeRole" Path: "/" ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess - arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role - arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy - arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM

AWS Ground Station 配置

本節表示第 3 步:創建配置使用者指南。

您需要一個跟踪配置來設置使用自動跟踪的首選項。選擇PREFERRED自動追蹤可以改善訊號品質,但由於足夠的 JPSS -1 星曆品質,因此不需要符合訊號品質。

TrackingConfig: Type: AWS::GroundStation::Config Properties: Name: "JPSS Tracking Config" ConfigData: TrackingConfig: Autotrack: "PREFERRED"

根據通信路徑,您需要定義一個antenna-downlink-demod-decode配置來代表衛星部分,以及一個數據端點配置來引用定義端點詳細信息的數據流端點組。

注意

如需有關如何設定和值的詳細資訊 DemodulationConfigDecodeConfig,請參閱天線下行解調解碼組態

# The AWS Ground Station Antenna Downlink Config that defines the frequency spectrum used to # downlink data from your satellite. JpssDownlinkDemodDecodeAntennaConfig: Type: AWS::GroundStation::Config Properties: Name: "JPSS Downlink Demod Decode Antenna Config" ConfigData: AntennaDownlinkDemodDecodeConfig: SpectrumConfig: CenterFrequency: Value: 7812 Units: "MHz" Polarization: "RIGHT_HAND" Bandwidth: Value: 30 Units: "MHz" DemodulationConfig: UnvalidatedJSON: '{ "type":"QPSK", "qpsk":{ "carrierFrequencyRecovery":{ "centerFrequency":{ "value":7812, "units":"MHz" }, "range":{ "value":250, "units":"kHz" } }, "symbolTimingRecovery":{ "symbolRate":{ "value":15, "units":"Msps" }, "range":{ "value":0.75, "units":"ksps" }, "matchedFilter":{ "type":"ROOT_RAISED_COSINE", "rolloffFactor":0.5 } } } }' DecodeConfig: UnvalidatedJSON: '{ "edges":[ { "from":"I-Ingress", "to":"IQ-Recombiner" }, { "from":"Q-Ingress", "to":"IQ-Recombiner" }, { "from":"IQ-Recombiner", "to":"CcsdsViterbiDecoder" }, { "from":"CcsdsViterbiDecoder", "to":"NrzmDecoder" }, { "from":"NrzmDecoder", "to":"UncodedFramesEgress" } ], "nodeConfigs":{ "I-Ingress":{ "type":"CODED_SYMBOLS_INGRESS", "codedSymbolsIngress":{ "source":"I" } }, "Q-Ingress":{ "type":"CODED_SYMBOLS_INGRESS", "codedSymbolsIngress":{ "source":"Q" } }, "IQ-Recombiner":{ "type":"IQ_RECOMBINER" }, "CcsdsViterbiDecoder":{ "type":"CCSDS_171_133_VITERBI_DECODER", "ccsds171133ViterbiDecoder":{ "codeRate":"ONE_HALF" } }, "NrzmDecoder":{ "type":"NRZ_M_DECODER" }, "UncodedFramesEgress":{ "type":"UNCODED_FRAMES_EGRESS" } } }'
# The AWS Ground Station Dataflow Endpoint Config that defines the endpoint used to downlink data # from your satellite. DownlinkDemodDecodeEndpointConfig: Type: AWS::GroundStation::Config Properties: Name: "Aqua SNPP JPSS Downlink Demod Decode Endpoint Config" ConfigData: DataflowEndpointConfig: DataflowEndpointName: !Join [ "-" , [ !Ref "AWS::StackName" , "Downlink" ] ] DataflowEndpointRegion: !Ref AWS::Region

AWS Ground Station 任務設定檔

本節表示步驟 4:建立任務檔案使用者指南。

現在您已經擁有了關聯的配置,您可以使用它們來構建數據流。您將使用其餘參數的預設值。

# The AWS Ground Station Mission Profile that groups the above configurations to define how to # uplink and downlink data to your satellite. SnppJpssMissionProfile: Type: AWS::GroundStation::MissionProfile Properties: Name: "37849 SNPP And 43013 JPSS" ContactPrePassDurationSeconds: 120 ContactPostPassDurationSeconds: 60 MinimumViableContactDurationSeconds: 180 TrackingConfigArn: !Ref TrackingConfig DataflowEdges: - Source: !Join [ "/", [ !Ref JpssDownlinkDemodDecodeAntennaConfig, "UncodedFramesEgress" ] ] Destination: !Ref DownlinkDemodDecodeEndpointConfig

把它放在一起

有了上述資源,您現在可以安排 JPSS -1 個聯繫人,以便從任何已登 AWS Ground Station AWS Ground Station 位置錄的同步數據傳遞。

以下是一個完整的 AWS CloudFormation 模板,其中包括本節中描述的所有資源合併為可直接在中使用的單個模板 AWS CloudFormation。

命名的 AWS CloudFormation 模板AquaSnppJpss.yml旨在讓您快速訪問開始接收 AquaSNPP,和 JPSS -1/ NOAA -20 衛星數據。它包含 Amazon EC2 執行個體和排程聯絡人以及接收解調和解碼直接廣播資料所需的 AWS Ground Station 資源。

如果 Aqua SNPP、JPSS -1/ NOAA -20 和 Terra 尚未登入您的帳戶,請參閱。步驟 1:加入衛星

注意

您可以存取客戶上線 Amazon S3 儲存貯體來存取範本。以下連結使用區域性 Amazon S3 儲存貯體。變更us-west-2區域代碼以代表您要在其中建立 AWS CloudFormation 堆疊的對應區域。

此外,下列指示也會使用YAML。但是,範本以YAML和JSON格式提供。若要使用JSON,請在下載範本.json時將副.yml檔名取代為。

若要使用下載範本 AWS CLI,請使用下列命令:

aws s3 cp s3://groundstation-cloudformation-templates-us-west-2/AquaSnppJpss.yml .

您可以在瀏覽器中瀏覽至下列項目,在主控台URL中檢視和下載範本:

https://s3.console.aws.amazon.com/s3/object/groundstation-cloudformation-templates-us-west-2/AquaSnppJpss.yml

您可以使用以下連結直 AWS CloudFormation 接在中指定樣板:

https://groundstation-cloudformation-templates-us-west-2.s3.us-west-2.amazonaws.com/AquaSnppJpss.yml

範本定義了哪些其他資源?

AquaSnppJpss模板包括以下其他資源:

  • (選擇性) CloudWatch 事件觸發 AWS Lambda 器-使用連絡人 AWS Ground Station 前後傳送的 CloudWatch 事件觸發的函數。該 AWS Lambda 功能將啟動並選擇性地停止您的接收者實例。

  • (選用) 聯絡人EC2驗證-使用 Lambda 為有SNS通知的聯絡人設定 Amazon EC2 執行個體驗證系統的選項。重要的是要注意,這可能會產生費用,具體取決於您當前的使用情況。

  • Ground Station Amazon 機器圖像檢索 Lambda-用於選擇您的實例中安裝的軟件以及您選擇AMI的選項。軟體選項包括DDX 2.6.2 OnlyDDX 2.6.2 with qRadio 3.6.0。如果您要使用寬頻 DigIF 資料傳遞和 AWS Ground Station 代理程式,請參閱。公共廣播衛星利用 AWS Ground Station 代理 (寬帶)隨著其他軟體更新和功能的發行,這些選項將繼續擴充。

  • 其他任務配置文件-額外的公共廣播衛星(水族SNPP,和 Terra)的任務配置文件。

  • 額外的天線下行配置-額外的公共廣播衛星(水族和 T erra)的天線下行鏈路配置。SNPP

在此範本中,衛星的值和參數已經產生。這些參數使您可以輕鬆地 AWS Ground Station 立即與這些衛星一起使用。您不需要配置自己的值,以便在使用此模板 AWS Ground Station 時使用。但是,您可以自訂這些值,讓範本適用於您的使用案例。

我可以在什麼地方接收我的資料?

資料流程端點群組的設定,是使用以範本的一部分建立的接收器執行個體網路界面。接收器實例使用數據流端點應用程序從數據流端點定義的端口 AWS Ground Station 上接收數據流。接收到資料後,即可透過接收器執行個體之迴路配接器上的連接UDP埠 50000 來消耗資料。如需有關設定資料流端點群組的詳細資訊,請參閱 AWS::GroundStation::DataflowEndpoint群組。