我将在 VPC 的默认子网中的 Elastic Beanstalk 自动扩展组中拥有多个 EC2 实例。这些 EC2 实例上的应用程序需要连接到使用 IP 地址白名单的第三方服务才能允许访问。所以我需要一个或多个静态 IP 地址,我可以将这些地址提供给该服务提供商,以便将它们添加到白名单中。我的理解是,获得静态 IP 的唯一方法是获得弹性 IP 地址。而且我一次只能将弹性 IP 与一个 EC2 实例相关联——我无法将它与我的整个子网或互联网网关相关联(这是正确的吗?)。那么我是否需要为每个 EC2 实例提供一个弹性 IP,以便每个实例都可以单独列入白名单?如果自动缩放添加另一个实例,这将如何工作?我是否应该拥有一个带有弹性 IP 的 EC2 实例,并通过该实例路由所有传出流量?如果是这样,该实例是否需要仅用于此目的,还是可以是运行我的应用程序的实例之一?
amazon-web-services amazon-elastic-ip autoscaling amazon-vpc elastic-beanstalk
当我尝试使用 Elastic Beanstalk 在 EC2 上部署我的 php 应用程序时收到一条消息。
Environment named *** is in an invalid state for this operation. Must be Ready.
Run Code Online (Sandbox Code Playgroud)
我无法部署。服务器状态正在运行,没有警告。
在这一点上,我的经验非常有限。我该如何解决这个问题?
在创建 Elastic Beanstalk 环境之前,我已经创建了我的 RDS 实例。两者一起工作没有问题,但我希望它们链接在一起,并且可以通过RDS_*环境变量访问 RDS 参数。
Elastic Beanstalk 配置页面说:

