当前位置: 首页 > 知识库问答 >
问题:

bash导致ec2 cli请求的json无效

卫浩瀚
2023-03-14

我使用bash脚本来动态创建EC2 CLI请求。当bash脚本被执行时,AWS CLI返回错误解析参数'--启动规范':无效的JSON:,但是如果我复制CLI字符串并直接通过CLI提交,CLI命令没有问题。

bash脚本是否会生成一些导致CLI请求失败的代码字符,这些字符在终端中使用复制/粘贴时不存在?

BASH脚本代码

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--配置文件myProfile--地区eu-west-1 ec2请求现货实例--现货价格0.004--实例计数1--类型“一次性”--启动规范“{\'ImageId\:\'ami-9c7ad8eb\”,“KeyName\”:“myKey\”,“InstanceType\”:“t1.micro\”,“IamIns TanRofile\”:{\'Arn\:“Arn:aws:iam::000000000000:instance profile/myProfile\”,“Placement\”:{可用区\“:“eu-west-1c\”,“GroupName\”:“myGroup\”,“NetworkInterfaces\”:[{“DeviceIndex\”:0,\“SubnetId\”:“subnet xxxyyy\”,“AssociatePublicAddress\”:true}],“UserData\”:“string\”——试运行

通过${CMD01[@]}执行

产生错误

分析参数“--launch specification”时出错:无效JSON:“{\'ImageId\”:\“ami-9c7ad8eb\”,“KeyName\”:“myKey\”,“InstanceType\”:“t1.micro\”,“IAMSInstanceProfile\”:“{\'Arn\”:\“Arn:aws:iam::00000000000000:实例配置文件/myprofile\”,“Placement\”:“:{\'AvailabilityZone\”:“eu-west-1c\”,“GroupName\”:“myGroup\”,“,“{\”,“:”网络接口\\”,“[\”DeviceIndex\:0、\“子网ID\:\“子网xxxyyy\”、\“AssociatePublicAddress\”:true}]、\“UserData\”:“string\”}

现在,如果我从终端获取较早的echoecho"$CMD01"并执行简单的复制/粘贴,则CLI输出

调用RequestSpotInstances操作时发生客户端错误(DryRunOperation):请求本应成功,但设置了DryRun标志。

因此,JSON似乎是有效的,但从bash脚本执行时,它是无效的。我做错了什么?


共有1个答案

闾丘树
2023-03-14

我认为你犯了一个bash错误。

尝试:

CMD01=$(aws commands commands...)
 类似资料:
  • 我有一个jersey服务器的例子,它适用于XML,但不适用于JSON。 如果我将此xml请求作为发送到服务器,则一切正常, 作为) 我在utilities-online.info将其翻译为JSON,并将其作为发送到相同的URL,具有相同的参数,但收到错误“400错误请求” 环境: Tomcat 7 球衣2.17 我尝试过的: 将添加到init-参数 启用init-参数为 添加了依赖项//

  • 我正在尝试使用RestTemplate将外部API集成到我的Spring MVC应用程序中。 除非我不必将JSON作为请求参数传递给API调用,否则它工作得非常好。这样的尝试每次都会导致,就我在API日志中查看的情况而言,我的JSON参数没有被API解码(它看起来仍然像编码字符串)。 我认为它可能与我请求中的标头有关,但一旦我添加了和,错误仍然相同。有人能给我一个建议我的实现可能有什么问题吗? 事

  • 问题内容: 我已经定义了此路由,但是对它的任何请求都会卡在“待处理”中并永远运行。 当我记录代码时,我看到后面跟着,这意味着find方法中的代码永远不会执行 模型 关于这是为什么的任何想法? 问题答案: 在您致电之前,您的猫鼬查询只会简单地排队。 在启动代码中添加如下代码以进行连接: 在连接字符串中,用数据库名称替换。

  • 我有一个webservice,它需要某种请求格式。发送无效的请求格式时,出现以下错误: 发生这种情况时,我需要发送一封电子邮件。在这封电子邮件中,我需要传入的请求(我发送到webservice的XML)。 我尝试实现CXF拦截器: 但是如何在此处获取发送到webservice的原始消息?Apache CXF拦截器没有太多文档记录:( 提前感谢! Hejk公司

  • 我有一个现有的spring boot应用程序。我刚刚在、中添加了acturetor。 执行器工作有响应代码错误 来自日志:看起来spring无法解析某个参数。下面是日志。 019-05-15 14:38:24.747 DEBUG 8964---[nio-8090-exec-3]o.s.web.servlet.dispatcherServlet:GET“/acturet/health”,parame

  • 问题内容: 我正在尝试调试我写的一个简单REST库时遇到的非常异常的错误。 我使用标准的net / http包发出Get,Post,Put,Delete请求,但是当我连续发出多个请求时,我的测试有时会失败。我的测试看起来像这样: 我正在这样请求: 有时它可以工作,但是大多数时候我会出现1或2个失败: 当我提出多个请求时,就会发生失败。如果我注释掉除PUT请求之外的所有内容,则测试将始终通过。一旦包