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
相关产品推荐
相关产品推荐

