Php 特定环境下的Elastic Beanstalk-set.htpasswd

Php 特定环境下的Elastic Beanstalk-set.htpasswd,php,amazon-web-services,amazon-elastic-beanstalk,.htpasswd,Php,Amazon Web Services,Amazon Elastic Beanstalk,.htpasswd,我在Elastic Beanstalk中有一个PHP网站,配置在两个环境中,一个是生产环境,一个是阶段环境。在每个环境中,我都有一个APPLICATION_ENV环境变量集,它向代码标识运行它的环境。我不想让公众访问我的舞台网站,我想在这个环境中放置一个htpasswd,但不在制作环境中 为了实现这一点,我在.ebextensions中创建了一个配置。整个.ebextensions文件夹有三个文件: 01stage.config container_commands: command-01:

我在Elastic Beanstalk中有一个PHP网站,配置在两个环境中,一个是生产环境,一个是阶段环境。在每个环境中,我都有一个APPLICATION_ENV环境变量集,它向代码标识运行它的环境。我不想让公众访问我的舞台网站,我想在这个环境中放置一个htpasswd,但不在制作环境中

为了实现这一点,我在.ebextensions中创建了一个配置。整个.ebextensions文件夹有三个文件:

  • 01stage.config

    container_commands:
      command-01:
        command: "/bin/bash .ebextensions/set_stage_htpasswd.sh"
        leader_only: true
    
  • 设置\u stage\u htpasswd.sh

    #!/bin/bash
    if [ "$APPLICATION_ENV" == "stage" ]; then
      cp /var/app/current/.ebextensions/.htpasswd /var/app/current/ 
    fi
    
  • .htpasswd

    my_username:my_password
    
  • 我希望Elastic Beanstalk运行配置文件01stage.config,该文件将依次运行shell脚本set_stage_htpasswd.sh以将.htpasswd文件复制到特定位置

    但是,当我尝试部署时:

  • 我在事件日志中收到一条错误消息:

    实例:i-2f795c6e模块:AWSEBAutoScalingGroup配置集:实例上的null命令失败。返回代码:1输出:生成期间出错:命令-01失败

  • Elastic Beanstalk通知我,它已经部署了应用程序,并且正在运行新版本,但实际上还没有部署新代码,并且仍在运行前一个版本


  • 这是尝试实现这一目标的正确方法还是有更好的替代方法。

    我认为
    命令:
    行中的引号给您带来了问题。如果shell正在寻找一个非常奇怪的命令,我不会感到惊讶。。。但是,即使没有问题,使用
    test:
    指令有条件地执行所需的文件复制操作也可能更容易。试着做一些类似的事情:

    container_commands:
        command-01: cp .ebextensions/.htpasswd /var/app/current
        test: "[ .$APPLICATION_ENV. = .stage. ]"
    
    (环境变量
    container\u命令:
    ,但我不确定(您需要验证)它们是否也可以在本节的
    测试:
    部分中使用。)