创建 AWS Elastic Beanstalk Ruby/Rails 应用程序环境 [AWS 免费套餐] 时使用了哪些 AWS 资源/服务?

Posted

技术标签:

【中文标题】创建 AWS Elastic Beanstalk Ruby/Rails 应用程序环境 [AWS 免费套餐] 时使用了哪些 AWS 资源/服务?【英文标题】:What AWS Resources/Services are used when creating an AWS Elastic Beanstalk Ruby/Rails Application Environment [AWS free tier]? 【发布时间】:2021-01-14 15:01:30 【问题描述】:

意图:了解 AWS 云基础设施资源服务配置和相关成本影响 [AWS 免费层]

上下文: 仅使用控制台创建 Ruby 应用程序环境,例如示例应用程序

Elastic Beanstalk 是否处理清理工作?如何验证?

【问题讨论】:

【参考方案1】:

来源:AWS Official Docs EB > tutorial Rails

所有这些资源都由 Elastic Beanstalk 管理当你 终止您的环境,Elastic Beanstalk 终止所有 它包含的资源

环境创建大约需要 5 分钟,创建以下内容 资源

EC2 实例 – Amazon Elastic Compute Cloud (Amazon EC2) 虚拟 机器配置为在您选择的平台上运行 Web 应用程序。

每个平台都运行一组特定的软件、配置文件、 以及支持特定语言版本、框架、网络的脚本 容器,或这些的组合。大多数平台使用 Apache 或 nginx 作为位于您的 Web 应用程序前面的反向代理, 将请求转发给它,提供静态资产,并生成访问权限 和错误日志。

实例安全组 – 配置为的 Amazon EC2 安全组 允许端口 80 上的入站流量。此资源允许来自的 HTTP 流量 负载均衡器到达运行您的 Web 应用程序的 EC2 实例。经过 默认情况下,其他端口不允许流量。

负载均衡器 – 一个 Elastic Load Balancing 负载均衡器,配置为 将请求分发到运行您的应用程序的实例。负载 平衡器还消除了将您的实例直接暴露给 互联网。

负载均衡器安全组 – 已配置的 Amazon EC2 安全组 允许端口 80 上的入站流量。此资源允许 HTTP 流量 从互联网到达负载均衡器。默认情况下,流量不是 允许在其他端口上。

Auto Scaling 组 – 配置为替换一个 Auto Scaling 组 实例如果它被终止或变得不可用。

Amazon S3 存储桶 – 源代码、日志和 使用 Elastic Beanstalk 时创建的其他工件。

Amazon CloudWatch 警报 – 两个监控负载的 CloudWatch 警报 在您环境中的实例上,如果 负载过高或过低。触发警报时,您的 Auto 扩展组会相应地扩大或缩小规模。

AWS CloudFormation 堆栈 – Elastic Beanstalk 使用 AWS CloudFormation 在您的环境中启动资源并传播 配置更改。资源在模板中定义,该模板 您可以在 AWS CloudFormation 控制台中查看。

域名 – 以表单形式路由到您的 Web 应用程序的域名 subdomain.region.elasticbeanstalk.com。

按照官方指南部署示例 ruby​​ 应用程序处于免费层中;

使用控制台服务可以:

检查部署后创建的其他资源 检查清理

【讨论】:

【参考方案2】:

这取决于它是单实例 Ruby 环境、负载平衡的环境,还是您将 RDS 与您的环境捆绑在一起等等。

不过,要了解 EB 究竟为您创建了什么,最好的方法是转到 CloudFormaion (CFN) 控制台,并检查 EB 为您提供的 EB 堆栈。 EB 环境是通过 CFN 创建的,因此在您的 EB 环境中创建的所有内容都在那里(S3 存储桶除外)。

要获得创建的资源的简明列表,您可以使用 AWS CLI:

aws cloudformation  describe-stack-resources --stack-name <awseb-stack-name> --query "StackResources[].ResourceType"

例子:

    "AWS::AutoScaling::AutoScalingGroup",
    "AWS::AutoScaling::LaunchConfiguration",
    "AWS::AutoScaling::ScalingPolicy",
    "AWS::AutoScaling::ScalingPolicy",
    "AWS::CloudFormation::WaitConditionHandle",
    "AWS::CloudWatch::Alarm",
    "AWS::CloudWatch::Alarm",
    "AWS::CloudFormation::WaitCondition",
    "AWS::CloudFormation::WaitConditionHandle",
    "AWS::EC2::SecurityGroup",
    "AWS::EC2::SecurityGroup",
    "AWS::ElasticLoadBalancingV2::LoadBalancer",
    "AWS::ElasticLoadBalancingV2::Listener",
    "AWS::ElasticLoadBalancingV2::TargetGroup"

Elastic Beanstalk 是否处理清理工作?如何验证?

是的,因为所有资源都由单个 CFN 堆栈管理。清理基于删除堆栈,您可以在 CFN 控制台中进行验证。

例外: S3 存储桶不会被删除。您必须手动完成。

【讨论】:

以上是关于创建 AWS Elastic Beanstalk Ruby/Rails 应用程序环境 [AWS 免费套餐] 时使用了哪些 AWS 资源/服务?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic BeanStalk SignatureDoesNotMatch

未为 AWS Elastic beanstalk 创建 s3 存储桶

AWS Elastic Beanstalk HTTPS

AWS Elastic Beanstalk HTTPS

AWS Certificate Manager 和 Elastic Beanstalk:创建没有域名的 SSL

AWS Elastic Beanstalk 问题