

# Understand AWS Ground Station Core components
<a name="how-it-works.core"></a>

 This section provides detailed definitions for the core components of AWS Ground Station. 

 The following diagram shows the core components of AWS Ground Station and how they relate to each other. The arrows indicate the direction of the dependencies between components, where each component points to its dependencies. 

 ![\[Diagram showing the core components of AWS Ground Station and how they relate to each other.\]](http://docs.aws.amazon.com/ground-station/latest/ug/images/core-component-relationships.png) 

The following topics describe the AWS Ground Station core components in detail.

**Topics**
+ [Use AWS Ground Station Mission Profiles](how-it-works-mission-profile.md)
+ [Use AWS Ground Station Configs](how-it-works.config.md)
+ [Use AWS Ground Station Dataflow endpoint groups](how-it-works.dataflow-endpoint-group.md)
+ [Use AWS Ground Station Agent](how-it-works.gs-agent.md)

# Use AWS Ground Station Mission Profiles
<a name="how-it-works-mission-profile"></a>

Mission profiles contain configs and parameters for how contacts are executed. When you reserve a contact or search for available contacts, you supply the mission profile that you intend to use. Mission profiles bring all of your configs together and define how the antenna will be configured and where data will go during your contact. 

 Mission profiles can be shared across satellites which share the same radio characteristics. You can create additional dataflow endpoint groups to bound the maximum simultaneous contacts you want to perform for your constellation. 

 Tracking configs are specified as a unique field within the mission profile. Tracking configs are used to specify your preference for using program-tracking and auto-tracking during your contact. For more information, see [Tracking Config](how-it-works.config.md#how-it-works.config-tracking). 

 All other configs are contained in the `dataflowEdges` field of the mission profile. These configs can be thought of as dataflow nodes that each represent an AWS Ground Station managed resource that can send or receive data and its associated configuration. The `dataflowEdges` field defines which source and destination dataflow nodes (configs) are needed. A single dataflow edge is a list of two config [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)—the first is the *source* config and the second is the *destination* config. By specifying a dataflow edge between two configs, you are telling AWS Ground Station from where and to where data should flow during a contact. For more information, see [Use AWS Ground Station Configs](how-it-works.config.md). 

The `contactPrePassDurationSeconds` and `contactPostPassDurationSeconds` allow you to specify times relative to the contact where you will receive an CloudWatch Event notification. For a timeline of events related to your contact, please read [Understand contact lifecycle](contacts.lifecycle.md).

The `name` field of the mission profile helps distinguish between the mission profiles that you create.

The `streamsKmsRole` and `streamsKmsKey` are used to define the encryption used by AWS Ground Station for your data delivery with AWS Ground Station Agent. Please see [Data encryption during transit for AWS Ground Station](security.encryption-during-transit.md). 

The `telemetrySinkConfigArn` field is optional and allows you to enable AWS Ground Station telemetry during contacts. When specified, AWS Ground Station streams near real-time telemetry data to your account during the execution of your contacts. For more information about configuring and using telemetry, see [Work with telemetry](telemetry.md).

 ![\[Dataflow and configuration for a mission profile.\]](http://docs.aws.amazon.com/ground-station/latest/ug/images/mission-profile-core-component.png) 

 A full list of parameters and examples is included at the following documentation. 
+ [AWS::GroundStation::MissionProfile CloudFormation resource type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-groundstation-missionprofile.html)

# Use AWS Ground Station Configs
<a name="how-it-works.config"></a>

 *Configs* are resources that AWS Ground Station uses to define the parameters for each aspect of your contact. Add the configs you want to a mission profile, and then that mission profile will be used when executing the contact. You can define several different types of configs. The configs can be grouped into three categories: 
+ Tracking configs
+ Dataflow configs
+ Telemetry configs

 A *TrackingConfig* is the only type of tracking config. It's used to configure the autotrack setting of the antenna during a contact, and is required in a mission profile. 

 The configs that can be used in a mission profile dataflow can be thought of as dataflow nodes that each represent an AWS Ground Station managed resource that can send or receive data. A mission profile requires at least one pair of these configs, with one representing a source of data, and one representing a destination. These configs are summarized in the following table. 


| Config name | Dataflow source/destination | 
| --- | --- | 
|  AntennaDownlinkConfig  |  Source  | 
|  AntennaDownlinkDemodDecodeConfig  |  Source  | 
|  UplinkEchoConfig  |  Source  | 
|  S3RecordingConfig  |  Destination  | 
|  AntennaUplinkConfig  |  Destination  | 
|  DataflowEndpointConfig  |  Source and/or Destination  | 

 A *TelemetrySinkConfig* is the only type of telemetry config. It's used to configure where telemetry data will be delivered during a contact, and is optional in a mission profile. When included, AWS Ground Station streams near real-time telemetry to your account during the execution of your contacts. 

 See the following documentation for more information about how to perform operations on configs using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. Links to documentation for specific config types are also provided below. 
+ [AWS::GroundStation::Config CloudFormation resource type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-groundstation-config.html)
+ [Config AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-config.html)
+ [Config API reference](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateConfig.html)

## Tracking Config
<a name="how-it-works.config-tracking"></a>

 You can use tracking configs in the mission profile to determine whether autotrack should be enabled during your contacts. This config has a single parameter: `autotrack`. The `autotrack` parameter can have the following values:
+ `REQUIRED` - Autotrack is required for your contacts.
+ `PREFERRED` - Autotrack is preferred for contacts, but contacts can still be executed without autotrack.
+ `REMOVED` - No autotrack should be used for your contacts.

AWS Ground Station will utilize programmatic tracking which will point based on your ephemeris when autotrack is not used. Please reference [Understand how AWS Ground Station uses ephemerides](ephemeris.md) for details about how ephemeris is constructed.

Autotrack will use program tracking until the expected signal is found. Once that occurs, it will continue to track based on the strength of the signal.

 See the following documentation for more information about how to perform operations on tracking configs using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. 
+ [AWS::GroundStation::Config TrackingConfig CloudFormation property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-groundstation-config-trackingconfig.html)
+ [Config AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-config.html) (see the `trackingConfig -> (structure)` section)
+ [TrackingConfig API reference](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_TrackingConfig.html)

## Antenna Downlink Config
<a name="how-it-works.config-antenna-downlink"></a>

 You can use antenna downlink configs to configure the antenna for downlink during your contact. They consist of a spectrum config that specifies the frequency, bandwidth, and polarization that should be used during your downlink contact. 

This config represents a source node in a dataflow. It is responsible for digitizing radio frequency data. Data streamed from this node will follow the Signal Data/IP Format. For more detailed information on how to construct dataflows with this config, see [Work with dataflows](dataflows.md)

If your downlink use case requires demodulation or decoding, see the [Antenna Downlink Demod Decode Config](#how-it-works.config-antenna-downlink-demod-decode).

 See the following documentation for more information about how to perform operations on antenna downlink configs using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. 
+ [AWS::GroundStation::Config AntennaDownlinkConfig CloudFormation property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-groundstation-config-antennadownlinkconfig.html)
+ [Config AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-config.html) (see the `antennaDownlinkConfig -> (structure)` section)
+ [AntennaDownlinkConfig API reference](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_AntennaDownlinkConfig.html)

## Antenna Downlink Demod Decode Config
<a name="how-it-works.config-antenna-downlink-demod-decode"></a>

 Antenna downlink demod decode configs are a more complex and customizable config type that you can use to execute downlink contacts with demodulation and/or decoding. If you're interested in executing these types of contacts, please open an AWS Support ticket through the [AWS Support Center Console](https://console.aws.amazon.com/support). We'll help you define the right config and mission profile for your use case. 

 This config represents a source node in a dataflow. It is responsible for digitizing radio frequency data and performing the demodulation and decoding as specified. Data streamed from this node will follow the Demodulated/Decoded Data/IP Format. For more detailed information on how to construct dataflows with this config, see [Work with dataflows](dataflows.md) 

 See the following documentation for more information about how to perform operations on antenna downlink demod decode configs using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. 
+  [ AWS::GroundStation::Config AntennaDownlinkDemodDecodeConfig CloudFormation property ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-groundstation-config-antennadownlinkdemoddecodeconfig.html) 
+  [ Config AWS CLI reference ](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-config.html) (see the `antennaDownlinkDemodDecodeConfig -> (structure)` section) 
+  [ AntennaDownlinkDemodDecodeConfig API reference ](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_AntennaDownlinkDemodDecodeConfig.html) 

## Antenna Uplink Config
<a name="how-it-works.config-antenna-uplink"></a>

 You can use antenna uplink configs to configure the antenna for uplink during your contact. They consist of a spectrum config with frequency, polarization, and target effective isotropic radiated power (EIRP). For information about how to configure a contact for uplink loopback, see [Antenna Uplink Echo Config](#how-it-works.config-antenna-uplink-echo). 

This config represents a destination node in a dataflow. It will convert the provided digitized radio frequency data signal into an analog signal and emit it for your satellite to receive. Data streamed to this node is expected to meet the Signal Data/IP Format. For more detailed information on how to construct dataflows with this config, see [Work with dataflows](dataflows.md)

 See the following documentation for more information about how to perform operations on antenna uplink configs using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. 
+ [AWS::GroundStation::Config AntennaUplinkConfig CloudFormation property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-groundstation-config-antennauplinkconfig.html)
+ [Config AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-config.html) (see the `antennaUplinkConfig -> (structure)` section)
+ [AntennaUplinkConfig API reference](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_AntennaUplinkConfig.html)

## Antenna Uplink Echo Config
<a name="how-it-works.config-antenna-uplink-echo"></a>

 Uplink echo configs tell the antenna how to execute an uplink echo. An uplink echo can be used to validate commands sent to your spacecraft, and perform other advanced tasks. This is achieved by recording the actual signal transmitted by the AWS Ground Station antenna (i.e. the uplink). This echoes the signal sent by the antenna back to your dataflow endpoint and should match the transmitted signal. An uplink echo config contains the ARN of an uplink config. The antenna uses the parameters from the uplink config pointed to by the ARN when executing an uplink echo. 

 This config represents a source node in a dataflow. Data streamed from this node will meet the Signal Data/IP Format. For more detailed information on how to construct dataflows with this config, see [Work with dataflows](dataflows.md) 

 See the following documentation for more information about how to perform operations on uplink echo configs using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. 
+ [AWS::GroundStation::Config UplinkEchoConfig CloudFormation property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-groundstation-config-uplinkechoconfig.html)
+ [Config AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-config.html) (see the `uplinkEchoConfig -> (structure)` section)
+ [UplinkEchoConfig API reference](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UplinkEchoConfig.html)

## Dataflow Endpoint Config
<a name="how-it-works.core-config-dfe"></a>

**Note**  
 Dataflow endpoint configs are only used for data delivery to Amazon EC2 and are not used for data delivery to Amazon S3. 

 You can use dataflow endpoint configs to specify which dataflow endpoint in a [dataflow endpoint group](how-it-works.dataflow-endpoint-group.md) from which or to which you want data to flow during a contact. The two parameters of a dataflow endpoint config specify the name and region of the dataflow endpoint. When reserving a contact, AWS Ground Station analyzes the [mission profile](how-it-works-mission-profile.md) you specified and attempts to find a dataflow endpoint *group* within the AWS Region that contains all of the dataflow *endpoints* specified by the dataflow endpoint *configs* contained in your mission profile. If a suitable dataflow endpoint *group* is found, the contact status will become SCHEDULED, otherwise it will become FAILED\$1TO\$1SCHEDULE. For more information about the possible statuses of a contact, see [AWS Ground Station contact statuses](contacts.lifecycle.md#contact-statuses). 

 The `dataflowEndpointName` property of a dataflow endpoint config specifies which dataflow endpoint in a dataflow endpoint group to which or from which data will flow during a contact. 

 The `dataflowEndpointRegion` property specifies which region the dataflow endpoint resides in. If a region is specified in your dataflow endpoint config, AWS Ground Station looks for a dataflow endpoint in the region specified. If no region is specified, AWS Ground Station will default to the contact's ground station region. A contact is considered a cross region data delivery contact if your dataflow endpoint's region is not the same as the contact's ground station region. See [Work with dataflows](dataflows.md) for more information on cross-region dataflows. 

 See [Use AWS Ground Station Dataflow endpoint groups](how-it-works.dataflow-endpoint-group.md) for tips on how different naming schemes for your dataflows can benefit your use case. 

 For more detailed information on how to construct dataflows with this config, see [Work with dataflows](dataflows.md) 

 See the following documentation for more information about how to perform operations on dataflow endpoint configs using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. 
+ [AWS::GroundStation::Config DataflowEndpointConfig CloudFormation property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-groundstation-config-dataflowendpointconfig.html)
+ [Config AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-config.html) (see the `dataflowEndpointConfig -> (structure)` section)
+ [DataflowEndpointConfig API reference](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DataflowEndpointConfig.html)

## Amazon S3 Recording Config
<a name="how-it-works.config-s3-recording"></a>

**Note**  
 Amazon S3 recording configs are only used for data delivery to Amazon S3 and are not used for data delivery to Amazon EC2. 

 This config represents a destination node in a dataflow. This node will encapsulate incoming data from the dataflow's source node into pcap data. For more detailed information on how to construct dataflows with this config, see [Work with dataflows](dataflows.md) 

 You can use S3 recording configs to specify an Amazon S3 bucket to which you want downlinked data delivered along with the naming convention used. The following specifies restrictions and details about these parameters: 
+ The Amazon S3 bucket's name must begin with `aws-groundstation` .
+  The IAM role must have a trust policy that allows the `groundstation.amazonaws.com` service principal to assume the role. See the [Example Trust Policy](#s3-trust-policy-example) section below for an example. During config creation the config resource id does not exist, the trust policy must use an asterisk (*\$1*) in place of *your-config-id* and can be updated after creation with the config resource id. 

### Example Trust Policy
<a name="s3-trust-policy-example"></a>

 For more information on how to update a role's trust policy, see [Managing IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage.html) in the IAM User Guide. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "groundstation.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "999999999999"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:groundstation:us-east-1:999999999999:config/s3-recording/your-config-id"
                }
            }
        }
    ]
}
```

------
+  The IAM role must have an IAM policy that allows the role to perform the `s3:GetBucketLocation` action on the bucket and `s3:PutObject` action on the bucket's objects. If the Amazon S3 bucket has a bucket policy, then the bucket policy must also allow the IAM role to perform these actions. See the [Example Role Policy](#s3-role-policy-example) section below for an example. 

### Example Role Policy
<a name="s3-role-policy-example"></a>

 For more information on how to update or attach a role policy, see [Managing IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) in the IAM User Guide. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::your-bucket-name"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::your-bucket-name/*"
      ]
    }
  ]
}
```

------
+  The prefix will be used when naming the S3 data object. You can specify optional keys for substitution, these values will be replaced with the corresponding information from your contact details. For example, a prefix of `{satellite_id}/{year}/{month}/{day}` will be replaced and would result with an output like `fake_satellite_id/2021/01/10` 

   *Optional keys for substitution*: `{satellite_id}` \$1 `{config-name}` \$1 `{config-id}` \$1 `{year}` \$1 `{month}` \$1 `{day}` \$1 

 See the following documentation for more information about how to perform operations on S3 recording configs using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. 
+ [AWS::GroundStation::Config S3RecordingConfig CloudFormation property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-groundstation-config-s3recordingconfig.html)
+ [Config AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-config.html) (see the `s3RecordingConfig -> (structure)` section)
+ [S3RecordingConfig API reference](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_S3RecordingConfig.html)

## Telemetry Sink Config
<a name="how-it-works.config-telemetry-sink"></a>

 You can use telemetry sink configs to specify where you want telemetry data delivered during satellite contacts. A telemetry sink config is optional and is added to your mission profile to schedule telemetry-enabled contacts. The following specifies restrictions and details about these parameters: 
+  The IAM role must have a trust policy that allows the `groundstation.amazonaws.com` service principal to assume the role. See the [Example Trust Policy](#telemetry-config-trust-policy-example) section below for an example. 

### Example Trust Policy
<a name="telemetry-config-trust-policy-example"></a>

 For more information on how to update a role's trust policy, see [Managing IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage.html) in the IAM User Guide. 

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "groundstation.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```
+  The IAM role must have an IAM policy that allows the role to perform the `kinesis:DescribeStream`, `kinesis:PutRecord` and `kinesis:PutRecords` actions on the stream. See the [Example Role Policy](#telemetry-config-role-policy-example) section below for an example. 

### Example Role Policy
<a name="telemetry-config-role-policy-example"></a>

 For more information on how to update or attach a role policy, see [Managing IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) in the IAM User Guide. 

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kinesis:DescribeStream",
        "kinesis:PutRecord",
        "kinesis:PutRecords"
      ],
      "Resource": "arn:aws:kinesis:us-east-2:999999999999:stream/your-stream-name"
    }
  ]
}
```

 When you include a telemetry sink config in your mission profile, AWS Ground Station will stream telemetry data to your account during contacts. For more information about telemetry types, data format, and setting up the necessary AWS resources, see [Work with telemetry](telemetry.md). 

 See the following documentation for more information about how to perform operations on telemetry sink configs using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. 
+  [ AWS::GroundStation::Config TelemetrySinkConfig CloudFormation property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-groundstation-config-telemetrysinkconfig.html) 
+  [ Config AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-config.html) (see the `telemetrySinkConfig -> (structure)` section) 
+  [ TelemetrySinkConfig API reference](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_TelemetrySinkConfig.html) 

# Use AWS Ground Station Dataflow endpoint groups
<a name="how-it-works.dataflow-endpoint-group"></a>

 *Dataflow endpoints* define the location where you want the data to be synchronously streamed to or from during contacts. Dataflow endpoints are always created as part of a *dataflow endpoint group*. By including multiple dataflow endpoints in a group, you are asserting that the specified endpoints can all be used together during a single contact. For example, if a contact needs to send data to three separate dataflow endpoints, you must have three endpoints in a single dataflow endpoint group that match the dataflow endpoint configs in your mission profile. 

## Dataflow endpoint group versions
<a name="how-it-works.dataflow-endpoint-group.versions"></a>

 AWS Ground Station supports two versions of dataflow endpoint groups: 
+ **DataflowEndpointGroup** - The original implementation that supports uplink and downlink using a [dataflow endpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DataflowEndpoint.html), and downlink-only for an [AWS Ground Station Agent endpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_AwsGroundStationAgentEndpoint.html)
+ **DataflowEndpointGroupV2** - Updated version that supports both uplink and downlink dataflows for AWS Ground Station Agent endpoints with improved clarity and functionality


**Dataflow endpoint group comparison**  

| Feature | DataflowEndpointGroup | DataflowEndpointGroupV2 | 
| --- | --- | --- | 
| Supported endpoint types | DataflowEndpoint, AwsGroundStationAgentEndpoint | DownlinkAwsGroundStationAgentEndpoint, UplinkAwsGroundStationAgentEndpoint | 
| Endpoints supporting uplink | DataflowEndpoint | UplinkAwsGroundStationAgentEndpoint | 
| Endpoints supporting downlink | DataflowEndpoint, AwsGroundStationAgentEndpoint | DownlinkAwsGroundStationAgentEndpoint | 

 DataflowEndpointGroupV2 was created to support uplink dataflows and to make the language surrounding dataflow endpoint groups clearer. We recommend using [UplinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UplinkAwsGroundStationAgentEndpoint.html) and [DownlinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DownlinkAwsGroundStationAgentEndpoint.html) endpoints with a [DataflowEndpointGroupV2](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateDataflowEndpointGroupV2.html) for all new use cases. DataflowEndpointGroup remains supported for backward compatibility, but DataflowEndpointGroupV2 provides enhanced functionality and clearer configuration options. 

**Tip**  
 The dataflow endpoints are identified by a name of your choosing when executing contacts. These names do not need to be unique across the account. This allows multiple contacts across different satellites and antenna to be executed at the same time using the same mission profile. This can be useful if you have a constellation of satellites that have the same operating characteristics. You can scale the number of dataflow endpoint groups up to fit the maximum number of simultaneous contacts your constellation of satellite requires. 

 When one or more resources in a dataflow endpoint group is in use for a contact, the entire group is reserved for the duration of that contact. You may execute multiple contacts concurrently, but those contacts must be executed on different dataflow endpoint groups. 

**Important**  
 Dataflow endpoint groups must be in a `HEALTHY` state to schedule contacts using them. For information on how to troubleshoot dataflow endpoint groups that are not in a `HEALTHY` state, see [Troubleshoot DataflowEndpointGroups not in a HEALTHY state](troubleshooting-dfeg.md). 

 See the following documentation for more information about how to perform operations on dataflow endpoint groups using CloudFormation, the AWS Command Line Interface, or the AWS Ground Station API. 
+ [AWS::GroundStation::DataflowEndpointGroup CloudFormation resource type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-groundstation-dataflowendpointgroup.html)
+ [Dataflow Endpoint Group AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/groundstation/create-dataflow-endpoint-group.html)
+ [Dataflow Endpoint Group API reference](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateDataflowEndpointGroup.html)

## Dataflow endpoints
<a name="how-it-works.dataflow-endpoint-group.endpoints"></a>

 The members of a dataflow endpoint group are dataflow endpoints. The supported endpoint types depend on which dataflow endpoint group version you use. 

### DataflowEndpointGroup endpoints
<a name="how-it-works.dataflow-endpoint-group.original-endpoints"></a>

 DataflowEndpointGroup supports uplink and downlink using a [dataflow endpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DataflowEndpoint.html), and downlink-only for an [AWS Ground Station Agent endpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_AwsGroundStationAgentEndpoint.html). For both types of endpoints, you will create the supporting constructs (e.g. IP addresses) prior to creating the dataflow endpoint group. Please see [Work with dataflows](dataflows.md) for recommendations on which dataflow endpoint type to use and how to set up the supporting constructs. 

 The following sections describe both supported endpoint types. 

**Important**  
 All dataflow endpoints within a single dataflow endpoint group must be of the same type. You cannot mix [AWS Ground Station Agent endpoints](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_AwsGroundStationAgentEndpoint.html) with [Dataflow endpoints](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DataflowEndpoint.html) in the same group. If your use case requires both types of endpoints, you must create separate dataflow endpoint groups for each type.   
 For DataflowEndpointGroupV2, you can mix [UplinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UplinkAwsGroundStationAgentEndpoint.html) and [DownlinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DownlinkAwsGroundStationAgentEndpoint.html) in the same group. 

#### AWS Ground Station Agent endpoint
<a name="how-it-works.dataflow-endpoint-group.agent"></a>

 The AWS Ground Station Agent Endpoint utilizes the AWS Ground Station Agent as a software component to terminate connections. To construct an AWS Ground Station Agent Endpoint, you will only populate the `AwsGroundStationAgentEndpoint` field of the EndpointDetails. For more information about the AWS Ground Station Agent, see the full [AWS Ground Station Agent User Guide](https://docs.aws.amazon.com/ground-station/latest/gs-agent-ug/). 

The `AwsGroundStationAgentEndpoint` consists of the following:
+ `Name` - The dataflow endpoint name. For the contact to use this dataflow endpoint, this name must match the name used in your dataflow endpoint config.
+ `EgressAddress` - The IP and port address used to egress data from the Agent.
+ `IngressAddress` - The IP and port address used to ingress data to the Agent.

#### Dataflow endpoint
<a name="how-it-works.dataflow-endpoint-group.dataflow-endpoint"></a>

 The Dataflow Endpoint utilizes a networking application as a software component to terminate connections. Use Dataflow Endpoint when you want to uplink Digital Signal Data, downlink less-than 50MHz of Digital Signal Data, or downlink Demodulated/Decoded Signal Data. To construct a Dataflow Endpoint, you will populate the `Endpoint` and `Security Details` fields of the EndpointDetails. 

The `Endpoint` consists of the following:
+ `Name` - The dataflow endpoint name. For the contact to use this dataflow endpoint, this name must match the name used in your dataflow endpoint config.
+ `Address` - The IP and port address used.

The `SecurityDetails` consists of the following:
+ `roleArn` - The Amazon Resource Name (ARN) of a role that AWS Ground Station will assume to create Elastic Network Interfaces (ENIs) in your VPC. These ENIs serve as the ingress and egress points of data streamed during a contact.
+ `securityGroupIds` - The security groups to attach to the elastic network interfaces.
+  `subnetIds` - A list of subnets where AWS Ground Station may place elastic network interfaces to send streams to your instances. If multiple subnets are specified, they must be routable to one another. If the subnets are in different Availability Zones (AZs), you may incur cross-AZ data transfer charges. 

 The IAM role passed into `roleArn` must have a trust policy that allows the `groundstation.amazonaws.com` service principal to assume the role. See the [Example Trust Policy](#dataflow-endpoint-trust-policy-example) section below for an example. During endpoint creation the endpoint resource id does not exist, so the trust policy must use an asterisk (*\$1*) in place of *your-endpoint-id*. This can be updated after creation to use the endpoint resource id in order to scope the trust policy to that specific dataflow endpoint group. 

 The IAM role must have an IAM policy that allows AWS Ground Station to set up the ENIs. See the [Example Role Policy](#dataflow-endpoint-role-policy-example) section below for an example. 

##### Example Trust Policy
<a name="dataflow-endpoint-trust-policy-example"></a>

 For more information on how to update a role's trust policy, see [Managing IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage.html) in the IAM User Guide. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "groundstation.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "999999999999"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:groundstation:us-east-1:999999999999:dataflow-endpoint-group/your-endpoint-id"
                }
            }
        }
    ]
}
```

