Satélite de transmisión pública que utiliza AWS Ground Station Agent (banda ancha) - AWS Ground Station

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Satélite de transmisión pública que utiliza AWS Ground Station Agent (banda ancha)

Este ejemplo se basa en el análisis realizado en la JPSS-1 - Satélite de transmisión pública (PBS) - Evaluación sección de la guía del usuario.

Para completar este ejemplo, tendrá que asumir un escenario: desea capturar la ruta de HRD comunicación como frecuencia intermedia digital de banda ancha (DigiF) y procesarla tal como la recibe el agente AWS Ground Station en una instancia de Amazon EC2 mediante un. SDR

nota

La señal de la ruta de JPSS HRD comunicación real tiene un ancho de banda de 30MHz, pero configurará la configuración de enlace descendente de antena para tratarla como una señal con un MHz ancho de banda del 100, de modo que pueda fluir por la ruta correcta para que la reciba el AWS Ground Station agente en este ejemplo.

Rutas de comunicación

Esta sección representa Paso 2: Planifique las rutas de comunicación de su flujo de datos los primeros pasos. Para este ejemplo, necesitarás una sección adicional en la AWS CloudFormation plantilla que no se haya utilizado en los otros ejemplos, la sección de mapeos.

nota

Para obtener más información sobre el contenido de una AWS CloudFormation plantilla, consulta las secciones de plantillas.

Empezará por configurar una sección de mapeos en la AWS CloudFormation plantilla para las listas de AWS Ground Station prefijos por región. Esto permite que el grupo de seguridad de EC2 instancias de Amazon pueda hacer referencia fácilmente a las listas de prefijos. Para obtener más información sobre el uso de una lista de prefijos, consulte. VPCConfiguración con el AWS Ground Station agente

Mappings: PrefixListId: us-east-2: groundstation: pl-087f83ba4f34e3bea us-west-2: groundstation: pl-0cc36273da754ebdc us-east-1: groundstation: pl-0e5696d987d033653 eu-central-1: groundstation: pl-03743f81267c0a85e sa-east-1: groundstation: pl-098248765e9effc20 ap-northeast-2: groundstation: pl-059b3e0b02af70e4d ap-southeast-1: groundstation: pl-0d9b804fe014a6a99 ap-southeast-2: groundstation: pl-08d24302b8c4d2b73 me-south-1: groundstation: pl-02781422c4c792145 eu-west-1: groundstation: pl-03fa6b266557b0d4f eu-north-1: groundstation: pl-033e44023025215c0 af-south-1: groundstation: pl-0382d923a9d555425

Para la sección Parámetros, va a añadir los siguientes parámetros. Especificará sus valores al crear la pila a través de la AWS CloudFormation consola.

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. AZ: Description: "The AvailabilityZone that the resources of this stack will be created in. (e.g. us-east-2a)" Type: AWS::EC2::AvailabilityZone::Name ReceiverAMI: Description: The Ground Station Agent 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
nota

Debe crear un key pair y proporcionar el nombre del EC2 EC2Key parámetro Amazon. Consulta Crear un key pair para tu EC2 instancia de Amazon.

Además, tendrás que proporcionar el AMI ID específico de la región correcto al crear la AWS CloudFormation pila. Consulte AWS Ground Station Imágenes de máquinas de Amazon (AMIs).

Los fragmentos de plantilla restantes pertenecen a la sección Recursos de la AWS CloudFormation plantilla.

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

Dado nuestro escenario de entregar una única ruta de comunicación a una EC2 instancia de Amazon, sabes que tendrás una única ruta de entrega sincrónica. Según la Entrega de datos sincrónica sección, debe configurar una EC2 instancia de Amazon con AWS Ground Station Agent y crear uno o más grupos de puntos de enlace de flujo de datos. Primero debes configurar Amazon VPC para el AWS Ground Station agente.

