この記事は公開されてから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で接続する方法をご紹介しました。
また便利なものがあれば共有します。
ではまた。