【问题标题】:AWS CLI - No JSON object could be decodedAWS CLI - 无法解码任何 JSON 对象
【发布时间】:2020-02-19 00:44:03
【问题描述】:

我正在使用 AWS 的 CLI 创建集群并使用 json 文件中的参数。这是我使用的 CLI 命令字符串:

aws emr create-cluster --name "Big Matrix Re Run 1" --ami-version 3.1.0 --steps file://Segmentgroup1.json --release-label --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=2,InstanceType=m3.xlarge --auto-terminate

我的 json 文件 (Segmentgroup1.json) 位于我从中运行 AWS 命令​​字符串的同一文件夹中,但我不断收到以下错误:

No JSON object could be decoded

根据我发现它没有找到 json 文件。有什么想法吗?

【问题讨论】:

  • 您是否认真检查过 JSON 文件的有效性,例如jsonlint.com
  • 看起来可能是这样......奇怪的是它在我的另一台机器上工作,但不是我的 mac。

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


【解决方案1】:

我在我的Mac下遇到了同样的问题,我发现原因是json文件的路径而不是json文件的内容。为了使它正确:

  • 您需要附加 file:// 协议作为路径的前缀
  • 并使用 JSON 文件的绝对路径作为参数

试试这样的:

aws ecs register-task-definition --cli-input-json file://<absolute_path_to_json>/your_json.json

如果你不想硬编码文件路径,你可以使用pwd这样的命令来做到这一点:

aws ecs register-task-definition --cli-input-json file://`pwd`/your_json.json

【讨论】:

  • 谢谢。绝对路径不是必须的。只要 test.json 在当前文件夹中,我就可以使用file://test.json
  • @HarryNg 谢谢,我不知道这是可能的。
【解决方案2】:

这是一个适用于 Windows 的示例命令,其中文件路径语法略有不同:

aws cloudwatch put-metric-data --namespace "EC2 Memory Usage" --metric-data file://C:\Users\Joe\mycode\metric.json

【讨论】:

    【解决方案3】:

    您在这里面临的问题是因为AWS CLI 命令的暴露方式。他们可以直接从命令行获取JSON(作为字符串)或作为 JSON 文件。

    如果您没有通过以URI 格式(以file:// 为前缀)提供文件路径来明确指定您的意图,则该命令会将文件路径本身视为 JSON 字符串并给您此错误。

    【讨论】:

      猜你喜欢
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多