标签: AWS

轻松完成AWS云中数据备份

AWS Backup 是一种完全托管的备份服务,可以轻松集中和自动管理 AWS 服务中数据的备份。使用 AWS Backup,您可以集中配置备份策略并监控 Amazon EBS 卷、Amazon EC2 实例、Amazon RDS 数据库、Amazon DynamoDB 表、Amazon EFS 文件系统和 AWS Storage Gateway 卷等 AWS 资源的备份活动。AWS Backup 可以自动执行并整合以前按服务执行的备份任务,不需要您创建自定义脚本和手动流程。只需在 AWS Backup 控制台中单击几下,您就可以创建各种备份策略,从而自动执行备份计划和保留管理工作。AWS Backup 可以提供完全托管并且基于策略的备份解决方案,简化了备份管理工作,让您能够满足业务和法规备份合规性要求。

优势

集中管理备份

从中央备份控制台配置备份策略,简化备份管理,并轻松确保各种 AWS 服务中的应用程序数据得到备份和保护。通过 AWS Backup 的中央控制台、API 或者命令行界面针对 AWS 服务进行备份、还原和设置保留策略。

自动执行备份流程

利用 AWS Backup 完全托管并且基于策略的解决方案节省时间和资金。AWS Backup 支持自动备份计划、保留管理和生命周期管理,不需要使用自定义脚本和手动流程。利用 AWS Backup,您只要标记 AWS 资源就可以将备份策略应用于AWS 资源,从而轻松地对所有 AWS 资源实施备份策略,并确保所有应用程序数据都得到正确备份。

提高备份合规性

在中央控制台执行备份策略、加密备份以及审核备份活动,满足备份合规性要求。备份策略可以轻松与内部要求或监管要求保持一致。AWS Backup 可以加密动态数据和静态数据,保证备份的安全性。不同 AWS 服务采用统一的备份活动日志,可以简化合规审核工作。AWS Backup 符合 PCI、ISO 和 HIPAA 的规定。

使用场景

原生云备份

AWS Backup 提供中央控制台,可以自动执行和管理不同 AWS 服务的备份工作。AWS Backup 与 Amazon EBSAmazon RDSAmazon DynamoDBAmazon EFSAmazon EC2 和 AWS Storage Gateway 集成,让您可以备份存储卷、数据库和文件系统等重要数据存储。

混合备份

AWS Backup 与 AWS Storage Gateway 集成,而 AWS Storage Gateway 是一种混合存储服务,让您的本地应用程序能够无缝地使用 AWS 云存储。您可以使用 AWS Backup 来备份存储在AWS Storage Gateway 卷内的本地应用程序数据。AWS Storage Gateway 卷的备份安全地存储在 AWS 云中并且与 Amazon EBS 兼容,可以将卷还原到 AWS 云或本地环境中。这种集成让您能够将同样的备份策略应用到 AWS 云资源和存储在 AWS Storage Gateway 卷内的本地数据中。

计费

使用 AWS Backup,您只需为实际使用的备份存储量以及当月恢复的备份数据量付费即可。没有最低消费和设置费用。

每月计费的存储量是按照全月内使用的平均存储空间来计算的。您的存储使用情况按“GB 月”来衡量,月底合计该值,得出您的月度费用。

每月计费的还原量是按照当月还原的数据量来计算的。一个月内还原的数据以 GB 为单位,表示当月执行的所有还原的数据总和。

示例 1:
假设您的 Amazon EFS 备份存储在美国东部(弗吉尼亚北部)地区。您在 4 月份的 15 天内使用 400GB 的 Amazon EFS 备份存储空间,在另外 15 天内使用 800GB。那么在 4 月底,您的备份存储使用量按照 GB 小时为单位计算如下:

总使用量(GB 小时)= [400GB x 15 天 x(24 小时/天)] + [800GB x 15 天 x(24 小时/天)] = 432000GB 小时

我们将 GB 小时加起来并换算成 GB 月,以计算月度费用:

月度总存储费用 = 600GB 月 x 0.05 USD = 30.00 USD

另外,让我们假设您已还原了 10 个备份,每个为 1GB。那么在 4 月底,您的备份还原使用量按照 GB 为单位计算如下:

总使用量 10 次还原 x 1GB = 10GB

月度还原总费用 = 10GB x 0.02 USD = 0.20 USD

将备份存储费用和备份还原费用相加获得 AWS Backup 月度总账单:

AWS Backup 月度总账单 = 30 USD + 0.20 USD = 30.20 USD

*这适用于除按需 DynamoDB 表备份之外的所有备份存储,按需 DynamoDB 表备份将创建 Amazon DynamoDB 表数据和设置的完整备份。

实践参考

动手实践可参考AWS官方博客:AWS 备份 – 自动化和集中管理您的备份

https://aws.amazon.com/cn/blogs/china/aws-backup-automate-and-centrally-manage-your-backups/

如需进一步协助或服务,请留言,泰岳云业务会提供自动化工具及专业服务。

陈汉卿

云业务事业部 | 高级系统架构师

神州泰岳软件股份有限公司·AWS战略合作伙伴

AWS Solution Provider | Migration | DevOps | Cloud Management Tools(CMT) ISV Partner

AWS云中安全合规中心

C:\Users\jiayf\AppData\Local\Temp\WeChat Files\9389aec478fcd1aaf30c98585160e19.jpg

AWS Security Hub 是一项安全与合规性服务,于2019年6月25日正式推出通用版本。Security Hub在各个区域的统一仪表板中为用户提供涵盖多个AWS账户的安全性与合规性状态的直观支持。通过此项服务,您可以监控各关键设置,保证AWS账户始终安全可靠,同时确保能够时刻关注环境中出现的各类变化、并有针对性地做出快速反应。

工作原理

优势和功能

全面查看安全问题

AWS Security Hub 会收集和整合您环境中启用的 AWS 安全服务的检测结果,例如来自 Amazon GuardDuty 的入侵检测结果、来自 Amazon Inspector 的漏洞扫描和来自 Amazon Macie 的 S3 存储桶策略检测结果。AWS Security Hub 还会整合来自集成的 AWS 合作伙伴网络 (APN) 安全解决方案的检测结果。所有检测结果都将在 AWS Security Hub 存储至少 90 天。

自动化、持续的安全性检查

使用行业标准和最佳实践,进行自动化、持续的账户和资源级配置与安全性检查。例如,AWS Security Hub 会自动执行互联网安全中心(CIS) AWS Foundations 基准,后者是一组 AWS 的安全配置最佳实践。如果您的任何账户或资源偏离最佳实践,AWS Security Hub 会标记问题并建议补救措施。

自定义响应和补救措施

将 AWS Security Hub 与 Amazon CloudWatch Events 集成后,您将能创建自定义响应和补救工作流程。您可以轻松地将检测结果发送到 SIEM、聊天工具、开单系统、安全业务流程自动化和响应工具及呼叫待命管理平台。您也可以使用 AWS System Manager 自动化文档、AWS Step Functions 和 AWS Lambda 函数构建可从 Security Hub 启动的自动补救工作流程。

多账户支持

在 AWS Security Hub 控制台中单击几次,您即可连接多个 AWS 账户并整合这些账户的检测结果。通过指定主安全账户,您可以让您的安全团队查看所有账户的整合检测结果,不过各账户拥有者仅可查看与其账户相关的检测结果。

使用场景

安全扫描

使用各种安全性标准连续扫描您的 AWS 账户,检查是否存在配置错误,并在账户和多账户级别汇总安全性检查结果,以了解您的整体安全性状态。

分类安全问题并确定优先级

使用 AWS Security Hub 的摘要控制面板以及筛选条件规则来识别 AWS 安全服务和合作伙伴安全集成中的检测结果并确定其优先级,确定哪些最重要,以及哪些需要最直接的关注。

如何收费

安全性检查 定价

每账户每区域每月前 100000 次检查 每次检查 0.0010 USD

每账户每区域每月接下来的 400000 次检查 每次检查 0.0008 USD

每账户每区域每月 500000 次以后的检查 每次检查 0.0005 USD

检查结果提取事件

与 Security Hub 安全性检查关联的检查结果提取事件 免费

每账户每区域每月前 10000 个事件 免费

每账户每区域每月 10000 个以后的事件 每个事件 0.00003 USD

如需进一步协助或服务,请留言,泰岳云业务会提供自动化工具及专业服务。

C:\Users\jiayf\AppData\Local\Temp\WeChat Files\1a85fa68f8ae79e77c5c5439b168133.jpg

AWS云中的WEB应用防火墙

C:\Users\jiayf\AppData\Local\Temp\WeChat Files\9389aec478fcd1aaf30c98585160e19.jpg

