通过 Jenkins 创建 Amazon ECS Fargate 任务

Amazon ECS Fargate task creation through Jenkins

我正在尝试通过此命令在 ECS 上创建 ECS fargate 类型的任务 aws ecs register-task-definition --family ${FAMILY} --cli-input-json file://${NAME}-v_${BUILD_NUMBER}.json --region ${REGION} 如文档 here 中所述。 任务定义文件如下

一切似乎都适用于此命令,并且在 CLI 中有正确的响应。但是当我尝试在 Jenkins 中做同样的事情时,我必须设置 CI 环境 它给出以下错误。

Parameter validation failed:
Unknown parameter in input: "cpu", must be one of: family, taskRoleArn, 
networkMode, containerDefinitions, volumes
Unknown parameter in input: "executionRoleArn", must be one of: family, 
taskRoleArn, networkMode, containerDefinitions, volumes
Unknown parameter in input: "memory", must be one of: family, taskRoleArn, 
networkMode, containerDefinitions, volumes
Unknown parameter in input: "requiresCompatibilities", must be one of: 
family, taskRoleArn, networkMode, containerDefinitions, volumes

如果我删除了任务定义 json 文件中的那些标签。它创建了一个我不需要的 EC2 类型任务。我只想创建一个 fargate 启动类型任务。

从您的终端输入

which aws

并从 Jenkins 执行相同的命令。

我猜您会发现您正在使用两个单独的 aws cli 二进制文件(其中一个太旧,无法支持 Fargate。)

实际上,我安装了两个不同的 aws cli。还有一个太老了,无法支持 Fargate。我更新了根级别安装的 cli,而 jenkins 用户使用不支持 Fargate 的过时 cli。