ECS Execをちょっと便利にするスクリプト
稼働中のECSタスクを aws-cli で動的に取得し、稼働中のコンテナにECS Execを実行できるスクリプトのメモ。
前提
peco が必要
brew install peco
bashバージョン
Bash
#!/bin/bash
function ecs-exec() {
cluster_arn=$(aws ecs list-clusters | jq -r '.clusterArns[]' | peco --prompt 'cluster_arn > ')
if [ -z "$cluster_arn" ]; then
return
fi
service_arn=$(aws ecs list-services --cluster "$cluster_arn" | jq -r '.serviceArns[]' | peco --prompt 'service_arn > ')
if [ -z "$service_arn" ]; then
return
fi
task_arn=$(aws ecs list-tasks --cluster "$cluster_arn" --service-name "$service_arn" | jq -r '.taskArns[]' | peco --prompt 'task_arn > ')
if [ -z "$task_arn" ]; then
return
fi
container_name=$(aws ecs describe-tasks --cluster "$cluster_arn" --tasks "$task_arn" --query 'tasks[].containers[].name' | jq -r '.[]' | peco --prompt 'container_name > ')
if [ -z "$container_name" ]; then
return
fi
aws ecs execute-command \
--cluster "$cluster_arn" \
--task "$task_arn" \
--container "$container_name" \
--interactive \
--command "/bin/bash"
}
fish shellバージョン
fish
#!/usr/local/bin/fish
function ecs-exec
set cluster_arn (aws ecs list-clusters | jq -r '.clusterArns[]' | peco --prompt 'cluster_arn > ')
if [ -z "$cluster_arn" ]
return
end
set service_arn (aws ecs list-services --cluster $cluster_arn | jq -r '.serviceArns[]' | peco --prompt 'service_arn > ')
if [ -z "$service_arn" ]
return
end
set task_arn (aws ecs list-tasks --cluster $cluster_arn --service-name $service_arn | jq -r '.taskArns[]' | peco --prompt 'task_arn > ')
if [ -z "$task_arn" ]
return
end
set container_name (aws ecs describe-tasks --cluster $cluster_arn --tasks $task_arn --query 'tasks[].containers[].name' | jq -r '.[]' | peco --prompt 'container_name > ')
if [ -z "$container_name" ]
return
end
aws ecs execute-command \
--cluster $cluster_arn \
--task $task_arn \
--container $container_name \
--interactive \
--command "/bin/bash"
end