❗ ❗ ❗ 请注意,该项目不再积极维护。在 AWS 上部署新的 Fargate 的更好选择是 AWS Copilot CLI,它功能更强大,并且由 AWS 积极维护。 ❗❗❗
默认情况下,fargate 使用us-east-1 。 CLI 接受 --region 参数并将遵循AWS_REGION和AWS_DEFAULT_REGION环境设置。请注意,指定所有必需服务均不可用的区域将返回错误。
请参阅区域表,了解哪些区域提供哪些服务的详细信息。
Fargate 使用 AWS SDK for Go 构建,它在以下位置查找凭证:
环境变量
共享凭证文件
EC2 实例配置文件
有关更多信息,请参阅 AWS SDK for Go 文档中的指定凭证。
旗帜 | 默认 | 描述 |
---|---|---|
- 簇 | 法尔盖特 | ECS集群名称 |
- 地区 | 美国东部1 | AWS 区域 |
--无颜色 | 错误的 | 禁用颜色输出 |
--详细 | 错误的 | 详细输出 |
任务是容器的一次性执行。任务实例将一直运行,直到您通过 AWS API、AWS 管理控制台或fargate task stop
手动停止它们,或者直到它们因任何原因被中断。
fargate task list
列出正在运行的任务组
fargate task run <task-group-name> [--num <count>] [--cpu <cpu-units>] [--memory <MiB>]
[--image <docker-image>] [--env <key=value>]
[--task-role <task-role>] [--subnet-id <subnet-id>]
[--security-group-id <security-group-id>]
运行新任务
您必须指定任务组名称,以便与后续命令中的任务进行交互,以查看日志、停止和检查任务。任务组名称不必是唯一的——可以使用同一任务组启动任务实例的多个配置。
通过在 --num 标志中指定数字可以运行任务的多个实例。如果未指定数量,则将运行单个任务实例。
可以使用 --cpu 和 --memory 标志分别将 CPU 和内存设置指定为 CPU 单位和兆字节。每 1024 个 CPU 单元相当于一个 vCPU。 AWS Fargate 仅支持某些 CPU 和内存配置组合:
CPU(CPU单元) | 内存 (MiB) |
---|---|
256 | 512、1024 或 2048 |
第512章 | 1024 到 4096(以 1GiB 为增量) |
1024 | 2048 到 8192(以 1GiB 为增量) |
2048 | 4096 到 16384(以 1GiB 为增量) |
4096 | 8192 到 30720(以 1GiB 为增量) |
如果未指定,fargate 将以 0.25 vCPU(256 个 CPU 单元)和 0.5GB (512 MiB) 内存启动最小大小的任务。
可以通过 --image 标志选择性地指定任务中使用的 Docker 容器映像。如果未指定,fargate 将从当前工作目录构建新的 Docker 容器映像,并将其推送到以任务组命名的存储库中的 Amazon ECR。如果当前工作目录是 git 存储库,则容器映像将使用 HEAD 提交的短引用进行标记。如果不是,则将使用 YYYYMMDDHHMMSS 格式的时间戳。
环境变量可以通过 --env 标志指定。多次指定 --env 和 key=value 参数以添加多个变量。
可以选择通过传递带有安全组 ID 的 --security-group-id 标志来为任务指定安全组。要添加多个安全组,请多次传递 --security-group-id 和安全组 ID。如果省略 --security-group-id,则将向任务应用宽松的安全组。
默认情况下,任务将在默认 VPC 中创建,并附加到每个可用区的默认 VPC 子网。您可以通过传递带有子网 ID 的 --subnet-id 标志来指定显式子网来覆盖此设置。
可以通过提供完整的 IAM 角色 ARN 或 IAM 角色的名称,通过 --task-role 标志选择性地指定任务角色。任务将能够承担这个角色。
fargate task info <task-group-name> [--task <task-id>]
检查任务
显示任务组中每个正在运行的任务或使用 --task 标志指定的特定任务的扩展信息。信息包括任务组中的任务之间可能不同的环境变量。使用任务 ID 多次检查任务组特定 --task 中的多个特定任务。
fargate task ps <task-group-name>
列出正在运行的任务
fargate task logs <task-group-name> [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
显示任务日志
使用 --follow 选项实时返回任务日志或尾部日志的特定片段。日志以其日志流名称为前缀,格式为“fargate/<task-group-name>/<task-id>”。
Follow 将继续运行并返回日志,直到被 Control-C 中断。如果传递了--follow,则无法指定--end。
通过 --task 标志传递任务 ID,可以返回任务组内特定任务的日志。多次传递 --task 和任务 ID 以便从多个特定任务检索日志。
可以通过传递 --start 和 --end 选项以及时间表达式来请求特定的日志窗口。时间表达式可以是持续时间或时间戳:
您可以通过 --filter 标志传递过滤器表达式来过滤特定术语的日志。传递单个术语以搜索该术语,传递多个术语以搜索包含所有术语的日志消息。有关更多详细信息,请参阅 CloudWatch Logs 文档。
fargate task stop <task-group-name> [--task <task-id>]
停止任务
如果仅使用任务组名称运行,则停止任务组内的所有任务;如果通过 --task 标志传递一个或多个任务,则停止单个任务。多次指定 --task 和任务 ID 参数可停止多个特定任务。
服务管理在 AWS Fargate 上运行的长期容器实例。如果您的容器因任何原因退出,服务调度程序将重新启动您的容器并确保您的服务运行所需数量的任务。服务可以与负载均衡器配合使用,以在服务中的任务之间分配流量。
fargate service list
列出服务
fargate service create <service name> [--cpu <cpu units>] [--memory <MiB>] [--port <port-expression>]
[--lb <load-balancer-name>] [--rule <rule-expression>]
[--image <docker-image>] [--env <key=value>] [--num <count>]
[--task-role <task-role>] [--subnet-id <subnet-id>]
[--security-group-id <security-group-id>]
创建新服务
可以使用 --cpu 和 --memory 标志分别将 CPU 和内存设置指定为 CPU 单位和兆字节。每 1024 个 CPU 单元相当于一个 vCPU。 AWS Fargate 仅支持某些 CPU 和内存配置组合:
CPU(CPU单元) | 内存 (MiB) |
---|---|
256 | 512、1024 或 2048 |
第512章 | 1024 到 4096(以 1GiB 为增量) |
1024 | 2048 到 8192(以 1GiB 为增量) |
2048 | 4096 到 16384(以 1GiB 为增量) |
4096 | 8192 到 30720(以 1GiB 为增量) |
如果未指定,fargate 将以 0.25 vCPU(256 个 CPU 单元)和 0.5GB (512 MiB) 内存启动最小大小的任务。
可以通过 --image 标志选择性地指定要在服务中使用的 Docker 容器映像。如果未指定,fargate 将从当前工作目录构建新的 Docker 容器映像,并将其推送到以任务组命名的存储库中的 Amazon ECR。如果当前工作目录是 git 存储库,则容器映像将使用 HEAD 提交的短引用进行标记。如果不是,则将使用 YYYYMMDDHHMMSS 格式的时间戳。
要将服务与负载均衡器一起使用,必须在创建服务时指定端口。通过传递 --port 标志和协议:端口号的端口表达式来指定端口。例如,如果服务侦听端口 80 并使用 HTTP,请指定 HTTP:80。有效协议包括 HTTP、HTTPS 和 TCP。您只能指定一个端口。
可以选择将服务配置为使用负载平衡器。要将负载均衡器放在服务前面,请传递带有负载均衡器名称的 --lb 标志。如果指定负载均衡器,还必须通过 --port 标志指定负载均衡器应将请求转发到的端口。 (可选)可以将应用程序负载均衡器配置为根据规则将 HTTP/HTTPS 流量路由到服务。规则是通过指定 --rule 标志以及规则表达式来传递一个或多个规则来配置的。规则表达式的格式为 TYPE=VALUE。类型可以是 PATH 或 HOST。 PATH 与请求的 PATH 匹配,HOST 与 HTTP 请求中请求的主机名匹配。 PATH 和 HOST 类型最多可以包含三个通配符:* 用于匹配多个字符,?匹配单个字符。如果省略规则,该服务将是负载均衡器的默认操作。
环境变量可以通过 --env 标志指定。多次指定 --env 和 key=value 参数以添加多个变量。
通过传递带有数字的 --num 标志来指定服务应维护的所需任务数。如果省略此标志,fargate 将配置所需任务数为 1 的服务。
可以选择通过传递 --security-group-id 标志和安全组 ID 来为服务指定安全组。要添加多个安全组,请多次传递 --security-group-id 和安全组 ID。如果省略 --security-group-id,则将向服务应用宽松的安全组。
默认情况下,服务将在默认 VPC 中创建,并附加到每个可用区的默认 VPC 子网。您可以通过传递带有子网 ID 的 --subnet-id 标志来指定显式子网来覆盖此设置。
可以通过提供完整的 IAM 角色 ARN 或 IAM 角色的名称,通过 --task-role 标志选择性地指定任务角色。该服务运行的任务将能够承担此角色。
fargate service deploy <service-name> [--image <docker-image>]
将新镜像部署到服务
可以通过 --image 标志选择性地指定要在服务中使用的 Docker 容器映像。如果未指定,fargate 将从当前工作目录构建新的 Docker 容器映像,并将其推送到以任务组命名的存储库中的 Amazon ECR。如果当前工作目录是 git 存储库,则容器映像将使用 HEAD 提交的短引用进行标记。如果不是,则将使用 YYYYMMDDHHMMSS 格式的时间戳。
fargate service info <service-name>
检验服务
显示服务的扩展信息,包括负载均衡器配置、活动部署和环境变量。
部署显示正在运行的服务的活动版本。如果服务由于部署或更新配置(例如 CPU、内存或环境变量)而发生转换,则会显示多个部署。
fargate service logs <service-name> [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
显示服务中任务的日志
使用 --follow 选项实时返回服务日志的特定片段或尾部日志。日志以其日志流名称为前缀,格式为“fargate/<service-name>/<task-id>”。
Follow 将继续运行并返回日志,直到被 Control-C 中断。如果传递了--follow,则无法指定--end。
通过 --task 标志传递任务 ID,可以返回服务中特定任务的日志。多次传递 --task 和任务 ID 以便从多个特定任务检索日志。
可以通过传递 --start 和 --end 选项以及时间表达式来请求特定的日志窗口。时间表达式可以是持续时间或时间戳:
您可以通过 --filter 标志传递过滤器表达式来过滤特定术语的日志。传递单个术语以搜索该术语,传递多个术语以搜索包含所有术语的日志消息。有关更多详细信息,请参阅 CloudWatch Logs 文档。
fargate service ps <service-name>
列出服务正在运行的任务
fargate service scale <service-name> <scale-expression>
扩展服务中的任务数量
通过给定的比例表达式更改要在服务中运行的所需任务的数量。比例表达式可以是绝对数字,也可以是用符号(例如 +5 或 -2)指定的增量。
fargate service env set <service-name> --env <key=value>
设置环境变量
必须通过 --env 标志至少指定一个环境变量。多次指定 --env 和 key=value 参数以添加多个变量。
fargate service env unset <service-name> --key <key-name>
取消设置环境变量
取消设置通过 --key 标志指定的环境变量。多次指定 --key 和键名以取消设置多个变量。
fargate service env list <service-name>
显示环境变量
fargate service update <service-name> [--cpu <cpu-units>] [--memory <MiB>]
更新服务配置
CPU 和内存设置分别使用 --cpu 和 --memory 标志指定为 CPU 单位和兆字节。每 1024 个 CPU 单元相当于一个 vCPU。 AWS Fargate 仅支持某些 CPU 和内存配置组合:
CPU(CPU单元) | 内存 (MiB) |
---|---|
256 | 512、1024 或 2048 |
第512章 | 1024 到 4096(以 1GiB 为增量) |
1024 | 2048 到 8192(以 1GiB 为增量) |
2048 | 4096 到 16384(以 1GiB 为增量) |
4096 | 8192 到 30720(以 1GiB 为增量) |
必须至少指定 --cpu 或 --memory 之一。
fargate service restart <service-name>
重启服务
为服务创建一组新任务并停止以前的任务。例如,如果您的服务需要重新加载从外部源缓存的数据,这非常有用。
fargate service destroy <service-name>
销毁服务
为了销毁一个服务,必须首先将其扩展到 0 个正在运行的任务。
负载均衡器在 HTTP/HTTPS 和 TCP 应用程序的服务内的任务之间分配传入流量。 HTTP/HTTPS 负载均衡器可以根据您在创建新服务时指定的规则路由到多个服务。
fargate lb list
列出负载均衡器
fargate lb create <load-balancer-name> --port <port-expression> [--certificate <certificate-name>]
[--subnet-id <subnet-id>] [--security-group-id <security-group-id>]
[--scheme <lb-scheme>]
创建负载均衡器
必须通过 --port 标志和协议:端口号的端口表达式至少为负载均衡器侦听器指定一个端口。例如,如果您希望 HTTP 负载均衡器侦听端口 80,则可以指定 HTTP:80。有效协议包括 HTTP、HTTPS 和 TCP。您可以通过多次传递 --port 标志和端口表达式来指定多个侦听器。您不能在单个负载均衡器上混合 TCP 端口与 HTTP/HTTPS 端口。
您可以选择通过传递 --certificate 标志和证书名称来包含证书以保护 HTTPS 端口。可以多次指定此选项,以将其他证书添加到单个负载均衡器,该负载均衡器使用服务名称标识 (SNI) 为请求选择适当的证书。
默认情况下,负载均衡器将在默认 VPC 中创建,并附加到每个可用区的默认 VPC 子网。您可以通过传递带有子网 ID 的 --subnet-id 标志来指定显式子网来覆盖此设置。 HTTP/HTTPS 负载均衡器需要至少连接两个子网,而 TCP 负载均衡器只需要一个。您只能从每个可用区域指定一个子网。
可以选择通过传递 --security-group-id 标志和安全组 ID 来为 HTTP/HTTPS 负载均衡器指定安全组。要添加多个安全组,请多次传递 --security-group-id 和安全组 ID。如果省略 --security-group-id,则将向负载均衡器应用宽松的安全组。
您还可以通过 --scheme 标志选择负载均衡器的方案类型。默认情况下,负载均衡器面向互联网。
fargate lb destroy <load-balancer-name>
销毁负载均衡器
fargate lb alias <load-balancer-name> <hostname>
创建负载均衡器别名记录
为 Amazon Route 53 内和同一 AWS 账户内托管的域创建负载均衡器的别名记录。如果您使用其他 DNS 提供商或在不同帐户中托管您的域,则需要手动创建此记录。
fargate lb info <load-balancer-name>
检查负载均衡器
返回有关负载均衡器的扩展信息,包括负载均衡器使用的侦听器、规则和证书的列表。
证书是由 AWS Certificate Manager 颁发或导入到 AWS Certificate Manager 中的 TLS 证书,用于保护负载均衡器和最终用户之间的流量。 ACM 免费提供 TLS 证书以在 AWS 资源中使用。
fargate certificate list
列出证书
fargate certificate import <domain-name> --certificate <filename> --key <filename> [--chain <filename>]
导入证书
从证书文件、私钥文件和可选的中间证书链文件上传证书。文件必须是 PEM 编码的,并且私钥不得加密或受密码保护。有关更多详细信息,请参阅 AWS Certificate Manager 文档。
fargate certificate request <domain-name> [--alias <domain-name>]
索取证书
证书可以是完全限定的域名(例如www.example.com)或通配符域名(例如*.example.com)。您可以通过 --alias 标志指定其他域名来向证书添加别名。要添加多个别名,请多次传递 --alias。默认情况下,AWS Certificate Manager 每个证书的域名限制为 10 个,但 AWS 支持人员可以提高此限制。
fargate certificate info <domain-name>
检验证书
显示证书的扩展信息。包括对证书的每次验证,该证书显示必须创建的 DNS 记录以验证域所有权。
fargate certificate validate <domain-name>
验证证书所有权
Fargate 将自动创建 DNS 验证记录,以验证 Amazon Route 53 中托管的任何域名的所有权。如果您的证书有别名,则将针对每个别名尝试验证记录。其域托管在其他 DNS 托管提供商或其他 DNS 帐户中并且无法自动验证的任何记录都将具有必要的记录输出。这些记录也可以在fargate certificate info <domain-name>
中找到。
创建 DNS 记录后,AWS Certificate Manager 可能需要几个小时才能完成验证并颁发证书。
fargate certificate destroy <domain-name>
销毁证书
为了销毁证书,任何负载均衡器或任何其他 AWS 资源都不得使用该证书。