大型的Web应用易受多种攻击,造成宕机时间、效率降低、数据失窃、违规罚款、品牌受损、服务中断、客户不满等。企业通常利用Web应用防火墙来保护Web应用程序。AWS WAF 是一种 Web 应用程序防火墙,让您能够监控转发到 Amazon API Gateway API、Amazon CloudFront 或 应用程序负载均衡器 的 HTTP 和 HTTPS 请求,支持识别并阻拦常见的web攻击,比如SQL注入、XSS跨站、HTTP协议异常、HTTP协议畸形、命令注入、非法扫描等。

工作原理

AWS WAF可以让您可以在几分钟内设置并开始保护您的应用程序。您只需创建一个或多个web访问控制列表(Web ACL),每个列表包含规则(定义可接受或不可接受请求/IP地址的条件集)和满足规则时要采取的操作。然后将Web ACL附加到应用程序的Amazon CloudFront分发。

从这一刻开始,通过分发到达的传入HTTP和HTTPS请求将根据相关Web ACL中的每个规则进行检查,规则的条件可以为正(允许某些请求或IP地址)或负(阻止某些请求或IP地址)。

优势和功能

针对 Web 攻击灵活提供保护

AWS WAF 规则的传播和更新只需不足一分钟时间,因此您可以在问题出现时在您的环境中快速进行安全更新。WAF 支持数百条规则,这些规则可以检查 Web 请求的任意部分,同时尽可能降低延迟对传入流量的影响。AWS WAF 可以根据您创建的规则筛选流量,从而保护 Web 应用程序免遭攻击。例如,您可以筛选 Web 请求的任意部分,例如 IP 地址、HTTP 标头、HTTP 正文或 URI 字符串。这样一来,您可以防范常见攻击模式,例如 SQL 注入或跨站点脚本。

易于部署和维护

无论是作为 CDN 解决方案的一部分部署在 Amazon CloudFront 上,还是部署在位于所有来源服务器之前的 Application Load Balancer、适用于您的 REST API 的 Amazon API Gateway 或者是适用于您的 GraphQL API 的 AWS AppSync 上,AWS WAF 都能轻松部署和保护应用程序。 无需部署其他软件、无需配置 DNS、无需管理 SSL/TLS 证书,也无需进行反向代理设置。使用 AWS Firewall Manager 集成,您可以集中定义并管理规则,并在您需要保护的所有 Web 应用程序中反复使用这些规则。

使用托管规则节省时间

使用 AWS WAF 托管规则,您可以快速入门并保护您的 Web应用程序或 API 免遭常见的威胁。有多种规则类型供您选择,例如解决诸如开放式 Web 应用程序安全项目 (OWASP) 十大安全风险、内容管理系统 (CMS) 特有的威胁或新出现的常见漏洞和泄露 (CVE) 等问题的规则。托管规则会随新问题的出现而自动更新,这样您就有更多的时间来构建应用程序。

经济高效的 Web 应用程序防护

使用 AWS WAF,您只需按使用量付费。AWS WAF 属于可自定义的自助服务,基于您部署的规则数量和您的 Web 应用程序收到的 Web 请求数量进行定价。既没有最低费用,也无需预先承诺。

提高 Web 流量可见性

AWS WAF 让您能够近乎实时地查看 Web 流量,借此在 Amazon CloudWatch 中创建新的规则或警报。您可以精确控制指标的发出方式,因此可以从规则级别到完整入站流量进行监控。此外,AWS WAF 还会捕获每个接受检查的 Web 请求的完整标头数据,用于自动提供安全保护、分析或审计用途,从而提供全面的日志记录。

集成于应用程序开发流程中的安全性

AWS WAF 中的所有功能都可以通过 AWS WAF API 或 AWS 管理控制台进行配置。因此,您的开发运营团队可以在应用程序开发流程中定义特定于应用程序的规则,从而增强 Web 安全性。而且,您可以将 Web 安全问题放到开发流程链中的多个环节:从最初撰写代码的开发人员,到部署软件的开发运营工程师,再到跨组织实施安全规则组的安全管理员等。

如何收费

您需要为创建的每个 Web ACL 和针对每个 Web ACL 创建的每个规则付费。此外,您还需要为 Web ACL 处理的 Web 请求数付费。

Web ACL 每月 5.00 USD(按小时收取)

规则 每月 1.00 USD(按小时收取)

请求 每 100 万个请求 0.60 USD

如需进一步协助或服务,请留言,泰岳云业务会提供自动化工具及专业服务。

C:\Users\jiayf\AppData\Local\Temp\WeChat Files\1a85fa68f8ae79e77c5c5439b168133.jpg

AWS云中的DDos防护

C:UsersjiayfAppDataLocalTempWeChat Files9389aec478fcd1aaf30c98585160e19.jpg

分布式拒绝服务 (DDoS) 攻击是指多个被入侵系统尝试用流量来“淹没”目标 (如网络或 Web 应用程序) 的攻击。DDoS 攻击会阻止合法用户访问服务,并可能导致系统由于流量过大而崩溃。AWS 提供两级防护 DDoS 攻击: AWS Shield Standard 和 AWS Shield Advanced.

简介

AWS Shield Standard

全部 AWS 客户受益于的自动保护 AWS Shield Standard,无需额外收费。 AWS Shield Standard 抵御最常见的、经常发生的网络和传输层 DDoS 针对您的网站或应用程序的攻击。虽然 AWS Shield Standard 有助于为所有 AWS 客户提供保护,但如果您使用 Amazon CloudFront 和 Amazon Route 53,则可以获得特殊的优势。这些服务获得全面的可用性保护,可以防范所有已知的基础设施(第 3 层和第 4 层)攻击,参考下图。

D:backupbakyoudaonuno_3023@163.com(1)5bede8d8e97a4fce99d24b71d4a2a9f1clipboard.png

AWS Shield Advanced

要获得更高级别的攻击防护,您可以订购 AWS Shield Advanced。当您订阅 AWS Shield Advanced 并添加需要保护的特定资源, AWS Shield Advanced 对在资源上运行的Web应用程序提供扩展的 DDoS进行攻击保护。

AWS哪些资源可以被保护

您可以为任何以下类型的资源添加保护:

Amazon CloudFront 分发

Amazon Route 53 托管区域

AWS Global Accelerator 加速器

应用程序负载均衡器

Elastic Load Balancing (ELB) 负载均衡器

Amazon Elastic Compute Cloud (Amazon EC2) 弹性 IP 地址

Shield和Shield Advanced的对比

如何选择

您可以将 AWS WAFAWS Firewall Manager 和 AWS Shield 一起使用来创建全面的安全解决方案。

一切都从 AWS WAF 入手。您可以实现自动化,然后简化 AWS WAF 使用 AWS Firewall Manager。 Shield Advanced 在的顶部添加其他功能 AWS WAF,例如来自 DDoS 响应小组 (DRT) 和高级报告。

如果您希望对添加到您的资源的保护进行精细控制,单独使用 AWS WAF 是正确的选择。如果您希望跨账户使用 AWS WAF、加快您的 AWS WAF 配置或自动执行新资源的保护,请将 Firewall Manager 与 AWS WAF 结合使用。

最后,如果您拥有高可见度的网站,或者容易频繁 DDoS 攻击时,您应该考虑购买 Shield Advanced 提供。

如何收费

AWS Shield Standard 为所有 AWS 客户提供保护,使其免受以网站或应用程序为目标的最频繁发生的常见网络和传输层 DDoS 攻击,且无需支付额外费用。

AWS Shield Advanced 是付费服务,可为在 Amazon Elastic Compute (EC2)、Elastic Load Balancing (ELB)、Amazon CloudFront、AWS Global Accelerator 和 Amazon Route 53 上运行的面向互联网的应用程序提供额外保护。AWS Shield Advanced 对所有客户开放,但只有 AWS Premium Support 的企业支持计划或商业支持计划客户才能联系 DDoS 响应团队。它需要为期 1 年的订购承诺,按月收费3000美金。数据传输资费情况如下表:

如需进一步协助或服务,请留言,泰岳云业务会提供自动化工具及专业服务。

C:UsersjiayfAppDataLocalTempWeChat Files1a85fa68f8ae79e77c5c5439b168133.jpg

AWS云中的CMDB

CMDB是自动化运维的基石、是构建ITIL流程的基础。AWS Config是一个托管服务,是AWS云中资源的CMDB,它可以维护AWS资源的配置历史,并根据最佳实践和内部策略来评估配置。您可以将此信息用于操作故障排除、审计和遵从性用例。

AWS Config原理

打开 AWS Config 之后,它会先查找您账户中受支持的 AWS 资源,并为每个资源生成一个配置项。AWS Config 还会在某个资源的配置更改时生成配置项,并在您启动配置记录器后,保留配置项的历史记录。如果您使用的是 AWS Config 规则,则 AWS Config 会持续评估您的 AWS 资源是否具备所需设置。当某个资源的合规性状态发生更改时,AWS Config 会向您的 Amazon SNS 主题发送通知。

