Running on AWS Fargate

๐Ÿ“˜

Important:

  • For Single ECS, use IP license.
  • For managed ECS, Unlimited License is required. For the license, please contact SearchBlox support.

To use Fargate with ECS to run a series of containerized tasks or steps, follow the below steps:

๐Ÿšง

Important:

  • We can get Image URI in two ways:
  1. Getting a Image URI on AWS Marketplace
  2. Importing Custom Docker Image into Registry

NOTE: You can follow any one of the above step and Creating a Fargate Cluster is common for both the above steps.

Getting Image URI from AWS Marketplace

  • Go to AWS Marketplace and Subcribe to SearchBlox Enterprise Search, by clicking the below link.
  • Link to Fargate version
  • Click on Continue to Subscribe.
  • Click on Continue to Configuration.
  • Click on Continue to Launch
  • Scroll down to the Container images section and copy the commands that are shown below as shown in the image.
aws ecr get-login-password  
    --region us-east-1 | docker login  
    --username AWS  
    --password-stdin xxxxxxx.dkr.ecr.us-east-1.amazonaws.com

CONTAINER_IMAGES="xxxxxx.dkr.ecr.us-east-1.amazonaws.com/searchblox/searchblox:v10.7"   

for i in $(echo $CONTAINER_IMAGES | sed "s/,/ /g"); do docker pull $i; done
  • After executing the above command the below response can be seen and copy the last line, which is the Image URI used for the next steps.
v10.7: Pulling from searchblox/searchblox
Digest: sha256:a13abcd5f970e253c8be2b7a093c215728046d2f4a0505343710a80bae39801d
Status: Image is up to date for xxxxxx.dkr.ecr.us-east-1.amazonaws.com/searchblox/searchblox:v10.7
xxxxxx.dkr.ecr.us-east-1.amazonaws.com/searchblox/searchblox:v10.7

Importing Custom Docker Image into the Registry

  • Sign in to the AWS Management Console and navigate to the Amazon Elastic Container Service console.
  • After selecting the ECS Container, select Repositories on the left pane. You will be redirected to Amazon Elastic Container Registry.
  • Select Create repository.
  • Select Private and specify the Repository name.

๐Ÿšง

Note:

Name should be same as the Docker image.

  • Leave everything as default and Create repository.
  • Once Repository is Successfully created, select View push commands.
  • Read the instructions carefully on the page below.

๐Ÿšง

Note:

Highlighted text in the above image needs to be changed as per the Docker image Tag name.

  • Execute the following rewritten commands on the Terminal. Simply copy and paste to execute.

    NOTE : Before executing the following commands make sure AWS CLI is installed on the terminal.

  1. Retrieve an authentication token and authenticate your Docker client to your registry.
    Use the AWS CLI

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 020679151690.dkr.ecr.us-east-1.amazonaws.com

  1. Build your Docker image using the following command. For information on building a Docker file from scratch see the instructions here . You can skip this step if your image is already built:

docker build -t v10.7.0.7

  1. After the build completes, tag your image so you can push the image to this repository:

docker tag v10.7.0.7:latest 020679151690.dkr.ecr.us-east-1.amazonaws.com/v10.7.0.7:latest

  1. Run the following command to push this image to your newly created AWS repository:

docker push 020679151690.dkr.ecr.us-east-1.amazonaws.com/v10.7.0.7:latest


Creating Fargate Cluster

  • Navigate to Main Menu of Amazon ECS.
  • Select Clusters to create a new cluster.
  • Select Create cluster.
  • Enter the Cluster name.
  • Under Infrastructure, Select AWS Fargate (serverless).
  • Toggle on Use Container Insights, if you want to monitor the CPU and RAM usage. Click on Create button.
  • Navigate back to Amazon ECS Main Menu and select Task definitions.
  • Under Task definitions, select Create new task definition.
  • Specify the Task definition family and choose AWS Fargate.
  • Choose Linux/86_64 and specify the CPU size and Memory (As per the docker image size).
  • Create a task role in AWS IAM. Allow full permissions for ECS and Cloud Watch.
  • To create a role in AWS, navigate to IAM service, click on left-side panel ROLES. Click on Create a Role. Select Trusted entity type as AWS Service and select usecase as lamda, click on Next button.
  • In the Add Permission section search for AmazonECSTaskExecutionRolePolicy.
  • Select the ecsTaskExecutionRole created in IAM console.

NOTE: Task size should be 4 CPU and 16GB Memory.

  • Under Container-1 setting, specify the Name and paste the Image URI copied from the repositories page. Example : xxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/<repository name>/searchblox:v10.7
  • Under Port mappings, add the port numbers (8443, 8444, 8446, 9200) and set the App protocol as HTTP.
  • Allocate Memory hard limit, Memory soft limit and the CPU cores as default, can be increased based on the requirements.
  • Storage can be increased as shown in the below image.
  • Select Create.

Running The Task

  • The below page will appear after creating task definition.
  • Click on Deploy drop down box and select Run task.
  • Choose the Existing cluster name.
  • Under Compute options, select Capacity provider strategy.
  • Capacity provider is FARGATE,
  • Set the Base to 1.
  • Set Platform revision to LATEST.
  • The number of Desired tasks to be lauched, can be changed. The Task name should be unique.
  • Under Networking, choose the default VPC ,Subnets or based on your specific requirements.
  • Select Create new security group and specify the Security group name and Security group description.
  • Under Inbound rules for security groups, select Custom as Type.
  • Add Port range (8443,8444,9200)
  • Select Source as Anywhere.
  • Public IP should be Turned on.
  • Select Create.
  • After the task is created, it will navigate to the below page.
  • The status of the task can be checked under Last status.
  • Wait until the task gets Completed.
  • If the task is completed, the Public IP can be obtained under the Network binding section.
  • To access the SearchBlox console, use the Public IP on the browser
  • https://<Public IP>:8443/console

๐Ÿšง

Important:

  • If you are not able to access the SearchBlox Console, check the security group.