Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

ecs-cli up

创建 Amazon ECS 集群(如果该集群不存在)和设置该集群所需的 AWS 资源。

此命令创建名为 amazon-ecs-cli-setup-cluster_name 的新 AWS CloudFormation 堆栈。您可以在 AWS 管理控制台中查看堆栈创建的进度。

重要

所介绍的某些功能仅可用于最新版本的 Amazon ECS CLI。有关获取最新版本的更多信息,请参阅 安装 Amazon ECS CLI

语法

ecs-cli up [--capability-iam | --instance-role instance-profile-name] [--keypair keypair_name] [--size n] [--azs availability_zone_1,availability_zone_2] [--security-group security_group_id[,security_group_id[,...]]] [--cidr ip_range] [--port port_number] [--subnets subnet_1,subnet_2] [--vpc vpc_id] [--extra-user-data string] [--instance-type instance_type] [--image-id ami_id] [--launch-type launch_type] [--no-associate-public-ip-address] [--force] [--tags key1=value1,key2=value2] [--cluster cluster_name] [--region region] [--empty] [--verbose] [--help]

选项

名称

描述

--capability-iam

确认此命令可创建 IAM 资源。

注意

此参数仅对于使用 EC2 启动类型的任务受支持。

如果您未使用 --instance-role 指定实例配置文件名称,则此参数是必需的。您无法同时指定两个选项。

必需:否

--keypair keypair_name

指定用于支持对集群中的 EC2 实例进行 SSH 访问的现有 Amazon EC2 密钥对的名称。

注意

此参数仅对于使用 EC2 启动类型的任务受支持。

有关创建密钥对的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 使用 Amazon EC2 进行设置

类型:字符串

必需:否

--size n

指定要启动并注册到集群的实例的数量。

注意

此参数仅对于使用 EC2 启动类型的任务受支持。

类型:整数

默认值:1

必需:否

--azs availability_zone_1,availability_zone_2

指定要在其中创建子网的两个 VPC 可用区的逗号分隔的列表 (这两个区域必须具有 available 状态)。如果您未使用 --vpc 选项指定 VPC ID,我们建议使用此选项。

警告

将此选项保留为空可能导致在随机选择的区域不可用时无法启动容器实例。

类型:字符串

必需:否

--security-group security_group_id[,security_group_id[,...]]

指定要与容器实例关联的现有安全组的逗号分隔列表。如果您在此处未指定安全组,请创建一个新的安全组。

有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Security Groups 部分。

必需:否

--cidr ip_range

指定要用于集群中的容器实例的安全组的 CIDR/IP 范围。

注意

如果已使用 --security-group 选项指定现有安全组,则忽略此参数。

类型:CIDR/IP 范围

默认值:0.0.0.0/0

必需:否

--port port_number

指定要在安全组上打开以用于集群中的容器实例的端口。

注意

如果已使用 --security-group 选项指定现有安全组,则忽略此参数。

类型:整数

默认值:80

必需:否

--subnets subnet_1,subnet_2

指定要在其中启动容器实例的现有 VPC 子网 ID 的逗号分隔的列表。

类型:字符串

必需:如果已使用 --vpc 选项指定 VPC,则需要此选项。

--vpc vpc_id

指定要在其中启动容器实例的现有 VPC 的 ID。如果指定了一个 VPC ID,则必须使用 --subnets 选项指定该 VPC 中的现有子网的列表。如果未指定 VPC ID,请使用两个子网创建一个新的 VPC。

类型:字符串

必需:否

--extra-user-data string

指定容器实例的其他用户数据。文件可以是 shell 脚本或 cloud-init 指令。它们与 Amazon ECS CLI 提供的用于指示实例加入您的集群的用户数据一起打包到 MIME 分段存档中。有关更多信息,请参阅指定用户数据

类型:字符串

必需:否

--instance-type instance_type

指定您的容器实例的 Amazon EC2 实例类型。如果您指定 A1 实例类型,例如 a1.medium,并省略 --image-id 参数,ECS CLI 将使用该容器实例的 Amazon ECS-optimized Amazon Linux 2 (arm64) AMI AMI ID。

注意

仅支持对使用 EC2 启动类型的任务使用此参数。

