Blossom Logo Deploy your apps with Heroku-like simplicity using Blossom See Your Savings

Task Definition Formats

UFO supports writing your Task Definition in either YAML or JSON. For those who prefer writing the Task Definition in JSON, here’s an example:

.ufo/resources/task_definitions/web.json

<%#
# networkMode comment:
# bridge is the default because awsvpc requires specific instance types and private subnets.
# But bridge mode requires user to open up ports on EC2 instances. Ports: 32768-65535.
# awsvpc requires specific instance types and ECS tasks to run on private subnets.
%>
{
  "family": "<%= @family %>",
  "networkMode": "bridge", <%# bridge is default because awsvpc requires specific instance types and private subnets %>
  "containerDefinitions": [
    {
      "name": "<%= @name %>",
      "image": "<%= @image %>",
      "cpu": "<%= @cpu %>",
      <% if @memory %>
      "memory": <%= @memory %>,
      <% end %>
      <% if @memory_reservation %>
      "memoryReservation": <%= @memory_reservation %>,
      <% end %>
      <% if @container_port %>
      "portMappings": [
        {
          "containerPort": <%= @container_port %>,
          "protocol": "tcp"
        }
      ],
      <% end %>
      "command": <%= @command.to_json %>,
      <% if @environment %>
      "environment": <%= @environment.to_json %>,
      <% end %>
      <% if @secrets %>
      "secrets": <%= @secrets.to_json %>,
      <% end %>
      <% if @awslogs_group %>
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "<%= @awslogs_group %>",
          "awslogs-region": "<%= @awslogs_region || 'us-east-1' %>",
          "awslogs-stream-prefix": "<%= @awslogs_stream_prefix %>"
        }
      },
      <% end %>
      "essential": true
    }
  ]
}