LoginSignup
17

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-08-01

目次

  • はじめ
  • 前提条件
  • 手順
    • 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に強くなるのには必要不可欠かもしれないですね!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17