0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】ECS Execを利用してFargateに接続してみた

Last updated at Posted at 2024-04-02

はじめに

以前の記事で、ECS on Fargateを用いてWebサイトの構築を行いました。
何か問題が起きた際に既存Fargateに接続したいということがあるかと思います。
そこで、Serverworks様の記事を参考に、Fargateに接続できるまでの手順をまとめていきたいと思います。

個人環境

  • Windows10

AWS CLIのインストール

AWS CLIがインストールされていない場合は、公開されているインストール手順を参考に、AWS CLIのインストールを行います。
※特に変更などせずデフォルトのままインストールを行っています。
※AWS CLIに任意の認証情報を設定してください。

AWS CLI用のSession Managerプラグインのインストール

Session Managerプラグインがインストールされていない場合は、公開されているインストール手順を参考に、Session Managerプラグインのインストールを行います。
個人環境はWindowsなので、Windows での Session Manager プラグインのインストールを参考にして、インストールを行いました。
※画面に従い、デフォルトのままインストールを行っています。

タスク定義でタスク用ロールを付与する

タスクロール名 AWSのサービス IAMポリシー
ECS-Exec-Fargate-role Elastic Container Service Task ECS-Exec-Fargate
  • IAMポリシーを作成します。
ECS-Exec-Fargate
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "ssmmessages:CreateDataChannel",
        "ssmmessages:OpenDataChannel",
        "ssmmessages:OpenControlChannel",
        "ssmmessages:CreateControlChannel"
      ],
      "Resource": "*"
    }
  ]
}

前回の記事を参考に、タスク定義の内容を編集して試していきます。
タスクロールを事前に作成したIAMロール「ECS-Exec-Fargate-role」を指定し、他は変更しないで「タスクの作成」を行います。
20231124_AWS_Fargate_ECS Exce_000001.jpg

IAMユーザ名 IAMポリシー
ecsexec-iam-acc-key01 ECS-Exec-from-pc
  • IAMポリシーを作成します。
ECS-Exec-from-pc
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "ecs:UpdateService",
        "ecs:ExecuteCommand",
        "ecs:DescribeTasks",
        "ecs:DescribeServices"
      ],
      "Resource": "*"
    }
  ]
}
  • タスクとサービスに対する ECS Exec をオンにする
aws ecs update-service --cluster <クラスター名> --service <サービス名> --enable-execute-command
  • ECS Exec機能がオンとなっていることを確認する
aws ecs describe-services --cluster <クラスター名> --service <サービス名> | Select-String -Pattern "enableExecuteCommand"
  • ECS ExceでFargateに接続する
aws ecs execute-command --cluster <クラスター名> --task <タスクID> --container <コンテナ名> --interactive --command "/bin/sh"

【番外編】ECS Exce接続ログを有効化する

ECS Exceで接続した際のログをCloudWatchロググループやS3に保存することができます。
今回は事前に作成したCloudWatchロググループにログを保存するように設定を行います。

ECS Exce接続ログの有効化

ECS Exce接続ログの有効化を行います。

aws ecs update-cluster --cluster <クラスター名> --configuration executeCommandConfiguration="{ logging=OVERRIDE, logConfiguration={ cloudWatchLogGroupName=<CloudWatchロググループ名> } }

接続ログが有効化されていることを確認

cloudWatchLogGroupNameにECS Exce接続ログ有効化の際に指定したCloudWatchロググループの名前が記載されていることを確認する。

aws ecs describe-clusters --clusters <クラスター名>  --include CONFIGURATIONS

ECS Exceログの有効化を行う際は、ECSタスクロールやIAMユーザに適切な権限がついていることを確認したうえで作業します。

ECS-Exec-Fargate-roleに追加する権限
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "logs:DescribeLogStreams",
            "Resource": "arn:aws:logs:*:<AWSアカウントID>:log-group:*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:<AWSアカウントID>:log-group:*:log-stream:*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "logs:DescribeLogGroups",
            "Resource": "*"
        }
    ]
}
ecsexec-iam-acc-key01に追加する権限
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ecs:UpdateCluster",
                "ecs:DescribeClusters"
            ],
            "Resource": "arn:aws:ecs:*:<AWSアカウントID>:cluster/*"
        }
    ]
}

さいごに

コンテナ内にSSHなどをインストールせずに、コンテナに接続することができました。
何か問題が発生した際にECS Execでコンテナに接続して色々とできそうですね。

参考にしたURL

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?