使用场景

资源管理

为了更好地管理您的资源配置并检测资源的错误配置,您需随时详细了解存在哪些资源以及这些资源的配置方式。AWS Config 可以在资源被创建、修改或删除时向您发送通知,不需要您通过对各个资源进行轮询来监控这些资源更改。

您可以使用 AWS Config 规则来评估您的 AWS 资源的配置设置。当 AWS Config 检测到不符合某项规则中的条件的资源时,AWS Config 会将其标记为不合规资源并发送通知。AWS Config 会在您的资源被创建、更改或删除时持续对其进行评估。

审计与合规性

您使用的数据可能需要频繁审计,以确保其符合内部策略与最佳实践。为了证实合规性,您需要了解资源的历史配置。AWS Config 可以提供这一信息。

对配置更改进行管理与故障排除

当您使用相互依赖的多个 AWS 资源时,一项资源配置的更改可能对相关资源造成意外后果。利用 AWS Config,您可以查看您准备修改的资源如何与其他资源相关联,并评估更改所产生的影响。

您也可以使用 AWS Config 提供的资源历史配置来解决问题,并确定问题资源的最后正确配置。

安全分析

要分析潜在的安全漏洞,您需要了解有关您的 AWS 资源配置的详细历史信息,例如向您的用户授予的 AWS Identity and Access Management (IAM) 权限或者控制对资源的访问的 Amazon EC2 安全组规则。

您可以使用 AWS Config 随时查看 AWS Config 正在记录的分配给 IAM 用户、组或角色的 IAM 策略。这一信息可以帮助您确定用户在特定时间内具备的权限:例如,您可以查看用户 John Doe 在 2015 年 1 月 1 日是否拥有修改 Amazon VPC 设置的权限。

您也可以使用 AWS Config 来查看您的 EC2 安全组的配置,包括在特定时间打开的端口规则。这一信息可以帮您确定安全组是否会阻止传入 TCP 流量传输至特定端口。

如何收费

使用 AWS Config 时,您将根据账户中记录的配置项数量、活动 AWS Config 规则评估数量和一致性包评估数量付费。配置项是对您的 AWS 账户中资源配置状态的记录。AWS Config 规则评估是由 AWS 账户中的 AWS Config 规则对资源进行的合规性状态评估,一致性包评估是由一致性包内的 AWS Config 规则对资源进行的评估。

定价示例

假设您在给定月份在美国东部(弗吉尼亚北部)区域的使用量如下。

10000 个各种资源类型的记录配置项

50000 次账户中存在的所有单个 Config 规则的 Config 规则评估

5 个一致性包,每个包含 10 个 Config 规则,每个 Config 规则有 300 次规则评估(即 5*10*300 总共为 15000 次评估)

配置项费用

10000 * 0.003 USD = 30 USD

Config 规则费用

前 100000 次评估(每次 0.001 USD)= 50 USD

一致性包费用

前 1000000 次一致性包评估(每次 0.0012 USD)= 18 USD

Config 账单总额

30 USD + 55 USD + 18 USD = 98 USD

如需进一步协助或服务,请留言,泰岳云业务会提供自动化工具及专业服务。

 

陈汉卿

云业务事业部 | 高级系统架构师

神州泰岳软件股份有限公司·AWS战略合作伙伴

AWS Solution Provider | Migration | DevOps | Cloud Management Tools(CMT) ISV Partner

AWS中国区账号注册步骤

AWS中国区账号注册由邀请注册制改为开放注册制,从而实现中国的企业用户可以直接在 AWS 中国官网上完成注册。由之前的 1 个工作日缩短至 30 分钟以内(在资料齐备且后台自动核验通过的情况下)。

登录 AWS 中国官网首页创建账户

点击官网链接:https://www.amazonaws.cn,点击右上角进入注册页面,创建 AWS 账户;

https://mmbiz.qpic.cn/mmbiz_png/PPVZqC4kowRV3nJCpnYkGQGYAicTLSzqnfGyoIDibt8KA1kibslzFykMJI5IzFRbX0PVP4b3wYsmzgfJQ2ib3FsGFA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

https://mmbiz.qpic.cn/mmbiz_png/PPVZqC4kowRV3nJCpnYkGQGYAicTLSzqnIcNHc0v5wndibFceQPGUoXkuv7IibMhm8pAa8ZKa5w7A4LaMKibEtpkcw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

完善个人信息及企业信息验证

https://mmbiz.qpic.cn/mmbiz_png/PPVZqC4kowRV3nJCpnYkGQGYAicTLSzqnf4CaCdic3ibwcSgE1osASoQXJWeOicD4aoVhNuT9cY7zrdgIot67zwxhQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

C:UsersjiayfDocuments微信图片_20200922173503.png

进入安全检查阶段,完成身份验证

https://mmbiz.qpic.cn/mmbiz_png/PPVZqC4kowRV3nJCpnYkGQGYAicTLSzqnbn0uiaoWCp5K51hibTR6reuThicCx6klOUObHxDThew1Iw5CGhb3PDI6A/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

https://mmbiz.qpic.cn/mmbiz_png/PPVZqC4kowRV3nJCpnYkGQGYAicTLSzqnkxuUpxjejP6e4Vl12KsmMMMffvIJrRGibWbjZicJ8kJC9EGrIpkmCblg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

选择支持计划后即可完成注册

https://mmbiz.qpic.cn/mmbiz_png/PPVZqC4kowRV3nJCpnYkGQGYAicTLSzqnqH1MzgSTzrqt9I1ctiavXHFaF5UCib97WykM67REvicxzuvFlCibpDBSZA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 C:UsersjiayfDocuments微信图片_20200922173613.jpg

C:UsersjiayfDocuments微信图片_20200922173620.jpg

陈汉卿

云业务事业部 | 高级系统架构师

神州泰岳软件股份有限公司·AWS战略合作伙伴

AWS Solution Provider | Migration | DevOps | Cloud Management Tools(CMT) ISV Partner

电脑垃圾定期清理,云上垃圾您清理了吗

电脑管家告诉我们,定期清理垃圾,电脑更给力!泰岳云工具告诉您,定期清理S3中垃圾,可以更省钱。

如果您使用了Amazon Athena服务,我想,有一个问题你或许没有注意到:长期使用Athena会产生大量查询结果存储在S3,这就意味着S3中有很多以前的Athena数据,并且再也不使用,那这么多的垃圾数据您清理过吗?

如果没有的话,那你可吃亏了!您可是一直在为这些垃圾数据支付存储的费用啊,日积月累,这笔钱可也不少,业务量大的一年下来可能高达几万元甚至更多!

根据S3 99.999999999%的持久存储特性,这些数据将会一直存储在S3中,明明可以节省这笔费用,而您却一直为这些垃圾买单,您说冤不冤?

如果您清理过垃圾数据,那给你一个赞!但你有没有觉得每次清理垃圾很麻烦呢,因为你需要频繁进入S3桶,进入层层目录,在大量文件中找到需要删除的数据,还得看仔细点,万一不小心删错了就更麻烦了。

如果您存在以上问题,那么您的福利来了,泰岳云工具delAthenaData可以帮您定期清理垃圾来节省费用,而且是免费安装使用哦!不用客气,拿走拿走!!!

delAthenaData工具功能特点:

  1. 可以指定删除多少天前的数据
  2. 定期自动执行
  3. 完全免费

心动的话,请戳https://www.awstweaker.com/2020/06/12/delathenadata/免费安装使用。

在EC2上搭建django

什么是django?

IMG_256

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。

Django是一个开放源代码的Web应用框架,由Python写成。

Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。

Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。

1.启动EC2

如果读者期望可以在本文中看到如何启动一个Ubuntu16.04版本的EC2,如何通过./configure make make install等等操作安装python3.7.4,如何解决python编译过程中的错误,如何解决pip安装时的openssl问题,那笔者可以明确的说,不存在的。

因为AWS Marketplace中提供了很多集成django的AMI(Amazon系统镜像),我们只需要在选择AMI时搜索django,挑选一个自己喜(mian)欢(fei)的版本(笔者选择的是Bitnami的版本)。

然后再一路next,最后在审核和启动界面仔细检查配置,确认没问题后点击启动。

等待几分钟之后,就可以继续了,完全不用再考虑安装编译等问题了。

2.连接EC2并测试

通过ssh连接工具(笔者使用的MobaXterm),新建session,服务器地址填写刚刚启动的EC2的ip地址,用户名为bitnami(不同AMI用户会不一样,需要查看EC2的使用说明标签。),再选择用户的私钥,既可以连接到服务器上了。

确认连接没问题之后,就可以测试下环境是否以及搭建好了。

打开浏览器,在地址栏输入EC2服务器的ip地址。如果显示下面的界面,则表示环境以及运行成功。

总结

