Amazon web services 代码构建YML格式和语法

Amazon web services 代码构建YML格式和语法,amazon-web-services,aws-codebuild,Amazon Web Services,Aws Codebuild,我已经在ubuntu服务器上建立并运行了一个codebuild项目,用于从快照克隆rds数据库服务器。它的很多功能都如预期的那样工作,但是当我尝试在buildspec.yml中包含以下类似的内容时,工作失败了,它不喜欢这个命令 猜测这份工作不喜欢格式,但却有点不知所措 -while[$(aws rds描述数据库集群——数据库集群标识符mysql-dev-20201009 | grep-c'“状态”:“可用”)-eq 0];做呼应“睡眠60秒”;睡眠60;完成 以下是完整的buildspec文件:

我已经在ubuntu服务器上建立并运行了一个codebuild项目,用于从快照克隆rds数据库服务器。它的很多功能都如预期的那样工作,但是当我尝试在buildspec.yml中包含以下类似的内容时,工作失败了,它不喜欢这个命令

猜测这份工作不喜欢格式,但却有点不知所措

-while[$(aws rds描述数据库集群——数据库集群标识符mysql-dev-20201009 | grep-c'“状态”:“可用”)-eq 0];做呼应“睡眠60秒”;睡眠60;完成

以下是完整的buildspec文件:

Version: 0.2
phases:
  install:
    runtime-versions:
      python: 3.7
  pre_build:
    commands:
      - pip install --upgrade pip
      - pip3 install awscli --upgrade --user
      - export SOURCEDBENV=mysql-dev
      - export DATE=`date +%Y%m%d`
      - export TARGETDBENV=$SOURCEDBENV-$DATE
      - echo $TARGETDBENV
      - export PREARNSNAP=$(aws rds describe-db-cluster-snapshots --db-cluster-identifier $SOURCEDBENV --query="reverse(sort_by(DBClusterSnapshots, &SnapshotCreateTime))[0]|DBClusterSnapshotArn" )
      - export ARNSNAP=`echo $PREARNSNAP | tr -d '"'` 
      - echo $ARNSNAP
      - aws rds restore-db-cluster-from-snapshot --snapshot-identifier $ARNSNAP --db-cluster-identifier $TARGETDBENV --engine aurora-mysql
      - aws rds create-db-instance --db-instance-identifier $TARGETDBENV --db-instance-class db.t3.medium --db-subnet-group-name db_subnet_grp_2019 --engine aurora-mysql --db-cluster-identifier $TARGETDBENV
      - while [ $(aws rds describe-db-cluster-endpoints --db-cluster-identifier $DBNAME | grep -c available) -eq 0 ]; do echo "sleep 60s"; sleep 60; done
      - echo "Temp db ready"
      - export ENDPOINT=$(aws rds describe-db-cluster-endpoints --db-cluster-identifier $DBIDENTIFIER| grep "\"Endpoint\"" | grep -v "\-ro\-" | awk -F '\"' '{print $4}')
      - echo $ENDPOINT
  build:
    commands:
      - echo Build started on `date`
      - echo proceed db connection to $ENDPOINT
      - echo proceed db migrate update, DDL proceed here
      - echo proceed application test, CRUD test run here
  post_build:
    commands:
      - echo Build completed on `date`
      - echo $DBNAME

也许您可以利用AWS cli中的命令

而不是使用
while
循环,只是为了让db实例可用

aws rds wait db实例可用--filters Name=db cluster id,value=$TARGETDBENV
你能分享更多你的
buildspec.yml
文件吗,这样我们就可以看到这个文件在你的模板中的什么地方运行了?更新了原始帖子