使用AWS ebextensions,按文档传递命令数组的正确方法是什么?

Rya*_*her 5 yaml amazon-web-services amazon-elastic-beanstalk ebextensions

文件

我正在尝试在conainter_commands条目中传递多个命令并不断收到错误.然而,当我传递与单个条目相同的命令时,它工作正常.

作品:

container_commands:
  01_remove_old_dump:
    command: 'rm -f /tmp/db.dump'
  02_get_new_dump:
    command: 'aws s3 cp s3://bucket/db.dump'
Run Code Online (Sandbox Code Playgroud)

失败了 /bin/sh: rm -f /tmp/db.dump: No such file or directory.

container_commands:
  01_remove_old_dump:
    command: ('rm -f /tmp/db.dump' 'aws s3 cp s3://bucket/db.dump')
Run Code Online (Sandbox Code Playgroud)

Rya*_*her 8

没关系,我只是用YAML块打破了线条,这有效:

01_command:
    command: |
      if [[ ! $ENVIRONMENT = "PROD" ]] && [[ $RDS_HOSTNAME ]]
          rm -f /tmp/db.dump
          aws s3 cp s3://bucket/db.dump
          pg_restore -H $RDS_HOSTNAME dbname /tmp/db.dump
          echo "Refreshing database..."
      else
          Echo "Environment is ${ENVIRONMENT}. Skipping database refresh..."
      fi
Run Code Online (Sandbox Code Playgroud)

注意:删除它,它似乎不起作用(总是返回true):

    test: |
      [[ ! $ENVIRONMENT = "PRODUCTION" ]] && \
      [[ $RDS_HOSTNAME ]] && \
      echo "Refreshing database..."
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!我在这永远撞击着墙壁.他们的文档是错误的. (2认同)
  • 请注意,这里的测试语法似乎不起作用。我认为它有效,但发现它每次都返回“true”。我最终将我的命令包装在执行相同测试的 if 语句中。 (2认同)