通过简单的几步操作,就可以搭建起django测试环境,这其中,AWS Marketplace帮我们解决了部署中最头疼的问题,我们只需要专注于自己应用的开发就可以了。

陈汉卿

云业务事业部 | 高级系统架构师

神州泰岳软件股份有限公司·AWS战略合作伙伴

AWS Solution Provider | Migration | DevOps | Cloud Management Tools(CMT) ISV Partner

在AWS中构建微服务体系

本文摘自AWS白皮书,《Implementing Microservices on AWS》 

摘要

微服务是软件开发的一种架构和组织方法,它可以加速部署周期、增强创新和自主性,提高软件应用程序的可维护性和可扩展性,通过使用敏捷方法帮助团队独立工作,扩展组织交付的软件和服务。微服务方案中,软件由小服务组成,小服务通过定义良好的、可以独立部署的API进行通信。这些服务由小型自主团队拥有。这种组织方法是成功扩展组织的关键。

在客户构建微服务时,我们观察到三种常见的模式:API驱动、事件驱动和数据流。在这篇文章中,我们将介绍三种方法,并总结微服务的共同特征,讨论构建微服务的主要挑战,并描述产品团队如何利用Amazon Web Services(AWS)来克服这些挑战。

介绍

微服务架构对于软件工程来说并不是一种全新的方法,而是各种成功和成熟概念的组合,比如:

  • Agile software development 敏捷软件开发
  • Service-oriented architectures 面向服务的体系结构
  • API-first design API的设计
  • Continuous Integration/Continuous Delivery (CI/CD) 持续集成/持续交付

在大多数情况下,12因素应用程序的设计模式被用于微服务。我们首先介绍了高度伸缩性、容错的微服务体系结构(用户界面、微服务实现和数据存储)的不同方面,以及如何在利用容器技术的AWS上构建它。然后,我们建议使用AWS服务实现典型的无服务器微服务体系结构,以减少操作复杂性。

Serverless被定义为一个操作模型,遵循以下原则:

没有提供或管理的基础设施

自动按消费单位缩放

“按价值付款”的计费模式

内置的可用性和容错能力

最后,我们查看整个系统并讨论微服务体系结构的跨服务方面,如分布式监视和审计、数据一致性和异步通信。

AWS上的简单微服务

典型的应用程序使用不同的层构建-用户接口层、业务层和持久层。微服务体系结构的核心思想是将功能拆分为内聚的“垂直领域”-不是通过技术层,而是通过实现特定领域。下图描述了AWS上典型微服务应用程序的参考体系结构。

clipboard.png

用户接口

web应用程序通常使用JavaScript框架来实现与REST或RESTful API通信的单页面应用程序。静态web内容可以使用Amazon Simple Storage Service (Amazon S3)和Amazon CloudFront提供。

由于微服务的客户端从最近的边缘位置提供服务,并从缓存或代理服务器获得响应,从而优化到源服务器的连接,因此延迟可以显著降低。然而,微服务彼此之间的运行并不会从CDN中受益。在某些情况下,这种方法可能会增加额外的延迟。最佳实践是实现其他缓存机制,以减少聊天和最小化延迟。

微服务

我们常说api是微服务的大门,API充当一组编程接口(通常是RESTful web服务API)背后的应用程序逻辑的入口点。此API接受并处理来自客户端的调用,并可能实现诸如流量管理、请求过滤、路由、缓存、身份验证和授权等功能。

微服务实现

AWS集成了支持微服务开发的构件。两种流行的方法是使用AWS Lambda和带有AWS Fargate的Docker容器。

使用AWS Lambda,您只需上传您的代码,并让Lambda负责运行和扩展执行所需的所有工作,以满足高可用性的实际需求曲线。这意味着不需要对基础设施进行管理。Lambda支持多种编程语言,可以从其他AWS服务触发,也可以直接从任何web或移动应用程序调用。AWS Lambda的最大优势之一是您可以快速移动:您可以专注于您的业务逻辑,因为安全性和可伸缩性是由AWS管理的。Lambda驱动了可伸缩平台。

减少部署操作工作的一种常见方法是基于容器的部署。由于可移植性、生产力和效率等优点,Docker等容器技术在过去几年里越来越受欢迎。容器的学习曲线可能非常陡峭,您必须考虑Docker映像的安全保障与监控。

Amazon Elastic Container Service (Amazon ECS)和Amazon Elastic Kubernetes Service (Amazon EKS)消除了安装、操作和扩展自己的集群管理基础设施的需要。通过简单的API调用,您可以启动和停止启用docker的应用程序,查询集群的完整状态,并访问许多熟悉的特性,如安全组、负载平衡、Amazon Elastic Block Store (Amazon EBS)卷和AWS身份和访问管理(AWS Identity and access Management, IAM)角色。

AWS Fargate是一种容器管理服务,它允许您运行没有服务器的容器,因此您不必担心配置、配置和扩展虚拟机集群来运行容器。使用Fargate,您不再需要为容器应用程序提供足够的计算资源。Fargate可以启动成千上万个容器,并且可以轻松地扩展到运行最关键的任务应用程序。

Amazon ECS支持容器放置策略和约束,以自定义Amazon ECS如何放置和终止任务。任务放置约束是在任务放置期间考虑的规则。您可以将属性(本质上是键-值对)与容器实例关联起来,然后使用约束来根据这些属性放置任务。例如,您可以使用约束来放置基于实例类型或实例功能的特定微服务,例如由gpu支持的实例。

Amazon EKS运行最新版本的开源Kubernetes软件,因此您可以使用来自Kubernetes社区的所有现有插件和工具。运行在Amazon EKS上的应用程序与运行在任何标准Kubernetes环境中的应用程序完全兼容,无论是运行在本地数据中心还是公有云上。Amazon EKS集成了IAM和Kubernetes,使您能够向Kubernetes中的本地身份验证系统注册IAM实体。不需要手动设置与Kubernetes主机进行身份验证的凭据。IAM集成允许您使用IAM直接通过主机本身进行身份验证,从而提供对Kubernetes主机公共端点的细粒度访问。

Amazon ECS和Amazon EKS中使用的Docker图像可以存储在Amazon Elastic Container Registry (Amazon ECR)中。Amazon ECR消除了操作和扩展容器注册中心所需的基础设施的需要。

持续集成和持续交付(CI/CD)是最佳实践,也是DevOps计划的重要组成部分,它支持快速的软件更改,同时保持系统的稳定性和安全性。然而,这超出了本白皮书的范围,更多信息可以在“在AWS上实践持续集成和持续交付”白皮书中找到。

Private Links

AWS PrivateLink是一种高可用性、可扩展的技术,允许您私下将VPC连接到受支持的AWS服务、由其他AWS帐户托管的服务(VPC端点服务)和受支持的AWS市场合作伙伴服务。您不需要使用internet网关、NAT设备、公共IP地址、AWS直连连接或VPN连接来与服务通信。您的VPC和服务之间的通信不会离开Amazon网络。

PrivateLink是增强微服务体系结构隔离性的好方法,例如,可以创建数百个vpc,每个vpc托管并提供单个微服务。公司现在可以创建服务并将其出售给AWS的其他客户,通过私有连接进行访问。它们创建一个接受TCP流量的服务,将其托管在网络负载均衡器之后,然后直接或在AWS市场中提供服务。他们将收到新订阅请求的通知,并可以选择接受或拒绝每一个请求。虽然AWS PrivateLink的能力在许多场景中都有优点,但SaaS组织对此特别感兴趣。通过AWS PrivateLink, SaaS提供商看到了使用这种网络结构来增强和扩展其解决方案的架构和业务模型的新的和创造性的机会。

数据存储

数据存储用于存储微服务所需的数据。流行的会话数据存储是内存缓存,如Memcached或Redis。AWS提供这两种技术,作为管理的Amazon ElastiCache服务的一部分。

在应用程序服务器和数据库之间放置缓存是减少数据库上读负载的常见机制,从而允许使用资源来支持更多的写操作。缓存也可以改善延迟。

关系数据库仍然非常流行用于存储结构化数据和业务对象。AWS通过Amazon关系数据库服务(Amazon RDS)提供6个数据库引擎(Microsoft SQL Server、Oracle、MySQL、MariaDB、PostgreSQL和Amazon Aurora)作为管理服务。

然而,关系数据库并不是为无限扩展而设计的,这使得应用技术来支持大量查询变得困难和耗时。

NoSQL数据库的设计目的是为了支持可伸缩性、性能和可用性,而不是关系数据库的一致性。NoSQL数据库的一个重要元素是它们通常不执行严格的模式。数据分布在可以水平伸缩的分区上,并使用分区键进行检索。由于各个微服务被设计为很好地完成一件事情,所以它们通常有一个简化的数据模型,这个模型可能非常适合NoSQL持久性。必须理解,与关系数据库相比,sql数据库具有不同的访问模式。例如,连接表是不可能的。如果有必要,则必须在应用程序中实现逻辑。您可以使用Amazon DynamoDB创建一个数据库表,该表可以存储和检索任意数量的数据,并为任何级别的请求流量提供服务。DynamoDB提供了个位数毫秒的性能,但是,某些用例需要以微秒为单位的响应时间。DynamoDB Accelerator (DAX)为访问数据提供缓存功能。

