> ## Documentation Index
> Fetch the complete documentation index at: https://docs.maia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Streaming runner installation using a CloudFormation quick-create link

export const maia = "Maia";

export const s_runner = "Streaming runner";

export const RunnerMetadata = ({runnerType, platforms = []}) => {
  return <div style={{
    background: 'var(--colors-background-light, #f9fafb)',
    border: '1px solid var(--colors-border-default, #e5e7eb)',
    borderRadius: '12px',
    padding: '20px 28px',
    marginBottom: '28px',
    boxShadow: '0 1px 4px rgba(0,0,0,0.10)'
  }}>
      <table style={{
    width: '100%',
    borderCollapse: 'collapse'
  }}>
        <tbody>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle',
    width: '180px'
  }}>Runner type</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{runnerType}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Runner platform</td>
            <td style={{
    verticalAlign: 'middle'
  }}>
              <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '8px'
  }}>
                {platforms.map((platform, i) => <span key={i} style={{
    background: '#dcfce7',
    color: '#15803d',
    border: '1px solid #bbf7d0',
    borderRadius: '9999px',
    padding: '3px 12px',
    fontSize: '0.85rem',
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
                    {platform} ✅
                  </span>)}
              </div>
            </td>
          </tr>
        </tbody>
      </table>
    </div>;
};

<RunnerMetadata runnerType="Streaming" platforms={["AWS"]} />

This article details how to install a {s_runner} on Amazon ECS Fargate using a CloudFormation template quick-create link. The quick-create CloudFormation link will pre-fill values into the template for you.

Alternatively, you can download the CloudFormation template and edit as needed.

***

## Prerequisites

To get started, you'll need:

* A [{maia}](https://app.matillion.com/hub/) account. To register, read [Registration](/docs/administration/registration).
* Access to AWS, with the permissions to create a stack on a billable account. You may need an administrator from your organization to either give access or perform this process with you.
* Permissions to provision cloud resources in the AWS environment that the source database is running in.
* An IAM role that has suitable permissions for {maia}. If you're using the same IAM role, you might need to add `cloudformation.amazonaws.com` to the **Service** section in the **Trust Relationship** section of your IAM role to allow the role to work with the ECS service. An example trusted entity can be found below. Read [Third-party environment roles and permissions](/docs/security/third-party-roles-and-permissions) for more information about creating IAM roles.

You'll also need to allow the IP addresses listed in [Network access and IP AllowList requirements](/docs/security/network-access-and-ip-allowlist-requirements#agents-and-git-repositories).

Example trusted entity:

```json theme={null}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudformation.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

To learn more about the trust relationship IAM policies, read [trust policies](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/) in the AWS documentation.

We recommend that you read the documentation and prerequisites before beginning this process. You may require input from your organization's cloud administrator for access and permissions.

For detailed AWS permission information about deploying an agent in {maia}, read [Agent deployment permissions](/docs/security/third-party-roles-and-permissions#agent-deployment-permissions).

***

## Created resources

This template will create the following resources in your AWS account:

* ECS task definition.
* ECS Fargate cluster.
* CloudWatch Log group.
* An entry in AWS Secrets Manager.
* IAM Roles with permissions for the following:
  * Task Roles to your ECS, EC2, and Secrets Manager.
  * Task Execution Roles to pull from ECR Public repositories.

***

## Visualization

<img src="https://mintcdn.com/matillion/I06T4ygCZYYqgb0_/images/agent-installation-cloudformation-quick-create/agent-installation-cloudformation-quick-create-01.png?fit=max&auto=format&n=I06T4ygCZYYqgb0_&q=85&s=906aa0b63972a8b66f22e003ca8cf80e" alt="CloudFormation visualization" width="784" height="884" data-path="images/agent-installation-cloudformation-quick-create/agent-installation-cloudformation-quick-create-01.png" />

***

## Using the CloudFormation link

1. If you haven't already created the agent in {maia}, follow the procedure in [Create a {s_runner}](/docs/streaming/create-streaming-agent).

2. On the **Runner details** page, note the following **Credentials**: `client_id` and `client secret`.

3. Ensure you are logged in to your AWS account before proceeding.

4. Under **Install using CloudFormation** on the **Runner details** screen, click **Launch**. This will launch the CloudFormation stack in the AWS Console with pre-filled values for most parameters.

5. Complete the remaining parameters as follows:

   * **Stack name:** An arbitrary name given to the created stack. This must be unique.
   * **OAuth Client ID:** Copy the `client_id` from the **Runner details** page.
   * **OAuth Client Secret:** Copy the `client_secret` from the **Runner details** page.
   * **VPC Id:** Select the ID of an existing VPC. For more information, read [VPCs](https://console.aws.amazon.com/vpc/home?#vpcs).
   * **VPC Subnet Ids:** Select at least one VPC Subnet to use.
   * **Database VPC Security Groups:** Select at least one security group associated with your databases.

6. Ensure that the **CPU** and **RAM** allocation is appropriate for the workloads your Streaming pipelines will manage. Read [Sizing {s_runner}s](/docs/streaming/sizing-streaming-agents) for guidance.

7. If you intend to use MySQL as a streaming data source, you will need to complete additional configuration under the **Optional MySQL Support** section. Read [Configure the {s_runner} for MySQL](/docs/streaming/mysql-configure-agent) for details.

8. Click **Create stack**.

Once your stack is ready, this means the ECS service has now successfully deployed with 1 ECS task.
