{ECS}チュートリアル: AWS CLI を使用して Fargate Linux タスクでクラスターの作成



https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ECS_AWSCLI_Fargate.html

タスク定義とは、1 つにグループ化されたコンテナのリストです


前提:
デフォルトセキュリティグループに下記ルール追加済み

HTTP  0.0.0.0/0
HTTPS 0.0.0.0/0


-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version


-- 1.2 jqインストール
sudo yum -y install jq


-- 2. クラスターを作成する

aws ecs create-cluster \
--cluster-name cluster01

aws ecs list-clusters

aws ecs describe-clusters \
--clusters cluster01


-- 3. Linux タスク定義を登録


vim a.json

{
    "family": "sample-fargate", 
    "networkMode": "awsvpc", 
    "containerDefinitions": [
        {
            "name": "fargate-app", 
            "image": "public.ecr.aws/docker/library/httpd:latest", 
            "portMappings": [
                {
                    "containerPort": 80, 
                    "hostPort": 80, 
                    "protocol": "tcp"
                }
            ], 
            "essential": true, 
            "entryPoint": [
                "sh",
                "-c"
            ], 
            "command": [
                "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
            ]
        }
    ], 
    "requiresCompatibilities": [
        "FARGATE"
    ], 
    "cpu": "256", 
    "memory": "512"
}

aws ecs register-task-definition \
--cli-input-json file://a.json


-- 4. タスク定義をリスト表示する

aws ecs list-task-definitions


-- 5. サービスを作成する

aws ecs create-service \
--cluster cluster01 \
--service-name service01 \
--task-definition sample-fargate:1 \
--desired-count 1 \
--launch-type "FARGATE" \
--network-configuration "awsvpcConfiguration={subnets=[subnet-11111111111111111],securityGroups=[sg-22222222222222222],assignPublicIp=ENABLED}"

 


-- 6. サービスをリスト表示する
aws ecs list-services \
--cluster cluster01


-- 7. 実行中のサービスを記述する
aws ecs describe-services \
--cluster cluster01 \
--services service01

 

-- 8. テスト
aws ecs list-tasks \
--cluster cluster01

 

aws ecs describe-tasks \
--cluster cluster01 \
--tasks arn:aws:ecs:ap-northeast-1:999999999999:task/cluster01/33333333333333333333333333333333


aws ec2 describe-network-interfaces \
--network-interface-id eni-44444444444444444

取得したパブリックIPにアクセスする

sudo yum -y install elinks

elinks http://192.0.2.1

 


-- 9. クリーンアップ


-- サービス削除
aws ecs delete-service \
--cluster cluster01 \
--service service01 \
--force

aws ecs list-services \
--cluster cluster01

 

-- クラスター削除
aws ecs list-clusters

aws ecs describe-clusters \
--clusters cluster01

aws ecs delete-cluster \
--cluster cluster01


-- タスク定義の登録解除

aws ecs list-task-definitions

aws ecs deregister-task-definition \
--task-definition sample-fargate:1