開発前の状態
- 今後の仕事でAWSを触ると聞き,知識ゼロなのでヤバみを感じた
- とりあえず本を買って勉強して雰囲気は掴んだ気になっている
- GUIぽちぽちすればやりたいことはできると感じたが,さらなるステップアップをするためにはどうしたらいいか悩んだ
- これまでの仕事でAnsibleなどによる環境構築自動化や,dockerなどのコンテナ技術のありがたみは非常に実感していた
- なので,
- 環境設定をすべて自動化し
- EC2上での作業を予めDockerImage化しておいてデプロイところまで頑張ってみたいと思った
コード
やっていること
- VPCからECSのサービス開始までを全自動化
- VPC,Subnetなどを依存関係に注意して作成していく
- EC2としてはECS Optimized AMIを使用
- ecs-agentが動いている
- 最終的には,以下のような構造になる
- VPC
- PublicSubnet
- WebServer(Wordpress)
- PrivateSubnet
- DB Server(MariaDB)
- PublicSubnet
- VPC
- 用がすんだらEnterキーを押してすべてKill
- 課金の元になるEC2やNAT,EIP含めすべて削除
(途中でなにかしらの異常でコケたら手動で消す必要がある)
- 課金の元になるEC2やNAT,EIP含めすべて削除
結果や感想
- PublicIpにブラウザからアクセス,WordpressとDBの接続を完了できた.
- インフラをプログラムしてる感じが新鮮だった
- boto3では依存に気を使って削除する必要があるため,各種リソースの依存関係をデバグの過程で体感できた.
- 特にECS with boto3については情報が見つかりにくかったので,client APIやAWSの各種ドキュメントの調査をする機会が得られた
- この過程でECSの用語(クラスター,タスク,サービス)をつかめてきた
今後やりたいこと
- 環境変数に含まれるセンシティブな情報はS3から取得するようにする
- ECSタスク起動イベントをひろって,LAMBDAからNATを停止する処理を入れる
- メトリクスについて理解を深める
- SMMエージェントを使ってみる
- CloudFormationでやってみる