在 ElasticBeanstalk 上预部署脚本

the*_*ing 3 ruby-on-rails amazon-web-services amazon-elastic-beanstalk

我正在将 Rails 应用程序部署到 AWS。其中一个 gem 具有依赖性,需要在bundle install部署期间运行之前在服务器上安装某些文件。在我的.ebextensions文件中我有以下内容

01-oracle_sdk:
    sources:
      /usr/lib: https://s3-us-west-2.amazonaws.com/xyz/instantclient-sdk-linux.x64-12.2.0.1.0.zip
  02-oracle-basic:
    sources:
      /usr/lib: https://s3-us-west-2.amazonaws.com/xyz/instantclient-basic-linux.x64-12.2.0.1.0.zip
  03-oracle_sql_plus:
    sources:
      /usr/lib: https://s3-us-west-2.amazonaws.com/xyz/instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
  04-container_commands:
    00_oracle_dir:
      command: "export LD_LIBRARY_PATH=/usr/lib/instantclient_12_1"
Run Code Online (Sandbox Code Playgroud)

据我所知,这些都没有在部署前运行。当它尝试安装 gem 时会失败,因为该目录不存在。当我通过 SSH 进入实例时,LD_LIBRARY_PATH未设置 ,并且命令未下载并解压缩任何 zip 文件source

1) 我的语法是否正确 2) 如何获取这些命令来执行预部署/捆绑安装?

the*_*ing 5

EB 有一个特定的文件夹,您可以在其中执行脚本来运行预部署。我使用我想要在部署前执行的 bash 命令.config在我的文件中创建了一个文件。它创建一个运行的.ebextensions文件"/opt/elasticbeanstalk/hooks/appdeploy/pre/

001_脚本.config

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/001_oracle.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      bash commands you want executed here
      ...
      ...
Run Code Online (Sandbox Code Playgroud)