DynamoDB还提供了一个自动伸缩功能,可以根据实际流量动态调整吞吐量容量。然而,在某些情况下,由于应用程序中持续时间很短的大型活动峰值,容量规划是困难的或不可能的。对于这种情况,DynamoDB提供了一个按需选项,它提供了简单的按请求付费定价。随需应变的DynamoDB能够在不进行容量规划的情况下每秒立即处理数千个请求。

降低操作复杂度

我们所描述的体系结构已经在使用托管服务,但是我们仍然需要管理亚马逊弹性计算云(Amazon EC2)实例。我们可以进一步减少运行所需的操作工作,通过使用完全无服务器的体系结构来维护和监视微服务。

API的实现

架构、部署、监视、持续改进和维护API可能是一项耗时的任务。有时需要运行不同版本的api来确保所有客户机的向后兼容性。开发周期的不同阶段(即开发、测试和生产)进一步增加了操作工作。

授权是所有api的关键特性,但它的构建通常很复杂,而且涉及重复的工作。当一个API发布并获得成功时,下一个挑战是管理、监控和利用API的第三方开发者的生态系统。

其他重要的特性和挑战包括限制请求以保护后端服务、缓存API响应、处理请求和响应转换,以及使用Swagger等工具生成API定义和文档。

Amazon API Gateway解决了这些挑战,降低了创建和维护RESTful API的操作复杂性。

API网关允许您使用AWS API或AWS管理控制台通过导入Swagger定义以编程方式创建API。API网关作为任何运行在Amazon EC2、Amazon ECS、AWS Lambda或任何内部环境中的web应用程序的前门。基本上,API网关允许您在无需管理服务器的情况下运行API。

图2演示了API网关如何处理API调用并与其他组件进行交互。来自移动设备、网站或其他后端服务的请求被路由到最近的CloudFront存在点(PoP),以最小化延迟并提供最佳用户体验。

clipboard.png

无服务器微服务

“没有服务器比没有服务器更容易管理”。清除服务器是消除操作复杂性的一种好方法。

clipboard.png

图3:使用AWS Lambda的无服务器微服务

Lambda与API网关紧密集成。从API网关到Lambda进行同步调用的能力支持创建完全无服务器的应用程序,我们的文档对此进行了详细描述。

图3展示了使用AWS Lambda的无服务器微服务的体系结构,其中完整的服务是由托管服务构建的,这消除了为规模和高可用性而设计的体系结构负担,并消除了运行和监视微服务底层基础设施的操作工作。

图4显示了同样基于无服务器服务的类似实现。在这种体系结构中,Docker容器与AWS Fargate一起使用,因此没有必要关心底层基础设施。除了Amazon DynamoDB之外,还使用了Amazon Aurora Serverless,这是Amazon Aurora (MySQL兼容版)的随需应变、自动伸缩配置,其中数据库将根据应用程序的需要自动启动、关闭和伸缩容量。

clipboard.png

部署Lambda-Based应用程序

您可以使用AWS CloudFormation来定义、部署和配置无服务器应用程序。

AWS无服务器应用程序模型(AWS SAM)是定义无服务器应用程序的一种方便方法。AWS SAM由CloudFormation本地支持,并定义了用于表示无服务器资源的简化语法。为了部署应用程序,只需在CloudFormation模板中指定作为应用程序一部分所需的资源及其相关的权限策略,打包部署构件,并部署模板。基于AWS SAM, SAM Local是一个AWS CLI工具,它为您提供了一个环境,在将您的无服务器应用程序上传到Lambda运行时之前,在本地对其进行开发、测试和分析。您可以使用SAM Local来创建一个模拟AWS运行时环境的本地测试环境。

分布式系统组件

在了解了AWS如何解决与单个微服务相关的挑战之后,我们现在希望关注跨服务的挑战,比如服务发现、数据一致性、异步通信以及分布式监视和审计。

服务发现

微服务体系结构的主要挑战之一是允许服务彼此发现和交互。微服务体系结构的分布式特性不仅使服务的通信变得更加困难,而且还带来了其他挑战,比如检查这些系统的健康状况以及宣布何时有新的应用程序可用。您还必须决定如何以及在何处存储可由应用程序使用的元存储信息(如配置数据)。在本节中,我们将探讨在基于微服务的体系结构的AWS上执行服务发现的几种技术。

基于DNS的服务发现

Amazon ECS现在包含了集成服务发现,使您的容器化服务更容易发现并彼此连接。在此之前,为了确保服务能够彼此发现和连接,您必须基于Amazon Route 53、AWS Lambda和ECS事件流配置和运行自己的服务发现系统,或者将每个服务连接到负载均衡器。

Amazon ECS使用Route 53自动命名API创建和管理服务名称注册表。名称将自动映射到一组DNS记录,以便您可以在代码中通过名称引用服务,并编写DNS查询,以便在运行时将名称解析到服务的端点。您可以在服务的任务定义中指定健康检查条件,Amazon ECS确保服务查找只返回健康的服务端点。

此外,您还可以为Kubernetes管理的服务利用统一服务发现。为了实现这种集成,AWS参与了Kubernetes孵化器项目的外部DNS项目。另一个选择是利用AWS Cloud Map的功能。AWS Cloud Map扩展了自动命名api的功能,为资源(如ip、url和ARNs)提供了服务注册表,并提供了基于api的服务发现机制,该机制具有更快的更改传播速度和使用属性缩小发现资源集的能力。现有的Route 53自动命名资源自动升级到AWS Cloud Map。

第三方软件

实现服务发现的另一种方法是使用第三方软件,如HashiCorp、etcd或Netflix Eureka。这三个示例都是分布式的、可靠的键值存储。对于HashiCorp Consul,有一个AWS Quick Start,它设置一个灵活的、可伸缩的AWS云环境,并将HashiCorp Consul自动启动到您选择的配置中。

服务网格

在高级微服务体系结构中,实际应用程序可以由数百甚至数千个服务组成。通常应用程序最复杂的部分不是实际的服务本身,而是这些服务之间的通信。服务网格是处理服务间通信的附加层,负责监视和控制微服务体系结构中的流量。这允许像服务发现这样的任务完全由这一层来处理。

通常,服务网格分为数据平面和控制平面。数据平面由一组智能代理组成,这些代理与应用程序代码一起部署,作为一个特殊的sidecar代理,拦截微服务之间的所有网络通信。控制平面负责与代理通信。

服务网格是透明的,这意味着应用程序开发人员不需要知道这个额外的层,也不需要更改现有的应用程序代码。AWS App Mesh是一个服务网格,它提供了应用程序级别的网络,使您的服务可以轻松地跨多种类型的计算基础设施彼此通信。AWS App Mesh标准化了你的服务的通信方式,给了你端到端的可见性,并确保了你的应用的高可用性。

您可以将 AWS App Mesh与AWS Fargate、Amazon ECS、Amazon EKS和AWS上的自管理Kubernetes上运行的现有或新的微服务结合使用。AWS App Mesh可以监视和控制跨集群、编排系统或作为单个应用程序运行的微服务的通信,而无需进行任何代码更改。

分布式数据管理

单片应用程序通常由大型关系数据库支持,该数据库定义了所有应用程序组件通用的单个数据模型。在微服务方法中,这种中央数据库将妨碍建立分散和独立组件的目标。每个微服务组件都应该有自己的数据持久层。然而,分布式数据管理提出了新的挑战。作为CAP定理的结果,分布式微服务体系结构在性能上固有地牺牲了一致性,并且需要采用最终的一致性。

在分布式系统中,业务事务可以跨越多个微服务。因为它们不能利用单个ACID事务,所以您可能会以部分执行而告终。在这种情况下,我们需要一些控制逻辑来重做已经处理过的事务。为此,通常采用分布式的Saga模式。在失败的业务事务的情况下,Saga安排了一系列补偿事务,这些补偿事务撤消了前面事务所做的更改。 AWS Step Functions使得实现一个Saga执行协调器变得很容易,如下图所示。

clipboard.png

构建由主数据管理工具和过程管理的关键引用数据的集中存储为微服务提供了一种方法来同步它们的关键数据并可能回滚状态。使用Lambda和预定的Amazon CloudWatch事件,您可以构建一个简单的清理和重复删除机制。

状态更改通常会影响多个微服务。在这种情况下,事件源已被证明是一种有用的模式。事件源背后的核心思想是将每个应用程序更改表示为一个事件记录并将其持久化。数据以事件流的形式存储,而不是持久化应用程序状态。数据库事务日志和版本控制系统是事件源的两个众所周知的例子。事件溯源有两个好处:可以为任何时间点确定和重构状态。它自然会产生一个持久的审计跟踪,并有助于调试。

