動機
たまに動かす画像処理サーバを建てる必要があり
- 瞬間的にそこそこCPU欲しい
- 継続的には動かさない
- autoscaleしたい
- メモリはほとんど使わない
となり
ECS
EC2とdockerの管理したく無いfargate
高いBeanstalk
t3.micro or t3.small unlimited を常時2台くらい並べるのが、しゅごいコスパな気がする。い。
docker 作る
docker image
docker run -p 80:80 で、80番ポートでflask起動するdocker imageを作っておく。
ちなみにflaskでもrailsでもtomcatでも、docker runで80番ポートで起動するようにしたら、何でもいける。
別に80番じゃなくてもいいけど。
ECRにpushしておく
push push!!
beanstalk設定
awsebcli入れて、新規ebアプリを作る
```
pip install awsebcli
eb init hoge
```
eb 環境作成
cliから作ると初期設定関係で色々とはまったので、consoleから作った。
ブラウザからaws consoleを表示し、新規環境構築。
- 環境名 hoge-env
- VPCとサブネットを選択する
- NAT使わない場合は、インスタンスにpublic ipを振る
IAMにECR権限あたえる
aws-elasticbeanstalk-ec2-roleへ、AmazonEC2ContainerRegistryReadOnlyを与えておく
デプロイ
eb use hoge-env
# 設定ファイル作る
touch Dockerrun.aws.json
Dockerrun.aws.json
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "99999999999.dkr.ecr.ap-northeast-1.amazonaws.com/your-dockername:latest",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "80"
}
]
}
# deployコマンドで起動する
eb deploy
INFO: New application version was deployed to running EC2 instances.
INFO: Environment update completed successfully.
成功!!