------

##### Example Role Policy
<a name="dataflow-endpoint-role-policy-example"></a>

 For more information on how to update or attach a role policy, see [Managing IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) in the IAM User Guide. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:DeleteNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### DataflowEndpointGroupV2 endpoints
<a name="how-it-works.dataflow-endpoint-group.v2-endpoints"></a>

 DataflowEndpointGroupV2 introduces specialized endpoint types that provide clearer configuration and enhanced functionality: 
+ **[UplinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UplinkAwsGroundStationAgentEndpoint.html)** - Optimized for uplink dataflows
+ **[DownlinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DownlinkAwsGroundStationAgentEndpoint.html)** - Optimized for downlink dataflows

 These specialized endpoints replace the generic [AwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_AwsGroundStationAgentEndpoint.html) with direction-specific configurations that make it easier to set up and manage your dataflows. 

#### Uplink AWS Ground Station Agent endpoint
<a name="how-it-works.dataflow-endpoint-group.uplink-agent-v2"></a>

 The [UplinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UplinkAwsGroundStationAgentEndpoint.html) is specifically designed for uplink dataflows and provides clearer configuration options. Use this endpoint type when you need to provide data to AWS Ground Station to be uplinked to your satellite. 

The `UplinkAwsGroundStationAgentEndpoint` consists of the following:
+ `Name` - The dataflow endpoint name. For the contact to use this dataflow endpoint, this name must match the name used in your dataflow endpoint config.
+ `IngressAddressAndPort` - Single IP and port address for data input to the agent
+ `AgentIpAndPortAddress` - Port range for agent communication