在微服务体系结构上下文中,事件源通过使用发布/订阅模式来分离应用程序的不同部分,它将相同的事件数据提供给不同的微服务数据模型。事件源经常与CQRS(命令查询责任隔离)模式结合使用,以将读写工作负载分离开来,并优化性能、可伸缩性和安全性。在传统的数据管理系统中,命令和查询在相同的数据存储库中运行。

图6显示了如何在AWS上实现事件源模式。Amazon Kinesis数据流是中央事件存储的主要组件,它以事件的形式捕获应用程序更改并将其保存在Amazon S3上。

图6描述了由Amazon API Gateway、AWS Lambda和Amazon DynamoDB组成的三个不同的微服务。蓝色箭头表示事件流:当microservice 1经历事件状态更改时,它通过将消息写入Kinesis数据流来发布事件。所有微服务都在AWS Lambda中运行它们自己的Kinesis数据流应用程序,AWS Lambda读取消息的副本,根据微服务的相关性过滤消息,并可能转发消息进行进一步处理。

clipboard.png

Amazon S3在所有微服务上持久地存储所有事件,并且是调试、恢复应用程序状态或审计应用程序更改时的唯一可靠来源。

异步通信和轻量级的消息

在传统的单片应用程序中,通信是直接的—应用程序的一部分使用方法调用或内部事件分发机制与其他部分通信。如果使用解耦的微服务实现相同的应用程序,则必须使用网络通信实现应用程序不同部分之间的通信。

REST通信

HTTP/S协议是实现微服务之间同步通信的最流行的方法。在大多数情况下,RESTful api使用HTTP作为传输层。REST架构风格依赖于无状态通信、统一接口和标准方法。

使用API Gateway,您可以创建一个API,作为应用程序访问来自后端服务的数据、业务逻辑或功能的“前门”,例如在Amazon EC2和Amazon ECS上运行的工作负载、在Lambda上运行的代码或任何web应用程序。使用API网关服务定义的API对象是一组资源和方法。资源是API域中的类型化对象,它可以将数据模型或关系关联到其他资源。可以将每个资源配置为响应一个或多个方法,即标准HTTP动词,如GET、POST或PUT。REST api可以部署到不同的阶段、版本化以及克隆到新版本。

API Gateway处理所有涉及到接受和处理数十万并发API调用的任务,包括流量管理、授权和访问控制、监控以及API版本管理。

异步消息传递和事件传递

实现微服务之间通信的另一个模式是消息传递。服务通过队列交换消息进行通信。这种通信风格的一个主要好处是,不需要服务发现,而服务是松散耦合的。同步系统是紧密耦合的,这意味着同步下游依赖中的问题会直接影响上游调用方。来自上游调用方的重试可以快速扩展和放大问题。

根据特定的需求(如协议),AWS提供不同的服务来帮助实现此模式。一个可能的实现是使用Amazon Simple Queue Service (Amazon SQS)和Amazon Simple Notification Service (Amazon SNS)的组合。这两种服务紧密合作:Amazon SNS允许应用程序通过推送机制向多个订阅者发送消息。通过同时使用Amazon SNS和Amazon SQS,可以将一条消息传递给多个消费者。图7演示了Amazon SNS和Amazon SQS的集成。

clipboard.png

当您订阅一个SQS队列到一个SNS主题时,您可以向主题发布一条消息,而Amazon SNS向订阅的SQS队列发送一条消息。消息包含发布到主题的主题和消息,以及JSON格式的元数据信息。

另一种实现策略基于Amazon MQ,如果现有软件使用开放标准api和协议(包括JMS、NMS、AMQP、STOMP、MQTT和WebSocket)进行消息传递,则可以使用Amazon MQ。Amazon SQS公开了一个自定义API,这意味着,如果您有一个现有的应用程序需要从本地环境迁移到AWS,那么代码更改是必要的。对于Amazon MQ,在许多情况下不需要这样做。

Amazon MQ管理流行的开源消息代理ActiveMQ的管理和维护。底层基础设施自动提供高可用性和消息持久性,以支持应用程序的可靠性。

业务流程和状态管理

当涉及多个微服务时,微服务的分布式特性使得编排工作流具有挑战性。开发人员可能会试图直接将编制代码添加到他们的服务中。应该避免这种情况,因为它引入了更紧密的耦合,使快速替换单个服务变得更加困难。

您可以使用Step Functions从各个执行离散功能的组件构建应用程序。Step Functions提供了一个状态机,它隐藏了服务编排的复杂性,比如错误处理和序列化/并行化。这使您可以快速地扩展和更改应用程序,同时避免服务内部的额外协调代码。

单步函数是协调组件和单步执行应用程序功能的可靠方法。Step Functions提供一个图形化控制台,将应用程序的组件作为一系列步骤进行排列和可视化。这使得构建和运行分布式服务变得非常简单。Step Functions自动触发和跟踪每个步骤,并在出现错误时重试,因此您的应用程序按预期的顺序执行。Step Functions记录每个步骤的状态,这样当出现问题时,您可以快速诊断和调试问题。您甚至可以在不编写代码的情况下更改和添加步骤,以使您的应用程序更快地发展和创新。

Step Functions是AWS无服务器平台的一部分,支持编排Lambda函数以及基于计算资源(如Amazon EC2和Amazon ECS)的应用程序,还支持Amazon SageMaker和AWS Glue等其他服务。图8说明了Lambda函数的调用是如何直接从Step Functions推到Lambda的,而Amazon EC2或Amazon ECS上的工作人员则持续轮询调用。

Step Functions为您管理操作和底层基础结构,以帮助确保您的应用程序在任何规模上都可用。

clipboard.png

要构建工作流,Step Functions使用Amazon States语言。工作流可以包含顺序或并行步骤以及分支步骤。

图9显示了结合顺序和并行步骤的微服务体系结构的示例工作流。可以通过Step Functions API或API Gateway调用这样的工作流。

clipboard.png

分布式监控

微服务体系结构由许多需要监视的不同分布式组件。您可以使用Amazon CloudWatch来收集和跟踪指标、集中和监视日志文件、设置警报并自动响应AWS环境中的更改。CloudWatch可以监视AWS资源,如EC2实例、DynamoDB表和RDS DB实例,以及应用程序和服务生成的自定义指标,以及应用程序生成的任何日志文件。

监控

您可以使用CloudWatch获得系统范围内对资源利用、应用程序性能和操作健康状况的可见性。CloudWatch提供了一个可靠的、可伸缩的、灵活的监控解决方案,您可以在几分钟内开始使用它。您不再需要设置、管理和扩展自己的监视系统和基础设施。在微服务体系结构中,使用CloudWatch监视定制指标的功能是一个额外的好处,因为开发人员可以决定为每个服务收集哪些指标。此外,还可以基于自定义指标实现动态扩展。

另一个流行的选择是使用Prometheus,尤其是亚马逊的eks。Prometheus是一个开源的监测和报警工具包,经常与Grafana结合使用,以可视化收集到的指标。许多Kubernetes组件在/metrics存储指标,普罗米修斯可以定期收集这些指标。

集中的日志

一致的日志记录对于故障诊断和确定问题非常重要。微服务允许团队发布比以前更多的版本,并鼓励工程团队对生产中的新特性进行试验。理解客户的影响对于逐步改进应用程序是至关重要的。

默认情况下,大多数AWS服务集中它们的日志文件。AWS上日志文件的主要目的地是Amazon S3和Amazon CloudWatch日志。对于运行在EC2实例上的应用程序,可以使用守护进程将日志文件发送到CloudWatch日志。Lambda函数将其日志输出发送到CloudWatch日志,Amazon ECS包括对awslogs日志驱动程序的支持,该驱动程序允许将容器日志集中到CloudWatch日志。对于Amazon EKS来说,有必要运行FluentD,它将集群中各个实例的日志转发到一个集中的日志CloudWatch日志中,在那里,这些日志将通过Elasticsearch和Kibana进行更高级的报告。

图10说明了一些服务的日志功能。然后,团队可以使用Amazon Elasticsearch Service (Amazon ES)和Kibana等工具搜索和分析这些日志。Amazon Athena可用于对Amazon S3中的集中日志文件运行特殊查询。

clipboard.png

分布式跟踪

在许多情况下,一组微服务一起工作来处理请求。设想一个由数十个微服务组成的复杂系统,其中调用链中的一个服务发生了错误。即使每个微服务都正确地进行了日志记录,并且将日志合并到一个中央系统中,也很难找到所有相关的日志消息。

