【问题标题】:YAML and JSON error aws static.config fileYAML 和 JSON 错误 aws static.config 文件
【发布时间】:2014-10-23 00:50:21
【问题描述】:

我正在尝试在 elasticbeanstalk 上部署一个 node.js 应用程序(我在这里遵循http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html 的指示),需要完成以下操作:

第 6 步 [使用数据库更新应用程序] 第 5 点。在本地计算机上,更新 node-express/.ebextensions/static.config 以将生产标志添加到环境变量。

option_settings:
  - namespace: aws:elasticbeanstalk:container:nodejs:staticfiles
    option_name: /public
    value: /public
  - option_name: NODE_ENV
    value: production

但是当我部署时,我得到了错误:

2014-08-29 10:15:11     ERROR   The configuration file .ebextensions/static.config in application version git-5376bdbd807e9f181e6a907f996068b4075dffe0-1409278503377 contains invalid YAML or JSON. YAML exception: while parsing a block mapping
 in "<reader>", line 1, column 1:
    option_settings:
    ^
expected <block end>, but found BlockEntry
 in "<reader>", line 5, column 1:
    - option_name: NODE_ENV
    ^
, JSON exception: Unexpected character (o) at position 0.. Update the configuration file.

我是新手,无法弄清楚如何纠正它。请帮忙。

【问题讨论】:

    标签: json node.js amazon-web-services yaml amazon-elastic-beanstalk


    【解决方案1】:

    您能否指定您使用哪个文本编辑器来创建此 YAML 文件?你有没有机会在 Windows 机器上?我的第一个猜测是您的配置文件中可能有一些无效字符在文本编辑器中不可见。如果您还没有这样做,您可以仔细检查文件中是否没有 ctrl 字符等。我一般会在 vim 中检查此类无效字符。

    第二件事要检查:YAML 对空格和缩进很敏感,所以你能仔细检查你的缩进是否正确。我找到了这个在线网站来验证你的 YAML 格式。你可以试试看。

    您也可以在配置文件中尝试以下 JSON。只需用这个 JSON 替换 YAML 文件的内容,它就可以工作了。

    {
      "option_settings": [
        {
          "option_name": "/public", 
          "namespace": "aws:elasticbeanstalk:container:nodejs:staticfiles", 
          "value": "/public"
        }, 
        {
          "option_name": "NODE_ENV", 
          "value": "production"
        }
      ]
    }
    

    如果没有无效字符并且缩进正确,文档中指定的 YAML 应该可以正常工作。现在你可以试试上面的json。

    【讨论】:

    • 您的 JSON 解决方案运行良好。谢谢。我怀疑是压痕。顺便说一句,我正在使用 Mac 和 Eclipse。
    • 亚马逊网站不包含 JSON 配置示例,非常感谢!
    • 我在尝试查找任何 json 示例时遇到了同样的问题,这是第一个。标签一直在 yaml 中搞乱我。我有一个半复杂的 yaml 文件,并使用了以下 yaml 到 json 转换器,它工作正常! yamltojson.com +1
    【解决方案2】:

    尝试设置应用环境的命名空间 --> aws:elasticbeanstalk:application:environment

    .yaml 更人性化

    option_settings:
      - namespace: aws:elasticbeanstalk:container:nodejs:staticfiles
        option_name: /public
        value: /public
      - namespace: aws:elasticbeanstalk:application:environment
        option_name: NODE_ENV
        value: productio
    

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 2022-08-04
      • 1970-01-01
      • 2020-04-24
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多