教程: 创建包含以下内容的群集 Fargate 使用任务 AWS CLI - Amazon Elastic Container Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程: 创建包含以下内容的群集 Fargate 使用任务 AWS CLI

以下步骤将帮助您设置群集、注册任务定义、运行任务,以及 执行其他常见方案 Amazon ECS 与 AWS CLI. 确保您使用最新的 版本 AWS CLI. 有关如何升级到最新版本的详细信息,请参阅 安装ASH指令行 接口.

Prerequisites

本教程假设以下前提条件已完成。

步骤1: 创建群集

默认情况下,您的帐户会收到 default 群集。

注意

使用 default 为您提供的群集是 您不必说明 --cluster cluster_name 在后续 命令。如果您确实创建自己的非默认群集,则必须指定 --cluster cluster_name 每个命令 您打算使用该群集的。

使用下列命令使用唯一名称创建您自己的群集:

aws ecs create-cluster --cluster-name fargate-cluster

输出:

{ "cluster": { "status": "ACTIVE", "statistics": [], "clusterName": "fargate-cluster", "registeredContainerInstancesCount": 0, "pendingTasksCount": 0, "runningTasksCount": 0, "activeServicesCount": 0, "clusterArn": "arn:aws:ecs:region:aws_account_id:cluster/fargate-cluster" } }

步骤2: 登记任务 定义

在ECS群集上运行任务之前,必须先注册任务定义。任务定义是将多个容器组合在一起的列表。以下示例是 使用托管的httpd容器图像创建PHP网络应用程序的简单任务定义 位于DockerHub上。有关可用任务定义参数的更多信息,请参阅 Amazon ECS 任务定义.

{ "family": "sample-fargate", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "fargate-app", "image": "httpd:2.4", "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" }

可以将上述示例JNS传递给 AWS CLI 两种方式: 您可以保存任务 定义JNS为文件,并将其与 --cli-input-json file://path_to_file.json 选项。或者,您 可以跳过JNS中的引号,并通过JNS容器定义 如下示例中所示。如果您选择通过容器, 定义,您的命令还需要 --family 用于保存多个任务版本的参数 相互关联的定义。

要对容器定义使用Jsonson文件:

aws ecs register-task-definition --cli-input-json file://$HOME/tasks/fargate-task.json

register-task-definition 命令返回 任务定义。

步骤3: 列出任务 定义

您可随时使用 list-task-definitions 命令。该命令的输出显示 的 familyrevision 共同运用的价值观, 致电 run-taskstart-task.

aws ecs list-task-definitions

输出:

{ "taskDefinitionArns": [ "arn:aws:ecs:region:aws_account_id:task-definition/sample-fargate:1" ] }

步骤4: 创建服务

在为您的帐户注册任务后,您可以为 在群集中注册的任务。在本例中,您创建的服务 实例 sample-fargate:1 在群集中运行任务定义。任务需要一个互联网路径,因此您有两种方式可以达到该目的。一种方式是使用通过带有弹性IP的NAT网关配置的专用子网络 地址。另一种方式是使用公共网络并分配公共IP 任务地址。我们在下面提供两个示例。

示例使用专用的子网络。

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

示例:使用公共网络。

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

create-service 命令返回任务描述 定义。

步骤5: 列出服务

列出群集的服务。您应该在 前一节。您可以输入服务名称或返回的完整RN 并使用该命令稍后描述服务。

aws ecs list-services --cluster fargate-cluster

输出:

{ "serviceArns": [ "arn:aws:ecs:region:aws_account_id:service/fargate-service" ] }

步骤6: 描述跑步 服务

使用之前检索的服务名称描述服务,以获得更多信息 任务。

aws ecs describe-services --cluster fargate-cluster --services fargate-service

如果成功,这将返回服务故障和服务的描述。例如,在服务部分,您将找到有关部署的信息,例如 任务状态为“运行中”或“待执行”。您还可以找到有关任务的信息 定义、网络配置和时间戳事件。在故障部分, 您将找到与呼叫相关的故障信息(如果有)。对于 故障排除,请参阅 服务事件 信息. 有关服务描述的更多信息,请参阅 描述服务. 如果您的实例 已在公共的子网络内启动,您可以通过以下方式从互联网查看服务任务 使用 AWS CLI 命令 list-tasks 检索所需的任务ID 命令 describe-tasks 检索网站的公共IP地址。

{ "services": [ { "status": "ACTIVE", "taskDefinition": "arn:aws:ecs:region:aws_account_id:task-definition/sample-fargate:1", "pendingCount": 2, "launchType": "FARGATE", "loadBalancers": [], "roleArn": "arn:aws:iam::aws_account_id:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS", "placementConstraints": [], "createdAt": 1510811361.128, "desiredCount": 2, "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-abcd1234" ], "securityGroups": [ "sg-abcd1234" ], "assignPublicIp": "DISABLED" } }, "platformVersion": "LATEST", "serviceName": "fargate-service", "clusterArn": "arn:aws:ecs:region:aws_account_id:cluster/fargate-cluster", "serviceArn": "arn:aws:ecs:region:aws_account_id:service/fargate-service", "deploymentConfiguration": { "maximumPercent": 200, "minimumHealthyPercent": 100 }, "deployments": [ { "status": "PRIMARY", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-abcd1234" ], "securityGroups": [ "sg-abcd1234" ], "assignPublicIp": "DISABLED" } }, "pendingCount": 2, "launchType": "FARGATE", "createdAt": 1510811361.128, "desiredCount": 2, "taskDefinition": "arn:aws:ecs:region:aws_account_id:task-definition/sample-fargate:1", "updatedAt": 1510811361.128, "platformVersion": "0.0.1", "id": "ecs-svc/9223370526043414679", "runningCount": 0 } ], "events": [ { "message": "(service fargate-service) has started 2 tasks: (task 53c0de40-ea3b-489f-a352-623bf1235f08) (task d0aec985-901b-488f-9fb4-61b991b332a3).", "id": "92b8443e-67fb-4886-880c-07e73383ea83", "createdAt": 1510811841.408 }, { "message": "(service fargate-service) has started 2 tasks: (task b4911bee-7203-4113-99d4-e89ba457c626) (task cc5853e3-6e2d-4678-8312-74f8a7d76474).", "id": "d85c6ec6-a693-43b3-904a-a997e1fc844d", "createdAt": 1510811601.938 }, { "message": "(service fargate-service) has started 2 tasks: (task cba86182-52bf-42d7-9df8-b744699e6cfc) (task f4c1ad74-a5c6-4620-90cf-2aff118df5fc).", "id": "095703e1-0ca3-4379-a7c8-c0f1b8b95ace", "createdAt": 1510811364.691 } ], "runningCount": 0, "placementStrategy": [] } ], "failures": [] }

步骤7: 清理

完成本教程后,您应清理相关资源 避免对未使用的资源产生费用。

删除服务。

aws ecs delete-service --cluster fargate-cluster --service fargate-service --force

删除群集。

aws ecs delete-cluster --cluster fargate-cluster