ReceiverVPC: Type: AWS::EC2::VPC Properties: EnableDnsSupport: 'true' EnableDnsHostnames: 'true' CidrBlock: 10.0.0.0/16 Tags: - Key: "Name" Value: "AWS Ground Station Example - PBS to AWS Ground Station Agent VPC" - Key: "Description" Value: "VPC for EC2 instance receiving AWS Ground Station data" PublicSubnet: Type: AWS::EC2::Subnet Properties: VpcId: !Ref ReceiverVPC MapPublicIpOnLaunch: 'true' AvailabilityZone: !Ref AZ CidrBlock: 10.0.0.0/20 Tags: - Key: "Name" Value: "AWS Ground Station Example - PBS to AWS Ground Station Agent Public Subnet" - Key: "Description" Value: "Subnet for EC2 instance receiving AWS Ground Station data" RouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref ReceiverVPC Tags: - Key: Name Value: AWS Ground Station Example - RouteTable RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref RouteTable SubnetId: !Ref PublicSubnet Route: Type: AWS::EC2::Route DependsOn: InternetGateway Properties: RouteTableId: !Ref RouteTable DestinationCidrBlock: '0.0.0.0/0' GatewayId: !Ref InternetGateway InternetGateway: Type: AWS::EC2::InternetGateway Properties: Tags: - Key: Name Value: AWS Ground Station Example - Internet Gateway GatewayAttachment: Type: AWS::EC2::VPCGatewayAttachment Properties: VpcId: !Ref ReceiverVPC InternetGatewayId: !Ref InternetGateway
nota

Para obtener más información sobre las VPC configuraciones compatibles con el AWS Ground Station agente, consulte Requisitos del AWS Ground Station agente: VPC diagramas.

A continuación, configurará la EC2 instancia de Amazon de Receiver.

# The placement group in which your EC2 instance is placed. ClusterPlacementGroup: Type: AWS::EC2::PlacementGroup Properties: Strategy: cluster # This is required for the EIP if the receiver EC2 instance is in a private subnet. # This ENI must exist in a public subnet, be attached to the receiver and be associated with the EIP. ReceiverInstanceNetworkInterface: Type: AWS::EC2::NetworkInterface Properties: Description: Floating network interface GroupSet: - !Ref InstanceSecurityGroup SubnetId: !Ref PublicSubnet # An EIP providing a fixed IP address for AWS Ground Station to connect to. Attach it to the receiver instance created in the stack. ReceiverInstanceElasticIp: Type: AWS::EC2::EIP Properties: Tags: - Key: Name Value: !Join [ "-" , [ "EIP" , !Ref "AWS::StackName" ] ] # Attach the ENI to the EC2 instance if using a separate public subnet. # Requires the receiver instance to be in a public subnet (SubnetId should be the id of a public subnet) ReceiverNetworkInterfaceAttachment: Type: AWS::EC2::NetworkInterfaceAttachment Properties: DeleteOnTermination: false DeviceIndex: 1 InstanceId: !Ref ReceiverInstance NetworkInterfaceId: !Ref ReceiverInstanceNetworkInterface # Associate EIP with the ENI if using a separate public subnet for the ENI. ReceiverNetworkInterfaceElasticIpAssociation: Type: AWS::EC2::EIPAssociation Properties: AllocationId: !GetAtt [ReceiverInstanceElasticIp, AllocationId] NetworkInterfaceId: !Ref ReceiverInstanceNetworkInterface # The EC2 instance that will send/receive data to/from your satellite using AWS Ground Station. ReceiverInstance: Type: AWS::EC2::Instance DependsOn: PublicSubnet Properties: DisableApiTermination: false IamInstanceProfile: !Ref GeneralInstanceProfile ImageId: !Ref ReceiverAMI AvailabilityZone: !Ref AZ InstanceType: c5.24xlarge KeyName: !Ref EC2Key Monitoring: true PlacementGroupName: !Ref ClusterPlacementGroup SecurityGroupIds: - Ref: InstanceSecurityGroup SubnetId: !Ref PublicSubnet Tags: - Key: Name Value: !Join [ "-" , [ "Receiver" , !Ref "AWS::StackName" ] ] # agentCpuCores list in the AGENT_CONFIG below defines the cores that the AWS Ground Station Agent is allowed to run on. This list can be changed to suit your use-case, however if the agent isn't supplied with enough cores data loss may occur. UserData: Fn::Base64: Fn::Sub: - | #!/bin/bash yum -y update AGENT_CONFIG_PATH="/opt/aws/groundstation/etc/aws-gs-agent-config.json" cat << AGENT_CONFIG > "$AGENT_CONFIG_PATH" { "capabilities": [ "arn:aws:groundstation:${AWS::Region}:${AWS::AccountId}:dataflow-endpoint-group/${DataflowEndpointGroupId}" ], "device": { "privateIps": [ "127.0.0.1" ], "publicIps": [ "${EIP}" ], "agentCpuCores": [ 24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92 ] } } AGENT_CONFIG systemctl start aws-groundstation-agent systemctl enable aws-groundstation-agent # <Tuning Section Start> # Visit the AWS Ground Station Agent Documentation in the User Guide for more details and guidance updates # Set IRQ affinity with list of CPU cores and Receive Side Scaling mask # Core list should be the first two cores (and hyperthreads) on each socket # Mask set to everything currently # https://github.com/torvalds/linux/blob/v4.11/Documentation/networking/scaling.txt#L80-L96 echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '0 1 48 49' 'ffffffff,ffffffff,ffffffff' >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root # Reserving the port range defined in the GS agent ingress address in the Dataflow Endpoint Group so the kernel doesn't steal any of them from the GS agent. These ports are the ports that the GS agent will ingress data # across, so if the kernel steals one it could cause problems ingressing data onto the instance. echo net.ipv4.ip_local_reserved_ports="42000-50000" >> /etc/sysctl.conf # </Tuning Section End> # We have to reboot for linux kernel settings to apply shutdown -r now - DataflowEndpointGroupId: !Ref DataflowEndpointGroup EIP: !Ref ReceiverInstanceElasticIp
# 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: - AwsGroundStationAgentEndpoint: Name: !Join [ "-" , [ !Ref "AWS::StackName" , "Downlink" ] ] # needs to match DataflowEndpointConfig name EgressAddress: SocketAddress: Name: 127.0.0.1 Port: 55000 IngressAddress: SocketAddress: Name: !Ref ReceiverInstanceElasticIp PortRange: Minimum: 42000 Maximum: 55000

