AWS ECS
Interact with Elastic Container Service, executing one-off sessions into ECS tasks/containers.
Prerequisites
To get the most out of this guide, you will need to:
- Either create an account in our managed instance or deploy your own hoop.dev instance
- You must be your account administrator to perform the following commands
Overview
This connection uses a wrapper script available in the hoophq/hoopdev
image called ecs-exec.sh
. This script requires the following permissions to work:
ecs:ListTasks
ecs:DescribeTasks
ecs:ExecuteCommand
It’s important to configure the ECS tasks before trying this feature. Please refer to the AWS documentation first
Connection Configuration
Name | Type | Description |
---|---|---|
CLUSTER_NAME | env-var | The name or arn of the ECS Cluster |
SERVICE_NAME | env-var | The name of the service on ECS |
CONTAINER | env-var | The name of the container defaults to the first one. |
AWS_ACCESS_KEY_ID | env-var | The access key credential |
AWS_SECRET_ACCESS_KEY | env-var | The secret key credential |
AWS_DEFAULT_REGION | env-var | The AWS region |
Connection Configuration (Assume Role)
Name | Type | Value | Description |
---|---|---|---|
CLUSTER_NAME | env-var | - | The name or arn of the ECS Cluster |
SERVICE_NAME | env-var | - | The name of the service on ECS |
CONTAINER | env-var | - | The name of the container defaults to the first one. |
ECS_AGENT_URI | env-var | system.agent.envs | The access key credential |
AWS_EXECUTION_ENV | env-var | system.agent.envs | ECS launch type |
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI | env-var | system.agent.envs | full HTTP URL endpoint when making a request for credentials |
ECS_CONTAINER_METADATA_URI_V4 | env-var | system.agent.envs | This path returns metadata for the container. |
AWS_DEFAULT_REGION | env-var | system.agent.envs | The default AWS region |
The value system.agent.envs
will expose the upstream environment variable from the agent to the connection, allowing the wrapper script to use the IAM task role.
AWS ECS - Interactive Sessions
The AWS Elastic Container Service allows users to connect to tasks and start interactive sessions. These commands can be mapped to Hoop to obtain interactive sessions by allocating a pseudo TTY.
Before attempting to use this feature, it’s essential to configure the ECS tasks. Please refer to the AWS documentation for guidance.
Connection Command
How to Use
Start an interactive session.
AWS ECS - Execute one-off commands
Connection Command
How to Use
Now it’s possible to execute the Ruby script straight from Hoop.dev
The --pipe
option necessitates the availability of the base64
command in the image. This command decodes the input content, preventing leakage of shell content such as single or double quotes. This helps address a limitation of the aws ecs execute-command
.
It’s possible to pipe any command.
Easily call the scripts.