有关 EC2 实例类型的更多信息,请参阅 Amazon EC2 实例

类型:字符串

默认值:t2.micro

必需:否

--image-id ami_id

指定要用于容器实例的 Amazon EC2 AMI ID。

如果您未指定 AMI ID,Amazon ECS CLI 将自动检索最新稳定的 Amazon ECS-optimized Amazon Linux 2 AMI(方式为在创建集群资源过程中查询 Systems Manager Parameter Store API)。这要求您正在使用的用户账户具有所需的 Systems Manager 权限。有关更多信息,请参阅检索 Amazon ECS-Optimized AMI 元数据

如果您为 --instance-type 参数指定 A1 实例类型并忽略 --image-id 参数,ECS CLI 将使用该容器实例的 Amazon ECS-optimized Amazon Linux 2 (arm64) AMI AMI ID。

注意

仅支持对使用 EC2 启动类型的任务使用此参数。

类型:字符串

默认值:指定区域经 Amazon ECS 优化的最新稳定的 AMI。

必需:否

--no-associate-public-ip-address

不向该 VPC 中的新实例分配公有 IP 地址。除非指定此选项,否则该 VPC 中的新实例会收到自动分配的公有 IP 地址。

注意

此参数仅对于使用 EC2 启动类型的任务受支持。

必需:否

--force, -f

强制重新创建与您的当前配置匹配的所有现有资源。此选项对于从先前失败的尝试中清除过期资源非常有用。

必需:否

--tags key1=value1,key2=value2

指定要用于您的 AWS 资源的元数据。每一个标签都包含一个键和一个可选值。标签采用以下格式:key1=value1,key2=value2,key3=value3。有关更多信息,请参阅 标记资源

类型:键值对

必需:否

--instance-role, -f instance-profile-name

为集群中的实例指定自定义 IAM 角色名称。将会创建一个新的实例配置文件,并将其附加到该角色。

注意

此参数仅对于使用 EC2 启动类型的任务受支持。

如果您未指定 --capability-iam 选项,则此参数是必需的。您无法同时指定两个选项。

必需:否

--launch-type launch_type

指定要使用的启动类型。可用的选项有 FARGATEEC2。有关启动类型的更多信息,请参阅 Amazon ECS 启动类型

这将覆盖在集群配置中存储的默认启动类型。

类型:字符串

必需:否

--verbose, --debug

打开调试日志记录。这将提供帮助诊断问题的更详细的命令输出。

必需:否

--region, -r region

指定要使用的 AWS 区域。默认为使用 configure 命令配置的集群。

类型:字符串

必需:否

--cluster-config cluster_config_name

指定要使用的 Amazon ECS 集群配置的名称。默认为作为默认值设置的集群设置。

类型:字符串

必需:否

--ecs-profile ecs_profile

指定要使用的 Amazon ECS 配置文件的名称。默认为使用 configure profile 命令配置的配置文件。

类型:字符串

必需:否

--aws-profile aws_profile

指定要使用的 AWS 配置文件。使您能够使用 ~/.aws/credentials 中现有指定配置文件中的 AWS 凭证。

类型:字符串

必需:否

--cluster, -c cluster_name

指定要使用的 Amazon ECS 集群名称。默认为使用 configure 命令配置的集群。

类型:字符串

必需:否

--empty, -e

指定将创建一个没有任何资源的 ECS 集群。如果还指定了其他将创建资源的标志,将忽略它们并显示警告。

必需:否

--help, -h

显示指定命令的帮助文本。

必需:否

指定用户数据

在启动使用 EC2 启动类型的任务时,ECS CLI 始终创建包含以下用户数据的容器实例:

#!/bin/bash echo ECS_CLUSTER={ clusterName } >> /etc/ecs/ecs.config

此用户数据指示容器实例加入您的 ECS 集群。您可以选择使用 --extra-user-data 标志包括其他用户数据。可以多次指定该标志。例如,额外的用户数据可以是 Shell 脚本或 cloud-init 指令。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的启动时在 Linux 实例上运行命令

