fargatecli でコンテナを立てるを参考に、AWS CloudShellにてfargatecliを使ってコンテナを構築してみた。
VPCの作成
必要な時だけNAT Gatewayを作成する方法を参考にVPCを用意する。
※NAT Gatewayを有効にしておくこと。有効にしなければ、コンテナ構築時にCannotPullContainerErrorというエラーが発生する。
※以下をメモすること。
FrontendSubnet1:subnet-08e497065e5f7eca2
FrontendSubnet2:subnet-0c438bd446091cb37
ApplicationSubnet1:subnet-0cbd4e4f7d2b01d25
ApplicationSubnet2:subnet-05bedb7310ebaadb4
ALB,コンテナ用に自宅と 10.0.0.0/8 から80番ポートにアクセスできるセキュリティグループを作成する。
セキュリティグループ名:sg-0f6bb0bd6402c613a
AWS CloudShellにfargatecliをインストールする
$ amazon-linux-extras list | grep golang 29 golang1.11 available $ sudo amazon-linux-extras install golang1.11 ... $ go version go version go1.15.3 linux/amd64 $ go get github.com/awslabs/fargatecli ... $ cd go/bin/ $ ./fargatecli --version fargate version 0.3.2
ECSクラスターの作成
$ aws ecs create-cluster --cluster-name nginx-cluster { "cluster": { "clusterArn": "arn:aws:ecs:ap-northeast-1:377343199566:cluster/nginx-cluster", "clusterName": "nginx-cluster", "status": "ACTIVE", "registeredContainerInstancesCount": 0, "runningTasksCount": 0, "pendingTasksCount": 0, "activeServicesCount": 0, "statistics": [], "tags": [], "settings": [ { "name": "containerInsights", "value": "disabled" } ], "capacityProviders": [], "defaultCapacityProviderStrategy": [] } }
ALBの作成
$ ./fargatecli lb create nginx-lb --port 80 --scheme internet-facing --subnet-id subnet-08e497065e5f7eca2,subnet-0c438bd446091cb37 --security-group-id sg-0f6bb0bd6402c613a [i] Created load balancer nginx-lb $ ./fargatecli lb list NAME TYPE STATUS DNS NAME PORTS nginx-lb Application Active nginx-lb-558211939.ap-northeast-1.elb.amazonaws.com HTTP:80
コンテナを構築する
$ ./fargatecli service create nginx-service --cluster nginx-cluster --subnet-id subnet-0cbd4e4f7d2b01d25,subnet-05bedb7310ebaadb4 --cpu 256 --memory 512 --num 2 --image nginx:latest --port 80 --security-group-id sg-0f6bb0bd6402c613a --lb nginx-lb [i] Created service ngx-service $ ./fargatecli service list --cluster nginx-cluster NAME IMAGE CPU MEMORY LOAD BALANCER DESIRED RUNNING PENDING nginx-service nginx:latest 256 512 nginx-lb 2 2 0
ALBにアクセスするとコンテナのメッセージが表示される。
簡単にfargatecliでコンテナ構築できた。
しかし参考記事にもある通り、現段階でfargatecliの最終更新日が2020年4月10日となっており、がっつり利用は避けたほうがよいかも。
おまけ:コンテナイメージを変更する
nginx:latest から nginx:stable に変更したところ、2つコンテナを追加したのちに既存の2つのコンテナが削除されることを確認した。
$ ./fargatecli service deploy nginx-service --cluster nginx-cluster --image nginx:stable [i] Deployed nginx:latest to service nginx-service