今回はAWS CLIデECS Execを利用して、ECSのコンテナに入っていきます
準備
AWS CLIをインストール
準備としてAWS CLIをインストールしていきます。
すでにインストールされている
すでにインストールされているか確認する方法として、下記を実施してみてください
$ which aws
/usr/local/bin/aws
awsコマンドが実行できれば、こちらのステップは飛ばしていただいて大丈夫です。
awsコマンドが実行できない場合は、下記をみてインストールをしてみてください
Session Manager(SSM) をインストールする
Session Manager はフルマネージド型 AWS Systems Manager 機能であり、インタラクティブなワンクリックブラウザベースのシェルや AWS Command Line Interface (AWS CLI) を介して Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、オンプレミスインスタンス、および仮想マシン (VM) を管理できます。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager.html
ということでAWS CLIを実行するには、Session Manager(SSM)が必要になります
そのため、SSMをインストールしていきましょう
インストールの詳細手順は下記の記事にまとめているので、ぜひ試してみてください
AWS CLIでスイッチロールする
スイッチロールをしないと、使用したいAWSサービスにアクセスできないこともあるでしょう。
その場合はAWS CLIでスイッチロール必要があります
AWS CLIでスイッチルールする方法は下記にまとめていますので、試してみてください
AWS Execを利用して、ECSのコンテナに入る
ようやく本題です。
ECSのコンテナに入る方法を記述していきます
起動中のタスクがECS Execが有効か確認
まず、特定サービスにタスク一覧表示します。
aws ecs list-tasks --cluster {クラスター名} --service-name {サービス名}
実行すると以下のような表示になるので、{ここにランダムの文字列のタスク名が表示される}
のところに表示されるタスク名をコピーしておきます。
{
"taskArns": [
"arn:aws:ecs:ap-northeast-1:********:task/********/{ここにランダムの文字列のタスク名が表示される}"
]
}
次にECS Execが有効になっているかどうかを確認します。
aws ecs describe-tasks --cluster {クラスター名} --tasks {コピーしたタスク名} | grep enableExecuteCommand
# 以下の出力になればOK
"enableExecuteCommand": true
これでECS Execを使う準備は完了です。
ECSコンテナにアクセスする
以下コマンドでECSコンテナにアクセスします。
$ aws ecs execute-command --cluster {クラスター名} --task {コピーしたタスク名} --container {コンテナ名} --interactive --command "/bin/bash"
# 以下の出力になればOK
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.
Starting session with SessionId: ecs-execute-command-{ランダムな文字列}
root@ef13155aad7f4a729c7c052ce7ffcb04-1165615347:/app#
この状態でphp artisan
コマンド等のコマンドが実行できるようになります。
クラスター名の確認
AWS のECS画面を開くとクラスターの一覧が表示されます
タスク名の確認
対象のクラスターの詳細を開いていくと、タスクが表示されています
接続したい対象のタスクをメモして、コマンドで利用しましょう
タスクはクラスターとは違い、値が変わるので気をつけてください
ECSコンテナから出る
ここもローカルと同じく、exit
を実行すればコンテナから出ることができます。
コメント