##まずはAWSのアカウントを作成
これは難なく完了。次AWS CLIのインストール。
とにかくよくわからないからページをスクロールして見つけたコマンドを実行。
aws ec2 describe-instances
当然のごとく動かない。のでもう少しページを調べてみます。
Mac および Linux
Python 2.6.5 以降が必要です。
##pip を使ってインストールします。
見逃してました。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
sudo pip install awscli --upgrade --ignore-installed six
aws configure
そしたらこんなんが順番に出てくる
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
でIDとかなんやらを入れろってなってるけど、アクセスキー?シークレットアクセスキー?ってなったので、ぐぐってみる。そして見つけました。
参考:AWSアクセスキーIDとシークレットアクセスキーを取得する方法
どうやらログインして取得する必要があるようです。
#####各項目の意味合い
- AWS Access Key ID [None]: "アクセスキーID"をコピー
- AWS Secret Access Key [None]: "シークレットアクセスキー"をコピー
- Default region name [None]: "ap-northeast-1"を入力
- (これがTokyoリージョンらしいので日本国内ならこれ)
- Default output format [None]: "text","JSON","table"のどれかを指定(とりあえずtextで指定しました。)
設定の確認
aws configure list
最新版のインストーラーをダウンロードし再インストールする。
sudo pip install -U awscli
「AWS ECS」を使ってファイルをAWSにアップする
Dockerのダウンロードも忘れずに
Dokerの公式サイト
アカウント登録 → ダウンロード
※WiFi環境でやらないと時間がかかる。テザリングだと早くて1時間ぐらい
IMS 権限の設定
プログラムからのアクセスにチェックをしないとCLIでアクセスできない
aws ecr get-login --no-include-email --region us-east-2
を打つとコマンドラインに文字列がかえってくる
その文字を「amazonaws.com」までをコピーして、貼り付け→Enter
Login Succsesstedが返って来ればOK
pushできる準備が整う
下記の1から順番に実行
1. docker build -t php .
2. docker tag php:latest 510930968738.dkr.ecr.us-east-2.amazonaws.com/php:latest
3. docker push 510930968738.dkr.ecr.us-east-2.amazonaws.com/php:latest
全部実行したらAWSのリポジトリにファイルがアップロードされる
###クラスターとタスクの定義をします
ECSの機能を使ってEC2のサーバーを立ち上げる時に
クラスターの設定
EC2 Linax ネットワーキングをせんたく
※ネットワーキングのみだとルート権限のあるものを制御できない
→自分でEC2を管理しなくてもいい
※定義できないエラーが出たら先にタスクを作成する
タスクの作成
タスクを作成してからクラスターを定義したらできました。
ちなみにサーバーやクラスターの管理をしないでコンテナを実行できる仕組み「ファーゲート」もある
EC2 インスタンスタイプはその時に応じて、今回の場合そんなに大きなものはいらないので「t2micro」でOK。
キーペアは重要
「新しいキーペアは EC2 コンソールで作成できます」から遷移して作成
タスクの定義をします。
ECSはEC2を自動的に立ち上げてコンテナを入れる
sshしたい場合は、接続を押して「例」にかいてあるところのコードを貼り付けて実行します。
けどエラーになる場合があるののでsshのポートの設定を「マイIP」に変更してください。
sshのportが空いてないのsshのポートの設定を「マイIP」にする
sshできない!
ファーゲートで設定で行なった場合は中のログとか全部みれないのが欠点。
サーバーレスの開発を行なっている場合はgoodです。
ログを見たい場合は、自分でログをはくプログラムを書かないといけない。
インスタンスの消し方
ESCから立ち上げたEC2は削除できない
ECSの考え方は指定したインスタンスは常に立ち上げるからインスタンスを消してもダメ
クラスターを消す必要がある
クラスターの操作画面から「クラスターの削除」を選択すると削除できます。
※「ECS CLI」 ECS専用のCLIもある
##まとめ
かなり簡単に全く同じ開発環境がいくつも作れて便利ではないかと感じました。
AWSの管理画面の操作がそれなりに複雑な気もするのではじめのうちは何度も作ってはぶっ壊すかもしれませんがこのような開発環境の構築の仕方もあるのだと勉強になりました。