如果我在 .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?
我最近使用最新的稳定版 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
我正在使用在 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
我的 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 更改的更新。谢谢。
有谁知道如何使用配置文件(.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)
第三种方式,
结合使用commands&files,只能成功安装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
我发现的所有内容是: 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)
我是否仍然需要 && 来分隔命令,还是将它们作为单独的命令执行?或者仍然只有一个命令?
我无法在 /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