从PowerShell运行aws emr create-cluster时出错

时间:2016-04-15 23:13:43

标签: powershell amazon-web-services amazon-ec2 emr amazon-emr

在PowerShell脚本中运行时,以下命令失败:

aws emr create-cluster --steps file://./monthly_step.json --ec2-attributes KeyName=ff_test,InstanceProfile=EMR_EC2_DefaultRole --release-label emr-4.0.0   --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=2,InstanceType=m3.xlarge --auto-terminate

错误消息是:

Parameter validation failed:
Missing required parameter in [0]: "InstanceCount"
Missing required parameter in [0]: "InstanceType"
Missing required parameter in [1]: "InstanceGroupType"
Missing required parameter in [1]: "InstanceType"
Missing required parameter in [2]: "InstanceCount"
Missing required parameter in [2]: "InstanceGroupType"
Missing required parameter in [3]: "InstanceCount"
Missing required parameter in [3]: "InstanceType"
Missing required parameter in [4]: "InstanceGroupType"
Missing required parameter in [4]: "InstanceType"
Missing required parameter in [5]: "InstanceCount"
Missing required parameter in [5]: "InstanceGroupType"

此命令在标准Windows cmd提示符下成功执行。

aws s3命令可以在PowerShell中正常运行。导致此aws emr失败的原因是什么?

1 个答案:

答案 0 :(得分:3)

我无法访问类似的测试环境,但从外观来看,我认为PowerShell会在某些参数中看到数组。即使我对问题的细节有误,我认为解决方案很明确。

当你说它在cmd中正常工作时告诉我我们需要告诉PowerShell停止解释你正在写的内容。因此,我认为您需要使用stop parsing operator --%。来自TechNet:

  

Windows PowerShell 3.0中引入的停止解析符号( - %),       指示Windows PowerShell不要将输入解释为       Windows PowerShell命令或表达式。

     

在Windows PowerShell中调用可执行程序时,请放置       在程序参数之前停止解析符号。这种技术是       比使用转义字符更容易防止误解。

此处可能不需要呼叫运营商,但也不会受到伤害。试一试:

& aws emr --% create-cluster ....