サイトアイコン 協栄情報ブログ

WindowsからAmazon ECS Fargateコンテナに接続してみた

ECS Fargate Connected from Windows


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

お久しぶりです。協栄情報のきおかです。

 

今回は、Amazon ECS Fargateタイプのコンテナに、Windows PCから接続する方法をご紹介します。

尚、当記事はWindowsユーザー向けです。LinuxやMacOSについては非対応です。

 

下準備

前提

PowerShell(ps)を使います。

ブラウザは基本的に何でもいいです。私はChromeを使いました。

ちなみにECS Fargateへの接続にはECS Execを使います。詳しくはこちらのAWS公式ドキュメントをご確認ください。

 

AWS Command Line Interface(AWS CLI)をインストール

下記をpsに入力してインストールします。

msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

インストールが完了したら、下記をpsに入力して、バージョンが表示されることを確認。

aws --version

AWS公式ドキュメントはこちらから

 

 

AWS CLIの設定

こちらのAWS公式ドキュメントから、自分の環境に合うものを選んで設定してください。

私の場合は、テストのためであり一時的に必要だったため、非推奨ですがIAMユーザーで行いました。

IAMユーザーでのセットアップは、aws configureコマンドを使用します。aws configureを入力した後に出てくる4つの項目を入力すれば完了です。

aws configure

↓4つの項目(1行ずつ入力していきます)

AWS Access Key ID [None]: ${ご自身のアクセスキーを入力してください}
AWS Secret Access Key [None]: ${ご自身のシークレットアクセスキーを入力してください}
Default region name [None]: ap-northeast-1
Default output format [None]: json 

 

 

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

以下のURLにブラウザなどでアクセスしてインストールします。

https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe

インストールが完了したら、インストールができたか確認します。以下のコマンドをpsで入力します。

C:\> session-manager-plugin

下記のようなメッセージが表示されたらインストール完了です。

The Session Manager plugin is installed successfully. Use the AWS CLI to start a session.

AWS公式ドキュメントはこちらから

 

 

ECSタスクロールにIAMポリシーをアタッチ

以下をタスクロールにアタッチしてください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssmmessages:CreateControlChannel",
        "ssmmessages:CreateDataChannel",
        "ssmmessages:OpenControlChannel",
        "ssmmessages:OpenDataChannel"
      ],
      "Resource": "*"
    }
  ]
}

 

 

 

手順

ここからはすぐ終わります。それぞれ${...を入力してください}のみ編集して、それ以外はコピペで大丈夫です。

 

ECSの情報を変数に格納して入力を楽にする作業

$cl = (aws ecs list-clusters | ConvertFrom-Json).clusterArns[0]
$prefix = $cl -replace '.+cluster\/', ''
$servicearn = (aws ecs list-services --cluster $cl | ConvertFrom-Json).serviceArns[0]
$taskarn = (aws ecs list-tasks --cluster $cl | ConvertFrom-Json).taskArns[0]
$taskid = $taskarn -replace '.+task\/.+\/', ''
$CONTAINER_NAME = "${ご自身のコンテナ名を入力してください}"

以下を入力して、変数にご自身のクラスタ名等が入力されていることを確認します。

Write-Output $cl
Write-Output $prefix
Write-Output $servicearn
Write-Output $taskarn
Write-Output $taskid
Write-Output $CONTAINER_NAME

 

ECS Execの有効化

同様に、以下をpsに入力します。

aws ecs update-service `
 --region ap-northeast-1 `
 --cluster $cl `
 --service $servicearn `
 --enable-execute-command

 

ECS Execの実行

同様に、以下をpsに入力します。

aws ecs execute-command `
 --region    ap-northeast-1 `
 --cluster   $cl `
 --task      $taskarn `
 --container $CONTAINER_NAME `
 --command   "/bin/sh" `
 --interactive

 

SSMを使ってコンテナに接続

最後に以下を入力すれば接続できます。

aws ecs execute-command `
 --region ap-northeast-1 `
 --cluster $cl `
 --task $taskarn `
 --container $CONTAINER_NAME `
 --interactive `
 --command "/bin/sh"

下記メッセージが出力されれば成功です。

The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.

Starting session with SessionId: ecs-execute-command-xxxxxxxxxxxx

 

まとめ

ECS FargateのコンテナにWindows PCで接続する方法をご紹介しました。

また便利なものがあれば共有します。

ではまた。

モバイルバージョンを終了