问题标签 [ebextensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1769 浏览

python - 弹性豆茎需要 python 3.5

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

套餐

命令

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

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

更新

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

0 投票
3 回答
7306 浏览

amazon-web-services - AWS Elastic Beanstalk:如何在 ebextensions 中使用环境变量?

我们正在尝试将环境特定的应用程序配置文件存储在 s3 中。这些文件存储在不同的子目录中,这些子目录以环境命名,并且环境也作为文件名的一部分。

例子是

Elastic Beanstalk 环境被命名为dev、stg、prd,或者我还在 Elastic Beanstalk 中定义了一个名为 ENVIRONMENT 的环境变量,它可以是dev、stg 或 prd

我现在的问题是,从 .ebextensions 中的配置文件下载配置文件时,如何引用环境名称或 ENVIRONMENT 变量?

{"Ref": "AWSEBEnvironmentName" }我尝试在 .ebextensions/myapp.config 中使用引用,但在部署时出现语法错误。

.ebextensions/myapp.config 的内容是:

我得到的错误是:

在 AWS Elastic Beanstalk 的 .ebextensions 配置文件中引用环境变量的正确方法是什么?

0 投票
1 回答
1183 浏览

.net - 从 .ebextensions 中的 Elastic Beanstalk 读取环境属性

我在 Amazon 上的 Elastic Beanstalk 中设置了一些属性及其值。一个例子是: 在此处输入图像描述

我有一个 .NET 应用程序,我将在带有 IIS 的 EC2 Windows 服务器上部署它。.NET 项目包含一个.ebextensions文件夹,我们在其中包含.config文件以进行进一步的配置。

现在是我的问题。我是否能够读取属性的值(所以从文件夹中的.config文件中的属性 DB.Username 中读取“root” .ebextensions

我试过这样的东西,但似乎 Elastic Beanstalk 的属性不是真正的 Windows 环境变量

web.config我知道我的项目中也使用了这些变量。但是从这个文件中获取值对我来说似乎是一个丑陋的解决方案?

0 投票
0 回答
93 浏览

amazon-web-services - aws elasticbeanstalk 配置

我最近发现了 ebextensions 配置中的函数功能,但似乎无法弄清楚语法。也许我想做的事情是不可能的?

我的目标是将当前的 endpointURL 传递给应用程序。我也尝试只获取 CNAME 并执行 FN::Join

0 投票
1 回答
1349 浏览

amazon-web-services - AWS Elastic Beanstalk - EB 扩展不起作用

很久以前我已经这样做了,但现在它不起作用...... :)

我正在尝试在 ElasticBeanstalk 应用程序中使用 EBExtensions。我创建了一个普通的 Elastic Beanstalk 环境,没有超出默认配置的配置。我给了它一个具有如下目录结构的应用程序版本:

重要的部分是我的可部署工件的根目录中有一个名为 .ebextensions 的文件夹,我认为它应该位于该位置。

该文件内的 40testextension.config 文件具有以下内容:

我在创建环境的时候上传了那个版本,环境创建成功。但是当我查找该文件时,它不存在。此外,当在 /var/log 的日志中为该 ebextension 文件名执行递归 grep 时,我只得到一个结果:

查看日志后,当工件被下拉到主机时,文件似乎存在,但 ebextension 从未给出任何正在运行的指示。

我在这里想念什么?我在遥远的过去做过这件事,并且工作得非常好,但是这次我似乎无法让 Beanstalk 部署生命周期执行该事情。

0 投票
1 回答
3094 浏览

node.js - 为 Elastic Beanstalk 上的 github 私有存储库访问设置 SSH 密钥

我的 Node.JS 项目包含对托管在 github 上的私有 NPM 存储库的引用。这在本地工作得很好,但我很难让它在 Elastic Beanstalk 上工作。

-

我需要的是能够在我的 Elastic Beanstalk 实例上为 git 设置有效的 SSH 配置,而无需在源代码控制中存储密钥等。

显然,EB 实例没有访问我的私有 github 存储库所需的 SSH 密钥。如果我使用带有username:password@github.com内联的 HTTPS 样式的 git URL,它可以正常工作。它也可以使用 github 提供的oauth 令牌方法(本质上是一个 user:pass)。但是我不希望将任何凭据签入源代码控制,因此我试图从 github 克隆以通过 SSH 在我的 EB 实例上工作。

我已经尝试了上百万种方法,包括npm preinstall根据这篇博客文章编写的脚本,这些脚本在 npm2 之前一直有效,在 npm2 中更改了 preinstall 以在构建树后运行,并且修复该问题的 PR 仍然悬而未决。

我尝试了一个.ebextensions命令配置,它试图调用git configinsteadofgit@github.com 上的一个 HTTPS URL 放入一个带有来自环境变量的 OAUTH 令牌的 HTTPS URL(本身很棘手,因为此时在启动时没有设置 env 变量循环,并且缺少 $HOME 会使 git config 混淆)。

我还尝试了各种不同的方法来.ebextensions在我的 EB 实例上设置 SSH,包括来自上述博客文章的评论中的这个解决方案。这基本上是我现在卡住的地方。

  • 我已经成功创建了一个密钥对,在我的 github 配置文件上进行了设置,并验证了我的本地客户端可以使用私钥来克隆我的 repo
  • 我已将我的私钥和 ssh 配置文件放在私有 S3 存储桶上
  • 根据此示例,我创建了一个.ebextensions files配置,将这两个文件从我的 S3 存储桶复制到/tmp/.ssh/
  • 我创建了一个调试commands .ebextensions配置,其中列出了 /tmp/.ssh 并显示文件已成功从 S3 下载:

/tmp/.ssh/config 包含:

/tmp/.ssh/deploy_key 包含经过验证可以在本地工作的我的私钥。

但是,git 仍然会抛出错误:

我现在没有想法了。我最好的猜测是 /tmp/.ssh 不是 git 查找 ssh 配置文件的路径 - 它可能是在提出链接解决方案时出现的,但可能在以后的 AMI:s 等中发生了变化。使用的环境EB 何时启动似乎有点受限;命令以用户身份运行,nodejs但 /tmp 似乎用作主目录,即使 $HOME 没有在任何地方设置。

如何让 git 获取我的 SSH 配置,从而使用我的 SSH 密钥?如何找出 git 在哪里寻找 SSH 配置文件?通常它在 ~/.ssh 中,但由于 $HOME 没有设置,嗯......这应该很容易,但让我发疯。

0 投票
0 回答
756 浏览

amazon-web-services - 更改弹性豆茎上的实例配置文件

我有一个使用默认实例配置文件运行的弹性 beanstalk aws-elasticbeanstalk-ec2-role。该应用程序在安装过程中使用私有 SSH 密钥访问外部资源,这意味着我正在使用 SSH.ebextensions config file从 S3 复制内容。

但是,由于各种原因,我需要更改实例配置文件,但我发现这非常困难,可能是因为我的代码依赖于实例配置文件,并且通过 AWS Web 控制台进行的配置更改似乎只有在应用程序成功时才会成功当配置更改启动新实例时成功部署(更改实例配置文件会导致启动新实例,然后终止旧实例)。

我认为关键问题是我的.ebextensions文件引用了实例配置文件(aws-elasticbeanstalk-ec2-role):

如果我通过控制台更改实例配置文件,则会启动一个新实例并部署我的应用程序,这将失败,因此配置更改将被还原。如果我首先更改我.ebextensions的角色以使用新角色,则部署将失败,因为引用的实例配置文件与 EB 当前拥有的配置文件不匹配。即使先部署(当然会失败)然后更改配置,似乎不会使用新部署(失败)的版本,而是 EB 可能会回退到以前的版本 - 所以这似乎是一个问题22个场景。

我找到的解决方案是

  1. 从头开始创建一个新环境并从一开始就指定实例配置文件,使用

$ eb create -ip <instance profile>

这是可行的,但可能非常不希望不得不终止现有环境以发布 CNAME 等,以便从头开始重新创建环境。

  1. 部署一个不依赖于实例配置文件的虚拟 Hello World 应用程序,然后在 Web 控制台中更改实例配置文件,然后使用新的实例配置文件部署真实应用程序。

现在,我的问题。

  1. 由于问题似乎是实例配置文件更改和应用程序更改需要以原子方式完成,有没有办法将实例配置文件作为eb deploy命令的一部分更改,例如通过指定实例配置文件.elasticbeanstalk/config.yml

  2. 有没有办法.ebextensions使用不直接引用要使用的实例配置文件的 S3 身份验证规则创建配置文件(无论如何都必须匹配 EB 的配置文件!!),而是“使用当前实例配置文件”?文件必须说明要使用哪个实例配置文件进行身份验证似乎有点多余,.ebextensions而唯一可用的配置文件是 EB 实际持有的配置文件?

  3. 有没有其他方法可以解决这个问题?

0 投票
1 回答
1143 浏览

amazon-web-services - 解析 .ebextension 中的 .config YAML 文件时出现 AWS 错误

部署到 Elasticbeanstalk 时,我的部署失败并出现由 .ebextension 文件夹中的 .config 文件引起的解析错误,但对我来说似乎没问题。任何人都可以告诉我如何解决它?.config 文件如下所示:

和错误:

应用程序版本 git-bce52a5381c7ac6735249419c48b1fe116168610-1494415808045 中的配置文件 .ebextensions/08_htaccess_create_script_post_deploy.config 包含无效的 YAML 或 JSON。YAML 异常:无效的 Yaml:在解析“”第 3 行第 10 列中的块映射时:模式:“000755”,^ 预期,但在“”第 3 行第 24 列中找到 FlowEntry:模式:“000755”,^ , JSON 异常:无效的 JSON:位置 0 的意外字符 (f).. 更新配置文件。

0 投票
1 回答
480 浏览

node.js - Node JS - Elastic Beanstalk AWS - allow write access

I have a NodeJS application i am deploying to AWS Elastic Beanstalk, which needs to be able to write to some JSON files which is in the applications directories.

This is currently working locally but not when i deploy to AWS because clearly write permissions are not there.

Can you please let me know what i need to add to EBEXTENSIONS and how, to allow write access with a NodeJS Elastic Beanstalk app

Thanks

0 投票
0 回答
658 浏览

amazon-web-services - 在 aws elastic beanstalk 上为 nginx 静态资产设置缓存控制标头

我有一个在 AWS EB 上运行的 node express 应用程序。我通过 nginx 而不是通过 express 提供静态资产,并且想要设置缓存控制标头。

我认为答案在于通过 ebextension 文件扩展 nginx 配置,但我尝试过的示例都最终导致我的环境崩溃:-(

请有人帮我提供一个工作版本:-)

这是我尝试过的最新 ebextension,从我读过的所有内容来看,它应该可以工作,但会导致环境崩溃......

files: /etc/nginx/conf.d/02_cache.conf: mode: "000644" owner: root group: root content: | location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { expires 30d; add_header Pragma public; add_header Cache-Control "public"; }