尽管第一个链接就地创建 RDS 实例并将其链接到当前环境,但第二个链接只是重定向到此文档页面。,不幸的是,它只解释了如何创建一个新的 RDS 实例,而不是如何链接一个现有的实例。
如何将现有 RDS 实例关联到我的 Elastic Beanstalk 环境?
我想将这些 PHP 设置添加到我的 Elastic Beanstalk 环境中:
upload_max_filesize = 64M
post_max_size = 64M
Run Code Online (Sandbox Code Playgroud)
这些选项无法设置option_settings在.ebextensions:
Namespace | Extend
---------------------------------------------|-------
aws:elasticbeanstalk:application:environment | Yes
aws:elasticbeanstalk:container:php:phpini | No
Run Code Online (Sandbox Code Playgroud)
如何php.ini在 Elastic Beanstalk 容器中添加自定义设置?
从早期开始,我就一直是 Heroku 的粉丝。但我喜欢 AWS Elastic Beanstalk 让您更好地控制实例特征的事实。我喜欢 Heroku 的一件事是我可以部署应用程序而不必担心管理它。我假设Heroku 确保及时应用所有操作系统安全更新。我只需要确保我的应用程序是安全的。
我对 Beanstalk 的初步研究表明,虽然它为您构建和配置实例,但之后它转向了更加手动的管理过程。安全更新不会自动应用于实例。似乎有两个方面的担忧:
所以我的问题是亚马逊是否提供了一种方法来提供像 Heroku 这样的完全托管的 PaaS?或者 AWS Elastic Beanstalk 真的更像是一个安装脚本,之后您就可以自己动手了(除了他们提供的监控和部署工具)?
总的来说,我对整个 Netflix OSS 堆栈和部署还很陌生。作为我目前的运维知识水平的背景,我的主要角色是前端应用工程师。但是,我喜欢事物的运营方面,因此我正在尝试为新项目设置新的部署策略和工具。
我们的目标
我们可以多花一点初始设置时间,如果这样做会在将来为我们省去一些麻烦。
因此,沿着这些思路,我一直在听播客、观看 Ops 演讲并阅读大量博客文章,并根据我们的目标以及我所采取的一些最佳实践,我们已经开始制定计划,使用Asgard,将我们的包滚动到 jar 中,然后将其滚动到 AMI 中。
我们已经计划好了这一切,并且喜欢该流程与使用 Chef 服务器和动态融合实例相比的优势(鉴于我们有限的时间线和对 Chef 服务器工作流程的缺乏了解,我们认为这很容易出错)。然而,一位同事自己环顾四周,觉得 Elastic Beanstalk 满足了我们的需求。
我已经研究过它并使用 WAR 文件和附加的 RDS 数据库启动了一个测试环境。事情似乎奏效了,我相信我们可以通过 AWS API 使用 Jenkins 自动部署到测试环境。看起来很简单……也许太简单了。
我想知道的是,有什么收获?如果 Elastic Beanstalk 如此简单有效,为什么没有更多地谈论它?我很难找到关于两种不同部署策略的足够客观的意见和事实,所以我想我会四处打听。
您使用 Elastic Beanstalk 吗?如果是这样,为什么以及哪些因素会导致该决定?你喜欢和不喜欢什么?
如果您不使用 Elastic Beanstalk 但考虑过它,您使用什么,为什么不使用 Elastic Beanstalk?
基于 Elastic Beanstalk 的 SOA 部署策略的优缺点是什么?也就是说,Elastic Beanstalk 是否可以与许多相互依赖才能工作的小型应用程序一起工作?
我正在 AWS Elastic Beanstalk 上运行一个应用程序,如果我想使用最新的 AMI,看起来我需要创建一个新环境。
如果我知道最新的 AMI id 是什么,我可以在环境配置中更新它。
有什么地方可以找到最新的 Elastic Beanstalk AMI 的 ID,或者更好的是,是否可以在推出新版本时自动将实例替换为新版本?
作为我的应用程序部署的一部分commands,我的.ebextensions配置文件中有一些。第一次运行命令(克隆大型存储库)可能需要 20 分钟或更长时间才能完成所有命令。
不幸的是,这会在部署期间触发超时:
INFO Deploying new version to instance(s).
WARN The following instances have not responded in the allowed command
timeout time (they might still finish eventually on their own).
INFO Command execution completed. Summary: [Successful: 0, TimedOut: 1].
Run Code Online (Sandbox Code Playgroud)
是否可以增加此超时?我在我的环境设置中找不到该选项。
我已将我的 Django 应用程序部署到 Elastic Beanstalk,目的是使用其环境变量配置接口来存储我的 API 密钥,而不是将它们存储在我的源中(如此处所述/sf/answers/1251502031/)。
这样做之后,我发现 Beanstalk 所称的环境变量实际上并不是 shell 环境变量(如这里提到的/sf/answers/1719538271/),而是存储在配置文件中的实例上(如此处描述/sf/answers/1719639841/)。
这对我来说似乎是一个安全问题。这不是违背了将密钥隐藏在源头之外的目的吗?我知道它们不再在 repo 中,但它们仍然可以在实例上访问。
我误解了风险吗?我是继承系统管理员,所以请原谅我的无知。我应该通过配置文件将 Beanstalk 变量作为 shell 环境变量加载并继续,因为该文件只能通过 root 访问,还是我的担忧有效?谢谢你。
我在通过 AWS Elastic Beanstalk 部署的站点强制使用 HTTPS 时遇到问题。
这是一个使用 EmberJS 的前端应用程序。我已经绕圈子转了很多天,试图弄清楚如何将 http 流量重定向到 https。我在我的 EC2 机器上使用 Amazon Linux AMI。
我得出的结论是(仍然不确定这是否正确)我强制使用 HTTPS 不在 Elastic Beanstalk 中。我允许 HTTP 和 HTTPS 通过我的 Elastic Beanstalk 负载均衡器,并尝试在服务器上重定向。
这是我遇到问题的地方。我找到了很多关于重写规则的答案,没有mod_rewrite这些答案基于X-Forwarded-Proto标题,但是根据查找搜索,该文件在我的 EC2 机器上不存在。
我也试过在.ebextensions目录中创建一个配置文件,但这也不起作用。
我尝试做的主要事情是在尝试访问 http 地址时将用户定向到 https。非常感谢任何指针或建议,谢谢!
编辑:我正在使用运行 Python 3.4(预配置 - Docker)的 64 位 Debian jessie v1.4.1
security ×2
amazon-rds ×1
amazon-vpc ×1
autoscaling ×1
chef ×1
cloud ×1
deployment ×1
php ×1
python ×1