Amazon ECS CLI 获取用户数据并将其打包到 MIME 分段存档中,这可供容器实例上的 cloud-init 使用。Amazon ECS CLI 允许使用 --extra-user-data 传入现有 MIME 分段存档。Amazon ECS CLI 会解包现有存档,然后将其重新打包为最终存档(保留所有标头和内容类型信息)。以下是示例:

ecs-cli up \ --capability-iam \ --extra-user-data my-shellscript \ --extra-user-data my-cloud-boot-hook \ --extra-user-data my-mime-multipart-archive \ --launch-type EC2

标记资源

Amazon ECS CLI 支持以资源标签的形式将元数据添加到您的 AWS 资源。每一个标签都包含一个键和一个可选值。资源标签可用于成本分配、自动化和访问控制。有关更多信息,请参阅 AWS 标记策略

如果您在使用 ecs-cli up 命令时指定资源标签,则可以标记 Amazon ECS 集群以及由 AWS CloudFormation 堆栈创建的以下资源:

  • 容器实例

    注意

    为了让您的容器实例允许标签,您需要选择使用新的 Amazon ECS 资源 ARN 格式。有关更多信息,请参阅 Amazon 资源名称 (ARN) 和 ID

  • VPC

  • 子网

  • Internet 网关

  • 路由表

  • 安全组

  • Autoscaling 组

注意

对于 Autoscaling 组,ECS CLI 将添加其值为 ECS Instance - <CloudFormation stack name>Name 标签,该标签将传播到您的容器实例。您可以通过指定自己的 Name 标签来覆盖此行为。

示例

为使用 EC2 启动类型的任务创建集群

此示例将启动一个包含 4 个 c4.large 容器实例的集群并将它们配置为使用名为 id_rsa 的 EC2 密钥对。

ecs-cli up --keypair id_rsa --capability-iam --size 4 --instance-type c4.large --launch-type EC2

输出:

INFO[0001] Using recommended Amazon Linux AMI with ECS Agent 1.17.3 and Docker version 17.12.1-ce INFO[0000] Created cluster cluster=ecs-cli-ec2-demo INFO[0000] Waiting for your cluster resources to be created INFO[0001] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0061] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0121] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0181] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS Cluster creation succeeded. VPC created: vpc-abcd1234 Security Group created: sg-abcd1234 Subnets created: subnet-abcd1234 Subnets created: subnet-dcba4321

利用使用 Amazon ECS-optimized Amazon Linux 2 (arm64) AMI 的容器实例创建集群

此示例将启动一个包含一个 a1.medium 容器实例(该实例将使用 Amazon ECS-optimized Amazon Linux 2 (arm64) AMI)的集群。

ecs-cli up --capability-iam --instance-type a1.medium --launch-type EC2 --region us-east-2

输出:

WARN[0000] You will not be able to SSH into your EC2 instances without a key pair. INFO[0000] Using Arm ecs-optimized AMI because instance type was a1.medium INFO[0001] Using recommended Amazon Linux 2 AMI with ECS Agent 1.25.3 and Docker version 18.06.1-ce INFO[0000] Created cluster cluster=ecs-cli-ec2-demo INFO[0000] Waiting for your cluster resources to be created INFO[0001] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0061] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0121] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0181] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS Cluster creation succeeded. VPC created: vpc-abcd1234 Security Group created: sg-abcd1234 Subnets created: subnet-abcd1234 Subnets created: subnet-dcba4321

为使用 Fargate 启动类型的任务创建集群

此示例将为您的 Fargate 任务创建一个集群并创建带两个子网的新 VPC。

ecs-cli up --launch-type FARGATE

输出:

INFO[0001] Created cluster cluster=ecs-cli-fargate-demo region=us-west-2 INFO[0003] Waiting for your cluster resources to be created... INFO[0003] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS" INFO[0066] Waiting for your cluster resources to be created... INFO[0066] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS" VPC created: vpc-abcd1234 Subnets created: subnet-abcd1234 Subnets created: subnet-dcba4321 Cluster creation succeeded.

创建一个空集群

此示例将创建一个名为 ecs-cli-empty-demo 的没有任何资源的空集群。

ecs-cli up --empty --cluster ecs-cli-empty-demo

输出:

INFO[0000] Created cluster cluster=ecs-cli-empty-demo region=us-east-1 Cluster creation succeeded.