AWS CLI执行run-task命令报错:Unknown options: awsvpcConfiguration
解决AWS CLI执行
ecs run-task时的Unknown options: awsvpcConfiguration错误 这个问题我之前也碰到过,核心原因是你的--network-configuration参数格式不符合AWS CLI的要求,shell把参数里的空格分隔部分当成了独立的未知选项,所以才会触发报错。
错误根源
你原来的命令里,awsvpcConfiguration的内容没有被正确包裹,shell会将整个配置拆分成多个零散的部分(比如awsvpcConfiguration=securityGroups=[test]),这些都是AWS CLI不认识的选项,自然就会抛出“Unknown options”的错误。
正确的命令写法
有两种可靠的方式来解决这个问题:
方式1:用单引号包裹整个awsvpcConfiguration块
单引号可以阻止shell解析内部的空格、括号等特殊字符,让AWS CLI正确识别完整的配置内容:
aws ecs run-task --cluster test-ecs-cluster --task-definition testtask --launch-type FARGATE --network-configuration 'awsvpcConfiguration={subnets=["subnet-1234","subnet-12345"],securityGroups=["test"],assignPublicIp="DISABLED"}'
方式2:使用--cli-input-json传入完整JSON请求体
如果觉得嵌套的键值对格式容易出错,推荐直接用JSON格式传递所有参数,这种方式更清晰,也不容易出现解析问题:
aws ecs run-task --cli-input-json '{ "cluster": "test-ecs-cluster", "taskDefinition": "testtask", "launchType": "FARGATE", "networkConfiguration": { "awsvpcConfiguration": { "subnets": ["subnet-1234","subnet-12345"], "securityGroups": ["test"], "assignPublicIp": "DISABLED" } } }'
额外提示
在使用AWS CLI传递包含复杂结构的参数时,一定要注意shell的解析规则:
- 单引号(
')会完全保留内部内容的原样,不会解析任何变量或特殊字符 - 双引号(
")会解析内部的变量,但不会拆分空格(不过如果内部有嵌套的双引号,需要用反斜杠转义)
内容的提问来源于stack exchange,提问作者Arockia Antony
相关产品推荐
相关产品推荐