También necesitará las políticas, las funciones y los perfiles adecuados AWS Ground Station para poder crear la elastic network interface (ENI) en su cuenta.

# The security group for your EC2 instance. InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: AWS Ground Station receiver instance security group. VpcId: !Ref ReceiverVPC SecurityGroupEgress: - CidrIp: 0.0.0.0/0 Description: Allow all outbound traffic by default IpProtocol: "-1" SecurityGroupIngress: # To allow SSH access to the instance, add another rule allowing tcp port 22 from your CidrIp - IpProtocol: udp Description: Allow AWS Ground Station Incoming Dataflows ToPort: 50000 FromPort: 42000 SourcePrefixListId: Fn::FindInMap: - PrefixListId - Ref: AWS::Region - groundstation # 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 - arn:aws:iam::aws:policy/AWSGroundStationAgentInstancePolicy Policies: - PolicyDocument: Statement: - Action: - sts:AssumeRole Effect: Allow Resource: !GetAtt GroundStationKmsKeyRole.Arn Version: "2012-10-17" PolicyName: InstanceGroundStationApiAccessPolicy # The instance profile for your EC2 instance. GeneralInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Roles: - !Ref InstanceRole # The IAM role that AWS Ground Station will assume to access and use the KMS Key for data delivery GroundStationKmsKeyRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Action: sts:AssumeRole Effect: Allow Principal: Service: - groundstation.amazonaws.com Condition: StringEquals: "aws:SourceAccount": !Ref AWS::AccountId ArnLike: "aws:SourceArn": !Sub "arn:${AWS::Partition}:groundstation:${AWS::Region}:${AWS::AccountId}:mission-profile/*" - Action: sts:AssumeRole Effect: Allow Principal: AWS: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:root" GroundStationKmsKeyAccessPolicy: Type: AWS::IAM::Policy Properties: PolicyDocument: Statement: - Action: - kms:Decrypt Effect: Allow Resource: !GetAtt GroundStationDataDeliveryKmsKey.Arn PolicyName: GroundStationKmsKeyAccessPolicy Roles: - Ref: GroundStationKmsKeyRole GroundStationDataDeliveryKmsKey: Type: AWS::KMS::Key Properties: KeyPolicy: Statement: - Action: - kms:CreateAlias - kms:Describe* - kms:Enable* - kms:List* - kms:Put* - kms:Update* - kms:Revoke* - kms:Disable* - kms:Get* - kms:Delete* - kms:ScheduleKeyDeletion - kms:CancelKeyDeletion - kms:GenerateDataKey - kms:TagResource - kms:UntagResource Effect: Allow Principal: AWS: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:root" Resource: "*" - Action: - kms:Decrypt - kms:GenerateDataKeyWithoutPlaintext Effect: Allow Principal: AWS: !GetAtt GroundStationKmsKeyRole.Arn Resource: "*" Condition: StringEquals: "kms:EncryptionContext:sourceAccount": !Ref AWS::AccountId ArnLike: "kms:EncryptionContext:sourceArn": !Sub "arn:${AWS::Partition}:groundstation:${AWS::Region}:${AWS::AccountId}:mission-profile/*" - Action: - kms:CreateGrant Effect: Allow Principal: AWS: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:root" Resource: "*" Condition: ForAllValues:StringEquals: "kms:GrantOperations": - Decrypt - GenerateDataKeyWithoutPlaintext "kms:EncryptionContextKeys": - sourceArn - sourceAccount ArnLike: "kms:EncryptionContext:sourceArn": !Sub "arn:${AWS::Partition}:groundstation:${AWS::Region}:${AWS::AccountId}:mission-profile/*" StringEquals: "kms:EncryptionContext:sourceAccount": !Ref AWS::AccountId Version: "2012-10-17" EnableKeyRotation: true

