Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ECS Execを使ってFargateにログインしてみた

ECS Execを使ってFargateにログインしてみた

Ryohei Hisamitsu

November 20, 2021
Tweet

More Decks by Ryohei Hisamitsu

Other Decks in Technology

Transcript

  1. 自己紹介:久光 遼平(ひさみつ りょうへい) l 自動車業界約6年、IT業界約3年半のエンジニア l 大学:Java l 自動車会社:Matlab、C++ l

    前職:PHP l 現職:TypeScriptでのバックエンド開発、AWSでのインフラ構築 l マラソン、サッカーが趣味 2
  2. そもそも、なんでコンテナ使うんだっけ? l 不変の実行環境 l Aさんは動くけどBさんは動かないといったことが起きない l 本番でもそのまま動かせる l 充実したエコシステム l

    Dockerfileはレイヤを追加していく書き方 l 自分で1から書かなくて良い l 各種クラウドベンダが持つマネージドサービス l 本番環境を簡単に作れる l サーバ管理の手間を省く選択肢が存在する → AWSのFargate 4
  3. AWSにおけるコンテナ実行基盤(EC2 vs Fargate) l Fargateのメリット l インフラレイヤーの管理が不要 l 脆弱性対応のためのパッチ当て、OSアップグレード l

    異常発生時のEC2インスタンスの再起動や入れ替え l Fargateのデメリット l 単価が少し高い l Windowsコンテナが使えない →10/28からサポートされるようになった l SSHによるローカルアクセスができない 5
  4. そこで、ECS Exec l Dockerでコンテナに入る時に使うdocker exec的なもの l ECS on EC2、Fargate両方に対応 l

    Systems Managerのセッションマネージャーを使用 l 通信ポートを解放せずにアクセスできるのでセキュア、踏み台サーバ不要 l Linuxコンテナのみサポート、Management Consoleでの設定は現時点不可 7
  5. 実際の手順 l 前提 l AWS CLIのバージョン:v1.19.28以降 or v2.1.31以降 l セッションマネージャープラグインのインストールが必要

    l CloudFormationで構築されたFargateのインフラが既に存在している (CLIを使用する場合も、同じくらい簡単に変更できます) l 流れ 1. ECSタスクロールの変更 2. サービスのEnableExecuteCommandオプションを有効にする 3. タスクの再デプロイ 4. コンテナへのログイン 8
  6. 手順4:コンテナへのログイン l 以下コマンドを実行 l 成功すると、コンテナ内でコマンドを実行できる 12 BXT FDT FYFDVUFDPNNBOEʘ DMVTUFSIJTBUFTUDMVTUFSʘ

    UBTLYYYYYYYYYYYYYYYYYYYYYYY ʘ DPOUBJOFSIJTBUFTUDPOUBJOFSBQQʘ JOUFSBDUJWFʘ DPNNBOECJOTI 5IF4FTTJPO.BOBHFSQMVHJOXBTJOTUBMMFETVDDFTTGVMMZ6TFUIF"84$-*UPTUBSUBTFTTJPO 4UBSUJOHTFTTJPOXJUI4FTTJPO*EFDTFYFDVUFDPNNBOEYYYYYYYYYYY MT %PDLFSGJMF CVJMETQFDZNM JOGSB OPEF@NPEVMFT QBDLBHFMPDLKTPO QBDLBHFKTPO TFSWFSKT
  7. まとめ l Fargateにログイン可能なECS Execはすごく簡単に設定できる 1. ECSタスクロールの変更 2. サービスのEnableExecuteCommandオプションを有効にする 3. タスクの再デプロイ

    4. コンテナへのログイン l 心おきなくFargateを選択して、インフラ管理の手間を省きましょう l ただし、エラーログなどはこれまで通りCloudWatchなどに出力すべき l ヘルスチェックなどでコンテナが置き換わると、トラブルシューティングが困難に なるケースがあるため l ECS Execに頼りすぎるのではなく、最後の砦という位置付け 13