标签: ebextensions

AWS Elastic Beanstalk .ebextensions 的优先顺序

如果我在 .ebextensions 文件夹中的两个配置文件中应用一个设置,最后一个文件是否会覆盖第一个文件中的设置?

例如,使用定义了实例角色设置的两个文件:

.ebextensions/0001-base.config

option_settings:
  IamInstanceProfile: aws-ec2-role
Run Code Online (Sandbox Code Playgroud)

.ebextensions/0010-app.config

option_settings:
  IamInstanceProfile: aws-app-role
Run Code Online (Sandbox Code Playgroud)

Beanstalk EC2 实例将被赋予哪个角色?aws-ec2-role 还是 aws-app-role?

amazon-web-services amazon-elastic-beanstalk ebextensions

5
推荐指数
1
解决办法
2012
查看次数

弹性豆茎需要 python 3.5

我最近使用最新的稳定版 python (3.5) 创建了一个新的 python 程序。遗憾的是,AWS EB 不提供 3.5 基础映像。我一直在尝试配置.ebextensions以获取图像以升级 python 发行版,因为它是第一个操作。我没有成功。我尝试了以下方法:

套餐

packages:
    yum:
        postgresql93-devel: []
        python35: []
Run Code Online (Sandbox Code Playgroud)

命令

container_commands:
      01_install_packages:
        command: 'yum install -y python35 python35-pip' 
Run Code Online (Sandbox Code Playgroud)

在 的情况下container_commands,日志确实显示成功安装了 python 35。但是,我们的代码(在后续命令中)然后以一种只有在源代码为 3.4 或更低版本的 python 时才有可能的方式失败。我假设虽然安装了3.5,但环境没有切换到它作为源,继续使用3.4发行版。

我们不能手动修改环境,因为我们需要我们的配置为自动扩展做好准备。因此,解决方案必须来自.ebextensions. 这里的任何帮助将不胜感激。

更新

我收到一封来自 AWS 支持的电子邮件,通知我,由于操作系统和应用程序 python 环境紧密耦合(即相同),因此无法将应用程序的默认 python 版本更改为 python 3.5。他们建议我创建一个 docker 镜像。我已经开始研究如何做到这一点。如果我想出一个解决方案,我会在这里发布。

python amazon-web-services python-3.x amazon-elastic-beanstalk ebextensions

5
推荐指数
1
解决办法
1697
查看次数

AWS EB + Nginx,更新 access.log 格式或创建新日志

我正在使用在 64 位 Amazon Linux/4.5.0 和 Nginx 上运行的配置 Node.js 在 AWS 的 Elastic Beanstalk 上运行应用程序。

我想将请求标头“X-My-Header”作为字段添加到 access.log。除此之外,我将使用复合默认 nginx 日志 + 我的标头创建一个新的日志文件。我发现了几个专门关于使用 nginx 进行日志记录的类似问题,但是 EB 方面在如何通过 /.ebextensions 配置文件更新 nginx 配置方面抛出了一个额外的曲线球。

我已经创建了一个日志文件,但它没有填充任何东西。我也尝试过只更新 access.log 文件,但这似乎也没有发生。我看到其他人添加标头会使用“$http_”格式,看起来“X-Header-Example”的http请求标头被格式化为“$http_header_example”(参见nginx复合默认中的“$http_user_agent”) ,虽然不想在假设上浪费时间,但请注意,我添加了“$http_x-my-header”和“$http_x_my_header”。

尝试 1:更新现有的 access.log 格式

files:
  /etc/nginx/conf.d/01_proxy.conf:
      owner: root
      group: root
      content: |
          log_format my_log_format '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" - "$http_x_my_header" - "$http_x-my-header"';
          access_log /var/log/nginx/access.log my_log_format;
Run Code Online (Sandbox Code Playgroud)

结果:access.log 不包含任何其他字段。它甚至没有空的""s 或-.

尝试 2:创建一个新的日志文件

files:
  /etc/nginx/conf.d/01_proxy.conf:
      owner: root …
Run Code Online (Sandbox Code Playgroud)

logging nginx amazon-web-services amazon-elastic-beanstalk ebextensions

5
推荐指数
1
解决办法
1966
查看次数

如何通过 ebextensions 覆盖 Elastic Beanstalk 环境变量?

我的 EB 环境有一些我通过 AWS Web 控制台设置的环境变量。但是,我现在希望通过 ebextensions 设置这些环境变量。

问题是,我似乎无法覆盖最初通过 AWS Web 控制台设置的变量。

不过,覆盖 ebextensions 显式设置的环境变量是可以的。

我的 ebextensions 文件如下所示:

option_settings:
  aws:elasticbeanstalk:application:environment:
    oldVar: updatedTestValue
    newVar: newValue
Run Code Online (Sandbox Code Playgroud)