#### Downlink AWS Ground Station Agent endpoint
<a name="how-it-works.dataflow-endpoint-group.downlink-agent-v2"></a>

 The [DownlinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DownlinkAwsGroundStationAgentEndpoint.html) is optimized for downlink dataflows, including narrowband downlink, wideband demodulation/decode, and uplink echo scenarios. 

The `DownlinkAwsGroundStationAgentEndpoint` consists of the following:
+ `Name` - The dataflow endpoint name. For the contact to use this dataflow endpoint, this name must match the name used in your dataflow endpoint config.
+ `EgressAddressAndPort` - Single IP and port address for data output from the agent
+ `AgentIpAndPortAddress` - Port range for agent communication

## Creating dataflow endpoint groups
<a name="how-it-works.dataflow-endpoint-group.creating"></a>

 You can create dataflow endpoint groups using either version: 

### CreateDataflowEndpointGroup
<a name="how-it-works.dataflow-endpoint-group.creating-original"></a>

 Use [CreateDataflowEndpointGroup](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateDataflowEndpointGroup.html) for backward compatibility or when you need to use the generic [AwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_AwsGroundStationAgentEndpoint.html) or [DataflowEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DataflowEndpoint.html) types. 

### CreateDataflowEndpointGroupV2
<a name="how-it-works.dataflow-endpoint-group.creating-v2"></a>

 Use [CreateDataflowEndpointGroupV2](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateDataflowEndpointGroupV2.html) for new implementations to take advantage of specialized endpoint types that support both uplink and downlink dataflows. This API only supports [UplinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UplinkAwsGroundStationAgentEndpoint.html) and [DownlinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DownlinkAwsGroundStationAgentEndpoint.html). 

