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

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

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

5f72c4101bc29a8a83812e376d7527ba?s=128

Ryohei Hisamitsu

November 20, 2021
Tweet

Transcript

  1. ECS Execを使ってFargateにログインしてみた 久光遼平 AWS LT会 2021.11.17

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

    前職:PHP l 現職:TypeScriptでのバックエンド開発、AWSでのインフラ構築 l マラソン、サッカーが趣味 2
  3. 今日のお話 l FargateにログインできるECS Execが今年の3月にリリースされたので使っ てみたら、すごく簡単に設定できた l 心おきなくFargateを選択して、インフラ管理の手間を省きましょう 3

  4. そもそも、なんでコンテナ使うんだっけ? l 不変の実行環境 l Aさんは動くけどBさんは動かないといったことが起きない l 本番でもそのまま動かせる l 充実したエコシステム l

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

    異常発生時のEC2インスタンスの再起動や入れ替え l Fargateのデメリット l 単価が少し高い l Windowsコンテナが使えない →10/28からサポートされるようになった l SSHによるローカルアクセスができない 5
  6. SSHできなくて困ること l トラブルシューティング l コンテナではログを標準出力に出してCloudWatchで収集するのが定石だけど、、 l 実際にトラブルがおきて、この情報も見たかった!ってことありますよね 6

  7. そこで、ECS Exec l Dockerでコンテナに入る時に使うdocker exec的なもの l ECS on EC2、Fargate両方に対応 l

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

    l CloudFormationで構築されたFargateのインフラが既に存在している (CLIを使用する場合も、同じくらい簡単に変更できます) l 流れ 1. ECSタスクロールの変更 2. サービスのEnableExecuteCommandオプションを有効にする 3. タスクの再デプロイ 4. コンテナへのログイン 8
  9. 手順1:ECSタスクロールの変更 l SSM関連のポリシーを作成して既存のロールにアタッチ 9

  10. l 1行追記して、CloudFormationをデプロイ 手順2:サービスのEnableExecuteCommandオプションを有効にする 10

  11. 手順3:タスクの再デプロイ l CI/CDの仕組みも作っていたのでCodePipelineからデプロイ 11

  12. 手順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
  13. まとめ l Fargateにログイン可能なECS Execはすごく簡単に設定できる 1. ECSタスクロールの変更 2. サービスのEnableExecuteCommandオプションを有効にする 3. タスクの再デプロイ

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