LoginSignup
0
0

More than 1 year has passed since last update.

ECSでexecuteコマンドを使えるようにしてコンテナの中に入る方法

Posted at

docker exec -it [コンテナID] /bin/bashみたいにECSでもデバッグしたい!

  1. aws cliの導入
    下を参照してください。
    https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

  2. IAMロールの準備

  • SSMの権限を付与したIAMロールを作成 付与 ECS タスクロールに付与(タスク実行ロールではありません。)
.json
{
   "Version": "2012-10-17",
   "Statement": [
       {
       "Effect": "Allow",
       "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
       ],
      "Resource": "*"
      }
   ]
}
  1. enableExecuteCommandをAWS CLIで有効化する。
  • AWSCLIで有効化
aws ecs update-service --cluster [クラスタ名] --service [サービス名] --enable-execute-command | grep enableExecuteCommand
  1. amazon-ecs-exec-checkerを利用して有効化されているか確認
  • githubからAWSの人?が作ったシェルをクローンしてくる
    amazon-ecs-exec-checker github

  • コマンド投入
    ./check-ecs-exec.sh [クラスタ名] [タスクID]

  • 実行結果

------------------------------------------------------------
Prerequisites for check-ecs-exec.sh v0.7
-------------------------------------------------------------
  jq      | OK (/usr/bin/jq)
  AWS CLI | OK (/usr/local/bin/aws)

-------------------------------------------------------------
Prerequisites for the AWS CLI to use ECS Exec
-------------------------------------------------------------
  AWS CLI Version        | OK ()
  Session Manager Plugin | OK ()

-------------------------------------------------------------
Checks on ECS task and other resources
-------------------------------------------------------------
Region : 
Cluster: 
Task   : 
-------------------------------------------------------------
  Cluster Configuration  |
     KMS Key       : Not Configured
     Audit Logging : DEFAULT
     S3 Bucket Name: Not Configured
     CW Log Group  : Not Configured
  Can I ExecuteCommand?  | 
     ecs:ExecuteCommand: allowed
     ssm:StartSession denied?: allowed
  Task Status            | RUNNING #RUNになってることを確認する。
  Launch Type            | Fargate
  Platform Version       | 1.4.0
  Exec Enabled for Task  | OK #OKになっていることを確認する
  Container-Level Checks | 
    ----------
      Managed Agent Status
    ----------
         1. RUNNING for "--------"
    ----------
      Init Process Enabled ()
    ----------
         1. Disabled - ""
    ----------
      Read-Only Root Filesystem ()
    ----------
         1. Disabled - ""
  Task Role Permissions  | 
     ssmmessages:CreateControlChannel: allowed #allowedになっていることを確認する。
     ssmmessages:CreateDataChannel: allowed #allowedになっていることを確認する。
     ssmmessages:OpenControlChannel: allowed #allowedになっていることを確認する。
     ssmmessages:OpenDataChannel: allowed #allowedになっていることを確認する。
  VPC Endpoints          | 
    Found existing endpoints for 
      - 
    SSM PrivateLink "" 
       1. container ""
       - AWS_ACCESS_KEY: not defined
       - AWS_ACCESS_KEY_ID: not defined
       - AWS_SECRET_ACCESS_KEY: not defined
  1. トラブルシュート
  • Exec Enable for TaskがOKにならない。
    • タスクを作り直してください。そうしないと有効になりません。
    • 矯正デプロイではうまくいきませんでした。なぜでしょう?
  1. 最後に
  • AWSはあまりGUIのことを考えてないでしょう。腹立ちます。
  • 普通に考えてコンテナの中に入りたいって思うでしょ。
  • GUIからできるようにしてくれよ。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0