使用 AWS ebextensions,按照他们的文档传递一组命令的正确方法是啥?

Posted

技术标签:

【中文标题】使用 AWS ebextensions,按照他们的文档传递一组命令的正确方法是啥?【英文标题】:Using AWS ebextensions, what is the proper way to pass an array of commands per their docs?使用 AWS ebextensions,按照他们的文档传递一组命令的正确方法是什么? 【发布时间】:2016-10-04 03:52:37 【问题描述】:

Docs

我正在尝试在 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'

/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')

【问题讨论】:

【参考方案1】:

没关系,我只是用 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

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

    test: |
      [[ ! $ENVIRONMENT = "PRODUCTION" ]] && \
      [[ $RDS_HOSTNAME ]] && \
      echo "Refreshing database..."

【讨论】:

谢谢!在这件事上,我一直在撞墙。他们的文档是错误的。 注意,这里的测试语法似乎不起作用。我认为它正在工作,但发现它每次都返回true。我最终将我的命令包装在一个执行相同测试的 if 语句中。

以上是关于使用 AWS ebextensions,按照他们的文档传递一组命令的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 aws 中使用 ebextensions

使用 Rails 部署 AWS - .ebextensions 中的配置文件

我是不是需要 .ebextensions 才能使用 DynamoDB 或 SNS 等 AWS 资源?

AWS codeBuild 不运行 .ebextension 配置

如何在 .ebextensions 配置中使用条件(AWS Elastic Beanstalk)

在 ebextensions 文件中使用环境变量