Cloud Resources

How to add and use cloud resources
Release can spin up complicated environments when you need them, for development, testing, or production. But sometimes pieces of an application are created and managed externally. Cloud-native resources like AWS ECS Tasks or Lambdas are good examples.
You can now add these external resources to Release by adding a couple of tags (described below). Once tagged, these cloud resources will show up on the Environment page below your Instances, with buttons to interact with that resource.\
Cloud Resources like this ECS Task are listed on the environment page in a section below Instances. ECS Tasks support Terminal and Logs, which you launch by clicking the corresponding button.

Initial Support for AWS ECS Tasks

The first supported cloud resources are AWS ECS Tasks. Let us know what cloud resources you’d like to see supported!
Once tagged, ECS Tasks currently support a couple of actions: Terminal and Logs (note the Terminal and Logs buttons in the previous screenshot).
You can launch a web terminal into the task containers by clicking the Terminal button:
A web terminal for an ECS cloud resource
And you can view container logs by clicking the Logs button:
Logs for an ECS cloud resource

How to add Cloud Resources

You can add Cloud Resources to your Release environments by adding a couple of tags/labels to that resource in AWS or GCP.
Two tags with values are required:
Tag Key
Tag Value
Location in UI
Env variable
(the app name)
Top of the environment page. In the screenshot below, the app name is example-voting-app
(the environment handle)
In the screenshot below, the environment handle is ted3bff.
Follow the AWS Documentation on tagging ECS resources to add these tags.

Terraform Tagging Example

Terraform can use environment variables if they are prefixed with TF_VAR_ so you can use a mapping field in the environment variables page like this example:
And then you can add these tags to the ECS task or Lambda function as shown in this next example:
variable "release_app_name" {
type = string
description = "The name of the appliation tag"
variable "release_env_id" {
type = string
description = "The name of the environment tag"
resource "aws_ecs_task_definition" "service" {
family = "service"
container_definitions = jsonencode([ ... ])
tags = {
"" = var.release_app_name
"" = var.release_env_id

How to configure the logs

In order to send your ECS task logs to the Release log viewer, you must configure your ECS tasks to use the awslogs log driver. Follow these AWS docs to configure your containers to use the awslogs driver:
The logDriver must be awslogs, but you may choose your own group and stream-prefix.
Your container definitions section of your Task Definition should have a logConfiguration similar to this when you’re done:
"containerDefinitions": [
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "firelens-container",
"awslogs-region": "us-west-2",
"awslogs-create-group": "true",
"awslogs-stream-prefix": "firelens"

How to configure the terminal

The following requirements must be met before being able to terminal into any ECS Task:
  • ECS Exec needs to be enabled for the Task. (more info)
  • ECS Exec IAM permissions need to be added for the Task. (more info)
For more details, check out the AWS documentation on enabling ECS Exec and the best practices around it:
After configuring the ECS Task, use the Cloud Resource refresh button and you should be able to choose the container to terminal into. Note that Release will gray out the terminal button for containers that are not running or Tasks that do not have ECS Exec enabled.