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

Bitbucket Pipelines序列条目缩进错误问题求助

解决Bitbucket Pipelines中AWS ECS Run-Task步骤的缩进错误问题

我帮你分析下这个问题——你遇到的「Bad indentation of a sequence entry」是典型的YAML解析错误,根源在于Bitbucket Pipelines的配置是YAML格式,对缩进和字符串边界异常敏感,你的AWS命令里的JSON参数被YAML错误解析成了它的结构元素,导致报错。哪怕你拆成多行,只要没处理好字符串边界,问题依然存在。

错误原因

原来的配置中,aws ecs run-task命令里的--overrides和--network-configuration参数包含了带缩进的JSON内容,YAML会把这些缩进和大括号当成自己的语法结构,而不是命令的一部分字符串,直接触发了缩进错误。

两种正确的解决方法

方法一:用单引号包裹JSON参数(简洁版)

把命令里的JSON参数整体用单引号包裹,让YAML将其视为一个完整的字符串,不会解析内部的结构:

- step:
    name: Migrate database
    script:
      - curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
      - apt-get update
      - apt-get install -y unzip python
      - unzip awscli-bundle.zip
      - ./awscli-bundle/install -b ~/bin/aws
      - export PATH=~/bin:$PATH
      - aws ecs run-task --cluster test-cluster --task-definition test-task --overrides '{ "containerOverrides": [ { "name": "test-container", "command": [ "echo", "hello world" ], "environment": [ { "name": "APP_ENV", "value": "local" } ] } ] }' --network-configuration '{ "awsvpcConfiguration": { "subnets": ["subnet-xxxxxxx"], "securityGroups": ["sg-xxxxxxx"], "assignPublicIp": "ENABLED" }}' --launch-type FARGATE

方法二:用YAML块级字符串拆分命令(易读版)

如果命令太长想拆分多行,用YAML的|符号定义多行字面字符串,配合shell的\续行符,既保留JSON的可读性,又避免YAML解析冲突:

- step:
    name: Migrate database
    script:
      - curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
      - apt-get update
      - apt-get install -y unzip python
      - unzip awscli-bundle.zip
      - ./awscli-bundle/install -b ~/bin/aws
      - export PATH=~/bin:$PATH
      - |
        aws ecs run-task \
          --cluster test-cluster \
          --task-definition test-task \
          --overrides '{
            "containerOverrides": [
              {
                "name": "test-container",
                "command": ["echo", "hello world"],
                "environment": [{"name": "APP_ENV", "value": "local"}]
              }
            ]
          }' \
          --network-configuration '{
            "awsvpcConfiguration": {
              "subnets": ["subnet-xxxxxxx"],
              "securityGroups": ["sg-xxxxxxx"],
              "assignPublicIp": "ENABLED"
            }
          }' \
          --launch-type FARGATE

额外注意点

Bitbucket Pipelines的YAML对缩进要求严格,所有同级元素(比如step下的name和script)必须用相同数量的空格缩进(推荐2个或4个,不要混合),否则也会触发类似的缩进错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:45:29