创建 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 存储桶