Skip to main content

AWS Deployment

This document provides instructions for installing the Thinkwise Platform on AWS.

The Intelligent Application Manager (IAM) database and, optionally, the Software Factory (SF) database are installed in an Amazon Relational Database Service (RDS), whereas the Universal GUI and the Indicium service tier are installed on AWS Elastic Beanstalk.

Prerequisites

Prerequisites for deploying the SF and IAM on AWS RDS are:

  • An AWS account. You can create one for free here.

Creating an AWS RDS environment

To create an AWS RDS environment for the SF and IAM databases:

  1. In the AWS Management Console, search for the "RDS" service and click on it to create a new service:

  2. Select Create database to create a new database

  3. Select Standard create and the Microsoft SQL Server engine type.

  4. Select the required SQL Server edition, for example SQL Server Express Edition, and the latest available version.

  5. Fill in the DB instance identifier and the Master username and Master password.

  6. Select the required DB instance size.

  7. Select Storage type and fill in the Allocated storage and Autoscaling options.

  8. Select Create database to create the database. This may take some time.

The RDS environment is now ready.

Deploying the Thinkwise IAM database

To deploy the Thinkwise IAM database for end products:

  1. Download the Thinkwise Installation package from the Thinkwise Community Portal https://tcp.thinkwise.app/web.

  2. Unzip the downloaded Thinkwise package.

  3. Start the Deployer GUI twdeployerGUI.exe.

  4. Select Install on the IAM product page.

  5. Fill in the server connection options. The hostname can be found under Connectivity & security - Endpoint in the AWS console. Use the credentials provided upon creating the RDS environment.

  6. Click Check.

  7. Fill in the name of the IAM database to create and click Next.

  8. Click Confirm

The IAM database will now be created in the RDS environment.

Deploying the Thinkwise SF database (optional)

The Thinkwise Software Factory development environment can also be installed on AWS, if desired.

As the Software Factory also needs an IAM database, first deploy an additional IAM database by following the steps from the previous chapter, and name this database IAM_SF.

Next, deploy the Software Factory database:

  1. Select Install on the SF (Software Factory) product page.

  2. Fill in the server connection options and click Connect. The hostname can be found under Connectivity & security - Endpoint in the AWS console. Use the credentials provided upon creating the RDS environment.

  3. Select the previously installed IAM database and click Next.

  4. Use the same host and RDS credentials for the SF database and click Connect.

  5. Click Check.

  6. Fill in the Software Factory database name and click Next.

  7. Click Confirm.

The SF database will now be created in the RDS environment.

Creating an AWS Elastic Beanstalk environment

To create an AWS Elastic Beanstalk environment to host the Thinkwise Universal GUI and Indicium service tier:

  1. In the AWS Management Console, search for the "Elastic Beanstalk" service and click on it to create a new service:

  2. Click Create a new environment.

  3. Select Web server environment and click Select.

  4. Fill in the Application name.

  5. Configure the platform using the following settings:

  6. Select Sample application and click Create environment.

  7. The Elastic Beanstalk environment is created. This may take some time.

  8. When the environment is created, go to the newly made environment and click the URL displayed below the name.

  9. This will open a new browser tab:

The Elastic Beanstalk environment is now ready.

Deploying the Thinkwise Universal GUI and Indicium service tier

For security reasons (to avoid having to enable Cross-Origin Resource Sharing), the Universal GUI and Indicium service tier will be installed in the same environment.

To install the Thinkwise Universal GUI and Indicium service tier:

  1. Download both the Thinkwise Universal GUI and the Indicium (Universal) service tier from the Thinkwise Community Portal https://tcp.thinkwise.app/web.

  2. Copy the downloaded zip files to a new folder, for example ThinkwiseElasticBeanstalk.

  3. Open Indicium.zip and edit the appsettings.json file. Fill in the Server, Database (IAM), PoolUserName and PoolPassword properties with the information from the RDS environment and save the file.

    {
    "Logging": {
    "ApplicationInsights": {
    "LogLevel": {
    "Default": "Information",
    "System": "Information",
    "Microsoft": "Warning",
    "Indicium": "Debug"
    }
    },
    "IncludeScopes": false,
    "LogLevel": {
    "Default": "Information",
    "System": "Information",
    "Microsoft": "Warning",
    "Indicium": "Debug"
    }
    },
    "MetaSourceConnection": {
    "Server": "thinkwisesql.chkw7dln.eu-central-1.rds.amazonaws.com",
    "Database": "IAM_SF",
    "PoolUserName": "admin",
    "PoolPassword": "password"
    }
    }
  4. Open Universal.zip and edit the config.json file. Fill in the serviceUrl with the information from the Elastic Beanstalk environment and save the file.

    {
    "defaultApplication": "",
    "defaultPlatform": 3,
    "loginOptionsDisabled": false,
    "serviceUrl": "https://ThinkwiseElasticBeanstalk-env.ebaadxmu.eu-central-1.elasticbeanstalk.com/indicium/iam/iam"
    }
  5. Add a deployment manifest file to the ThinkwiseElasticBeanstalk folder by creating a new text file named: aws-windows-deployment-manifest.json

  6. Add the following text to the file:

    {
    "manifestVersion": 1,
    "deployments": {
    "aspNetCoreWeb": [
    {
    "name": "indicium",
    "parameters": {
    "appBundle": "indicium.zip",
    "iisPath": "/indicium"
    }
    },
    {
    "name": "universal",
    "parameters": {
    "appBundle": "universal.zip",
    "iisPath": "/"
    },
    "scripts": {
    "postInstall": {
    "file": "SetupScripts/PostInstallSetup.ps1"
    }
    }
    }
    ]
    }
    }
  7. Create a new folder in the root with the name: SetupScripts

  8. In this folder, create a new file named PostInstallSetup.ps1 with the following content:

    $sharepath = "C:\inetpub\AspNetCoreWebApps\indicium"
    $Acl = Get-ACL $SharePath
    $AccessRule= New-Object System.Security.AccessControl.FileSystemAccessRule("IIS AppPool\DefaultAppPool","full","ContainerInherit,Objectinherit","none","Allow")
    $Acl.AddAccessRule($AccessRule)
    $Acl | Set-Acl $SharePath
  9. Create a zip file of the content of the ThinkwiseElasticBeanstalk folder to deploy to Elastic Beanstalk. (Select all files and choose Send to > Compressed (zipped) folder from the context menu.)

  10. From the AWS Elastic Beanstalk environment, select Upload and deploy

  11. Click Choose file and select the created zip file:

  12. Click Deploy and wait for the deployment to finish:

The Thinkwise Universal GUI and Indicium service tier are now up and running.