【问题标题】:AWS CLI returning "unknown option" on run-instancesAWS CLI 在运行实例上返回“未知选项”
【发布时间】:2017-05-17 21:09:23
【问题描述】:

执行查询:

aws ec2 run-instances --image-id ami-7a85a01a --security-group-ids sg-756ae512 --count 1 --instance-type t2.micro --tag-specifications ResourceType=instance,Tags=[{Key=webserver,Value=production}] --subnet-id subnet-cc0b0e8a

它抛出一个错误说:

Unknown options: --tag-specifications, ResourceType=instance,Tags=[{Key=webserver,Value=production}]

有人知道这是否被贬低,还是语法与预期不同?我一直在绕着这个圈子跑。

新语法的可能解决方案:

aws ec2 run-instances --image-id ami-xxxxxxxxxx  --security-group-ids sg-ef95c791 --count 1 --instance-type m4.2xlarge --key-name mypemkey --query Reservations[*].Instances[*].[PublicIpAddress,InstanceId]

我能想到的最好的,似乎正在工作:

aws ec2 run-instances --image-id ami-7a85a01a --count 1 --instance-type t2.micro --key-name mykeypair --subnet-id sn-756ae512 --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=production}]' --associate-public-ip-address --output=text

【问题讨论】:

  • 您的编辑只显示您删除了--tag-specification 选项,WTF?
  • 正确答案如下。需要升级。大多数情况下,文档告诉我我无法在实例创建过程中添加标签。我发布了我工作的最后一个命令,它将返回实例 ID,它可以传递给下一个命令 - 以标记实例。

标签: amazon-web-services amazon-ec2 aws-cli


【解决方案1】:

我今天遇到了这个问题,经过一个小时左右的时间在臭名昭著的可怕的 AWS 文档中苦苦挣扎,我发现了这个问题。

问题在于安装说明(pip install 和使用捆绑安装程序)是错误的:尽管命令被完美复制并且要求(特别是“Python 2 版本 2.6.5+ 或 Python 3 版本 3.3+ ") 满足,aws-cli 包将永远不会安装/更新超过1.11.13

解决方案:use pip3 install instead of pip install。这将其更新为 1.11.97,从而启用了 --tag-specifications 参数。我不知道这是否会为您解决问题,但我怀疑很多 Ubuntu 用户都会遇到这种情况,所以我还是决定发布它。

【讨论】:

  • 我的系统运行的是 pip 9.0.1 和 Python 2.7,我没有这个问题。所以,我提供了我自己的答案。
  • aws 产品缺乏一致性令人费解,因此总是欢迎有许多不同的可能解决方案。贝索斯以神秘的方式工作。
  • 我认为这并不令人费解。整个想法是独立团队编写自己的入口点。在完成大部分工作之前,编码风格不会合并是很自然的。
【解决方案2】:

根据文档,您的语法是正确的;但是您的 AWS 客户端太旧,无法支持 --tag-specifications 选项。

[至少在 OS X 上] 使用 pip install --upgrade --user awscli 将客户端升级到当前版本。

【讨论】:

    【解决方案3】:

    找到了答案。调用中的不同语法: http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html

    编辑:

    QUERY=$(aws ec2 run-instances --image-id ${AMI_ID} --count 1 --instance-type t2.micro --key-name ${KEY_PAIR} --subnet-id ${SUBNET_ID} \
     --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value='${EC2_TAG}'}]' --associate-public-ip-address --output=text )
    

    【讨论】:

    • 能否为未来的读者提供完整、正确的代码示例?简单地链接到文档而不评论您实际所做的更改并不是 Stack Overflow 上的充分答案。
    • 分享了我的解决方法,不使用“名称”标签。我正在使用 CONemu 模拟器 - 所以没有安装 pip。我认为 Jonathan Voss 的解决方案可能是正确的答案。 AWS CLI 语法可能很棘手。
    【解决方案4】:

    您缺少' --tag-specifications 值的单引号:

    例如。来自aws ec2 run-instances documentation

    aws ec2 run-instances --image-id ami-abc12345 --count 1 --instance-type t2.micro --key-name MyKeyPair --subnet-id subnet-6e7f829e --tag-specifications 'ResourceType=instance,Tags=[{Key=webserver,Value=production}]' 'ResourceType=volume,Tags=[{Key=cost-center,Value=cc123}]'
    

    【讨论】:

    • 试过了,还是一样的输出。
    • 只有你的 shell 需要单引号(在特定情况下),AWS 不需要。
    猜你喜欢
    • 2020-06-12
    • 1970-01-01
    • 2015-11-12
    • 2019-07-15
    • 2023-01-20
    • 1970-01-01
    • 2020-06-26
    • 2020-02-06
    • 2019-07-20
    相关资源
    最近更新 更多