newVar每当我更新我的 ebextensions 文件时都会更新。但是oldVar,我通过控制台设置的变量拒绝更新。

关于如何让电子扩展按预期工作有什么想法吗?我真的很想避免这样的情况:我必须删除之前设置的环境变量并快速部署包含 ebextensions 更改的更新。谢谢。

amazon-web-services amazon-elastic-beanstalk ebextensions

5
推荐指数
1
解决办法
1169
查看次数

如何使用配置文件(.ebextensions)在AWS Elastic Beanstalk上安装PHP IMAP Extension?

有谁知道如何使用配置文件(.ebextensions)在AWS Elastic Beanstalk上安装和启用PHP IMAP Extension?

我正在使用运行PHP 7.0.16的64位Amazon Linux 2017.03 v2.4.0

我尝试了以下几种方法:

我尝试files在配置文件中使用的第一种方法,但是它不起作用,配置文件名phpini.config位于.ebextensions以下设置的目录中:

files:
  "/etc/php.d/phpimap.ini":
    mode: "000755"
    owner: root
    group: root
    content: |
      extension=imap.so
Run Code Online (Sandbox Code Playgroud)

通过显示.ini解析成的其他文件phpinfo()/etc/php-7.0.d/phpimap.ini但不会安装IMAP。

第二个方式 使用container_command安装PHP-IMAP,但我得到的错误。

container_commands:
  install_php_imap:
    command: yum install php55-imap
Run Code Online (Sandbox Code Playgroud)

错误如下图: 错误第二种方式

第三种方式, 结合使用commandsfiles,只能成功安装IMAP和相关性(php通用),但不会激活IMAP

一种。通过添加以下脚本在.ebextensions中创建installdependencies.config:

commands:
  install_phpcommon:
    test: '[ ! -f /etc/php.d/curl.ini ] && echo "php common not installed"'
    command:
      yum -y install https://archipelagointernational.s3.amazonaws.com/libs/php70w-common-7.0.16-1.w6.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)

b。通过添加以下脚本在我的.ebextensions中创建phpini.config:

commands: …
Run Code Online (Sandbox Code Playgroud)

php imap amazon-web-services amazon-elastic-beanstalk ebextensions

4
推荐指数
1
解决办法
1532
查看次数

我可以将 eb 扩展容器命令放在多行上吗?如果可以的话,该怎么做?

我发现的所有内容是: https: //forums.aws.amazon.com/thread.jspa ?threadID=112988

我知道我可以这样做:

container_commands:
   07_run_command:
      "mkdir -p /var/cache/tomcat8/temp/.m2/repository && chmod 777"
Run Code Online (Sandbox Code Playgroud)

但我可以这样做吗?

container_commands:
   07_run_command:
      mkdir -p /var/cache/tomcat8/temp/.m2/repository && 
      chmod 777
Run Code Online (Sandbox Code Playgroud)

我是否仍然需要 && 来分隔命令,还是将它们作为单独的命令执行?或者仍然只有一个命令?

amazon-web-services amazon-elastic-beanstalk ebextensions

3
推荐指数
1
解决办法
1932
查看次数

为什么我不能在 Elastic Beanstalk 上编写带有 .ebextensions 的文件?

我无法在 /etc/httpd/conf.d/elasticbeanstalk 中写入带有 .ebextensions 的文件。我需要编写一个 vhost.conf 来添加子域。我在我尝试了很多方法:用“files:...”写文件

files:
  "/etc/httpd/conf.d/elasticbeanstalk":
    mode: "000777"
    owner: root
    group: root
    encoding: plain
    content: |
      NameVirtualHost *:80
  
      <VirtualHost *:80>
        ServerName api.domain.com
        DocumentRoot "/var/app/current/api/"
        <Directory "/var/app/current/api">
          AllowOverride All
          Require all Granted
        </Directory>
      </VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然后我尝试将此文件写入临时目录并使用命令将其复制到 /etc/httpd/conf.d/elasticbeanstalk

files:
  "/home/ec2-user/vhost.conf":
    mode: "000777"
    owner: root
    group: root
    encoding: plain
    content: |
      NameVirtualHost *:80

      <VirtualHost *:80>
        ServerName api.domain.com
        DocumentRoot "/var/app/current/api/"
        <Directory "/var/app/current/api">
          AllowOverride All
          Require all Granted
        </Directory>
      </VirtualHost>

container_commands:
  00_chmod:
    command: "sudo chmod 777 /etc/httpd/conf.d/elasticbeanstalk"
  01_rewrite:
    command: "sudo mv -f /home/ec2-user/vhost.conf …
Run Code Online (Sandbox Code Playgroud)

apache amazon-web-services amazon-elastic-beanstalk ebextensions

2
推荐指数
1
解决办法
612
查看次数