Skip to content

Instantly share code, notes, and snippets.

@takeyuweb
Last active March 5, 2026 01:50
Show Gist options
  • Select an option

  • Save takeyuweb/b94c31a7c6d1d8376d42be619f8ef235 to your computer and use it in GitHub Desktop.

Select an option

Save takeyuweb/b94c31a7c6d1d8376d42be619f8ef235 to your computer and use it in GitHub Desktop.
任意のECSタスクコンテナにSSM接続するコマンド
#!/usr/bin/env bash
set -euo pipefail
# ============================================================
# ECS Shell - fzfでインタラクティブにECSタスクコンテナへSSM接続
# ============================================================
command -v fzf >/dev/null 2>&1 || { echo "fzf が必要です: sudo apt install fzf"; exit 1; }
command -v aws >/dev/null 2>&1 || { echo "AWS CLI が必要です"; exit 1; }
pick() {
local prompt="$1"
fzf --prompt="$prompt " --height=~50% --reverse --exit-0
}
# ---------- 1. プロファイル ----------
AWS_PROFILE=$(aws configure list-profiles | pick "Profile >")
export AWS_PROFILE
echo "Profile: ${AWS_PROFILE}"
# ---------- 2. クラスタ ----------
cluster=$(
aws ecs list-clusters --query 'clusterArns[]' --output text \
| tr '\t' '\n' \
| sed 's|.*/||' \
| pick "Cluster >"
)
echo "Cluster: ${cluster}"
# ---------- 3. サービス ----------
service=$(
aws ecs list-services --cluster "$cluster" --query 'serviceArns[]' --output text \
| tr '\t' '\n' \
| sed 's|.*/||' \
| pick "Service >"
)
echo "Service: ${service}"
# ---------- 4. タスク ----------
task=$(
aws ecs list-tasks --cluster "$cluster" --service-name "$service" --query 'taskArns[]' --output text \
| tr '\t' '\n' \
| sed 's|.*/||' \
| pick "Task >"
)
echo "Task: ${task}"
# ---------- 5. コンテナ選択 & SSM接続 ----------
container=$(
aws ecs describe-tasks --cluster "$cluster" --tasks "$task" \
--query 'tasks[0].containers[].name' --output text \
| tr '\t' '\n' \
| pick "Container >"
)
echo "Container: ${container}"
echo ""
echo "=> ${cluster} / ${service} / ${task} / ${container}"
echo "SSM接続を開始します..."
echo ""
aws ecs execute-command \
--cluster "$cluster" \
--task "$task" \
--container "$container" \
--interactive \
--command "/bin/sh"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment