AWS CLIでECSのコンテナに入る

AWS CLI でECSコンテナに入る

今回は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を実行すればコンテナから出ることができます。

参考

zoo200's MemoMemo
ECS ExecでFargateのコンテナの中に入ってデバッグする (execute-command) AWS CLI版 ECS Execを使用して、ローカルPCからECS Fargateのコンテナの中に入ることができます。 ただ、残念ながらAWSコンソールでは、ECS Exec を有効にすることはできません。 以...
ぎゅう
WEBエンジニア
渋谷でWEBエンジニアとして働く。
LaravelとVue.jsをよく取り扱い、誰でも仕様が伝わるコードを書くことを得意とする。
先輩だろうがプルリクにコメントをして、リファクタしまくる仕様伝わるコード書くマン
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる