はじめに
この記事はコンテナ勉強用として試したことまとめたものです。
ECS(Fargate)にsshログインする要件があったので実施したものをまとめました。
Fargateについて
- Fargateにssh接続はできない。
- sshdをインストールして接続する必要がある。
テンプレート取得
- 以下リンクにsshd設定をしてdockerイメージ作成をしてくれるのでgit cloneする。
- https://github.com/sawanoboly/amazonlinux-sshd
git clone https://github.com/sawanoboly/amazonlinux-sshd
イメージの作成
- 以下コマンドを実行してイメージを作成する。
- Dockerfileにsshdやawscliなどのインストール設定が書かれています。
docker build -t amazonlinux-sshd:latest .
ECRにプッシュ
- ECRにログインする。
$(aws ecr get-login --no-include-email --region ap-northeast-1)
- タグ付けをする。
docker tag amazonlinux-sshd:latest 111111111111.dkr.ecr.ap-northeast-1.amazonaws.com/test-ecr-repo:latest
- プッシュする。
docker push 111111111111.dkr.ecr.ap-northeast-1.amazonaws.com/test-ecr-repo:latest
ECSデプロイの実施
ssh接続する
- 以下のような形でログイン確認ができる。
Last failed login: Wed Dec 18 12:44:50 UTC 2019 from kd111111111111.au-net.ne.jp on ssh:notty
There was 1 failed login attempt since the last successful login.
debug1: PAM: reinitializing credentials
debug1: permanently_set_uid: 0/0
Environment:
USER=root
LOGNAME=root
HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/aws/bin
MAIL=/var/mail/root
SHELL=/bin/bash
SSH_CLIENT=100.100.100.100 56702 22
SSH_CONNECTION=100.100.100.100 56702 101.101.101.101 22
SSH_TTY=/dev/pts/0
TERM=xterm
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=/v2/credentials/1e23t01a-7a1e-3761-bc27-fa4b8473938373
AWS_EXECUTION_ENV=AWS_ECS_FARGATE
AWS_DEFAULT_REGION=ap-northeast-1
AWS_REGION=ap-northeast-1
-bash-4.2#
- ロールにS3へのアクセス権限を付与すればS3からファイルをダウンロードすることもできる。
- 既存設定だとssh切断した際にコンテナが停止されてしまうので必要に応じて設定する必要あり。
まとめ
- Fargateだとsshできないかと思っていたが、やろうと思えばできる。
- sshdをインストールする必要があるのに気付けなかった。