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 タスク定義を登録
{
"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