AWS CloudShellでfargatecliを使ってコンテナを構築する

  • 投稿者:
  • 投稿カテゴリー:aws / docker

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