AWS Ground Station configuraciones

Esta sección representa Paso 3: Crear configuraciones los primeros pasos.

Necesitarás una configuración de seguimiento para establecer tus preferencias sobre el uso del autotrack. Si PREFERREDse selecciona la opción de seguimiento automático, se puede mejorar la calidad de la señal, pero no es obligatorio cumplir con la calidad de la señal, ya que la calidad de las efemérides es suficienteJPSS.

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

En función de la ruta de comunicación, tendrá que definir una configuración de antena y enlace descendente que represente la parte del satélite, así como una configuración de puntos finales del flujo de datos que haga referencia al grupo de puntos finales del flujo de datos que define los detalles de los puntos finales.

# The AWS Ground Station Antenna Downlink Config that defines the frequency spectrum used to # downlink data from your satellite. SnppJpssDownlinkDigIfAntennaConfig: Type: AWS::GroundStation::Config Properties: Name: "SNPP JPSS Downlink WBDigIF Antenna Config" ConfigData: AntennaDownlinkConfig: SpectrumConfig: Bandwidth: Units: "MHz" Value: 100 CenterFrequency: Units: "MHz" Value: 7812 Polarization: "RIGHT_HAND" # The AWS Ground Station Dataflow Endpoint Config that defines the endpoint used to downlink data # from your satellite. DownlinkDigIfEndpointConfig: Type: AWS::GroundStation::Config Properties: Name: "Aqua SNPP JPSS Terra Downlink DigIF Endpoint Config" ConfigData: DataflowEndpointConfig: DataflowEndpointName: !Join [ "-" , [ !Ref "AWS::StackName" , "Downlink" ] ] DataflowEndpointRegion: !Ref AWS::Region

AWS Ground Station perfil de misión

Esta sección representa Paso 4: Crear un perfil de misión cómo empezar.

Ahora que tiene las configuraciones asociadas, puede usarlas para construir el flujo de datos. Utilizará los valores predeterminados para el resto de los parámetros.

# 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: !Sub 'JPSS WBDigIF gs-agent EC2 Delivery' ContactPrePassDurationSeconds: 120 ContactPostPassDurationSeconds: 120 MinimumViableContactDurationSeconds: 180 TrackingConfigArn: !Ref TrackingConfig DataflowEdges: - Source: !Ref SnppJpssDownlinkDigIfAntennaConfig Destination: !Ref DownlinkDigIfEndpointConfig StreamsKmsKey: KmsKeyArn: !GetAtt GroundStationDataDeliveryKmsKey.Arn StreamsKmsRole: !GetAtt GroundStationKmsKeyRole.Arn

Poniéndolo todo junto

Con los recursos anteriores, ahora puedes programar JPSS -1 contactos para la entrega sincrónica de datos desde cualquiera de tus contactos incorporados. AWS Ground Station Ubicaciones

La siguiente es una AWS CloudFormation plantilla completa que incluye todos los recursos descritos en esta sección combinados en una sola plantilla que se puede utilizar directamente. AWS CloudFormation

La AWS CloudFormation plantilla nombrada DirectBroadcastSatelliteWbDigIfEc2DataDelivery.yml está diseñada para brindarle acceso rápido para comenzar a recibir datos digitalizados de frecuencia intermedia (DigiF) para los satélites Aqua SNPPJPSS, NOAA -1/ -20 y Terra. Contiene una EC2 instancia de Amazon y los AWS CloudFormation recursos necesarios para recibir datos de transmisión directa de DigiF sin procesar mediante AWS Ground Station Agent.

