#目次
- はじめ
- 前提条件
- 手順
- AWS CLIの準備
- AWS ECSの準備
- コンテナの中で動かしてみる
- まとめ
#前提条件
-AWSコンソールにログインできる
-dockerについて理解している
#手順
- AWS CLIの準備
- AWS ECSの準備
- コンテナの中で動かしてみる
- 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に強くなるのには必要不可欠かもしれないですね!