AWS X-Ray背后的核心思想是使用相关id,它是附加到与特定事件链相关的所有请求和消息上的惟一标识符。当请求到达第一个x – ray集成服务(例如,应用程序负载均衡器或API网关)并包含在响应中时,跟踪ID将添加到HTTP请求的特定跟踪标头X-Amzn-Trace-Id中。通过X-Ray SDK,任何微服务都可以读取,但也可以添加或更新这个头。

AWS X-Ray与Amazon EC2、Amazon ECS、Lambda和AWS Elastic Beanstalk合作。您可以将X-Ray用于用Java、Node、.net编写的应用程序。

clipboard.png

AWS上的日志分析选项

搜索、分析和可视化日志数据是理解分布式系统的一个重要方面。Amazon CloudWatch Logs Insights是一个可以即时探索、分析和可视化日志的伟大服务。这允许您排除操作问题。分析日志文件的另一个选项是使用Amazon ES和Kibana。

Amazon ES可以用于全文搜索、结构化搜索、分析,以及三者的组合。Kibana是Amazon ES的一个开源数据可视化插件,可以与之无缝集成。

图12展示了使用Amazon ES和Kibana进行的日志分析。CloudWatch日志可以配置为通过CloudWatch日志订阅向Amazon ES实时传输日志条目。Kibana将数据可视化,并向Amazon ES中的数据存储公开一个方便的搜索接口。该解决方案可以与ElastAlert等软件结合使用,实现报警系统,以便在数据中检测到异常、峰值或其他感兴趣的模式时,发送SNS通知、电子邮件、创建JIRA票据等。

clipboard.png

分析日志文件的另一个选择是使用Amazon Redshift和Amazon QuickSight。

Amazon QuickSight可以轻松连接到AWS数据服务,包括Amazon Redshift、Amazon RDS、Amazon Aurora、Amazon EMR、Amazon DynamoDB、Amazon S3和Amazon Kinesis。

Amazon CloudWatch日志可以作为日志数据的集中存储,除了只存储数据外,还可以将日志条目流到Amazon Kinesis data Firehose。

图13描述了一个场景,其中使用CloudWatch日志和Kinesis Data Firehose将日志条目从不同的源流到Amazon Redshift。Amazon QuickSight使用存储在Amazon Redshift中的数据进行分析、报告和可视化。

clipboard.png

图14描述了Amazon S3上的日志分析场景。当日志存储在S3 bucket中时,日志数据可以加载到不同的AWS数据服务中,如Amazon Redshift或Amazon EMR,以分析存储在日志流中的数据并发现异常。

clipboard.png

补充

通过将单片应用程序拆分成小的微服务,通信开销增加了,因为微服务必须互相通信。在许多实现中,使用了HTTP上的REST,因为它是一种轻量级通信协议,但是高消息量可能会导致问题。在某些情况下,可以考虑合并来回发送许多消息的服务。如果您发现自己处于这样一种情况,即您整合了越来越多的服务,只是为了减少聊天,那么您应该检查您的问题域和域模型。

协议

在本白皮书的前面,在异步通信和轻量级消息传递一节中,讨论了不同的可能协议。对于微服务,通常使用简单的协议,如HTTP。服务交换的消息可以采用不同的编码方式,比如JSON或YAML等可读的格式,或者Avro或协议缓冲区等高效的二进制格式。

缓存

缓存是减少微服务架构延迟和聊天的好方法。根据实际的用例和瓶颈,可以使用几个缓存层。许多运行在AWS上的微服务应用程序使用Amazon ElastiCache在本地缓存结果,从而减少对其他微服务的调用量。API Gateway提供了一个内置的缓存层,以减少后端服务器上的负载。此外,缓存还有助于减少数据持久层的负载。任何缓存机制的挑战都是在良好的缓存命中率和数据的及时性/一致性之间找到适当的平衡。

审计

在微服务体系结构(可能有数百个分布式服务)中要解决的另一个挑战是确保用户对每个服务的操作的可见性,并能够在组织级别上获得所有服务的良好全局视图。为了帮助实施安全策略,审计资源访问和导致系统更改的活动是很重要的。

必须在单个服务级别以及在更广泛的系统上运行的服务之间跟踪更改。通常,微服务体系结构中经常发生更改,这使得审计更改更加重要。在本节中,我们将介绍AWS中的关键服务和特性,这些服务和特性可以帮助您审计微服务体系结构。

审计跟踪

AWS CloudTrail是一个跟踪微服务变化的有用工具,因为它可以记录所有在AWS云中进行的API调用,并在几分钟内将其实时发送到CloudWatch日志或Amazon S3。

所有用户和自动系统操作都可以进行搜索,并且可以对意外行为、公司策略违规或调试进行分析。记录的信息包括时间戳、用户/帐户信息、调用的服务、请求的服务操作、调用者的IP地址以及请求参数和响应元素。

CloudTrail允许为同一个帐户定义多个路径,从而允许不同的涉众(如安全管理员、软件开发人员或IT审计人员)创建和管理自己的路径。如果微服务团队有不同的AWS帐户,可以将轨迹聚合到一个单独的S3 bucket中。

在CloudWatch中存储审计跟踪的优点是实时捕获审计跟踪数据,并且很容易将信息重新路由到Amazon ES进行搜索和可视化。您可以配置CloudTrail来登录Amazon S3和CloudWatch日志。

事件和实时动作

必须对系统体系结构中的某些更改做出快速响应,并且必须采取行动来纠正这种情况,或者启动特定的治理过程来授权进行更改。

CloudWatch事件与CloudTrail的集成允许它为所有AWS服务中的所有API调用生成事件。还可以定义自定义事件或基于固定的调度生成事件。

当触发事件并匹配定义的规则时,可以立即通知组织中的适当人员,使他们能够采取适当的操作。如果所需的操作可以自动化,则规则可以自动触发内置工作流或调用Lambda函数来解决问题。

图15显示了一个环境,其中CloudTrail和CloudWatch事件一起处理微服务体系结构中的审计和修复需求。CloudTrail跟踪所有微服务,审计跟踪存储在S3存储桶中。CloudWatch事件位于CloudTrail之上,当您的架构发生特定更改时,它会触发警报。

clipboard.png

资源盘点和变更管理

要在敏捷开发环境中维护对快速变化的基础设施配置的控制,必须使用更自动化、更受管理的方法来审计和控制体系结构。

虽然CloudTrail和CloudWatch事件是跨微服务跟踪和响应基础设施更改的重要构建块,但是AWS Config 允许公司使用特定的规则定义安全策略,从而自动检测、跟踪和警告您违反策略。

下一个示例演示如何在微服务体系结构中检测、通知和自动响应不兼容的配置更改。开发团队的一名成员对微服务的API网关进行了更改,允许端点接受入站HTTP通信流,而不是只允许HTTPS请求。因为这种情况之前已经被组织确定为安全遵从性问题,所以 AWS Config 已经在监视这种情况。

该规则将更改标识为安全违规,并执行两个操作:在S3 bucket中创建已检测到的更改日志以进行审计,并创建一个SNS通知。在我们的场景中,使用Amazon SNS有两个目的:向指定的组发送电子邮件以通知安全违规,以及向SQS队列添加消息。接下来,获取消息,并通过更改API网关配置恢复兼容状态。

clipboard.png

结论

微服务架构是一种分布式设计方法,旨在克服传统单片架构的局限性。微服务帮助扩展应用程序和组织,同时改进周期时间。然而,它们也带来了一些挑战,可能增加额外的体系结构复杂性和操作负担。

AWS提供了大量的托管服务,可以帮助产品团队构建微服务体系结构,并最小化体系结构和操作复杂性。本篇文章将指导您了解相关AWS服务,以及如何使用AWS服务实现典型模式,如服务发现或事件源等。

AWS上的持续集成持续交付

持续集成持续交付是一种 DevOps 软件开发实践。采用持续集成时,开发人员会定期将代码变更合并到一个中央存储库中,之后系统会自动运行构建和测试操作。持续集成通常是指软件发布流程的构建或集成阶段,需要用到自动化组件(例如 CI 或构建服务)和文化组件(例如学习频繁地集成)。持续集成的主要目标是更快发现并解决缺陷,提高软件质量,并减少验证和发布新软件更新所需的时间。

通过持续交付,系统可以自动为将代码更改发布到生产环境做好准备。​现代应用程序开发的支柱,持续交付通过在构建阶段后将所有代码变更部署到测试环境和/或生产环境中,实现对持续集成的扩展。在正确实施时,开发人员将始终拥有已通过标准化测试流程的部署就绪构建构件​。

采用持续交付时,开发人员可以自动执行单元测试以外的测试,这样他们就可以在部署到客户环境前跨多个维度对应用程序更新进行验证。这些测试可能包括 UI 测试、负载测试、集成测试、API 可靠性测试等。这有助于开发人员更全面地验证更新并抢先发现其中的问题。借助云,开发人员可轻松高效地自动创建和复制多个用于测试的环境,而这一点以前在本地很难实现。

