AWS
aws-cli
ECS

AWS ECSにdockerのローカルイメージをデプロイして、SSHでログインする。

目次

  • はじめ
  • 前提条件
  • 手順
    • AWS CLIの準備
    • AWS ECSの準備
    • コンテナの中で動かしてみる
  • まとめ

前提条件

-AWSコンソールにログインできる
-dockerについて理解している

手順

  1. AWS CLIの準備
  2. AWS ECSの準備
  3. コンテナの中で動かしてみる
  4. sshで接続してみる

AWS CLIの準備

ここはターミナルでの操作になります。まずインストールですが、これはここをみれば大体わかると思います。
http://docs.aws.amazon.com/ja_jp/streams/latest/dev/kinesis-tutorial-cli-installation.html

インストールが終わったら、今度はaws configureの設定を行いましょう。

$aws configure
AWS Access Key ID [None]: <自分のAccess key ID>
AWS Secret Access Key [None]: <自分のSecret Access key>
Default region name [None]: <自分の住んでいるところから近いregion 東京なら:ap-northeast-1>
Default output format [None]: json //ここはjsonのままでと思います。

これでいろいろ下準備はおわりですね。そして次は今回使うAWS ECS(https://aws.amazon.com/jp/ecs/ )を使っていきます。

AWS ECSの準備

場所 : AWSコンソール → サービス → ECS

準備として、上記の場所にリポジトリメニューがあると思うので、そこから適当なリポジトリ名をつけます。
このリポジトリにローカルにある指定のイメージをpushしていきましょう。リポジトリ作ったならチュートリアルみたいのがでてるとは思います。

1. まずdockerにログインコマンド発行

aws ecr get-login --no-include-email --region <リージョン名>

2. 発行されたdockerログインコマンド(めちゃ長いやつ)を叩く

3. dockerのtagをつける(おそらく自由に変更可能)

docker tag test:latest 068701748150.dkr.ecr.ap-northeast-1.amazonaws.com/test:latest

4. タグをつけたイメージをプッシュ

docker push 068701748150.dkr.ecr.ap-northeast-1.amazonaws.com/test:latest

これでアップロードの過程がターミナルに出ると思います。終わったらリポジトリの準備はおわりです!

コンテナの中で動かしてみる

次はクラスター、サービス、タスクを作成して、実際にコンテナを起動していきます。

1. キーペアを生成する。

場所 : サービス→EC2→キーペア

キーペアはリージョンごとに違います。必ずAWSコンソールの右上が東京になっているか確認してください。
生成したあとは、任意のディレクトリに保管。

2. タスクを定義する。

場所 : サービス→ECS→タスク定義

タスク定義名を設定し、コンテナの追加からプッシュしたリポジトリのイメージを選択する。これによって、このタスクが実行された時、ローカルと同じ内容をECS
内のコンテナに立ち上げてくれます。

3. クラスター作成

場所 : サービス→ECS→クラスター→クラスター作成

ssh接続に必須なのはキーペアの項目です。先ほど生成したものに設定してください。
他のインスタンスタイプやVPC関連のものは適宜、必要なものに設定してください。
また原則クラスターの設定は作成した後、変更できないようなので注意したほうがいいですね。

4.クラスターの持つサービスを生成する。

場所 : サービス→ECS→クラスター→サービス(タブ)→作成

ここでは、サービスの持つタスク数、サービス名を登録し、どのタスクを実行するか選択しましょう。
タスク定義の項目は定義されているものがでてくるので、ちゃんと定義したものを選択しましょう。
 作成した後は、自動的にその設定されたタスクをサービスが実行してくれます。タスクタブにあるのがACTIVEになって入れば成功です。

これで、クラスター、サービス、タスクの設定は終了です。最後にsshについてです。

ECSにsshで接続する。

1. セキュリティグループにsshを追加

場所 : サービス→EC2→セキュリティグループ→自分のインスタンス→インバウンド→編集

sshで接続するにはそのポートを開いておかないとだめです。なので、sshの22番ポートを開いておきましょう。

2. sshで繋ぐ

ssh -v -i <キーペアのパス> ec2-user@<インスタンスのパブリックIPかパブリックDNS>

先ほど保存したキーペアデータのパスとECSインスタンスのパブリックIPかパブリックDNSを末尾につけることでsshで入れます.
ユーザーはデフォルトで用意されているec2-userがあるのでそれを使いましょう。
パブリックIPかパブリックDNSはサービス→ECS→クラスター→作ったクラスター→ECSインスタンス(タブ)→自分のインスタンスを選択することで見れます。

これで無事デプロイし、sshで接続までができました!

まとめ

EC2と違い、いきなりECSをやると混乱することもありそうです。キーペア生成の位置もEC2の方で生成するので....
なのでAWSコンソールになれるのもAWSに強くなるのには必要不可欠かもしれないですね!