# AWS AppStream connector

{% hint style="warning" %}
This documentation references external sources. Nexthink does not have control over the accuracy of third-party documentation, nor any external updates or changes that might create inconsistencies with the information presented on this page. Please report any errors or inconsistencies to [Nexthink Support](https://support.nexthink.com/).
{% endhint %}

The Nexthink Connector for AWS AppStream retrieves essential information about your AWS AppStream virtual desktop infrastructure (VDI). The connector enriches your Nexthink environment with AWS AppStream data that enhances visibility into VDI health, usage patterns, and configuration drift.

This installation guide is designed to help you securely deploy the connector for AWS. We recommend that your organization’s security team reviews the configuration and installation steps outlined here and adjusts them as needed to align with internal security policies and compliance requirements.

## Device fields <a href="#device-fields" id="device-fields"></a>

The connector for AWS AppStream enriches the following device virtualization fields:

## Configure connector credentials <a href="#configure-connector-credentials" id="configure-connector-credentials"></a>

To allow Nexthink to export data to your AWS AppStream connector, you must first configure the connector credentials by completing the following steps:

{% stepper %}
{% step %}
Select **Administration** > **Connector credentials** in the main menu.
{% endstep %}

{% step %}
Select **New credential** in the top-right corner of the **Connector credentials** page.
{% endstep %}

{% step %}
Fill in the credential configuration input fields:

* **Name**: The unique name of the credential.
* **Protocol**: Select new `AWS IAM` .

The configuration screen should look as follows:

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-f8748348511a6dfc1c071ea0973319021d0db0a0%2FUntitled%20(7).png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Nexthink generates the **AWS External ID** automatically. You will use it in the next steps to create the AWS Role and retrieve its Amazon Resource Name (ARN). You can then paste this ARN in the **AWS Role ARN** text box.

Nexthink uses the recommended procedure from AWS for third-party access as described in the [Access to AWS accounts owned by third parties](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) documentation.
{% endhint %}
{% endstep %}

{% step %}
Sign in to AWS and create a IAM role. The following code example shows the minimum level of access required by the Nexthink AWS AppStream connector:

```json
{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Sid": "DescribeWorkspacesInfo",
   "Effect": "Allow",
   "Action": [
      "appstream:DescribeStacks",
      "appstream:DescribeSessions",
      "appstream:DescribeFleets",
      "appstream:ListAssociatedFleets"
   ],
   "Resource": "*"
  }
 ]
}
```

{% endstep %}

{% step %}
Create an IAM role that gives Nexthink access.

* **Name**: the role name should start with prefix **“NexthinkConnector-“**.
* **Permissions**: Please add the policy created above.
* **Trusted Policies**: The trust policy must specify the following AWS account number of Nexthink as `Principal`: `884848470805`\
  Furthermore, add a `Condition` element to the trust policy that will test whether the `ExternalId` matches the generated external ID provided in the form above. The following code is an example of the trust relationship in the role:

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::884848470805:root"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "sts:ExternalId": <EXTERNAL_ID>
                }
            }
        }
    ]
}
```

{% hint style="warning" %}
Replace `<EXTERNAL_ID>` with the AWS External ID field generated in the credential form.
{% endhint %}
{% endstep %}

{% step %}
After creating the role, copy its AWS Role ARN:

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-1e05d6d066f67d7d6f79dc923f3643f5175b39dd%2FUntitled.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
In Nexthink, on the **Connector credentials** page, edit the AWS Credentials, and insert the ARN in the **AWS Role ARN** text box in **Credential details**, and select **Save**:

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-895c874c1419bb475e49744cb1698d0dcd78b7e4%2FUntitled.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## Configure the AWS AppStream connector <a href="#configure-the-aws-appstream-connector" id="configure-the-aws-appstream-connector"></a>

Ensure you [configured the connector credentials](#configure-connector-credentials), then create a new connector:

1. Go to **Administration** > **Inbound connectors**.
2. Select **New connector** in the top-right corner.
3. Select **AWS AppStream** from the connector list.

The following sections explain how to configure the connector.

### General tab

* **Name**: A meaningful name for the connector. This name appears on the administration page.
* **NQL ID**: A unique identifier for the connector used when referencing the AWS AppStream connector in NQL queries. You can initially modify the suggested NQL ID, but once you save the workflow, you can no longer change it.
* **Description**: A short description of the purpose and behavior of the connector.

#### Connection

* **Credentials:** Select preconfigured credentials from the Connector credentials page. Only AWS IAM is supported.

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-b33fd6f0e1e67ad410432c7b7b4f8d8b4c0d0bc8%2FUntitled.png?alt=media" alt=""><figcaption></figcaption></figure>

### Parameters tab

* **Region**: Select the AWS region where AppStream is located. It needs to be a valid AWS region, such as `us-east-1`.
* **Environment name:** A custom-defined field. The enriched virtual devices will have a reference to this environment name in NQL.

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-772d2f44b0cfd1f491fa6fdd7821997fa588e082%2FUntitled%20(10).png?alt=media" alt=""><figcaption></figcaption></figure>

## Test results panel

{% hint style="info" %}
The **Test results** panel is available only for supported connectors. Connector availability also depends on your license.
{% endhint %}

Use the **Test results** panel on the right side to run the connector with real data on demand, and inspect responses and errors. The test panel helps with faster debugging and validation during setup, and also with more reliable mappings with less trial and error.

Select the **Run test** button to call the API, and validate the credentials and check connectivity to the targeted endpoint.

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2FIDR7ZeQXfyIR8Xnb2GU1%2Fimage.png?alt=media&#x26;token=9577c81c-7213-4851-ba50-f0be7098a34f" alt=""><figcaption></figcaption></figure>

Besides basic information, such as the response status code and time, the panel also shows a sample record of the response at the bottom.

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2FI4IxueEsH60Pl3NQpjF0%2FHwklwWjD3Ud5ZXPC.png?alt=media&#x26;token=85b6123d-b40e-4085-871e-bc17232c8a15" alt="" width="316"><figcaption></figcaption></figure>

In the event of an error, the system displays the API response to aid in diagnosing the issue.

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2FKwqz92TxPeBl3QWqbKNt%2F9kAwIQi3M5gG7Y0H.png?alt=media&#x26;token=eeb306f0-d2b8-441b-a105-1bcd708a2d7c" alt="" width="309"><figcaption></figcaption></figure>
