ECS 应用程序源包验证错误:我们期望一个 VALUE 令牌,但得到:START_ARRAY

Posted

技术标签:

【中文标题】ECS 应用程序源包验证错误:我们期望一个 VALUE 令牌,但得到:START_ARRAY【英文标题】:ECS Application sourcebundle validation error: We expected a VALUE token but got: START_ARRAY 【发布时间】:2019-06-16 13:39:08 【问题描述】:

我正在 Elastic Beanstalk 上构建一个多容器 docker 构建,并且每当我运行 eb deploy

我收到错误ECS Application sourcebundle validation error: We expected a VALUE token but got: START_ARRAY

我认为我的 Dockerrun.aws.json 可能有问题,但我似乎无法弄清楚它是什么。

这是我的 dockerrun.aws.json


"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
    
        "environment": [
            
                "name": "ELASTICSEARCH_URL",
                "value": "elasticsearch:9200"
            
        ],
        "essential": true,
        "image": "902260087874.dkr.ecr.ap-southeast-1.amazonaws.com/the-medical-agora",
        "memory": 128,
        "links": [
            "db",
            "elasticsearch"
        ],
        "mountPoints": [
            
                "containerPath": "/usr/src/app",
                "sourceVolume": "."
            
        ],
        "name": "app",
        "portMappings": [
            
                "containerPort": 3000,
                "hostPort": 80
            
        ]
    ,
    
        "memory": 128,
        "essential": true,
        "image": "postgres:10.3-alpine",
        "mountPoints": [
            
                "containerPath": "/var/lib/postgresql/data",
                "sourceVolume": "Db"
            
        ],
        "name": "db",
        "portMappings": [
            
                "containerPort": 5432,
                "hostPort": 5432
            
        ]
    ,
    
        "memory": 128,
        "essential": true,
        "image": "docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4",
        "mountPoints": [
            
                "containerPath": "/usr/share/elasticsearch/data",
                "sourceVolume": "Esdata1"
            
        ],
        "name": "elasticsearch"
    
],
"volumes": [
    
        "host": 
            "sourcePath": "esdata1"
        ,
        "name": "Esdata1"
    ,
    
        "host": 
            "sourcePath": "db"
        ,
        "name": "Db"
    ,
    
        "host": 
            "sourcePath": "."
        ,
        "name": "_"
    
]

这很奇怪,因为当我在上面运行这个 dockerrun.aws.json JSON schema linter 时,它似乎运行良好。

当我使用eb local run 运行该项目时,它也可以工作。它似乎只有在我将其部署到 Elastic Beanstalk 时才会中断。

【问题讨论】:

【参考方案1】:

大家好,在阅读了eb deploy 的docs 之后,我发现了问题。

虽然我修复了 Dockerrun.aws.json 文件,但它不会反映在 eb deploy 上,直到我创建一个新的 git commit

所以我只是跑了git add .git commit,然后跑了git push 以取得好成绩。

之后,当我运行 eb deploy 时,它使用了我的新 Dockerrun.aws.json,我的问题得到了解决。

【讨论】:

以上是关于ECS 应用程序源包验证错误:我们期望一个 VALUE 令牌,但得到:START_ARRAY的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 cloudformation yaml 创建 AWS::ECS::Service,模型验证失败

AWS EBS 错误:源包为空或超过允许的最大大小:524288000

Eslint 期望在函数 array-callback-return 错误中返回一个值

亚马逊 ecs 服务中任务的“期望计数”是多少?

如何应用 cross_val_score 来交叉验证我们自己的模型

验证错误;期望方法 controllers.Secure$Security.authentify 中的堆栈映射帧