## Migration considerations
<a name="how-it-works.dataflow-endpoint-group.migration"></a>

 If you're currently using DataflowEndpointGroup, you can continue using your existing configuration without changes. AWS Ground Station maintains full backward compatibility. 

 If you'd like to migrate to use the new DataflowEndpointGroupV2, and are currently using a [DataflowEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DataflowEndpoint.html) with a Dataflow Endpoint Application to receive your data, you'll need to migrate to use the AWS Ground Station Agent instead. If you're already using an AWS Ground Station Agent for downlink, you can use the same agent instance for uplink as well - no additional agent instances are required. 

 To migrate to DataflowEndpointGroupV2: 

1. If migrating from DataflowEndpoint, set up the AWS Ground Station Agent following the [AWS Ground Station Agent User Guide](https://docs.aws.amazon.com/ground-station/latest/gs-agent-ug/)

1. Identify your dataflow direction and create the appropriate endpoint type ([UplinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_UplinkAwsGroundStationAgentEndpoint.html) or [DownlinkAwsGroundStationAgentEndpoint](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DownlinkAwsGroundStationAgentEndpoint.html))

1. Create the [DataflowEndpointGroupV2](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateDataflowEndpointGroupV2.html) referencing those endpoints

1. Create a new [dataflow endpoint config](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateConfig.html) that references the new DataflowEndpointGroupV2 by name

1. Create a new mission profile that references the dataflow endpoint config as a dataflow edge

1. Use the new mission profile to schedule contacts

1. Test your configuration before deploying to production

 For more information about the complete workflow, see [Understand AWS Ground Station Core components](how-it-works.core.md) and [Create configs](getting-started.step3.md). 

# Use AWS Ground Station Agent
<a name="how-it-works.gs-agent"></a>

The AWS Ground Station Agent enables you to receive (downlink) synchronous Wideband Digital Intermediate Frequency (DigIF) dataflows during AWS Ground Station contacts.

## How it works
<a name="how-it-works.gs-agent.what-is-gs-agent"></a>

 You can select two options for data delivery:

1. **Data delivery to an EC2 instance** - Data delivery to an EC2 instance that you own. You manage the AWS Ground Station Agent. This option may suit you best if you need near real-time data processing. See the [Work with dataflows](dataflows.md) section for information about EC2 data delivery.

1. **Data delivery to an S3 bucket** - Data delivery to your AWS S3 bucket is fully managed by AWS Ground Station. See the [Get started](getting-started.md) guide for information about S3 data delivery.

 Both modes of data delivery require you to create a set of AWS resources. The use of CloudFormation to create your AWS resources is highly recommended to ensure reliability, accuracy, and supportability. Each contact can only deliver data to EC2 or S3 but not to both simultaneously. 

 The following diagram shows a DigIF dataflow from an AWS Ground Station Antenna Region to your EC2 instance with your Software-Defined Radio (SDR) or similar listener. 

 ![\[DigIF dataflow from an AWS Ground Station antennna region.\]](http://docs.aws.amazon.com/ground-station/latest/ug/images/digif-data-delivery-overview.png) 

## Additional information
<a name="how-it-works.gs-agent.more-info"></a>

For more detailed information, please see the full [AWS Ground Station Agent User Guide](https://docs.aws.amazon.com/ground-station/latest/gs-agent-ug).