Here are our updates for August 2022. This month, our team has been working on additional functionality to our AWS integration, new tutorials, multi-node parallelization, and improvements to onboarding for new users.  

AWS Integration: Automatically Cleaning up AWS Resources

Great news for our AWS users: if you create AWS resources through us, you can functionally run ephemeral environments without breaking the bank. Instead of having to manually manage AWS resources by going into AWS console or using AWS CLI for EC2 to terminate the instance and for ECS stop the task, our new feature will automatically take care of that for you. This keeps the cost low as AWS VMs (what are VMs?) will not be up for a long time. Want to know more about how it works? Check out our docs and read on to find out.

The example listed in our docs above uses Cal.com, an open source scheduling tool. With Cal.com, you can create an account, log in, and schedule a meeting with other people. Using the example, we host Cal.com on AWS and we run a new EC2 instance and a Cal.com task with AWS ECS.

The Layerfile is as follows:

#Use an Ubuntu 18.04 base image
FROM vm/ubuntu:18.04
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN apt-get update && apt install unzip
RUN unzip awscliv2.zip
RUN ./aws/install
#The following line specifies an EC2 user data script that launches your container instance into a non-default 'calcom' cluster
#We save the script into my_script.txt for later use
RUN echo -e '#!/bin/bash\necho "ECS_CLUSTER=calcom" >> /etc/ecs/ecs.config' >> my_script.txt
AWS link --region='us-east-1'
#Run an ECS optimized AMI and save the instance identifier into instance_id.txt for later use
RUN aws ec2 run-instances --image-id ami-040d909ea4e56f8f3 --instance-type t2.micro --iam-instance-profile Name="ecsInstanceRole" \
--user-data file://my_script.txt --output text --query "Instances[*].InstanceId" > instance_id.txt
#Wait for the instance to come up...
RUN aws ec2 wait instance-status-ok --instance-ids $(cat instance_id.txt)
#Start the Cal.com pod with your own task configuration...
#Note that it is required to set output format to text otherwise it might cause the instruction to hang
RUN aws ecs run-task --cluster calcom --task-definition ECSCalComDemoTask:1 --output text
#Done! You can now access the Cal.com scheduler through the public IPv4 address of the EC2 instance
#If you cannot connect, make sure you set the correct security group/inbound rules

Amazon ECS container agent configuration: by default, if an EC2 instance is launched, it will launch into the default cluster. ECS_CLUSTER=calcom specifies that the cluster that the agent should check into is calcom. More information on container agent configuration can be found in the AWS documentation.

User specification: the AWS link command sets up the user. The default user permissions are limited, but further permissions can be specified.

Running instances: there are a number of options that can be specified when running instances. [--image-id] is the image that the VM will run, which in our case is the ECS optimized AMI. [--instance-type] is how large and powerful you want the VM to be. [--iam-instance-profile] allows the VM to have access to the resources (more information on ECS container instance IAM roles can be found here). [--user-data] references the txt file that is created by the Layerfile several lines above. The full list of options can be found in the AWS documentation. Once the instance is status okay, a task can be run in it.

This is equivalent to running tasks on AWS as the parameters of the tasks can be set. Using this, users can specify and run their own task definitions, and use environment variables to have container overwrites. After snapshots are deleted, cleanups run automatically if you create your AWS resources with our AWS commands with our AWS instructions. This is achieved by consuming the AWS CLI output and keeping track of the unique identifiers of those AWS resources.

The AWS integration was part of webapp.io's Q2/22 launch week, keep checking in as we continue to improve the integration.

New Docs Videos

To make using webapp.io easier, our team has added two new tutorials to our docs.

First, the Cypress docs section now includes a tutorial on how to set up Cypress tests:

YouTube video on setting up Cypress tests in webapp.io

And a tutorial on how to set up secrets in webapp.io can be found on the webapp.io YouTube channel:

YouTube video on setting up secrets in webapp.io

General Improvements

  • Onboarding automation: now, when users get started they are offered an automatic 14-day free trial of the team tier
  • Stability improvements to our multi-node parallelization, to ensure that jobs are assigned to the appropriate node smoothly
  • Added to Firecracker homepage
  • Removed "excessive pending" banner on free tier when run not pending
  • General docs fixes

Coming Up

Stay tuned to hear about our Q3 launch week, details to come soon. Want to check these changes out for yourself? Give us a try for free here!