You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CLI执行CodeDeploy部署遇AppSpec格式错误,控制台可正常运行

问题原因

你在create-deployment.json里犯了一个关键错误:appSpecContent.content字段需要的是AppSpec文件的实际内容,而不是文件名。当你填"appspec.json"时,CodeDeploy会把这个字符串本身当作AppSpec内容去解析,这显然不是有效的YAML或JSON,所以触发格式错误提示。控制台能成功是因为它会自动读取你上传的文件内容并传入该字段,而不是直接传文件名。

解决方案

方案1:将AppSpec内容直接嵌入JSON配置

把appspec.json的内容转义成字符串后,直接放到content字段中。

比如你的appspec.json内容为:

{
  "version": "0.0",
  "files": [
    {
      "source": "/",
      "destination": "/var/www/html"
    }
  ]
}

修改后的create-deployment.json应该是:

{
    "applicationName": "myapp",
    "deploymentGroupName": "myapp-test",
    "revision": {
        "revisionType": "AppSpecContent",
        "appSpecContent": {
            "content": "{\"version\": \"0.0\",\"files\": [{\"source\": \"/\",\"destination\": \"/var/www/html\"}]}"
        }
    }
}

方案2:改用S3作为修订源(更推荐)

如果AppSpec文件较大,或者需要复用,建议将文件上传到S3,然后在配置中指定S3路径和格式:

{
    "applicationName": "myapp",
    "deploymentGroupName": "myapp-test",
    "revision": {
        "revisionType": "S3",
        "s3Location": {
            "bucket": "你的S3桶名",
            "key": "appspec.json的存储路径",
            "bundleType": "json"
        }
    }
}

执行CLI命令前确保CodeDeploy服务角色有权限访问该S3桶。

验证YAML格式的AppSpec

如果用YAML格式,同样要把内容嵌入content字段,或者放到S3中指定bundleType: "yaml"。比如嵌入YAML内容的配置:

{
    "applicationName": "myapp",
    "deploymentGroupName": "myapp-test",
    "revision": {
        "revisionType": "AppSpecContent",
        "appSpecContent": {
            "content": "version: 0.0\nfiles:\n  - source: /\n    destination: /var/www/html"
        }
    }
}

内容的提问来源于stack exchange,提问作者MVM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:09:10