我正在使用bash脚本动态创建EC2 CLI请求。执行bash脚本时,AWS CLI返回Error parsing parameter '--launch-specification': Invalid JSON:
,但如果我复制CLI字符串并通过CLI直接提交,则CLI命令不会出现任何问题。
当我在终端中使用复制/粘贴时,bash脚本是否会生成一些导致CLI请求失败的代码字符?
BASH SCRIPT CODE
CMD01=("aws --profile ${myProf} --region ${myRegion} ec2 request-spot-instances --spot-price ${PRICE} --instance-count ${6} --type \"one-time\" --launch-specification \"{\\\"ImageId\\\":\\\"${1}\\\",\\\"KeyName\\\":\\\"${2}\\\",\\\"InstanceType\\\":\\\"${!5}\\\",\\\"IamInstanceProfile\\\":{\\\"Arn\\\":\\\"${16}\\\"},\\\"Placement\\\":{\\\"AvailabilityZone\\\":\\\"${18}\\\",\\\"GroupName\\\":\\\"${11}\\\"},\\\"NetworkInterfaces\\\":[{\\\"DeviceIndex\\\":0,\\\"SubnetId\\\":\\\"${4}\\\",\\\"AssociatePublicIpAddress\\\":${17}}],\\\"UserData\\\":\\\"string\\\"}\" --dry-run")
通过
回应echo "$CMD01"
aws --profile myProfile --region eu-west-1 ec2 request-spot-instances --spot-price 0.004 --instance-count 1 --type" one-time" - 启动规范" {\" ImageId \":\" ami-9c7ad8eb \",\" KeyName \":\& #34; myKey \",\" InstanceType \":\" t1.micro \",\" IamIns tanceProfile \":{ \"阿恩\":\" ARN:AWS:IAM :: 000000000000:实例简档/我的资料\"},\"安置\&#34 ;: {\" AvailabilityZone \":\" EU-西-1C \" \"组名\":\"为myGroup \&# 34;},\" NetworkInterfaces \":[{\" DeviceIndex \":0,\" SUBNETID \":\"子网-xxxyyy \" \" AssociatePublicIpAddress \":真}],\"的UserData \":\"串\"}&# 34; --dry运行
通过 ${CMD01[@]} > $logFile
生成错误
解析参数' - 启动规范':无效的JSON: " {\"图像标识\":\" AMI-9c7ad8eb \" \"键名\":\"的myKey \ " \" InstanceType \":\" t1.micro \" \" IamInstanceProfile \":{\"阿恩\":\" ARN:AWS:IAM :: 000000000000:实例简档/我的资料\"},\"安置\":{\" AvailabilityZone \":\" EU-西-1C \" \"组名\":\"为myGroup \"},\& #34; NetworkInterfaces \":[{\" DeviceIndex \":0,\" SUBNETID \":\"子网XXXYYY \&#34 ; \" AssociatePublicIpAddress \":真}],\"的UserData \":\"串\"}"
现在,如果我从终端获取较早的echo echo "$CMD01"
并进行简单的复制/粘贴,那么CLI输出
调用RequestSpotInstances操作时发生客户端错误(DryRunOperation):请求已成功,但设置了DryRun标志。
所以似乎JSON是有效的,但是当从bash脚执行时它是无效的。我做错了什么?
答案 0 :(得分:0)
我认为你有一个bash错误。
尝试:
CMD01=$(aws commands commands...)