Si AquaSNPP, JPSS -1/ NOAA -20 y Terra no están integrados en su cuenta, consulte. Paso 1: Incorporación de satélites

nota

Puede acceder a la plantilla accediendo al bucket de Amazon S3 que está incorporando el cliente. Los enlaces que aparecen a continuación utilizan un bucket regional de Amazon S3. Cambie el código de us-west-2 región para que represente la región correspondiente en la que desea crear la AWS CloudFormation pila.

Además, se utilizan las siguientes instruccionesYAML. Sin embargo, las plantillas están disponibles en ambos YAML JSON formatos. Para utilizarlaJSON, sustituya la extensión del .yml archivo por la extensión .json al descargar la plantilla.

Para descargar la plantilla mediante AWS CLI, utilice el siguiente comando:

aws s3 cp s3://groundstation-cloudformation-templates-us-west-2/agent/ec2_delivery/DirectBroadcastSatelliteWbDigIfEc2DataDelivery.yml .

Puede ver y descargar la plantilla en la consola navegando hasta lo siguiente URL en su navegador:

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

Puede especificar la plantilla directamente en AWS CloudFormation el siguiente enlace:

https://groundstation-cloudformation-templates-us-west-2.s3.us-west-2.amazonaws.com/agent/ec2_delivery/DirectBroadcastSatelliteWbDigIfEc2DataDelivery.yml

¿Qué recursos adicionales define la plantilla?

La DirectBroadcastSatelliteWbDigIfEc2DataDelivery plantilla incluye los siguientes recursos adicionales:

  • Interfaz de red elástica de instancia de receptor: (condicional) Se crea una interfaz de red elástica en la subred especificada PublicSubnetIdsi se proporciona. Esto es obligatorio si la instancia del receptor está en una subred privada. La interfaz de red elástica se asociará a la instancia del receptor EIP y se adjuntará a ella.

  • IP elástica de la instancia de recepción: una IP elástica a la que AWS Ground Station se conectará. Esto se conecta a la instancia del receptor o a la interface de red elástica.

  • Una de las siguientes asociaciones de IP elástica:

    • Asociación de instancia de receptor a IP elástica: asociación de la IP elástica a la instancia de receptor, si no PublicSubnetIdse especifica. Esto requiere que haga SubnetIdreferencia a una subred pública.

    • Interfaz de red elástica de instancia de receptor a asociación de IP elástica: asociación de la IP elástica a la interfaz de red elástica de la instancia de recepción, si PublicSubnetIdse especifica.

  • Activadores de CloudWatch eventos (opcionales): AWS Lambda función que se activa mediante CloudWatch eventos enviados AWS Ground Station antes y después de un contacto. La AWS Lambda función iniciará y, opcionalmente, detendrá la instancia de Receiver.

  • (Opcional) EC2Verificación de Amazon para contactos: la opción de usar Lambda para configurar un sistema de verificación de las EC2 instancias de Amazon para los contactos con SNS notificaciones. Es importante tener en cuenta que esto puede conllevar gastos en función del uso actual.

  • Perfiles de misión adicionales: perfiles de misión para otros satélites de transmisión pública (Aqua y Terra). SNPP

  • Configuraciones adicionales de enlace descendente de antena: configuraciones de enlace descendente de antena para otros satélites de transmisión pública (Aqua y Terra). SNPP

Los valores y parámetros de los satélites de esta plantilla ya se han rellenado. Estos parámetros facilitan su uso inmediato con estos satélites. AWS Ground Station No necesita configurar sus propios valores para utilizarlos AWS Ground Station cuando utilice esta plantilla. Sin embargo, puede personalizar los valores para que la plantilla funcione para su caso de uso.

¿Dónde recibo los datos?

El grupo de puntos de enlace del flujo de datos se configura para que se utilice la interfaz de red de la instancia del receptor que crea parte de la plantilla. La instancia receptora usa el AWS Ground Station agente para recibir el flujo de datos desde AWS Ground Station el puerto definido por el punto final del flujo de datos. Para obtener más información sobre la configuración de un grupo de puntos finales de flujo de datos, consulte Grupo. AWS::GroundStation::DataflowEndpoint Para obtener más información sobre el AWS Ground Station agente, consulte ¿Qué es el AWS Ground Station agente?