Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

自己紹介:久光 遼平(ひさみつ りょうへい) l 自動車業界約6年、IT業界約3年半のエンジニア l 大学:Java l 自動車会社:Matlab、C++ l 前職:PHP l 現職:TypeScriptでのバックエンド開発、AWSでのインフラ構築 l マラソン、サッカーが趣味 2

Slide 3

Slide 3 text

今日のお話 l FargateにログインできるECS Execが今年の3月にリリースされたので使っ てみたら、すごく簡単に設定できた l 心おきなくFargateを選択して、インフラ管理の手間を省きましょう 3

Slide 4

Slide 4 text

そもそも、なんでコンテナ使うんだっけ? l 不変の実行環境 l Aさんは動くけどBさんは動かないといったことが起きない l 本番でもそのまま動かせる l 充実したエコシステム l Dockerfileはレイヤを追加していく書き方 l 自分で1から書かなくて良い l 各種クラウドベンダが持つマネージドサービス l 本番環境を簡単に作れる l サーバ管理の手間を省く選択肢が存在する → AWSのFargate 4

Slide 5

Slide 5 text

AWSにおけるコンテナ実行基盤(EC2 vs Fargate) l Fargateのメリット l インフラレイヤーの管理が不要 l 脆弱性対応のためのパッチ当て、OSアップグレード l 異常発生時のEC2インスタンスの再起動や入れ替え l Fargateのデメリット l 単価が少し高い l Windowsコンテナが使えない →10/28からサポートされるようになった l SSHによるローカルアクセスができない 5

Slide 6

Slide 6 text

SSHできなくて困ること l トラブルシューティング l コンテナではログを標準出力に出してCloudWatchで収集するのが定石だけど、、 l 実際にトラブルがおきて、この情報も見たかった!ってことありますよね 6

Slide 7

Slide 7 text

そこで、ECS Exec l Dockerでコンテナに入る時に使うdocker exec的なもの l ECS on EC2、Fargate両方に対応 l Systems Managerのセッションマネージャーを使用 l 通信ポートを解放せずにアクセスできるのでセキュア、踏み台サーバ不要 l Linuxコンテナのみサポート、Management Consoleでの設定は現時点不可 7

Slide 8

Slide 8 text

実際の手順 l 前提 l AWS CLIのバージョン:v1.19.28以降 or v2.1.31以降 l セッションマネージャープラグインのインストールが必要 l CloudFormationで構築されたFargateのインフラが既に存在している (CLIを使用する場合も、同じくらい簡単に変更できます) l 流れ 1. ECSタスクロールの変更 2. サービスのEnableExecuteCommandオプションを有効にする 3. タスクの再デプロイ 4. コンテナへのログイン 8

Slide 9

Slide 9 text

手順1:ECSタスクロールの変更 l SSM関連のポリシーを作成して既存のロールにアタッチ 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

手順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

Slide 13

Slide 13 text

まとめ l Fargateにログイン可能なECS Execはすごく簡単に設定できる 1. ECSタスクロールの変更 2. サービスのEnableExecuteCommandオプションを有効にする 3. タスクの再デプロイ 4. コンテナへのログイン l 心おきなくFargateを選択して、インフラ管理の手間を省きましょう l ただし、エラーログなどはこれまで通りCloudWatchなどに出力すべき l ヘルスチェックなどでコンテナが置き換わると、トラブルシューティングが困難に なるケースがあるため l ECS Execに頼りすぎるのではなく、最後の砦という位置付け 13

Slide 14

Slide 14 text

No content