Last active
March 5, 2026 01:50
-
-
Save takeyuweb/b94c31a7c6d1d8376d42be619f8ef235 to your computer and use it in GitHub Desktop.
任意のECSタスクコンテナにSSM接続するコマンド
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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