为什么需要CICD?

过去,一个团队的开发人员可能会孤立地工作很长一段时间,只有在他们的工作完成后,才会将他们的更改合并到主分支中。这使得合并代码更改变得困难而耗时,而且还会导致错误积累很长时间而得不到纠正。这些因素导致更加难以迅速向客户交付更新。

持续交付与持续部署

采用持续交付时,系统会构建并测试每一个代码变更,然后将其推送到非生产测试环境或临时环境中。生产部署前可能存在多个并行测试阶段。持续交付与持续部署之间的区别在于,需要手动批准才能更新到生产环境。对于持续部署,生产会在没有明确批准的情况下自动发生。

持续交付可实现整个软件发布流程的自动化。提交的每一个修订都会触发一个自动化流程,即构建、测试并提供更新。部署到实际生产环境的最终决定由开发人员触发。

持续交付不是持续部署

关于持续交付的一个误解是,提交的每一个更改都在通过自动化测试后立即应用到生产中。然而,持续交付的关键不是立即将每一个变更应用到生产中,而是确保每一个变更都准备好投入生产。在将更改部署到生产环境之前,可以实现决策过程,以确保生产部署经过授权和审核。这个决定可以由一个人做出,然后由工具执行。

使用持续交付,上线的决定将成为一个业务决策,而不是技术决策。每次提交时都会进行技术验证。将变更发布到生产环境并不是一个破坏性事件。部署不需要技术团队停止处理下一组更改,也不需要项目计划、移交文档或维护窗口。部署成为一个可重复的过程,已在测试环境中多次执行和验证。

持续集成持续交付的优势

  • 自动化软件发布流程

持续交付让您的团队能够自动构建、测试并准备代码变更,以便发布到生产环境中,从而使您的软件交付更加高效、快速。提高开发人员的工作效率

  • 提高开发人员的工作效率

持续集成可将开发人员从手动任务中解放出来,并且鼓励有助于减少发布到客户环境中的错误和缺陷数量的行为,从而提高团队的工作效率。

  • 更快发现并解决缺陷

通过更频繁的测试,您的团队可以在缺陷稍后变成大问题前发现并解决这些缺陷。

  • 更快交付更新

持续集成有助于您的团队更快、更频繁地向客户交付更新。

AWS Elastic Beanstalk

AWS Elastic Beanstalk 可让您迅速地在 AWS 云中部署和管理应用程序,而无需为运行这些应用程序的基础设施操心。

AWS Elastic Beanstalk 可降低管理的复杂性,但不会影响选择或控制。您只需上传应用程序,AWS Elastic Beanstalk 将自动处理有关容量预配置、负载均衡、扩展和应用程序运行状况监控的部署细节。

Elastic Beanstalk 支持在 Go、Java、.NET、Node.js、PHP、Python 和 Ruby 中开发的应用程序,借助 Elastic Beanstalk,您可以快速轻松地部署、监控和扩展应用程序。

创建环境时,Elastic Beanstalk 会预配置所需资源运行应用程序。为环境创建的 AWS 资源包括一个弹性负载均衡器(图中的 ELB)、一个 Auto Scaling 组和一或更多个 Amazon Elastic Compute Cloud (Amazon EC2) 实例。

Elastic Beanstalk 提供了应用程序运行状况和指标监控控制面板,方便您监控生产网站的运行情况。

Amazon Web Services (AWS) 包含一百多种服务,每项服务都针对一个功能领域。服务的多样性可让您灵活地管理 AWS 基础设施,然而,判断应使用哪些服务以及如何进行预配置可能会非常困难。通过使用Elastic Beanstalk可以帮助您方便的完成繁琐的部署工作,您可以专注于自己的业务创新。

企业云成本管理指南——如何了解和降低成本

说明:本文翻译自A guide to enterprise cloud cost management – understanding and reducing costs一文,作者Yair Green。该文明确阐述了企业云成本管理的面临的挑战,并给出了解决策略。

对于企业来说,管理云成本已经成为一个巨大的难题。随着公有云的受欢迎程度的持续增长,亚马逊网络服务(Amazon Web Services)、微软Azure和谷歌等顶级云服务提供商在不断提供更有竞争力的价格来吸引企业。但是您的省钱之路不应该止步于此。有许多因素会增加公有云计算的开销,其中一些是被IT团队最初所忽视的。幸运的是,组织可以使用智能云成本管理策略避免发生任何不必要的意外的账单。

在采用云计算的过程中,企业需要确保在持续将服务迁移到云计算提供商时,有适当的成本管理策略来控制支出。让我们研究一些可以立即降低云成本的管理策略。

管理云成本的挑战

云基础设施为组织提供了许多好处,但也带来了各种挑战。好处是显而易见的——可扩展性、可控制、安全——但了解云迁移对组织的影响也很重要。造成云成本管理挑战的一个主要因素是组织在跟踪和预测使用方面的困难。不可预测的预算成本可能是云管理最大的痛点之一。

随需增减的能力,使得资源采购从财务或采购团队的独家采购所有权,过渡到跨IT、DevOps和其他的众多部门。这种采购的民主化已经引发了越来越多利益相关者们对成本的关注,因为他们现在负责理解、管理和优化成本。

在将基础设施迁移到云之前,评估公有云的成本非常重要。与任何IT服务一样,公有云也会带来意料之外的收费。

云成本管理策略的第一步是查看公有云提供商的计费模型。请注意您的应用程序需要多少存储空间、CPU和内存,以及哪些云实例可以满足这些需求。然后,估计这些应用程序在云中的成本。将你的估算与当前在办公场所运行这些应用程序的成本进行比较。由于数据位置和其他因素,有些工作负载在内部时更划算。

当使用多个公有云提供商时,集成和其他因素可能会导致意想不到的费用。提前考虑并计划应用程序部署,以了解您可能会在哪些地方产生额外的成本。另外,查看您的云账单并查看访问、CPU和存储的费用。跨多个云跟踪开销是非常不容易的。

在向云供应商提交之前,您必须了解您的业务需求,并检查某个供应商提供了什么。乍一看,大多数供应商都有类似的包和价格,但是当您详细查询它们时,您可能会发现,例如,某个供应商对于某些类型的工作负载的价格要低得多。

组织也应该避免厂商锁定。将工作负载从一个云供应商转移到另一个云供应商有时很困难。组织有时会支付超出必要的价格,因为它们没有提前做好准备工作,而且在应用程序或工作负载投入生产后,迁移它们也非常困难。

降低云成本的关键点

要降低云成本,必须首先必须能够通过发现云资源的低效使用来识别浪费。云成本管理不是一个一劳永逸的过程,但如果解决了浪费的大部分云支出和预算超支的核心问题,就可以立即节省云基础设施成本。

确保团队能够直接直观的了解他们的支出。除非你清楚地知道自己已经花了多少钱,否则你很容易就会被那些无关的服务冲昏头脑。确定你拥有什么,以及谁拥有它。为资源与用户标记所有权,记录成本中心的信息和创建的时间,使你可以了解花费的来源。此信息用于通过详细的账单报告跟踪使用量。

一旦你掌握了自己的开销,就要为每个账户制定预算。在建立基线之后,可以确保您正在根据实际使用情况设置实际的和现实的预算。查找白名单实例类型(RDS和EC2),只允许特定类型(例如t2.medium)或实例类(例如t2-*)或固定大小的实例(例如*-micro、*-small、*-medium)。

防止员工使用从市场上未经批准的虚拟实例(包括软件许可成本),或者从供应商那里使用特定的操作系统或数据库引擎(与供应商之间没有企业协议,或者成本太高而无法大规模运行)。检查服务在哪些区域运行。每个地区的服务成本可能相差高达60%。因此,您需要确保在给定区域运行服务的需求与这样做的成本之间取得平衡。可以使用计划实例调度在计划时间段内启动和停止实例。在晚上和周末关闭环境可以帮助您节省70%的运行时成本。确定哪些环境需要7*24的可用性,并安排其余的工作。

进行存储的生命周期管理,确保定期备份日志和快照,并备份和删除不再使用的任何存储卷。确保您只使用一个Cloudtrail配置,并且仅在绝对必要时才添加其他配置。同时,确保沙盒或试验账户只用于勘探目的和并运行在一个承诺的时间段内。

另一个有助于减少运营费用的技术解决方案是使用容器。IT团队经常使用DevOps方法,容器将应用程序及其所有依赖项打包在一起,使它们更容易部署、管理和/或从一个环境迁移到另一个环境。

最后,使用供应商的云成本管理工具。许多组织认为,自己处理这些成本优化工作需要太多的时间和技能。相反,它们利用来自信誉良好的供应商的云成本管理服务。云成本管理是各个组织在迁移到云时的主要痛点之一。由于云基础设施的复杂性,云成本有时很难估计。