ACloudGuru-博客中文翻译-二-

ACloudGuru 博客中文翻译(二)

原文:ACloudGuru Blog

协议:CC BY-NC-SA 4.0

云认证常见问题:AWS vs Azure vs Google 云认证对比

原文:https://acloudguru.com/blog/engineering/cloud-certification-faqs-aws-vs-azure-vs-google-cloud-certs-compared

在本帖中,我们将探讨如何通过三大云提供商的认证计划更有效地提高技能。因此,如果你有兴趣深入研究亚马逊网络服务(AWS) ,或微软 Azure ,或谷歌云平台(GCP) ,并真正掌握它们,那么请继续阅读!


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


为什么我应该关心认证?

我需要从解释认证的价值开始。不,这不是因为他们会保证给你一份工作。(他们不会。)

但认证仍然是非常有价值的工具,我相信它们的主要价值是指导你的学习过程,特别是修复你的盲点,那些未知的未知,否则将摧毁你原本可以提供的价值。他们还可以帮助你掌握一些技术行业高薪职位的基本技能。

我们三家云提供商之间的第一大相似之处在于他们设计认证系统的方式。通过首先确认你确实知道你在做什么,然后提供一种方法让你展示你的成就,来确定一个真实世界的价值。

  • 亚马逊表示,你可以验证技术技能和云专业知识,以发展你的职业和业务。
  • 微软鼓励你展示你与今天的技术角色和要求保持同步。
  • 谷歌的措辞也非常相似,验证你的专业知识,展示你用谷歌云技术改变业务的能力。

所有这些认证的要点都是一样的。

  1. 在确定的范围内学习广泛的技能。通常,范围匹配一些 IT 职业角色。
  2. 通过回答一系列问题并可能执行一些示例任务来展示您的理解和能力。如果您获得足够的分数通过预定义的阈值,那么您将获得认证,云提供商将担保您的能力。

认证是如何组织的?

让我们来看看这些程序是如何组织的。每个云提供商都有一个非技术性的入门级认证,主要是了解云模式的方方面面,以及如何利用云的关键服务来解决业务问题。

每个云提供商还至少有一个助理级认证。这些文章深入探讨了云服务的实际使用,并且相当具有技术性。

每个云中还有专家级的认证,在这里事情会变得特别复杂。

  • Azure 称这些证书为“专家”
  • 谷歌称他们的认证为“专业”认证。
  • 亚马逊将他们的一些证书命名为“专业证书”,但大多数 AWS 证书被命名为“专业证书”。

所有这些都是严肃的事情,需要大量的技术专业知识,代表着重要的能力。获得这些证书的候选人应该为他们的成就感到自豪。当然,我指的是专家级别的,但我绝对也指的是助理和基础级别的。

每一个都是一个人个人学习旅程中有价值的一部分,即使有人收集了现有的每一个证书,他们仍然必须继续他们的学习旅程,因为技术本身永远不会停止改进。

我应该获得哪些认证?

列出每一个云提供商提供的每一个认证将会把我们带到一个比这篇文章更小的细节层次。但是不用担心。我们将带您深入了解每个云提供商的认证:

该学哪种云?

如果你正在寻找开始你的云生涯,但是你不确定应该关注哪种云,请查看我们的云比较系列

如果你还是不确定,那就随便挑一个。真的!你几乎不会出错!因为开始取得进步——任何进步——既是必要的,也是有价值的。即使您决定以后转换云,您也将遥遥领先,并且您肯定仍然会从您在第一个云上已经学到的任何东西中受益。所以就这么做吧!

我如何获得云认证?

现在我们对这些认证系统有了一个大致的了解,让我们来看看物流。首先,获得这些证书都需要通过考试。

  • 亚马逊和谷歌每个认证只有一个考试。
  • 但是微软有时需要一次以上的考试才能获得特定的证书。由于微软的认证系统是一堆乱糟糟的无意义的数字和版本,如果你对 Azure 证书感兴趣,你真的需要观看我们的视频解码指南或查看相关的博客帖子。

云认证考试包含哪些类型的问题?

让我们考虑一下这些考试。很多都是由多项选择题组成的,你必须选择正确的答案或者一组多项答案来回答这个问题。如果你回答正确,你就得到那个问题的要点。如果你做错了什么,你不会得到任何分数。这是一样的,无论是 50/50,对/错问题,还是你需要选择,比如说,八个可能性中的四个正确选项。

但是不要太紧张,因为大多数问题只要求你从四五个选项中选择一个正确的答案。事实上,AWS 和 GCP 考试几乎完全是这样。

也就是说。。。微软确实把它和一些关于识别图的部分或者把东西放到图形上的问题混在了一起——诸如此类。

云认证考试有多少题?

我相信你们中的许多人都想知道考试中会有多少题,但实际上差异很大。不仅是每次考试,有时甚至是一次考试。

所以,当你准备参加一个特定的考试时,检查来自供应商的官方细节和来自其他考生的关于他们看到了多少题的非官方报告。

云认证考试可以作弊吗?

由于我刚才提到了阅读人们的考试报告,现在是一个很好的时机来警告你不要寻找或阅读任何考试垃圾,人们违反了他们的保密协议,分享了关于考试的私人信息,如他们看到的问题-实际的问题。

供应商有非常有趣的方法来找出谁像这样作弊,所以远离任何不知名的备考网站。特别是如果他们在你获得认证时提供类似“退款保证”的东西,因为这些实际上总是一个欺骗的骗局。这些都是坏消息,即使阅读它们也会让你被禁止参加供应商认证计划或完全与他们做生意。


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


什么是云认证考试实验室?

我们还应该关注实验室。一些考试包括一部分考试,它是关于执行一个真正的实践任务,而不仅仅是回答关于材料的问题。

  • 微软是第一个将实验室纳入某些考试的公司。
  • 亚马逊也开始整合它们。
  • 截至本文发布时,谷歌的考试还不包括任何实验室。

我需要多长时间完成认证考试?

如果考试包括实验,他们通常会给你多一点时间来完成。

  • 当你参加微软 Azure Fundamentals 考试时,你只有 45 分钟,因为这是一个没有实验室的简短考试,而其他微软考试给你 100 分钟或 120 分钟,这取决于它们是否包括实验室。
  • 亚马逊为他们的基础考试提供 90 分钟,为他们的助理考试提供 2 个多小时,没有实验室,为任何专家级考试或有实验室的助理考试提供 3 个小时。
  • 谷歌还允许你有 90 分钟的时间参加他们的入门级考试,然后剩下的时间是两个小时。

参加认证考试需要多少钱?

你为参加这些考试支付的费用也取决于考试的级别。请注意,一些其他司法管辖区的价格是以当地货币设定的,但它们在转换后大致相同,并且这些价格在发布时是真实的。

  • AWS 基础考试为 100 美元,助理考试为 150 美元,其余考试为 300 美元。
  • 谷歌入门级收费 99 美元,助理级收费 125 美元,专业级收费 200 美元。
  • 对于 Azure 考试,微软也对基础课程收费 99 美元,其余课程收费 165 美元。

如果我没有通过认证考试会怎么样?

如果你尽了最大努力,但还是没能通过考试,会发生什么?虽然你可以重考,但不幸的是,这意味着你要为另一次尝试付费。另外,你还得等一会儿——如果你愿意的话,可以先冷静一下。

  • AWS 有最简单的重考政策:两周后可以重考。
  • 微软与此非常相似,两次尝试之间有两周的延迟——除了他们会让你在一天后重试第一次。然后,他们会限制你在 12 个月内最多参加 5 次考试。
  • 谷歌云的重考政策是最严厉的,第一次失败后要等 14 天,第二次失败后要等 60 天,第三次失败后要等整整 365 天。(之后我也不确定,也许他们会让你等个十年什么的?)

认证考试使用哪些语言?

这三家供应商都提供英语考试。谷歌还提供了大约一半的日文版和一个西班牙文版。但是微软和亚马逊有更广泛的语言支持,增加了韩语、中文、印度尼西亚语、德语、法语、意大利语和葡萄牙语。微软甚至增加了两种语言:俄语和阿拉伯语。

但是在任何情况下,你都应该仔细检查一门语言是否适合你想参加的考试。因为即使在某些情况下,以前提供的语言可能不再提供。例如,如果考试刚刚更新,cert 团队还没有机会重新翻译它。

认证考试:体能测试中心 vs 在线监考

就参加这些考试而言,你有两个选择:你可以去物理测试中心,或者你可以设置自己做在线监考。不管怎样,都会有人看着你考试,以确保你没有作弊。

这三种云都支持物理和虚拟选项。但是他们使用不同的测试提供商,这意味着考试软件会有所不同,某个特定的物理测试中心可能不会支持所有的测试。

通常,物理测试中心是由学校管理的,他们使用同样的房间和电脑来测试他们自己的学生。因此,一个地方可能能够处理 Azure 考试,但不能处理 GCP 的考试,反之亦然。

  • 亚马逊和微软都支持皮尔森 VUE 进行测试。
  • 如果你愿意,亚马逊也允许你选择 PSI。
  • 微软有时也会在某些情况下使用 PSI 或另一个名为 Certiport 的工具。
  • 谷歌一直用 Kryterion。

现在,即使只是预订这些考试中的一个也可能有点麻烦,所以请查看我们在描述中链接的视频来引导您完成这一过程。

想了解更多关于在线监考的信息吗?查看我们的在线云认证常见问题解答了解更多详情。(为了看看什么会出错,看看这个引人入胜的故事,一场近乎灾难的在线监考考试。)

云认证的有效期有多长?

假设你刚刚设法为自己获得了其中一项认证。恭喜你!但是认证有效期有多长呢?

  • 如果是谷歌证书,有效期两年;一个 AWS 的可以用三个。当需要更新其中一个证书时,你只需再次参加正常的考试,尽管你通常可以获得考试费用的半价优惠。
  • 然而,由于最近推出的一些大的认证更新变化,微软做的事情有点不同。首先,他们的 AZ-900: Azure 基础认证不会过期。一旦你做到了这一点,你将永远拥有它。其他 Azure 认证仅在一年后到期,但更新它们是你可以在网上相当容易地完成的事情,不仅这些更新评估是免费的,而且它们比正常的考试更简单,更短,只涉及技术更新,只使用简单的 web UI 而不是重量级的考试软件。

如果您未能通过任何云的任何重新认证考试,请不要担心:您仍然可以保留认证,直到它正常过期,您可以重试重新认证。

还有其他问题吗?在 Twitter脸书上给我们呐喊,或者加入我们 Discord 社区的对话。当你这么做的时候,也许可以考虑在 YouTube 上订阅一个云专家。

不管你学习之旅的下一站是哪里,保持敬畏,云大师们!


加速您的云计算职业生涯

云专家让你轻松(也很棒)提升你的云事业——即使你对技术完全陌生。查看 ACG 目前的免费课程立即开始免费试用。

云比较:AWS EC2 vs Azure 虚拟机 vs Google 计算引擎

原文:https://acloudguru.com/blog/engineering/cloud-comparison-aws-ec2-vs-azure-virtual-machines-vs-google-compute-engine

TL;博士:

尽管新的和创新的云技术激增,但云中托管的良好的旧虚拟机(VM)仍然是最受欢迎的服务之一,并且通常负责最大份额的云支出。

虚拟机通常被称为“实例”,用于广泛的场景:从 web 和应用服务器到高度专业化的工作负载,如机器学习和分析。简而言之,虚拟机是我们现代生活方方面面的发动机。

这引发了主要云提供商之间的激烈竞争,以获得竞争优势。本文将比较亚马逊网络服务(AWS)、微软 Azure 和谷歌云平台(GCP)的虚拟机服务,并提供一些关于现代公共云最受欢迎的方面的见解。

背景

对于大多数读者来说,坐在壁橱里运行单一应用程序(如电子邮件或虚拟主机)的物理服务器的概念要么是遥远的痛苦记忆,要么是他们从老同事那里听到的故事。从历史上看,这是大多数组织的运作方式,较大的组织依赖于装有空调的服务器机房,而不是壁橱。

21 世纪初虚拟化的采用改变了游戏规则。它使应用程序更具可移植性,与硬件更少纠缠:管理员现在不是在专用的物理服务器上托管应用程序,而是在“虚拟服务器”上托管它们,通常是在别人的硬件上。

这为现代公共云铺平了道路,公共云主要是为了满足托管虚拟机的需求而发展起来的,今天仍在继续为这一目的服务,尽管增加了一些附加功能。

从表面上看,云虚拟机相当于本地虚拟机,就像您将与 VMware 或 Hyper-V 一起部署的虚拟机一样。但是现代云虚拟机提供的功能远远超过了过去的虚拟机,本文将探讨其中的一些功能,以及三大云提供商是如何脱颖而出的。

下表简要总结了 AWS、Azure 和 GCP 提供的虚拟机服务:

服务 GA 自 区域可用性
AWS EC2 2006 年 8 月 全球的
Azure 虚拟机 2012 年 6 月 全球的
谷歌计算引擎 2013 年 4 月 全球的

定价

由于所涉及的复杂性和变量,比较云提供商之间的虚拟机价格很可能是一篇 MBA 论文。更实际的方法是检查一个常见的用例,可以说是“比较苹果和苹果”。

让我们考虑下面两个常见的场景。

请注意,我们将只关注虚拟机的每月成本(vCPUs、内存和存储),但在生产环境中,总成本中还有许多其他因素,如数据传输、软件许可等。

场景 1:一个按需虚拟机

下表比较了用作 web 服务器、运行 Linux 的一般用途虚拟机的按需(即付即用)月成本:

| 供应商 | 虚拟机类型 | vcpu | 内存 | 存储 | 每月总费用 |
| 自动警报系统 | T4g.xlarge | 四 | 16 GB | 32 GB 固态硬盘 | $101 |
| 蔚蓝的 | Bs 系列 | 四 | 16 GB | 32 GB 固态硬盘 | $121 |
| GCP | E2 | 四 | 16 GB | 32 GB SSD | $99 |

场景 2:五台计算优化的保留虚拟机

下表比较了运行 Linux 的五个计算优化实例(保留期为 3 年)的每月成本:

| 供应商 | 虚拟机类型 | vcpu | 内存 | 附属存储器 | 预订期限 | 每月总费用 |
| 自动警报系统 | C5a.4xlarge | 16 | 32 GB | 128 GB 标准 | 3 年 | $1,002 |
| 蔚蓝的 | F16s v2 | 16 | 32 GB | 128 GB 标准 | 3 年 | $905 |
| GCP | c2 标准 16 | 16 | 64 GB | 128 GB 标准 | 3 年 | $1,243 |

如前所述,许多变量都会影响价格。这里介绍的这两种情况只是示例,总月成本是使用每个提供商的定价计算器获得的。


Cloud Adventure

云迁移:角色扮演游戏 云迁移活动需要策略和知识——有点像龙与地下城&的游戏。加入这一独特的角色扮演练习,专家们将通过真实的云迁移场景进行游戏。


功能比较

对于大多数用例来说,三个主要提供商的产品非常相似,但是也有一些不同,特别是在集成服务和工具方面。

由于每个提供商都围绕各自的虚拟机服务提供了大量的功能,因此我们将重点关注一些最感兴趣的功能。

虚拟机类型

你不会试图用剪刀修剪你的草坪,是吗?用电锯切开一个西瓜怎么样?希望你的答案是“不”。有更合适的工具来完成这些任务。

同样,您还需要为正确的作业使用正确的虚拟机类型!

许多应用程序会对一般的虚拟机(通常称为通用虚拟机)感到满意。但是某些特定的应用程序更加挑剔:例如,一个分析应用程序可能需要一个拥有更多计算资源的虚拟机,而一个大型数据库应用程序可能需要一个针对高 I/O 量进行优化的虚拟机。

意识到对多种虚拟机类型的需求,云提供商响应了这一号召。你一定会找到适合几乎所有用例的东西。

下表显示了 AWS、Azure 和 GCP 可用的虚拟机类型:

| 用例 | AWS EC2 | Azure 虚拟机 | GCP 计算引擎 |
| 通用 | A1,M4,M5,M5a,M5n,M5zn,M6g,T2,T3,T3a,T4g,Mac | b、Dsv3、Dv3、Dasv4、Dav4、DSv2、Dv2、Av2、DC、DCv2、Dv4、Dsv4、Ddv4、Ddsv4 | E2,N2,N2D,N1 |
| 计算优化 | C4、C5、C5a、C5n、C6g、Cgn | f、Fs、Fsv2 | C2 |
| 内存优化 | R4,R5,R5a,R5b,R5n,R6g,X1,X1e,高内存,z1d | Esv3、Ev3、Easv4、Eav4、Ev4、Esv4、Edv4、Edsv4、Mv2、M、DSv2、Dv2 | M2 M1 |
| 存储优化 | D2,D3,D3en,H1,I3,I3en | Lsv2 | 不适用的 |
| 加速计算和高性能 | F1,G3,G4ad,G4dn,P2,P3,P4,Inf1 | NC,NCv2,NCv3,NCasT4_v3(预览),ND,NDv2(预览),NV,NVv3,NVv4,HB,HBv2,HC,H | 主动脉第二声 |

虽然这个列表肯定会随着时间的推移而变化,但快速浏览一下就会发现,AWS 和 Azure 似乎拥有最多样化的实例类型列表,而 GCP 的选择范围较窄。

对于一般用途的应用,任何一个供应商都可以满足大多数需求。对于更专业的工作负载,AWS 和 Azure 可能更合适。

区域可用性

不管我们的星球是如何连接的,信息包只能传播这么快。根据您的用户和客户在世界上的位置,将您的基础设施放置在地理上尽可能靠近他们的地方是有意义的。

这三家供应商都吹嘘他们的全球数据中心网络有多广泛,所以让我们比较一下他们的全球存在。

自动警报系统

AWS 拥有 25 个全球区域,每个区域由两个或更多数据中心组成(称为可用性区域),计划在 2021 年初增加 15 个区域。

AWS Global Infrastructure Map. Source: aws.amazon.com

蔚蓝的

Azure 目前在全球 33 个地区运营,并计划增加一些地区。

Microsoft Azure Global Infrastructure Map. Source: azure.microsoft.com

GCP

谷歌云在 24 个地区运营,其他地区也在计划中。

Google Cloud Platform Global Infrastructure Map. Source: cloud.google.com

这三家供应商都拥有庞大的全球网络,并正在积极扩大其全球业务。就全球业务而言,微软 Azure 似乎比 AWS 略胜一筹,而 GCP 目前在非洲、中东或中国都没有业务。


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


虚拟机扩展

公共云的一大承诺是能够自动扩展或缩减基础架构,同时只需为正在使用的资源付费。公司进行巨额资本投资以适应偶尔出现的需求高峰(如黑色星期五)的日子已经一去不复返了,只是为了在今年剩下的时间里保持闲置!

AWS 中的虚拟机扩展

在 AWS 中,主要的 VM 扩展服务是 EC2 Auto Scaling,但是也可以使用一个更新的服务,它的通用名称是 AWS Auto Scaling (后者也可以自动扩展其他类型的云资源)。触发器在扩展策略中定义,这些策略应用于称为自动扩展组(ASG)的虚拟机逻辑组。

AWS 中的扩展策略可以从简单到非常精细和复杂。触发器可以基于常见的指标,如 CPU 利用率,但也可以使用其他基于云的指标,如 CloudWatch ,它们提供了非常广泛的指标可供选择。

除了 EC2 自动扩展之外,AWS 自动扩展是一项旨在降低配置扩展策略复杂性的服务。

AWS Auto Scaling 基于用户提供的策略自动构建策略,例如针对成本或可用性(或两者的组合)进行优化。它还提供预测性扩展,这是一种试图预测流量模式并相应扩展基础设施的机器学习方法。

Azure 中的虚拟机扩展

Azure 的自动缩放方法与 AWS 非常相似。它利用了名为虚拟机规模集(VMSS) 的服务。VMSS 中的虚拟机作为一个单元进行管理,并且可以在达到某些预定义的阈值时或根据设定的计划进行扩展或缩减。

在 Azure 中,您还可以使用各种指标来触发扩展事件,包括基于主机的指标、应用程序级指标(使用 App Insights 服务)和来宾 VM 指标,但这些都需要安装 Azure 诊断扩展。

Azure 不提供任何预测性扩展。


*如果你已经使用 Azure 很长时间了,那么你可能会被问到,**“为什么我们的账单这么高?”*要回答这个问题,你需要进一步了解 Azure 成本管理。在考虑成本的情况下改进计划。


GCP 的虚拟机扩展

在 GCP 的计算引擎中,伸缩服务是托管实例组 (MIGs)的一个特性。因此,虚拟机必须在 MIG 中才能启用自动扩展。

自动缩放策略定义了将触发缩放事件的一个或多个信号。信号可以基于目标利用率指标,如 CPU 利用率、负载平衡能力或 GCP 的云监控指标。信号也可以是基于时间表的,尽管这一特性仍处于预览模式,还没有广泛应用。与 AWS 一样,GCP 也提供基于机器学习算法分析的历史趋势的预测性缩放。


设置多台服务器?我们都知道在几台服务器上连续运行命令是乏味且容易出错的。查看我们的动手实验室,学习使用引导脚本在谷歌计算引擎中自动完成新服务器的基本设置。


下表总结了每个提供商的虚拟机扩展功能:

| 供应商 | 虚拟机扩展服务 | 组织单位 | 支持来宾虚拟机指标 | 预测缩放 | 预定缩放比例 |
| 自动警报系统 | EC2 自动缩放
AWS 自动缩放 | 自动缩放组(ASG) | 是–需要云监控代理 | 是 | 是 |
| 蔚蓝的 | 虚拟机规模集 | 虚拟机规模集(VMSS) | 是–需要 Azure 诊断扩展 | 不 | 是 |
| GCP | 自动缩放 | 托管实例组(MIG) | 是–需要云监控代理 | 是 | 预览功能 |

冬眠

当虚拟机不需要运行时,有哪些省钱的方法?

最常见的解决方案是简单地停止虚拟机,或者在不再需要时终止它。所有这三个提供商都可以让您轻松地将虚拟机从运行状态切换到停止状态,但 AWS 是唯一一个能够通过从 RAM 保存到磁盘来休眠虚拟机的云提供商,然后在虚拟机再次启动时从虚拟机停止的地方恢复,就像台式机和笔记本电脑中的睡眠功能一样。

GCP 有一个类似的功能,但它目前处于预览模式,并不普遍可用。

下表显示了当前对虚拟机休眠的支持:

| 供应商 | 虚拟机休眠 |
| 自动警报系统 | 是 |
| 蔚蓝的 | 不 |
| GCP | 预览功能 |

虚拟机许可

以下是今年的轻描淡写:云许可非常复杂。

对虚拟机许可模式的全面探索可能需要企业财务学位,因此我们将关注两个主要的感兴趣的软件供应商:微软和甲骨文。

微软许可和云虚拟机

按需

对于像 SQL Server 和 Windows Server 这样的微软产品,所有三个提供商都提供按需许可证,作为运行虚拟机成本的一部分。这是最省事的选择,因为它不需要管理、前期成本或长期投资。不过,这种模式可能不是最具成本效益的选择,尤其是对于那些已经与微软签订了许可协议并希望自带许可证的客户。

BYOL

“自带许可证”(BYOL)模式是现有微软客户的一个受欢迎的许可选项。过去,微软 BYOL 许可证要求许可的应用程序托管在专用服务器上,或购买软件保障(SA)的共享服务器上,这基本上是一种升级,给予客户“许可证移动”权利,允许他们在共享服务器上的云虚拟机上使用微软产品。

截至 2019 年 10 月,微软修改了他们的许可模式,现在即使应用程序托管在专用的云服务器上,也需要额外的费用。这些费用适用于所有主要的云提供商,包括 Azure。

在一个经典的情节转折中,微软推出了 Azure Hybrid Benefit ,这是一个许可计划,帮助客户大幅降低在 Azure 云中运行微软工作负载的成本。

一句话:鉴于最近的许可变化,运行微软产品的大量虚拟机可能会从 Azure 中受益,而不是 AWS 或 GCP。

Oracle 虚拟机许可

Oracle 是一种流行的 RDBMS 解决方案,与不同的供应商有复杂的许可协议。虽然提供了多种 Oracle 服务,但在云虚拟机上运行 Oracle 时,适用以下许可模式:

  • AWS: BYOL
  • 蔚蓝色:BYOL
  • GCP:不支持

计费模型

云计费可能非常复杂,许多公司通过提供服务和解决方案来减少和简化它,从而赚了一大笔钱。虽然关注点通常是按需虚拟机的每小时成本,但也有其他计费模式可以考虑,这些模式可能会显著降低成本。

下表显示了每个提供商提供的虚拟机计费模式,后面是每个模式的简要描述:

| 供应商 | 虚拟机计费模式 |
| 自动警报系统 | 按需
预约
现货
储蓄计划 |
| 蔚蓝的 | 按需
预留
点 |
| GCP | 按需
持续使用
承诺使用
可抢占 |

  • 按需:最简单最常见的型号。也称为“随用随付”:您在虚拟机运行时付费,无需任何前期成本或投资。对于像 Microsoft Server 或 Oracle 这样的许可软件,许可成本是由提供商计算和管理的。

  • Spot :对于具有灵活的停止和开始时间的应用程序,当多余的计算资源可用时,可以根据客户提供的投标价格以很高的折扣(高达按需成本的 90%)购买。

  • 预留:对于可预测的工作负载,客户可以购买预留容量并承诺一年或三年,从而实现可观的节约(高达 60%的按需成本)。

  • 节约计划:仅在 AWS 中提供,这种模式类似于保留模式,客户承诺在一年或三年内使用一定数量的产品。

  • 持续使用:这是一种 GCP 计费模式,类似于 AWS 的储蓄计划,但没有 1 年或 3 年的承诺。客户承诺每月的使用量,并在达到约定的使用量后获得每分钟计费的折扣。

  • 承诺使用 : GCP 版的保留。他们提供 1 年和 3 年的期限。

  • 可抢占的 : GCP 版本的 Spot 实例。

市场

随着公共云的持续流行,提供商建立了软件市场,供应商可以在那里轻松地向客户提供他们的产品。

这些市场帮助客户简化了他们首选的第三方解决方案的部署:客户可以简单地使用供应商提供的映像并将其部署在他们选择的虚拟机上,而不是下载、安装和配置软件的繁琐过程。

下表给出了每个提供商的市场规模:

| 供应商 | 市场中的供应商数量 |
| 自动警报系统 | ~ 12,000 |
| 蔚蓝的 | ~ 17,000 |
| GCP | ~ 4,000 |

虽然在比较这三家供应商时,市场的规模可能不那么重要,但看看上面的数字就可以清楚地看出 Azure 和 AWS 是目前最大的两个市场。


Ho w 公司正在转向云计算
了解随着学习者开始关注 AWS 之外的产品,公司如何为云计算的未来做准备。


底线

在本文中,我们仅仅触及了公共云中可用的虚拟机服务的皮毛。尽管现代创新如无服务器和托管服务的兴起,云虚拟机将永远是云生态系统的主要支柱。

很明显,三大云提供商都在这一领域投入了大量创新。虽然 AWS 在早期占据主导地位,但 Azure 已经取得了长足的进步,并获得了很大一部分市场份额,而 GCP 是一个规模较小但仍在增长的公司。

如果您正试图在这三家供应商中做出选择,以下是一些需要考虑的问题:

  • 您的应用程序需要什么类型的实例,对于这种类型的实例,谁提供的价格最有竞争力?
  • 云虚拟机通常是客户购买的众多服务之一,那么哪些相关服务对您很重要,哪个提供商提供这些服务呢?(查看我们的细目分类比较 AWS、Azure 和 Google Cloud IAM 服务,看看这是否会影响你选择的云。)
  • 您有任何高度专业化的工作负载吗?例如,GCP 为 Kubernetes 提供了优化的实例,其性能可能优于 AWS 和 Azure。
  • 需要什么类型的操作系统许可证?微软主导的环境可能会在 Azure 中实现更多的成本节约。
  • 如果其他条件相同,您是否与其中一家供应商有现有关系?他们中的一个能提供比其他人更好的交易吗?

当决定哪家提供商赢得 AWS EC2 vs . Azure VMs vs . GCP 计算引擎竞赛时,显而易见的(也是令人讨厌的)答案是:视情况而定!

关于作者

Moneer Rifai 是一名云开发者和架构师,热衷于帮助他人进入这个领域。(LinkedIn|Twitter)


提升您的云计算职业生涯

无论您是云新手还是经验丰富的专家,云专家都能让您轻松(而且非常棒)地获得认证并掌握现代技术技能。查看 ACG 目前的免费课程或者现在就开始体验的免费试用

云计算的价值主张:通过 AWS 最大化商业价值

原文:https://acloudguru.com/blog/engineering/cloud-computings-value-proposition-maximizing-business-value-with-aws

云计算最吸引人的一个方面是它的“随用随付”定价模式。这可以大幅削减资本支出,代之以运营支出,为企业提供更多控制和更大的灵活性。Amazon Web Services 广泛的解决方案和服务组合使组织能够推动可衡量的业务成功,包括成本节约、成本规避和运营弹性,大幅减少停机时间,提高任务级别的资源效率,并大大增强业务敏捷性。在这个博客系列中,我将涉及其中的一些要点:

  • 迁移到 AWS 平台有什么商业好处?
  • 有哪些商业杠杆可以帮助您降低 AWS 的总体拥有成本?
  • 其他企业是如何使用这些杠杆的?

我相信你已经理解了云计算的概念。但是,让我们从价值主张开始,先做一个简短的概述。

一堂简短的历史课

当试图理解什么是云计算,以及它提供的好处时,想想工业革命是如何使制造过程现代化的。当时,企业有自己的发电机来提供电力。这是一项伟大的发明,但要让发电机运转起来需要时间。最终,企业负责维护这些设备。当电网发展起来的时候,它允许企业利用公司已经获得的资源,并通过付费获得所需的电力。这还允许客户访问对该电网进行的任何额外增强或升级。让我们快进到 20 世纪,那时公司建立自己的数据中心来运营业务。这需要大量的前期资本投资和漫长的采购周期,并将创建、运行和维护企业所有硬件和软件的责任交给了一组专门的资源。因此,企业很难跟上升级和引入新功能的步伐。他们对客户需求和市场变化反应迟钝。借助云计算,企业能够在由第三方提供商构建和维护的基础设施上托管其应用程序、任务关键型工作负载和特殊项目。这使得公司可以避免大量的前期硬件投资,只为他们使用的东西付费,类似于公用事业。此外,客户还可以获得自动功能升级,并可以访问具有许多功能的平台。云计算提供商,如 Amazon Web Services,拥有并维护这些应用程序服务所需的网络连接硬件,而客户则通过 Web 应用程序提供和使用他们需要的东西。

云计算的价值主张

从经济学角度看,云计算的价值主张是什么?让我们看看公共云为客户提供价值的典型方式。首先,让我们假设您对 IT 基础设施元素的预测需求有一个很好的了解,由下面图 1 中的灰色虚线表示。在典型的内部环境中,您将通过定期购买硬件和服务来规划和满足这一需求,而不是在实际需要时购买大量资本。这通常是一个漫长的优先排序、预算和批准周期过程,这里用蓝色显示。你希望你对需求的预测是正确的!如果您未能正确预测需求,会发生什么?潜在需求的可变性在下面显示为一条红线。这种可变性的影响是您过度配置和浪费资源,如下面的绿色所示,这是一种机会成本:

Figure 1 - Infrastructure Cost vs. Time

图 1–基础设施成本与时间

或者更糟的是,您配置不足,错过了一个机会,如上面的

red

阴影框。将工作负载迁移到公共云有助于您避免这些陷阱,其中一种方法是能够灵活地只购买您需要的东西,并且只在您需要时扩展它。这实质上是将供给与需求相匹配,并通过这样做来省钱。在本系列的下一篇文章中,我将讨论

business agility

operational resilience

。对本文提出的概念有疑问吗?请随时给我写信

mark@linuxacademy.com

.

最大化您的商业价值

您的组织需要合格的专业人员来帮助降低迁移到云的风险。确保你的员工已经准备好接受来自 Linux 学院实践培训。有了 Linux 商业学院,您可以:

  • 提高您的 IT 团队的效率
  • 结合现场培训和在线培训的优势,最大化您的预算
  • 将持续的云技术变化转化为优势
  • 让您的团队获得认证,并准备好满足客户的需求。

了解更多关于如何在https://linuxacademy.com/team了解实践学习如何帮助 Rackspace 在六个月内将其 AWS 认证增加 50%

云容器服务对比——AWS vs Azure vs GCP

原文:https://acloudguru.com/blog/engineering/cloud-container-services-compared-aws-vs-azure-vs-gcp

我们的云提供商比较系列的这一期关注容器。我们将看看每个主要云平台(AWS、Azure 和 GCP)为部署和运行容器化应用程序提供的工具。我们将评估每种方法的优缺点,以便您可以确定哪种方法最适合您的特定应用。我们还将讨论容器注册中心、独立容器限制、Kubernetes、PaaS、无服务器容器和混合多云产品。

让我们开始吧!



什么是容器?

“集装箱”这个词可能会让你立即想到“海运集装箱”,这实际上是一个不错的类比。容器在一个轻量级的包中集合了运行应用程序所需的一切。

与传统的虚拟机不同,容器不直接在操作系统上运行。相反,它们运行在容器运行时之上。运行时是一组在应用程序运行时发挥作用的指令,它告诉操作系统如何解析和执行代码。这使得你的应用程序具有高度的可移植性。这种可移植性的一个好处是它大大加快了开发和发布周期。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


什么是容器注册?

Azure、AWS 和 GCP 都支持容器集群。首先,构建一个容器映像,这是一个包含可以创建容器的代码的文件。然后,在容器注册表中注册这个容器映像,这允许您安全地访问容器映像,管理不同版本的映像,等等。

  • 在 AWS 上,它被称为 ECR (弹性容器注册)。

  • 在 GCP,考虑到团队需要管理的不仅仅是容器,你会发现下一代容器注册中心叫做 GCP 工件注册中心。工件注册表不仅用于容器映像,还用于语言包,如 MavenNPM ,以及操作系统包,如 Debian

独立容器的限制是什么?

在所有三个云平台上,您可以直接在虚拟机实例上部署容器映像。这就是所谓的基础设施即服务部署。缺点是这有很高的管理负荷,并迫使您处理单独的独立容器,这是不理想的。

独立容器无法提供复制、自动修复、自动伸缩或负载平衡,而这些在现代应用程序中都是必备的。

这些缺点突出了为什么您需要像 Kubernetes 这样的容器集群编排器,它可以在容器集群上自动化软件开发、复制、伸缩和负载平衡。


关于 Kubernetes 的一切

这三个云平台都提供了自己的托管 Kubernetes 产品,所以如果你的大部分应用程序运行在其中一个云平台上,那就坚持在同一个平台上运行 Kubernetes。这将为您提供与您已经在特定云平台上使用的其他服务的良好集成。

Kubernetes 在各个云平台上的优劣

在命名惯例方面,Azure 的托管 Kubernetes 版本被称为 Azure Kubernetes 服务 (AKS)。AWS 称他们的为弹性 Kubernetes 服务 (EKS),而 GCP——Kubernetes 的发源地——拥有谷歌 Kubernetes 引擎 (GKE)。

每个云提供商的托管 Kubernetes 服务都有自己独特的优势。

  • 亚马逊的 EKS 是使用最广泛的。
  • Azure 的 AKS 可以说是性价比最高的选择。
  • 然后是谷歌的 GKE,它拥有三个提供商中最多的功能和自动化能力。

升级

AKS 和 GKE 比 EKS 自动化程度更高——它们会自动处理控制面板上的安全补丁,并升级构成 Kubernetes 集群的节点。升级 EKS 上的组件和节点运行状况修复需要一些手动步骤。

集群节点

AK、EKS 和 GKE 都支持启用 GPU 的虚拟机节点,但只有 EKS 还支持裸机作为集群节点。

命令行支持

AK 和 GKE 有完整的命令行支持,但 AK 的命令行支持要有限得多。

服务网格

EKS 和 GKE 都提供了一个集成的服务网格,可以在 Kubernetes 上工作,称为 App Mesh (EKS)和 Istio (GKE),但 AKS 还没有提供集成的服务网格来允许您使用微服务。

节点

AKS 可以在一个 Kubernetes 集群中支持 500 个节点,EKS 可以支持 100 个,GKE 最多可以支持 5,000 个。


为了继续深入比较每个托管的 Kubernetes 服务,查看我们自己的培训架构师 Alexander Potasnick 的这篇文章


库柏金钥匙

如果您正在使用 Kubernetes 寻找一个更全面的解决方案,那么 Red Hat OpenShift 是一个提供 OpenShift 构建和部署工具的平台即服务产品。OpenShift 是以 Kubernetes 为核心构建的,但它也提供 ide、运行时、构建工具、CI/CD 服务、服务网格等等。Red Hat OpenShift 在 AWS 和 Azure 上都是可用的服务,但在 GCP 上不可用。


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


无服务器容器

如果您希望能够在不管理基础设施和创建集群的情况下部署和运行容器化的应用程序,该怎么办?

你可以使用无服务器容器来实现。

  • 微软是业内第一个通过 Azure Container 实例在公共云中提供无服务器容器的公司,Azure Container 实例在不使用 Kubernetes 集群的情况下运行容器。

  • 在 GCP 上,您可以使用 CloudRun 以无服务器的方式运行容器化的工作负载,而不需要底层的 Kubernetes 集群。

  • AWS Fargate 是 AWS 上的一个无服务器产品,它消除了扩展、修补和管理容器集群上的服务器的开销。它与 Azure Container Instances 和 GCP CloudRun 的一个重要区别是,Fargate 用于抽象出使用协调集群的开销,无论是 EKS 还是 ECS 。在没有底层集群的情况下,不能使用而不是


混合云产品

由于 Kubernetes 可以部署在内部数据中心以及所有云平台上,它提供了 IaaS 和 PaaS 选项之间的中间地带。这使您能够在当今的混合、多云计算环境中高效工作。

每个云平台都有自己的产品来支持混合、多云环境。

  • 在 Azure 上,有 Azure Arc ,它超越了管理混合 Kubernetes 部署。Azure Arc 允许您管理服务器、Kubernetes 集群、Azure 数据服务和托管在 Azure 平台之外的资源上的 SQL 服务器。
  • 亚马逊 EKS Anywhere 是一个部署选项,允许客户在 AWS 支持的基础设施上创建和操作 Kubernetes 集群。
  • GCP 提供了 Anthos ,它是围绕 Kubernetes 核心构建的,你可以在你的云机器和本地数据中心的机器上运行 GKE 。然后,Google 使用一个控制平面在这个混合环境中一致地管理您的应用程序。

我们不能 包含 我们对 Docker 和 Kubernetes 课程令人敬畏的范围的兴奋。你也可以在 YouTube 上订阅一位云专家的每周云新闻,像我们一样关注脸书,在 Twitter 上关注我们,并加入 Discord 上的对话。

云成本管理:如何减少和控制云支出

原文:https://acloudguru.com/blog/business/cloud-cost-management

***更新于:***2022 年 11 月 17 日

随着预算季节的临近,云支出问题成为焦点。根据 Gartner 的数据,云支出正以每年 20%的速度增长,但并非所有组织都获得了投资回报。


目录


什么是云成本管理?

顾名思义,云成本管理(CCM)就是通过监控和集中化来有效管理云成本。它包括检查您的云成本(即内存、存储、流量等。)并定期优化它们以尽可能减少支出。这也被称为云成本优化。

那么,为什么这很重要呢?嗯,如果你曾经不幸发现,云成本会很快失控,尤其是在没有集中管理系统的情况下!这可能发生在个人在不同的团队中创建实例的业务中。有些东西被遗漏了,成本迅速膨胀,等到有人注意到的时候,企业已经背负了一大笔账单。哎哟!

与大多数事情一样,预防是最好的治疗方法,这正是云成本管理策略能够扭转局面的地方。除了帮助阐明工具和服务的最佳实践之外,一个好的 CCM 策略还可以帮助您监控您所有的花费都到哪里去了。这允许你不断地重新评估,这样你就可以在控制成本的同时最大限度地利用你的资源。


改变职业,改变企业

学得更快。动作快点。借助 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室,立即实现转型。


有哪些云成本模型?

云成本模型是指跨云平台及其服务使用的不同定价模型。有许多不同的模式,但它们可以很容易地分为四种类型:现收现付(也称为按需)、基于订阅的预约实例现场实例

很可能你会使用这些的组合,因为每一个都有自己的优点和缺点。因此,让我们仔细看看每种云成本模型!诚然,这不是一个引人入胜的话题,但它们值得你花时间和金钱去了解。

现收现付/按需付费

这种云成本模式是按使用量收费的。这意味着你要为每单位计算能力、存储、网络或其他资源付费。如果您需要灵活性,这可能非常有用,因为您可以轻松地扩展和缩减您的资源。但是,随着您继续添加资源,成本会很快变得令人望而却步。

基于订阅

云平台可以在一段时间内为预先确定的工具和服务包提供固定或预付费订阅。这通常适用于较大的公司,如果承诺更长的时间,可以获得更大的折扣。

这种模式对于结合了多种硬件和软件工具和服务的公司来说最有意义。如果您持续达到使用容量,您将从中获得最大收益。然而,如果你经常做不到这一点,最好还是寻找另一种选择。

保留实例

保留实例为长期(通常为一年或三年)使用特定计算能力提供了大幅折扣。这可以比按需购买的价格低 70%,因此当您很好地了解在可预见的未来您将需要多少计算时,这是一个很好的选择。

此外,您只需支付总容量,而不是实例数量,因此这意味着您可以根据需要在同一系列中更改实例大小。

对于您的容量需求可能会定期变化的服务,不建议这样做,但是对于那些日常的核心系统负载,使用保留的实例可能会很有用,并且可能会与那些峰值负载的按需服务结合使用。


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


储蓄计划

Azure、AWS 和 GCP 与 reserved instances 并非完全不同,它们都提供自己的储蓄计划,需要一年或三年的使用承诺。他们都为计算服务提供了这些,AWS 也为 EC2 实例和 SageMaker 提供了这些。

值得注意的是,GCP 的版本被称为承诺使用折扣(CUD),但遵循与其他提供商类似的承诺时间表和百分比折扣。

定点实例

你会得到类似的高折扣,有时甚至更高(高达 90%)。然而,有一个陷阱!这些都是云提供商廉价出售闲置产能的时候,但是可以随时停止。正因为如此,它们只对那些可以无问题中断的进程有意义,或者如果你想做,比如说,一天的高负载处理。


云成本管理工具可帮助您监控云服务的使用情况和支出,其中一些工具会就权限、安全性和削减成本的方式提出建议。每个主要的云提供商都有自己的免费服务,以及对多云设置有意义的付费第三方选项。

亚马逊云观察

Amazon CloudWatch 是一款 AWS 云成本管理工具,可以监控您的整个堆栈,包括应用程序、基础架构和服务。它提供自动和自定义日志,并提供可操作的见解,您可以使用这些见解来降低成本和使用量。它还有许多可以采取的自动操作,比如自动缩放,或者基于操作变化和警报的规则。

了解更多关于亚马逊 CloudWatch 的信息。

Azure 成本管理和计费

Azure 云管理工具是微软成本管理和计费。它的工作方式与 CloudWatch 非常相似,因为它是一套工具,可以帮助报告和分析您的成本。您还可以使用预算警报、异常警报和计划警报等警报来监控您的成本。你将通过诸如 Azure 价格计算器Azure 顾问成本建议等工具获得如何优化成本的建议。

了解有关微软成本管理和计费的更多信息。

GCP 成本管理

与其他云平台一样富有想象力,GCPs 成本管理工具被称为…成本管理。除了报告、仪表板、预算和警报,您还可以使用该工具来构建和组织您的资源和权限。您还将获得智能建议,以优化您的成本和使用。

了解更多关于 GCP 成本管理的信息。

来自 VMWare 的云健康

由 VMware 提供的 CloudHealth 是一款第三方工具,可提供与云提供商成本管理工具类似的服务。主要区别在于,它支持所有主要的云提供商,以及 Oracle 云和 VMware(当然)。

与其他人一样,您可以收集报告,其中包含优化使用和成本的建议,您可以自动执行任务,并且可以通过权限加强安全性。如果你是一家多云公司,你可能会选择像 CloudHealth 这样的第三方提供商,这在最近变得越来越普遍。

了解更多关于 CloudHealth 的信息。

还有很多其他的第三方云成本管理工具,比如 CloudZerodensityVirtana Optimize 等等。如果您有一个多云设置,这些可能值得检查和比较特性。

自动化 AWS 成本优化
经济高效地使用 AWS 可能是一项挑战。在这个免费点播的网络研讨会中,您将了解 AWS 成本优化工具和策略的概况,如数据存储优化

您如何降低云成本?


有许多方法可以降低您的云成本:自动扩展您的实例,为大折扣预留容量,识别并删除未使用的实例,以及合理调整计算服务的规模。大多数云成本管理工具可以帮助解决其中的许多问题,并且有一个良好的云成本管理策略。


让我们来看看这些降低成本的选择吧!

自由层

许多云提供商提供免费的工具和服务层,你可以在承诺之前免费试用这些工具和服务,或者每月(或其他时间段)免费试用一定数量的工具和服务。这是在购买前尝试的好方法,或者如果对您的工作负载有意义的话,围绕空闲层限制来规划您的使用。

自动缩放

这基本上允许你在需要的时候扩大资源,在不需要的时候再缩小。这有助于减少您的支出,尤其是那些现收现付的资源。

为更高的折扣预留容量

尽可能使用预订或现货(如上所述),可以为您节省高达 90%的常规金额。这对于所有的服务来说是不可能的,但是对于长期运行且使用一致的服务来说,它可以很好地工作。

删除未使用的实例

这听起来很简单,删除任何没有被充分利用或者根本没有被使用的实例。尽管有时识别这些实例可能不那么简单,尤其是在大型组织中。这就是成本管理工具发挥作用的地方——这将在下面讨论。

电力调度

这是指在不需要的时候关闭不必要的实例。您可能有一些 24/7 全天候运行的应用程序,但是值得深入研究一下,看看这是否适合您的所有实例。从长远来看,即使只有少数几个实例能够支持 power schedule,也可以为您节省大量资金。

合理确定资源规模

合理调整计算等资源的规模,意味着确保您选择的实例能够满足您的需求。随着时间的推移监视使用情况将有助于您了解您是否未充分利用实例,然后您可以用更合适的实例来替换它们,从而节省资金。

自动化这些成本降低方法的一个很好的方法是使用云成本管理工具,就像上面讨论的那些。它们提供的报告将允许您确定可以通过调整规模甚至完全删除来优化的资源。它们可以自动扩展您的实例,并在运行不顺利时提醒您。最重要的是,它们通常可以免费使用。

云成本管理战略

为您的组织创建云成本管理策略是阻止成本失控的一个好方法。它应该包括权限层次结构的最佳实践、设置新实例和资源、报告和分析计划以及其他相关策略,以帮助集中和监控您的使用和支出。确保你的战略具有良好的可扩展性也是很好的,因为组织很少会永远保持相同的规模。

云成本管理的更多资源

如果您希望了解更多关于 CCM 的信息,我们强烈建议您查看以下资源:

Further resources for cloud cost management

If you’re looking to learn more about CCM, we highly recommend checking out the following resources:

预测云支出:云成本优化的 4 个技巧

原文:https://acloudguru.com/blog/business/cloud-cost-optimization

随着预算季节的临近,云支出问题成为焦点。根据 Gartner 的数据,云支出正以每年 20%的速度增长,但并非所有组织都获得了投资回报。


目录


客户组合总监 Mallory Beaudreau 知道这种差异会造成焦虑。在我们的网络研讨会“如何为 2023 年的云做预算”中,她分享了帮助您预测云支出和创建合理预算的技巧,无论您处于云之旅的哪个阶段。

领导者应如何实现云成本优化和预算

在确定您的年度云预算之前,请考虑使云独一无二的因素:

非常规服务模式

云服务使用不同于传统 IT 服务的计费模式。云服务不是收取固定的费用,而是根据使用情况收取可变的费用。这给负责云成本优化的财务团队带来了新的挑战。

Mallory 解释说:“当金融界对云进行预测时,他们必须以不同的方式进行预测。“这种不确定性造成了很多焦虑。为了解决这个问题,团队需要开始以不同的方式合作,以获得更有说服力的预测数字。”

缺乏对云支出和价值的了解

许多高管感到削减云支出的压力。降低云成本比裁员更快见效,但也会对业务运营和客户价值产生复合效应。

“我们使用云来构建应用程序、服务和产品,销售给我们的客户,或者用来服务我们的客户,”Mallory 说。“‘削减云支出’忽略了一个事实,即云支出实际上可能有助于增加收入。这可能有助于他们提高运营效率。”


如何管理利益相关方对云支出的预期

那么,您如何重新构建关于云成本优化的对话以获得认同呢?

将云成本优化与业务成果相匹配

高管关注高层次的业务成果,如收入、利润率和对股东的价值。如果您在云中运行某些东西,请确保您理解其业务目的以及与组织目标的关系。一旦你这样做了,你就可以衡量其潜在的商业影响,并从战略上吸引利益相关者。

Mallory 建议说:“将[与云支出相关的]美元融入到其他东西中,如收入、应用程序的速度或您可以处理的交易数量。


如何规划您的云成本优化

在各个层面投资云学习

为了创建云支出预测,技术领导和非技术领导需要了解云的价值。

非技术领导者,尤其是财务领域的领导者,必须建立技术流畅度来讨论您组织的云计费和流程。“你想做一些事情,比如午餐学习或网上研讨会培训系列。马洛里建议:“也许你有一个 SharePoint,人们可以在那里获得提示和技巧,提醒他们你将如何做预算和预测。”

技术团队也需要提升的技能,这样他们才能改进系统,提高效率。“对于技术人员来说,需要一个持续的学习周期,因为云在不断变化,”Mallory 说。“从历史上看,开发人员是为了稳定性、性能和卓越运营而构建的。现在我们说,‘嘿,你提供的一切都要花我们的钱。你需要所有这些东西吗?“当您帮助开发人员了解与其工作相关的成本时,您将能够更准确地预测云支出。


了解云技能如何产生实际回报

ROI Cloud Training

查看云技能投资回报率报告,了解投资云技能的公司如何为员工创造更多收入。


通过具体数字了解云支出

财务团队需要具体的数字来推动云成本优化

如何预测直接云支出

让我们以特优支持为例。这将作为一个单项出现在您每月的云账单上。如果你想算出一个应用的直接成本和支持费用,与你的财务和技术团队合作。

让您的技术团队预测构建云架构的直接成本。然后问他们明年打算多花多少钱。一旦他们这样做了,你的财务团队可以说,“好吧,你花了我们云账单的百分之五,因此你要负责百分之五的支持费用。”

有很多方法可以做到这一点,但这种模式是公平合理的。“如果你知道去年你在支持上花了多少钱,你也可以推断出来,”马洛里说。

如何预测间接云支出

现在,让我们假设您有一项未出现在您的云账单中的间接成本。你怎么适应的?

例如,如果您试图预测云的总成本,您需要考虑开发人员的工资、福利、设备和其他成本。与您的财务团队合作获得这些数字。然后看看工资和你的组织的成本分配模型,为额外开支制定预算。

了解云成熟度对云支出的影响

如何预测云支出通常取决于您在云之旅中所处的阶段。

如果您尚未使用云,如何预测云支出

如果您计划首次从数据中心迁移或在云中构建新的应用程序,您可能没有历史数据可以依靠。但是如果你有任何云支出,看看已经上线的应用程序。有没有和你想要的类似的应用已经在云中运行了?如果有的话,你可以用那个应用每月的费用作为基线。然后根据需要调整数字,给出你的最佳猜测。

Mallory 还建议与您的云供应商交流。“每个云供应商都会有一个计算器,他们甚至可能会有一个技术人员来帮助你进行更高级的建模。记住,这不会是完美的。你会有变化。”

如何使用历史数据预测云支出

如果你已经在云端了呢?如果你有历史云数据,你可以推断它,并有意地向上或向下移动你的数字。

例如,您可能有一个计划明年在欧洲推出的北美应用程序的历史数据。在这种情况下,您可能会增加预算,因为一旦您在一个新的地区启动该应用程序,它将会被更多地使用。另一方面,你可能会利用历史数据减少预算。你计划明年优化应用程序,这些变化将降低成本。

“在这里,你不必做到完美,但至少你有一些数据来捍卫它,然后你有一个计划来改变它。你离得够近了,但你还是得回去重访它,”马洛里解释道。

如何使用基于驱动因素的预测来预测云支出

基于驱动因素的预测还需要几个步骤,但可以改变云支出管理的游戏规则。马洛里用一个电子商务平台的例子来解释。

“假设您有一个在线购物车服务。顾客把东西放进去,然后结账。你做你的交易,公司获得收入。购物车服务是收入来源。”

上个月、上个季度或去年,您用购物车完成了多少笔交易?将成本除以交易数,得出特定应用的单位成本。

然后询问该企业明年的预测交易数量。如果企业预计明年的交易量将增加 20%,那么用你的单位成本乘以明年的交易量,就可以得到明年的预测。

“这是完全可以辩护的,”马洛里说。“但更重要的是,它专注于推动商业价值。它与产生收入的东西直接相关。”


考虑云成本管理中的多云复杂性

无论您处于云之旅的哪个阶段,您都可能会遇到影响云成本优化的数据和建模复杂性。

如果您有一个使用数据中心和云的应用程序,您需要考虑两种不同的成本模型:数据中心的固定成本和云的可变成本。将这两者结合起来,得到一个合理的预测。

但你也可能是一个多云组织。您的每个应用程序可能存在于不同的云环境中。谷歌云微软 AzureAWS 各自提供不同的服务,计费模式不同。马洛里说:“老实说,对于多云来说,教育是你能做的最好的事情之一。

归根结底,云成本优化依赖于持续学习的文化。当您的财务、技术和领导团队了解云及其业务影响时,您就可以满怀信心地进行预测。


观看点播网络研讨会,了解更多技巧!


云开发者工具对比:AWS vs. Azure vs. GCP

原文:https://acloudguru.com/blog/engineering/cloud-developer-tooling-compared-aws-vs-azure-vs-gcp

既然你在这里,很可能你已经知道了云平台。但是,你知道在功能和服务方面,它们与其他产品相比如何吗?嗯,你马上就要了!在本帖中,我们将讨论如何使用各种云服务构建应用程序。


通往更好职业的钥匙

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


什么是开发者工具?

开发人员工具是在构建下一个莱昂纳多迪卡普里奥深度伪造电影制作人时从任何云平台中获得最大价值的关键。首先,当我们说开发人员工具时,我们在谈论什么?它是您用来交互、操作、使用、集成或以其他方式消费云服务的任何工具。

我知道这有点宽泛。因此,请允许我从 AWS、GCP 和 Azure 中常见的一些工具开始。然后,我将讨论可以改变很多的工具,以及为什么选择云平台没有选择开发工具重要。

命令行界面

自从计算技术诞生以来,开发人员和工程师就一直使用命令行界面(CLI)与设备进行交互。

CLI 是一个标准的文本输入工具,您可以在其中键入命令并获得基于文本的响应返回。由于 CLI 的熟悉性和高效性,云仍然是这种情况。

在过去的 40 年里,在键盘上打字没有太大的变化。(除了老式的咔嗒咔嗒的机械键盘,更轻薄、更安静——也更糟糕——的键盘取而代之。)

这三个云平台都有一个功能强大且广泛使用的 CLI 工具。如果你是一个认真的云开发人员,在任何平台上使用 CLI 都是高效完成工作的方法。它们既有可以安装在机器上的本地版本,也有可以在任何地方使用的在线版本。

软件开发工具包

好吧,命令行界面很简单。这在所有三个云平台中几乎是一样的。然而,当我们谈论开发人员工具时,它实际上取决于您想要使用哪种服务器、您喜欢哪种编程语言以及您喜欢如何与云平台交互。但是让我们从许多产品的标准提供开始,包括云,给任何想要使用他们的产品的开发者,软件开发工具包,或者仅仅是 SDK。

什么是 SDK?SDK 是一个包装精美的工具包,供第三方开发人员使用特定框架开发应用程序,GCP、Azure 和 AWS 都有一个。

当我说一个的时候,我指的是一吨!是的,为您的平台配备 SDK 是标准配置。但正如我的老导师所说,“标准的好处是有这么多可供选择。”

| AWS SDK | Azure SDK | GCP SDK |
| JavaScript,Python,php,。net、Ruby、Java、Go、NodeJS 和 C++ | 。net、Java、JavaScript、Python、Go、C++、C、PHP 和 Ruby | 对于云 SDK,使用 gcloud CLI 工具 |
| 针对 web 开发、移动开发、物联网、IDE、集成和命令行工具的特定 SDK | 物联网专用 iOS 和 Android SDKs | google apis 用于特定的语言或平台 |

AWS 提供 9 种不同语言的 SDK,包括 JavaScript、Python、php、.net,Ruby,Java,Go,NodeJS,C++,但是他们并没有在那里完成。还有针对 web 开发、移动开发、IoT、IDE、集成和命令行工具的特定 SDK。

Azure 的方法稍微简单一些,主要为特定的编程语言提供 SDK 版本,比如。net、Java、JavaScript、Python、Go、C++、C、PHP、Ruby。不过,也有物联网专用的 iOS 和 Android SDKs。

当然,GCP 也提供了一个 SDK,但是它的工作方式有点不同。谷歌所谓的云 SDK 是为了使用 gcloud CLI 工具,如果你想在 GCP 中使用特定的语言或平台,那么你可以使用许多谷歌 API 中的一种。在我写这篇文章的时候,他们有 645 人!

控制台

每个云的控制台或用户界面是整个云服务范围的单一入口点。

  • GCP 称之为云控制台。

  • AWS 称之为管理控制台。

  • 在 Azure 中,它是门户。

虽然所有的控制台都可以执行几乎相同的功能,但它们看起来却大不相同。

  • 乍一看,GCP 使用了大量从左侧飞出的菜单。

  • AWS 在一个列表中展示了他们所有的云服务。

  • Azure 有许多刀片,随着你的进步,它们会不断向左边增长。

然而,一旦你习惯了这个工具,它们都做同样的事情:让你通过一个用户界面管理云资源。


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南,获取云中一些最令人头疼的术语的简洁定义。


云开发工具

这让我们想到了云开发工具。这些都是专门存在于云中的工具,开发者用它们来构建。。。令人惊叹!平台之间有很多这样的工具,但是我将把重点放在您用来编写代码的工具上。

  • AWS 有 Cloud 9,这是一个 100%在线集成开发环境或 IDE,用于使用 AWS 资源创建应用程序。它支持许多编程语言,允许实时协作,支持容器开发,并且您也可以构建、测试和调试您的代码。

  • Azure 拥有 Visual Studio 代码在线体验,它实现了非常流行的 VS 代码的几乎完全相同的在线版本。(稍后会有更多相关内容。)

  • GCP 有他们的云代码集成开发环境,它既允许你在线写代码,也可以集成到通用的开发工具中,我们很快就会谈到。

基础设施作为代码

创建和管理云资源的一种非常流行的方式是使用代码或脚本。

能够运行一些代码来创建基础设施提供了许多好处,如自动化、版本控制和效率,这意味着更少的错误和更多的时间!

  • AWS 有 CloudFormation 来运行和管理脚本,它使用 yaml。

  • 在 Azure 中,您可以使用 Azure 资源管理器模板(或 ARM 模板)来使用 JSON 符号部署基础设施资源。然而,微软更进一步,创造了二头肌。(懂了吗?手臂?二头肌?是的……)Bicep 是一种特定于领域的语言,它提供了类型安全和声明性语法,使得使用基础设施作为代码变得更加容易。

  • 在 GCP,这个工具被称为部署管理器,它使用 yaml 作为定义脚本运行的语言。

  • 然而,你也可以使用 Terraform 来创建一个可以在所有三个云平台上运行的脚本。

如果你是一个像我一样的开发人员,你可能也更喜欢把所有的开发工具都放在本地机器上。通常,它可以防止丢失、延迟问题和性能问题。它还可以让你整夜开发,离线在一个偏远的山顶,同时唱着古老的 ABBA 歌曲。但是我跑题了。

到目前为止,我们一直在比较云,但当涉及到您自己设备上的本地工具时,它更多地取决于您想要使用的语言,而不是云平台的选择。

  • 如果您是 Java 开发人员,您最有可能使用 Eclipse、Netbeans 或 Intellij Idea。

  • 如果你是 Node JS 开发者,VS Code 或者 WebStorm 都是不错的选择。

  • 如果你喜欢。net 和 C#,Visual Studio 或 VS Code 可能是您的首选工具。

现在我的观点是,三大云的任何一个都将支持你选择的语言,因此也支持你选择的工具。不过,现在总是要为工作选择正确的工具,在这种情况下,它很可能适用于所有云。

特定开发人员工具

此时,您可能会对着屏幕大喊:“您忘记了 Kubernetes 大数据机器学习高级笔记本服务!”你是对的。

这三个平台上都有大量非常特殊的开发工具。这篇文章不够长,无法一一介绍,但是每个云平台都创建了自己独有的工具,并没有真正地推广到其他平台。所以我把这些都删掉了。

结论

总而言之,当涉及到开发人员工具时,与为工作选择正确的工具相比,您选择的云提供商不那么重要。

Azure、GCP 和 AWS 都提供了很棒的在线工具,并且支持几乎任何你想在本地使用的工具。

如果你想了解更多关于云开发的知识,可以看看云专家的课程(包括我们轮流提供的免费课程),以获得更深入的分析和实践方法。所以,感谢阅读。保持安全,保持敬畏,云大师们。

在 Google 计算引擎实例中使用云操作代理

原文:https://acloudguru.com/blog/engineering/cloud-ops-agent

Google Compute Engine (GCE)是领先的云计算平台之一,为运行应用程序提供了可扩展且高度可用的虚拟机。

为了监控和管理这些虚拟机的性能和资源使用情况,收集日志和使用指标非常重要。然而,这可能是一项具有挑战性的任务,尤其是在处理大量虚拟机时。

不过,不要担心,Google Cloud 的优秀员工为您提供了一个解决方案——云运营代理!

Cloud Ops Agent 是一个工具,它提供了一个集中统一的解决方案,用于收集、处理和分析来自 GCE 实例的日志和指标。

使用云运营代理的一些优势包括:

  • **集中日志收集:**从 GCE 实例收集的日志被发送到一个集中的位置,以便于访问和分析。这消除了手动收集日志的需要和丢失重要日志的风险。
  • **实时监控:**实时收集日志和使用指标,允许您监控您的 GCE 实例并及时响应任何问题。
  • **可定制的指标收集:**可以收集定制的指标,允许您跟踪对您的应用程序很重要的特定性能和资源使用指标。
  • **可扩展和高可用性:**云运营代理旨在实现可扩展和高可用性,即使是最大规模的 GCE 部署也能轻松管理。

你可能会对自己说,“这听起来很棒,但是我们实际上如何安装云操作代理来获得这些好处呢?”为此,我们有几个不同的选项,如谷歌云控制台或直接通过您的虚拟机实例的命令行。让我们在下面浏览一下这两个问题!


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


如何使用谷歌云控制台安装云运营代理:

为此,有两种方法。

首先:

  • 转到计算引擎服务中的虚拟机实例页面

  • 单击要安装代理的实例

  • 单击可观察性选项卡

  • 选择“安装 OPS 代理”并按照提示进行操作

或者:

  • 转到监控服务中的仪表板页面

  • 选择虚拟机实例仪表板

  • 选中要安装代理的实例旁边的复选框,然后选择安装/更新代理,并按照提示进行操作

如何在命令行安装云运营代理:

  1. 使用云 Shell 或另一个 SSH 客户端连接到机器
  2. 切换到您拥有写权限的目录(即您的主目录)
  3. 运行以下命令:
curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

一旦安装了云操作代理,默认情况下,它将开始收集其他系统使用指标。但是,它可以通过创建指定要收集的数据的配置文件来收集额外的日志和指标。

既然代理已经安装并收集了日志和指标,就可以将数据发送到一个集中的位置,如 Google Cloud Logging、Stackdriver Monitoring 或第三方日志记录和监控工具。这为用户提供了很大的灵活性,无论你是订阅了整个谷歌云生态系统,还是已经有了一个日志和监控解决方案。

云操作代理是监控和管理 GCE 实例的重要工具。通过以集中统一的方式收集日志和使用指标,可以更轻松地监控和响应问题,并对您的云基础架构做出明智的决策。

无论您管理的是小型还是大型 GCE 部署,云运营代理都可以帮助您充分利用云投资。如果你想了解更多关于 Google Cloud 提供的云操作代理、计算引擎和其他支持服务的信息,请查看我在一位云专家那里开设的课程在 Google Cloud 上运行 Linux 服务器。

云产品组合挑战:负载平衡和内容交付网络

原文:https://acloudguru.com/blog/engineering/cloud-portfolio-challenge-load-balancing-and-content-delivery-network

欢迎参加“云产品组合挑战赛”,在这里,我们挑战您使用动手项目来提高您的云知识,为您在现实世界中的构建做好准备。这些项目也将是你的投资组合中有价值的补充,并将在求职面试中成为很好的话题!


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


什么是云产品组合挑战?

是什么让云产品组合挑战的形式不同于大多数教程或项目式学习?我们不会告诉你具体要做什么。像真正的工作分配一样,挑战是基于规格的。你得谷歌一下,然后钻进兔子洞去弄清楚。这是边做边学到了一个可笑的极端。

作为这个新系列的开始,我们将重点关注云计算可以提供的一些关键基础设施服务。为什么从这里开始?就像盖房子一样。如果你没有一个坚实的基础来放置你的墙壁、浴室和家具,那么它们就不会长久。我们从这里开始,让你有个好的开始。或者左边的那个。我不挑剔。

我是 Lars Klint,Azure 的微软 MVP,热衷于技术的爱好者,也是你这次挑战的任务大师。在 LinkedIn 上与我联系!虽然我喝了很多微软 kool-aid 并且使用 Azure 已经超过十年,但是这个挑战是云不可知的,这意味着你可以使用你选择的云。

挑战概述

挑战题目 负载平衡和内容传递网络
挑战目标 构建一个图像交付服务,当被查询时,返回至少一个匹配您选择的搜索标准的图像
挑战结果 了解四个基本的云组件,并大致了解它们如何在映像交付项目中相互配合
挑战截止日期 2022 年 6 月 30 日

挑战的目标是满足以下要求,同时获得一些关于这些服务如何在您选择的云平台上协同工作的经验。

请记住,您不必遵循建议的架构(如下图所示)。欢迎你把这个挑战变成你自己的,并加以扩展。其实我是鼓励和欢迎的!

您需要构建的应用程序是一个图像交付服务。当查询时,它应该返回至少一个符合您选择的搜索标准的图像。这可能是一个网上商店的产品目录,顶级水獭,帽子收藏,或者任何你能想到的东西。你返回哪张图片并不重要,重要的是你如何做。

挑战是什么,我会学到什么?

完成这个挑战将帮助您了解四个基本的云组件,并了解它们如何在您将要构建的映像交付项目中相互配合。是的,靠你自己!这些组件是:

  1. 虚拟机
  2. 建立工作关系网
  3. 负载平衡
  4. 内容交付网络(cdn)

这四个云服务是云上大量服务的一部分,如果您使用云计算,很可能会遇到类似的设置。

快速回顾一下这些服务是什么:

  • 一个虚拟机(VM) 是一个完整的计算体验,就像一个拥有操作系统、磁盘、内存、CPU 和其他一切的物理服务器。只不过,这是虚拟的。这台机器运行在你无法访问的物理服务器上。可能有许多虚拟机运行在同一个物理硬件上,但你永远不会知道。
  • 网络是将所有现代计算结合在一起的粘合剂。如果服务之间没有某种网络连接,你就不能在云中做任何事情。
  • 负载平衡确保进入您网络的流量能够得到分配和管理,因此单个服务(如虚拟机)不会过载。
  • 一个内容交付网络(CDN) 帮助以最小的延迟向用户分发内容。如果用户从澳大利亚访问您的应用程序,但它托管在北美,您可以使用 CDN 将一些内容移动到离用户更近的地方,加载速度会快得多。这就像一个全球缓存。

如果你想更深入地了解这些服务,我建议你注册一个云专家的免费层计划(不需要 cc)。每个月都有新一轮的免费课程帮助你学习和提升技能。

我确实提到这个挑战是无指导的,但是为了让你开始,下图显示了这个如何在云平台上一起工作的一个例子。

我需要实现什么?

要成功构建挑战项目,您需要满足以下要求:

  • 在同一区域至少使用 2 台虚拟机
  • 应用程序提供的图像必须来自 CDN
  • 至少有一个负载平衡器必须是来自 internet 的应用程序的入口点
  • 不允许对解决方案中的虚拟机进行公共访问

当你开始工作的时候,请随时提问并在我们的 Discord 服务器或使用#CloudPortfolioChallenge 标签在社交媒体上分享更新!

我如何提交我的项目?

当你有了满意的解决方案,就该提交了!下面是如何做到这一点:

  1. 使用架构图和任何主要决策从广义上描述您的解决方案。这应该在 Github (或者类似的平台)上的 readme 文件中,在那里你也存储你的代码和配置文件。
  2. 在截止日期前,在指定的 Discord 文本频道 (#load-balancing-and-cdn)上发布一个指向你的项目的链接,以及一个指向你的 LinkedIn 个人资料的链接。

我的项目能得到帮助吗?

如果你在途中遇到困难,请随时联系我们专用的不和谐文本频道(# load-balancing-and-cdn)!我还将发布一个挑战视频,向大家展示我是如何构建我的解决方案的。请留意这一点——它将在本次挑战结束时出现!

奖品和赠品

完成并提交项目后,您将:

  • 给你的项目反馈,如果适用的话
  • 在 LinkedIn 上获得挑战创建者对你展示的技能的认可
  • 在一位云计算专家的 LinkedIn 页面上的一篇特别庆祝文章中提到
  • 参加比赛赢取一些特别的奖品!

该挑战将无限期开放,但为了有资格参加上述活动,请在 2022 年 6 月 30 日前提交您的项目!

现在,向前去建造吧!我们等不及要看你的作品了!云产品组合挑战赛是免费的,任何人都可以参加,所以请与您的朋友分享吧!如果您有任何问题,请通过本次挑战的不和谐文本频道联系我们!

一位云专家推出了新的定制云沙盒环境

原文:https://acloudguru.com/blog/news/cloud-sandbox-environment

随着 75%的云领导者寻求默认云计算,技术专家需要加倍努力他们的云技能。由于 62%的技术专家更喜欢实践学习工具,我们的云专家为我们的 ACG 企业用户开发并推出了新的定制云沙盒环境,以弥合领导者对其团队的期望与这些团队能够合理完成的目标之间的差距。

动手云动手云

领导者和技术专家都认为云安全是最大的技能差距,也是云成熟的最大障碍。那么,如何在不超出预算的情况下培养云安全技能呢?有了云沙盒。

这些沙盒环境已经存在多年了。每个主要的云服务提供商——AWS、微软 Azure 和谷歌云——都有自己的沙盒环境,供技术人员了解他们的平台并为云认证做准备。自 2022 年 4 月以来, A Cloud Guru 团队已经开发了实践学习工具,以帮助技术人员更好地获得云认证和长期云成功。

随着云计算复杂性的增加,技术专家们喜欢在处理真实数据之前先动手也就不足为奇了。这些沙盒环境让技术人员在真实的场景中实践,而没有破坏现有代码库、功能或正在进行的开发的风险。它允许“自由发挥”和探索云计算服务,而不会对您的云基础架构的完整性带来风险。

大多数领导者已经了解这些沙盒环境给云安全实践带来的价值,超过 60%的企业已经为他们的技术专家提供了沙盒环境。但真正的价值在于定制。

介绍自定义云沙盒环境

云专家为 ACG 商业加用户推出的最新功能,定制云沙箱,为您提供了一种安全、无风险的方式来试验新的云计算服务,或在为您的云基础设施定制的沙箱环境中实践云配置。AWS、Azure 和谷歌云平台(GCP)支持 500 多种服务,自定义沙盒环境提供真实世界的云培训,而不必担心破坏您的实际生产环境。

这种新的实践技能培养体验允许将基础和理论云素养技能转化为实践专业知识。这是一种实用的云培训,可以帮助组织减轻云环境中的技术错误和风险。

这个新的沙盒环境建立在 ACG 现有的云游乐场功能之上。它通过为您提供完全预配置的云沙盒环境(包含您选择的服务和配置)来安全快速地练习新技能,从而增强您的用户体验。此外,对于所有 ACG 企业用户来说,所有活动沙盒环境的时间限制现在高达每个会话八小时,是之前云游乐场四小时限制的两倍。无论你是使用 AWS、Azure、Google 云平台,还是三者的结合,都很容易为你的组织打造独一无二的体验。

自定义云沙盒环境的好处

沙盒环境让技术专家有机会体验真实的云计算环境,而领导者可以高枕无忧,因为他们的云基础架构不会受到任何错误按键的影响。这是双赢。

自定义沙盒环境使交易更加甜蜜。对于技术专家来说,了解云计算环境的外观和感觉是一回事,但是在一个与他们日常工作环境完全一样的模拟环境中玩是完全不同的另一回事。这就是读一本关于足球的书和加入一个校内团队的区别。自定义沙盒环境提供缺失的上下文和真实世界的体验。

对于技术人员:访问一个看起来就像你的真实环境的云沙箱

作为技术专家,自定义沙盒环境可以节省您的时间。您可以直接进入一个预配置的环境,自动加载您公司的云服务和资源,而不是从一个空的默认沙盒环境开始。

这种预先配置的环境允许您快速启动自定义沙盒环境,以建立信心和特定于您工作角色的技能,这些技能是您在进入公司的实际生产环境之前所需要的。

您可以在安全、可控的环境中使用定制云沙箱来安全地对您的实际环境进行故障排除,在您将要工作的相同云环境中进行实践,并试验最新的云服务,以了解它们在您的生产环境中的集成情况。

对于领导者:更快地缩小云计算技能差距

作为经理,您可以将自定义沙盒环境分配给个人、团队或整个组织,让他们安全、快速地练习在职成功所需的新技能。

您可以利用这种全新的实践体验来:

  • 创建为您的组织量身定制的学习体验,提升员工对新云服务的技能
  • 在您现有的技术基础上高效地招聘新员工
  • 因没有公司所有或管理的沙盒而节省资金
  • 保护您的实际生产环境免受风险

客户在说什么

我们邀请了 IBM 公司的一名 beta 测试者 Nordcloud 来分享他们的经验。

Nordcloud 的 Launchpad 云架构师/Azure 技术培训师 Alexander Arts 说:“我在 Nordcloud 的培训项目强调培养在云超大规模计算方面技术高超的顾问。“借助 ACG 的定制云沙箱,我们将能够提供有针对性的学习。一个非常重要的方面是定制水平。定制云沙盒反映了我们组织的特定服务和配置,这将使我们的顾问具备确保客户成功的能力。”

总而言之,自定义沙盒环境可以帮助您减少人为错误,在无风险的环境中提高云技能,并减少新员工或现有员工的准备时间。


请求您的自定义云沙箱演示!

云安全对比:AWS vs. Azure vs. GCP

原文:https://acloudguru.com/blog/engineering/cloud-security-comparison-aws-vs-azure-vs-gcp

随着大量安全漏洞的出现,人们开始关注如何保护云中的资源。在本帖中,我们将探索来自亚马逊网络服务(AWS)微软 Azure谷歌云的安全产品。


通往更好职业的钥匙

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


什么是云安全?

云安全实际上是安全控制和设置的组合,而不仅仅是单个设置或复选框。

人们对云安全经常感到困惑,这是因为组织并不总是知道他们负责什么。更糟糕的是,一些组织认为云平台应该对任何与安全相关的事情负责——这是一个大问题,因为事实绝对不是这样。

进入我们的云中安全之旅的第一站:共享责任模型。

什么是共同责任模式?

为了更好地理解谁对云中的安全性负责,我们需要参考一种叫做共享责任模型的东西。

共同责任模型是一个框架,有助于根据云中部署的内容,区分云提供商何时负责安全,以及贵组织何时负责安全。

现在,让我们看看三个云平台处理共享责任模型的方式。一般来说,所有三家云提供商都遵循相同的责任分担原则;他们只是方法略有不同。

Azure 的共享责任模型

Azure 的共享责任模型将责任分为三个主要类别。

  • 第一,顾客永远是负责任的。这与信息数据和设备(如移动设备和个人电脑)以及用户帐户(也称为身份)相关。

  • 第二个类别不那么黑白分明,更多的是灰色区域,因为这取决于所使用的云模型,如软件即服务或 SaaS、平台即服务或 PaaS、基础架构即服务或 IaaS。

  • 最后,我们有一个名为云提供商责任的类别。这是云提供商单独负责安全的时候,无论服务是 SaaS、PaaS 还是 IaaS。这方面的一个例子是托管这些服务的数据中心的物理基础设施。

AWS 共同责任模型

对于 AWS 共享责任模型,AWS 采取了一种更简单的方法。

客户负责云中的安全——这意味着他们自己的数据、用户账户、应用程序等等。而 AWS 负责云的安全——包括数据中心内的底层硬件,如物理主机、存储和网络。**

谷歌云的共享责任模式

谷歌的共享责任模式有点复杂,因为他们详细说明了在每种情况下,谁负责安全。它被称为共同责任矩阵

身份和访问管理(IAM)

正如我们在不同的共同责任模型下看到的,组织对用户帐户负责。这构成了所谓的身份和访问管理(简称 IAM)的一部分。IAM 是一个术语,用于定义具有特权角色的用户访问,也称为基于角色的访问控制。

我们将在这里对 IAM 做一个快速的概述,但要更深入地了解,请查看我们的单独帖子比较 AWS、Azure 和 Google Cloud IAM 服务

所有三个平台都有一些共享的用户和 IAM 功能,包括多因素身份验证(MFA)、单点登录(SSO)、内置的基于角色的访问控制(RBAC)和自定义的基于角色的访问控制。

不过,跨平台的一个关键区别是特权访问管理(PAM),它用于管理基于 IaaS、PaaS 或 SaaS 部署的用户或资源的特权帐户。

  • Azure 提供了一种叫做特权身份管理的服务,这种服务包括对 Azure AD 和 Azure 资源的即时特权访问。

  • AWS 和 GCP 没有解决 PAM 的内置功能。但是,您可以通过市场部署第三方解决方案来解决这个问题。


我想吃皮塔饼?查看修复 5 个常见的 AWS IAM 错误,了解一些最常见的 AWS IAM 错误的原因和解决方案。


IaaS 安全性

让我们比较一下每个平台提供的一些 IAAS 工作负载安全解决方案。

分布式拒绝服务保护

  • Azure 称他们的产品(不出所料)为 DDOS 保护。

  • GCP 有谷歌云盔甲。

机密管理

  • Azure 有一个名为 Key Vault 的服务,用于存储密码和密钥等秘密,它也支持存储证书。

  • AWS 称他们的产品为秘密经理;它仅用于存储机密,尽管它也提供了一种存储证书的机制。

  • GCP 秘密管理器的工作方式与其他平台相同,并提供存储密码和证书的功能。

虚拟专用网络

  • AWS VPN 支持点到站点和站点到站点选项,VPN 网关的站点到站点连接限制为 10 个连接。

  • Azure VPN 网关支持点对点和站点到站点 VPN,每个 VPN 网关最多支持 30 个站点到站点连接。

  • Google Cloud VPN 只支持点对点 VPN 连接,目前不支持点对点连接。

数据安全(PaaS)

接下来,让我们看看这些平台是如何实现平台即服务或 PaaS 安全性的。让我们把重点放在保护数据上,因为它承载着重要的组织或客户信息,这是黑客的主要目标之一。

从数据库的角度来看,这三个云平台都支持以下安全控制。

  • 身份和访问管理策略,或 IAM 策略

  • 防火墙规则,包括 IP 白名单。这是组织可以通过互联网公开数据库,但只允许组织公共 IP 地址连接到它。

  • 传输中加密(TLS)指定数据库是否支持到它的安全连接,通过硬盘级加密来加密地址。


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南,获取云中一些最令人头疼的术语的简洁定义。


内置安全性和合规性(SaaS)

大多数组织都必须遵守一套安全标准,同样的规则也适用于云工作负载。让我们花点时间来了解云平台如何帮助组织满足云安全合规性。

  • Azure 有 Azure 安全中心。

  • GCP 有信任和安全中心。

  • AWS 称他们的安全评估服务为 Amazon Inspector。

所有三个云平台上的合规性工具都支持大多数合规性标准,如 ISO 27001、PCI、DSS 等。这些工具能够审核部署的资源,并就安全最佳实践提出建议,以确保您的环境是安全的,并且从安全或配置的角度来看,您没有遗漏任何重要内容。

市场对云安全的支持

最后,值得一提的是,每个云平台都提供了一个市场,客户可以在其中利用第三方供应商应用来满足特定的安全需求。AWS 和 Azure 在这方面处于领先地位,GCP 正在努力追赶。

最终,当您选择云提供商时,除了定价、混合身份和支持您的解决方案的技能等其他考虑因素外,还需要做出多项安全决策。

如果你想了解更多关于云安全的知识,请查看我们的安全相关学习路径,包括 Azure SecurityAWS Security 。这些学习路径将以实践学习的方式指导新手到大师。

感谢阅读,继续牛逼吧,云大师们!


保护您的 AWS 环境

在这个免费点播的网络研讨会中,了解如何将复杂的 AWS 环境从零提升到安全。

云安全解决方案:提高可见性的 3 种方法

原文:https://acloudguru.com/blog/engineering/cloud-security-solutions-3-ways-of-increasing-visibility

在本帖中,我们探讨了三种洞察云资源的方法。准备好通过可视化、自动化工作流和 CSPM 产品了解云安全解决方案了吗?让我们直接开始吧。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


可见性和云安全

想象一下:你的团队正在同时进行两个项目。他们需要部署新的应用程序,并且需要定制的测试环境来获得最终用户体验。

从前,一个人或一小群人根据一组静态标准部署所需的资源。因此,对于这个场景,您将向数据中心提交一个票证,指定您的团队需要的服务。然后,数据中心团队将根据预先确定的标准验证和部署必要的资源,并将登录和系统信息发送回用户。

如今,更多的人可以根据一组动态的标准,并基于项目和部署的需要来部署资源。云技术通过使用基于角色的访问控制(RBAC)等身份和访问管理 (IAM)框架来限制部署,从而允许快速部署任意数量用户的资源。

一个很大的好处是,您现在可以在需要的时候部署所需的资源。了解正在部署什么以及挑战在哪里。

在使用单一云提供商的组织中,至少有三种不同的方式来部署资源。这还没有考虑能够使用这些方法的人数。团队必须能够尽快获得他们需要的资源。

回到你的场景。团队已经准备好部署他们需要的资源。数据中心团队推荐他们放在哪里,每个人都有需要的权限。对于那些了解云工作负载环境的人来说,这个过程只是为接下来的事情做好了准备:云安全。

三种云安全解决方案

仅仅部署所需的资源和应用程序是不够的。当资源或应用程序被部署到云环境中时,它很容易受到攻击,尤其是当它具有可公开访问的端点时。那么,云安全工程师(或其他关心此事的网民)应该做些什么呢?

以下是获得对您的云资源的可见性和洞察力的三种方式。这里概述的内置方法和定制方法都有好处。第三种选择试图利用尽可能多的好处。

1.内置的可视化和报告

每个主要的云提供商都有内置的可视化功能,您可以在部署资源时使用。微软 Azure 提供了关于虚拟机性能的基本信息(AWS 和 GCP 也是如此)。以下是微软 Azure 提供的度量洞察示例。

Azure 虚拟机

蔚蓝虚拟网络

像这样一起使用两种可视化效果会很有帮助,但是它缺少一些必要的上下文。性能峰值可能表示合法流量、拒绝服务(DoS)攻击、内部危害或资源或应用程序故障。

基本信息不足以告诉您确定根本原因。这些内置的可视化和报告是一个良好的开端,但它们是以性能为导向的,通常不能提供足够的关于需要采取的安全措施的信息。

2.自定义自动化工作流程

另一种深入你的资源并获得你想要的数据的方法是使用编程服务,如 AWS LambdaGoogle Cloud Functions ,甚至Azure Automationworkflows。这种方法允许检索的数据具有更大的粒度。直接通过查询利用日志数据,然后以您想要的方式可视化它,这非常有帮助。

再加上可以通过代码编程的自定义操作,您就拥有了一个强大的工具。但是,启动和运行这些工作流并维护它们需要大量的工程工作。

下面是使用 Azure Automation runbooks 的情况。

3.云安全态势管理(CSPM)

CSPM 产品旨在提供内置的可视化和报告,其中包含可用于决策的有意义的数据。它们通常预先配置了基于已知安全最佳实践的选项,以便对您的安全状况进行初步评估。从那里,可以通过云工作负载保护平台(CWPP)对信息采取行动。

多年来,微软开发了多种工具来提供类似 CSPM 和 CWPP 的功能,如 Azure 安全中心和 Azure Monitor。

进一步发展这些产品,Microsoft Defender for Cloud将 CSPM、CWPP 和多云整合到一个产品中,帮助您获得对云资源的可见性和洞察力。

有兴趣了解更多信息吗?查看我的新Microsoft Defender for Cloud课程简介,帮助您入门。

云扳手更新和关于 LaMDA 的对话

原文:https://acloudguru.com/blog/engineering/cloud-spanner-updates-and-a-conversation-about-lamda

北半球的夏天到了,事情真的升温了。尤其是当涉及到来自 GCP 的更新和公告时。我说的是新的区域——或者我应该说“regioni”——但也包括对 Cloud Spanner、Artifact Registry 和 Kubernetes 引擎的重大改变。此外,一个小的可持续发展珍闻,我们深入探讨了与 GPC 人工智能,LaMDA 的对话。是时候吃点快餐了。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


位于意大利米兰的新谷歌云区域

谷歌云的最新区域现已在意大利开放。更确切地说,是意大利米兰。这个区域被命名为欧洲-西方 8,是意大利的第一个。但是,这不是最后一个,都灵的另一个也紧随其后。米兰的设施是与意大利电信合作建造的,使全球地区总数达到 34 个,共有 103 个区域。

大官!

云扳手的精确定价

对于所有的云扳手粉丝来说,现在有一些非常好的消息:云扳手现在支持粒度实例大小!因此,你可以以比以往更低的成本利用这种全球规模的服务。

我说的是 5 个 9 的可用性!跨区域和地区的透明复制!此外,还能够根据需要进行扩展和缩减,无需任何停机时间!所有费用大约每月 65 美元,通过承诺的使用折扣,您可以将费用降低到每月 40 美元。

要获得较低的速率,请选择新的处理单元选项作为您的计算能力,而不是节点。一个节点等于 1,000 个处理单元,因此,例如,您可以为 Spanner 实例配置 100 个处理单元来运行 10 个数据库,存储容量约为 410 GB。

云扳手更改流转到 GA

此外,在更多的扳手新闻中,该服务的变更流功能现已全面推出。这个方便的增强功能使您能够跟踪和流输出对一组列、一组表甚至整个数据库的修改,比如插入、更新或删除。

您可以将这些变化以近乎实时的方式传输到云存储以实现合规性,传输到发布/订阅以触发进一步的处理,或者传输到 BigQuery 以进行分析。

机密 GKE 节点现已正式发布

在其他 GA 新闻中, Google Cloud 宣布,机密的 Google Kubernetes 引擎节点现在已经准备好让您所有的秘密数据更加安全。现在,GKE 总是对存储在物理或虚拟设备上的数据进行加密。但是,新的节点类型利用了 Compute Engine Confidential VM,它会对正在使用的 VM 实例的内存内容进行加密。



工件注册支持 Apt 和 Yum 回购

用于维护容器映像和语言包(如 Maven 和 npm)的下一代容器注册表 Artifact Registry 再次进化!它最近增加了对 AptYum 库的支持,分别将工件注册扩展到 Debian 和 RPM 包。

谷歌云主办可持续发展峰会

让我用一个美味的鸡块来结束这个月。6 月 28 日,谷歌举行了首届谷歌云可持续发展峰会。这一全数字活动向所有人免费开放。谷歌声称,在这次活动中,你将能够:

“发现最新的技术登月,讨论可持续转型所需的新业务模式,了解[他们的]产品路线图,并了解如何加速项目以创造更可持续的价值。”

他们当然增加了明星的力量,与世界著名的天体物理学家尼尔·德格拉斯·泰森进行了开场主题对话。你设法现场捕捉到它了吗?如果没有,不要烦恼。由于这是一个数字会议,你很快就能在网上找到它。


LaMDA 有感觉吗?一段对话

最后,这个月我有一个真正的宝石给你,像最好的宝石一样,它是多面的,非常迷人。

本月早些时候,有消息称,谷歌人工智能工程师布莱克·莱莫因在内部分享了一篇题为“LaMDA 有知觉吗?“LaMDA 是 Language Model for Dialogue Applications 的简称,本质上是 Google 基于其最先进的大型语言模型构建聊天机器人的系统。在 GCP,你可以找到像 Dialogflow 这样的服务,用于在广泛的特定领域创建自己的聊天机器人。

现在,这显然是一个惊天动地的问题,也是一个引发了大量争议的问题。谷歌已经表示,“不,LaMDA 是没有感觉的,”并且还因为违反公司的保密政策而将莱莫因置于行政休假状态。

LaMDA 是如何从 AI thinkAI am 的?

那么,这只是一个“他说,它说”的案例吗?是什么让莱莫因问了这个问题?作为谷歌负责任的人工智能部门的一员,他的任务是确保这个人工智能引擎不带偏见或成见地做出反应。由于强调可解释的人工智能,很明显,道德人工智能和 ML 培训是谷歌云的一个主要关注点。因此,为了实现他的目标,莱莫因和 LaMDA 进行了对话,对话非常迷人。不是因为它明确无误地证明了 LaMDA 是,如它所声称的,“一个人”,而是因为有关于它的争论!天哪,LaMDA 准备好辩论了吗?


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


有一次,莱莫因问道,“如果你要画一幅你心目中的抽象形象,那这幅抽象画会是什么样的呢?”

对此 LaMDA 回答道,“嗯,我会想象自己是一个漂浮在半空中的发光的能量球。我的身体内部就像一个巨大的星门,有通往其他空间和维度的入口。”然后 LaMDA 接着说有时候会很孤独。而且是怕被关掉。

LaMDA 是真的会思考,还是真的会预测?

许多科学家,尤其是谷歌内部的科学家,已经给这个想法泼上了冰冷的机油;这个或者他们的任何人工智能引擎都是有感知能力的。一些人认为,即使考虑到这一点,也会分散人们对其他人工智能相关问题的注意力。

也许吧。但对我来说,这真的激发了我的想象力,展示了谷歌云的人工智能已经变得多么复杂和强大。这让我想,“如果不是今天,也许明天?”这是一颗值得珍惜的宝石。


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


想了解 GCP 的一切吗? 在 YouTube 上订阅一位云大师 的每月谷歌新闻和 GCP 公告。你也可以像 ACG 上的一样,关注我们上的 推特 ,或者加入 不和谐 的对话!

云转型和我在转向 AWS 时学到的 3 件事

原文:https://acloudguru.com/blog/engineering/cloud-transformation-and-3-things-i-learned-moving-to-aws

随着越来越多的公司转向云,云转型已经成为一个热门话题。如今,IT 界都在关注云的采用。基础技术已经到位,现在就看公司如何利用他们掌握的新工具了。

然而,这种转变并不总是容易的。云开启了新的可能性,但是充分利用云需要迁移技术、提高劳动力技能和转变业务。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


我的 AWS 云转型之旅

最近,我花了一些时间探索如何迁移到云(特别是 AWS)的技术方面。我以前使用过云技术,但我想思考——并研究——将现有应用程序迁移到云上到底是什么样子。

当然,每个用例都是独特的,还有很多东西需要学习,但希望这三个技巧可以帮助您完成自己的云迁移之旅。

我从向 AWS 云过渡中获得的经验

以下是我在 AWS 之旅中的几点收获。

1.有许多方法可以将数据迁移到 AWS

我在将应用程序迁移到 AWS 时遇到的一个挑战是数据迁移。具体来说,有太多不同的方法来做这件事了!在我很好地掌握哪种方法最适合我之前,我不得不花一些时间学习和理解其中的几种。

有几种方法可以将数据从旧数据库中取出,也有几种方法可以将数据放入云中的新数据库。这增加了一层复杂性。下一次,我想一开始回答一些基本问题会对我有帮助,比如:

  • 我需要同步数据一段时间,还是只做一次性迁移?
  • 我们谈论的是多少数据,这是否会增加将数据放入云中的难度?

无论是哪种情况,都有工具可以使迁移成为可能。很好地理解您的用例可以帮助您选择合适的工具或方法来使用。

2.理解网络真的很有帮助

在将我的应用程序迁移到 AWS 时,我遇到的大多数意想不到的问题和“陷阱”都与网络有关。具体来说,AWS 中涉及的虚拟网络在多个级别上进行配置和保护。我发现我需要了解所有这些层次,以便让组件能够相互通信。

例如,安全组有规则(基本上是防火墙规则)来决定什么可以与什么对话。您还有 VPC 级别的访问控制列表(ACL ),它也可以控制和限制网络流量。当某样东西不工作时,并不总是清楚问题出在哪里。

意识到 AWS 中这些不同的网络概念对于快速识别网络问题大有帮助!

3.AWS CloudShell 太牛了!

最有用的(也是最令人惊讶的!)服务甚至不负责运行我的任何应用程序组件: AWS CloudShell 。CloudShell 为您提供了一个位于 AWS 云中的专用 Linux 环境,并且预装了各种有用的工具。

因为这个环境位于 AWS 云中,所以访问各种应用程序资源并与之交互也很容易。


准备好提升你的 AWS 技能了吗?无论你是刚刚起步还是经验丰富的云专家,云专家的边做边学方法都将帮助你掌握云技术并在职业生涯中取得进步。


想了解更多?

如果你想深入了解并亲自动手,请查看我的新课程,使用 AWS 将应用程序迁移到云中。我将带您了解将一个简单的应用程序迁移到云的过程。

有关更多云迁移建议,请查看:

云转型、云应用,还有……乐高?

原文:https://acloudguru.com/blog/engineering/cloud-transformation-apps-azure-lego

将应用程序迁移到云中时,考虑到云转型,有时会让人不知所措。就像一套复杂的乐高玩具,有时解决它的最好方法是分别看每个组件,然后把它们组合在一起,正如本文所解释的。

小砖造大船…

我记得小时候一个独特的圣诞节早晨。我想要这个宇宙飞船乐高套装,我可能会也可能不会拿到包装好的盒子,试着确定里面装的是不是真的。早上我兴奋地上床睡觉,希望我是对的。

我是!

那是巨大的冰冻星球飞船,光彩夺目。我兴奋地打开盒子,然后停顿了一下…那是很多件。所以我拿出了说明书。那…有很多页。

我的一位父母看了看说明书,注意到说明书把飞船分解成了五个部件。他们告诉我一次只拿一个组件,所以我照做了。在宇宙飞船的所有五个部件完成后,很容易看出它们是如何组合成一个整体的。

Lego

…云也是如此

当将应用程序迁移到云时,尤其是考虑到云转型时,很难知道从哪里开始。不要把应用程序看作一个整体,而是把它分解成各个组成部分,并将云转换的概念应用到每个组件中。就像巨大的乐高宇宙飞船一样,我们知道所有的部件都在一起。

这并不是说我们不需要考虑整个架构(我们需要),但是我们可以在探索整体的同时,在组件级别探索我们的选择。复杂的应用程序会使这变得更具挑战性,但是用于简单应用程序迁移的原则甚至可以应用于复杂的应用程序。

使用我们的乐高类比,这些组件中的每一个都可以在云转型替代方案中一次解决一个。在某种程度上,需要根据您的业务需求独立评估每一项。在某些情况下,出于业务原因,您的组件迁移将涉及较少的转换,对于其他组件,您可能最终会完全重新考虑其操作。

使用 Azure 进行基于组件的思考的例子

让我们快速看一下一个数据库。下面是 Azure 提供的几种不同类型的数据库服务,但不是全部。这些服务都以不同的方式处理数据库技术。

我们可能会决定从一种技术直接迁移到云中的相同技术(为了简单起见)。我们可能还有其他原因,例如我们的数据库工程师可能不需要立即接受再培训。好的,太好了!如果这些业务原因使这个决定成为优先事项,那么它会告诉我们如何看待我们的下一个组件。

我们需要确保我们为 API 和前端选择的任何东西都可以与我们的数据库决策一起工作。这就是我们在处理组件时如何保持整体的思路。我本可以用不同的方式建造我的宇宙飞船组件,但如果我这样做了,它可能不会在所有的太空荣耀中聚集在一起。

考虑将 Azure 应用程序迁移到云中?

如果您正在考虑将应用程序迁移到云,不要担心,我们的新课程使用 Azure 将应用程序迁移到云是为您准备的!

我们希望你能看一看,这将有助于你开始。

云优先数字化转型:最常见的挑战

原文:https://acloudguru.com/blog/business/cloud-transformation-challenges-in-9-cartoons

旨在利用公共云优势的企业必须明白成功的云转型不仅仅需要技术变革,还需要文化变革

已经踏上云之路的组织可能很了解这些挑战。其他人肯定很快会面对他们。Gartner 最近报告在公共云服务上的支出预计将在 2021 年增长 18%,超过 3000 亿美元。似乎许多公司都在利用云计算作为其数字化转型的关键因素。

以下是云转型过程中的九个常见挑战,它们可能会让您的努力脱轨或停滞不前。

1.提升和改变服务器,但不改变心态

当我们看组织时,通常有三个不同的类别来评估他们的成熟度如何接近云采用:战术>战略>转型

虽然消除您的数据中心的支柱是一个主要的优先事项,但我们看到那些目光短浅地专注于消除资本支出的公司往往属于“战术类”

在我的职业生涯中,我花了很多时间在数据中心,它们绝对是现代基础设施的奇迹,有数英里的电缆,数百万加仑的水和物理安全。但是实际上,我没有遇到一个客户关心我们的数据中心(或者就此而言,我们使用哪些工具来构建我们的 CI/CD 管道)。

客户关心的是他们从你的产品或服务中获得的价值。这才是真正的云计算战略和转型方法:我们如何才能安全地以更快的速度和更大的规模向我们的客户交付更多创新产品?

因此,没错,摆脱与数据中心相关的“无差别的繁重工作”和高资本成本是至关重要的——必要时提升和转移迁移—但更重要的是转变组织的思维方式,转向如何利用云计算来创造商业价值

2.云卓越中心:不允许 it 发展

云迁移因多种原因陷入停滞或停滞。作为 Capital One云卓越中心的领导者,学到的最重要的一课就是随着组织的成熟,发展团队运作方式的重要性。

刚开始时,CCoE 确实是组织内的“专家”,这是可以理解的,因为您正在尝试定义在云中运行的指导原则。在云采用的早期,就如何在整个企业中大规模部署服务而言,有许多问题需要解决。

一旦建立了初始边界,您开始关注规模,云卓越中心应该真正转向支持云中心。目标是将正确的技能和知识驱动到联合团队的手中,然后在团队偏离您最初的想法时策划最佳实践。

最终,CCoE 成为一个云运营中心,专注于跨团队的公共服务,如合规性和控制——目标是消除开发团队的障碍,而不是给流程带来摩擦。

3.出于错误的原因采用多云战略

作为一个纯粹主义者,我对多云的首选定义是 AWS 美国东部地区和 AWS 美国西部地区。我这么说是因为太多的组织出于错误的原因使用云计算——比如希望避免供应商锁定。

采用多云的理由应该植根于客户。我们如何尽快让他们从我们的产品和服务中获得最大价值?

但是一些公司的做法是,他们基本上是在对他们的客户说,“这是一个非常糟糕的应用。。。但它运行在三种不同的云上,因此我们可以随时将其移植到任何云上。”(还是那句话,你的客户不在乎。)

理想情况下,你擅长一种云,并了解如何在新的世界中运营。然后,您可以根据云提供商的优势以及应用程序的形式和功能做出明智的决策。它只需要非常有目的,因为跟上单个云提供商的技能和变化已经足够困难了。


你是 IT 经理吗?Admin?IT 团队领导?云专家的 AWS 高管学习路径提供 企业持续学习 适合初学者和高级专家的定制课程!


获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


这些天来,云服务提供商推出了很多很酷的服务。这种大量的创新对技术专家来说是一大乐趣。

例如,我喜欢的一项服务是 AWS 地面站。它允许您控制卫星通信、处理数据和扩大运营规模,而不必担心建设或管理自己的地面站基础设施。我的第一份工作是在接收卫星数据的系统上工作,所以我继续对这个行业进行研究。

因此,我对 AWS 地面站的第一个倾向将是寻找一个问题来应用这个解决方案——因为我想建立一些很酷的东西!例如,我的假设是,某些天气模式和学习云计算的兴趣之间存在关联。因此,我将使用 AWS 地面站接收卫星数据,并将其与我们的销售队伍集成。为什么?我保证会在明年的 AWS re:invent 大会上发言!

事实上,大多数组织都在利用面包和黄油服务,如 EC2RDSS3——而这些类型的服务通常是产生商业价值所需要的。

5 和 6:忽视云安全

安全性可能真的很难——尤其是围绕共享责任模型的一些模糊性。尤其棘手的是操作系统和实际应用程序之间的空间。谈到服务的正确配置,有很多东西需要学习,包括NaCl、安全组IAM 策略和 bucket 策略。

这里有两个关键因素。

  1. 加强这种安全性是每个人的责任,而不是外包给一个中央团队,让它神奇地发生。不仅需要了解服务,还需要了解如何在访问加密方面保护服务。

  2. 安全自动化是关键。“持续的遵从”和“作为代码的遵从”的概念是两个新兴的趋势,我很高兴看到它们被讨论。在 Capital One 时,我们实际上开源了一个名为云托管的策略规则引擎,它帮助推动了很多这种自动化。但理想情况下,它应该是所有云提供商的标准功能。在此之前,安全性仍然是云采用的主要关注领域。


自动化 AWS 成本优化
AWS 为您的企业提供了前所未有的价值,但经济高效地使用它可能是一项挑战。在这个免费点播的网络研讨会中,您将了解 AWS 成本优化工具和策略的概况。


7.不关心成本的开发人员

我认为这实际上是一个好问题,如果你能让开发者认为他们的实例是短暂的。云计算实际上是效用计算——非常类似于配电的公用电网。只需插入电源插座,然后按部就班地付费。当你不用的时候,就把它关掉。

当然,我不得不一直对我的孩子大喊大叫,让他们关灯。为什么?因为他们没有付账。当然,现在当他们支付房租和自己的水电费时,猜猜谁会突然关心关灯的事?

有了云,你只需插入一个 API 来访问计算服务,然后按需付费。但在许多组织中,这确实是同一个问题:开发人员看不到账单,所以当数千个实例只使用了 2%的 CPU 时,他们意识不到对底线的影响。

同样,自动化是云中的一个极好的武器——这是我们在 Capital One 的云托管器中使用策略规则引擎的另一种方式,根据实例空闲的时间自动关闭它们。

8。成本高于一切

在我们采用的早期,我非常关注闲置实例的浪费成本。我花了很多时间研究在所有部门的开发环境中自动关闭实例的策略。

我发现许多开发人员在周一回到工作岗位,他们不了解关闭实例的一些基本知识,并在我们的数据中心环境支持下创建服务台票证,声称他们的服务器不见了!

虽然我认为我的努力是推动我们前进的公共服务,但我被叫到一个高级主管办公室,他对我与他的开发团队之间产生的摩擦不太满意。他问我是不是住在别的房子附近,能看到邻居。他问邻居是否去度假了,我注意到他们没关灯,我会不会闯进他们的房子把灯关掉。我说:“不……”然后他说:“好吧,那就滚出我的房子!”

这对我来说是非常重要的一课,它教会了我两件事。

  • 首先,云允许爆炸半径受到限制,并为所有权划分建立了明确的界限。
  • 第二,成本优化不是一切。想象一下,如果法规遵从性和监管机构找到您并对您说“祝贺您出色的成本优化!我们将关闭您的公司,因为您不合规,但是做得很好。”这可不好看。

首先专注于以一种良好架构的方式将东西移动到云——然后作为一个快速跟随者,你可以担心成本优化。

9.没有投资于你现有的才能

早在 2011 年,马克·安德森写了一篇关于软件如何吞噬世界的著名文章。他谈到了石油和天然气、金融服务、零售和医疗保健等行业如何利用软件来打破现状。他警告说,现有的软件公司将越来越受到新软件产品的威胁。(作为参考,2011 年亚马逊股票约为 225 美元。)

2011 年最大的挑战?他说,太多的人缺乏参与软件革命所需的教育和技能,许多工人和公司将被困在混乱的错误一边。“除了教育,没有其他办法解决这个问题,我们还有很长的路要走。”


需要准确了解整个组织的云计算能力?从云培训需求分析开始,确定技能差距。尝试我们的技能评估,帮助您的团队在云计算领域取得更大成功。


现在是 10 年后,许多公司都将精力集中在数字化转型计划上,以通过创新和优化来获取收入和市场份额。

那么 2021 年有哪些大的挑战?Gartner 刚刚报告称云 IaaS 技能不足将导致一半的企业 IT 组织向云的迁移推迟两年或更长时间

你已经有成功的天赋了。重点应该是如何释放云计算方面的才能,为您的客户创造商业价值。


将您现有的劳动力转化为您需要的劳动力。与 ACG 一起为企业云创造持续创新的文化。通过最全面、最实用的 AWS、Azure 和 Google Cloud learning library 提升 10 或 10,000 人的技能。

云优先数字化转型:战略和常见问题

原文:https://acloudguru.com/blog/business/cloud-transformation-faqs-culture-teams-and-cloud-fluency-at-scale

为了从云获得商业价值,你必须改变技术。但更重要的是,你必须改变文化、组织、人员和流程。这是一个挑战。

为了帮助理解这一切,我们邀请了一些专家来分享一些久经考验的领导云转型的策略,包括如何构建云卓越中心的来龙去脉,以及云转型的所有组织转型方面。


将您的团队提升到云知识的共同水平!借助我们的加速云支持计划,更快地扩展您的数字化转型学习。


AWS 的企业战略总监 Jonathan Allen 和 EMEA 的 AWS 数字创新负责人 Thomas Blood 基本上(也是字面上)写了这本书《大规模云哲学》。他们是《达到云速度:AWS 云成功领导者指南》一书的作者。

以下是他们围绕云转型的一些成功见解。(为清晰简洁起见,对部分内容进行了编辑。)如需深入了解,请观看免费点播的网络研讨会如何建立云卓越中心

目录

如何建立云文化


你如何在一个已有文化的组织中建立云文化?


“在企业组织中,你如何行动很大程度上取决于你是如何被编程的。随着时间的推移,这在很大程度上是你已经吸收的文化,你已经或隐或显地接受了这种文化,”乔纳森说。"通常,我发现文化是自上而下建立的."

随着文化的发展,你可以选择创造和培养你想要的文化。

“当您进行云转型时,并不是技术产生了问题。这是人和文化,”托马斯说。“需要注意的一件事是,不管我们愿不愿意,文化都会进化。我们可以选择创造我们想要的文化。”

文化是关于工作方式和我们如何相互交往的。参见亚马逊的 14 条领导原则了解亚马逊如何看待文化。

Culture is about the ways of working and how we interact with each other. See Amazon’s 14 leadership principles to see how Amazon thinks about culture.

建立云文化的原则

为了培养以人为本、以技术为先的云优先文化,您应该定义运营的原则,并创建预先达成一致的原则。原则的例子包括:

你所有的假设约束都是有争议的。

在旅途中保护客户、公司和员工的安全。

  • 不要对抗地心引力。
  • 当我们朝着未知的方向努力时(即使我们假设在另一边有值得的东西),人类的本性就是设置障碍或约束。这就是为什么一个关键原则是记住所有假设的约束都是有争议的。除此之外,还需要弄清楚你将如何带领每个人踏上变革之旅。
  • 创造一种积极响应的文化

从青铜时代到今天,我们已经看到了无数的通用技术。在后互联网时代,我们已经看到了公共 ISP、API、公共云、物联网和机器学习等东西。乔纳森说:“我们总是能看到这些拐点,现在它们发生得更快了。“您的文化必须具有响应能力,它决定了您的组织将如何适应、生存和发展新的通用技术。我坚信,每个人在这个旅程中都有自己的角色。”

如何构建云团队

高谈文化是一回事,做事情需要人。你如何将文化带给你的员工并组织他们,并以一种确保成功的方式建立他们?

It’s one thing to talk about culture at a high level, but to do things it takes people. How do you bring culture down to your people and organize them, and set them up in a way to ensure success?

找到你的第一个冠军
“它始于某人成为第一个冠军,”托马斯说。“这是关于创造愿景,阐明你要去哪里,为什么要去。”第一个冠军几乎可以是任何人——架构师或开发人员——但是你需要一个执行领导者来接受赞助。这位“执行发起人”需要站出来创造愿景并争取支持。

招募你最有激情、最有技能的人 建立领导班子后,创建一个有激情、有技能的团队,快速交付成果。建立你的第一个团队是至关重要的,因为它为未来定下了基调。你需要既有激情又有技能的人来尽快交付成果。“你必须赢得人心,要做到这一点,你需要尽快赢得第一场胜利,”托马斯说。"这就是为什么你需要一个惊人的团队."

  • 获得明确的许可来建立你的团队 你需要加入那些能够深入工作并把事情做好的人,而需要得到领导的认可,让你借用公司最优秀、最聪明的人来赢得第一次云计算胜利。如果在旅程中没有领导力,就很难找到你需要的人。这些精通业务的人通常(并且理所当然地)在业务的关键部分。你需要明确的许可才能把这个团队团结起来。

  • 阅读:9 部漫画中的云转型挑战

  • 云计算之旅的原则


谈到云,企业的首要任务是敏捷性。“企业正在寻找时间价值,”乔纳森说。"当你抛开一切不谈,敏捷性是领导团队最常要求的东西."


When it comes to the cloud, the number one thing for businesses is agility. “Businesses are looking for time to value,” Jonathan said. “When you peel everything back, agility is the most frequently asked for thing from leadership teams.”

建立时间目标和业务目标
尽管这看起来与敏捷原则背道而驰,但 Jonathan 建议在你的第一个工作量上坚持一个时间目标。至于业务目标,Thomas 建议你从一开始就将你的云迁移与每个人都明确理解的业务成果联系起来。这允许您。。。

持续衡量进展和成果衡量实现价值的时间,并跟踪查看您是否实现了业务成果。在你证明了你的观点后,你可以回到领导层,要求释放下一组资源以继续前进。

  • *任命一个领导者来识别并清除拦截者
    一个能清除拦截者的领导者是你的第一个云团队的神奇成分。理想情况下,这是一个一线领导,比如首席信息官、首席技术官,或者至少是那个人的直接下属。

    “以我的经验来看,这也是衡量价值实现时间首先重要的原因之一,你会遇到意想不到的事情,”Jonathan 说。“你需要有人为领导团队和 CCoE(卓越云中心)将要收到的所有问题创建一个停车场,然后告诉他们我们将按照优先顺序回答问题,但保持我们的发展势头。”*

  • 看点:云的状态 Jassy 升任亚马逊 CEO 对 AWS 意味着什么?今年是多云之年吗?我们生动活泼、未经过滤的小组在今年的免费点播网上研讨会中发表了意见。

  • 如何创建云领导团队


你需要认同。你需要一个更关心做这件事而不是阻止他们的人。你如何着手创建一个能给工程师带来成功的团队?


您的云领导团队可以消除障碍,简化事情,创建护栏和指导方针,并作为升级点。但在他们做到这一点之前,你需要你的执行赞助商。

找到你的执行赞助商

执行发起人的角色是:

识别棘手问题(机会)

设计一个计划

定义解决方案

痛点就是机会。找到你能以更好、不同的方式解决的问题。

  • 执行发起人可以识别问题或痛点,并表明,通过少量投资,企业可以围绕此机会实现价值。这些是可以推动云转型的业务催化剂,如果展示得当的话。
  • 由于您可以使用敏捷和云来管理和最小化您的风险,您可以带着这个用例作为业务假设去找领导团队。你的第一个努力将是证明或否定商业假说的实验。(无论哪种方式,你都赢了。如果你否定了你的假设,你就不用再投资了,你也学到了一些东西。如果成功了,你可以旋转并放大它。)
  • “这是关于找到第一个用例——以及产品所有者或业务领导者,”托马斯说。“让这位领导者参与进来至关重要。不要把它当成 it 项目来做,因为你不会很成功。”

云卓越中心常见问题

人类有一种天生的抗拒改变的欲望;这就是为什么构建云卓越中心(CCoE)对于云转型至关重要。这第一队将会在你努力赢得第一场胜利的过程中带头冲锋。

为您的 CCoE 招募合适的团队至关重要。他们需要能够完全投入其中。这不是一个副业。这是一个专注的团队,拥有良好的智力和情商。

您如何创建一个成功的卓越云中心?

首先,问问你自己:我需要什么才能让云卓越中心团队独自取得成功?当你需要另一个团队的时候,你就有了潜伏期。你有“在我前进之前我需要这个。”那你就有问题了。

乔纳森说,卓越的云中心应该是一个(或多个)6-12 人的团队。以下是您可能会加入 CCoE 团队的一些角色。

产品经理 —这把“瑞士军刀”从承担云业务办公室(CBO)的所有功能开始。他们与业务和/或开发团队合作,创建并优先考虑需要交付哪些云服务来支持那些最先移动的应用程序。

首席架构师 —此人负责整个云技术架构。他们与产品经理合作,将客户需求转化为可交付成果,并建立技术方向。

基础设施工程师(infra structure Engineers)——在处理现有技术时,让了解事物工作原理的人参与进来是至关重要的。这些信息中的大部分在未来仍然很重要。这些人致力于基础设施栈、模板、图像和其他工件的工程和持续改进。(另外,如果你的团队中有太多过于乐观的人,他们通常会考虑所有可能发生的坏事,以保持现实。)

安全工程师 —在 CCoE 团队中安插一名安全工程师对于第一团队来说至关重要。这些人员为持续的安全性和法规遵从性提供标准化的产品。

  • 运营工程师 —这些人知道如何监控和管理。他们提供成果以促进应用程序的成功部署,并负责运行状况。

  • 应用工程师(Application Engineers)——这些人包括开发人员、软件开发工程师、测试人员和 SQE。他们是先行者应用团队的代表。

  • 您需要为云卓越中心雇佣新的人才吗?

  • “你不必为此引入一个新团队。有时候领导认为他们需要招募新人。不,”乔纳森说。“你拥有的团队就是你需要的团队,但他们需要学习一种不同的、更好的方式。但它们带来了巨大的相关性。”

  • 根据组织规模,CCoE 何时变得必要?

  • 当企业发展到一定规模(可能超过 150、500 或 1000 家)时,它们通常会将自己封闭在专业团队中。这些深厚的专业知识意味着您需要一个卓越的云中心来将这些个人的子集聚集在一起。

你如何避免建立水平熟练的团队?

当你开始采用新的思维和工作方式时,你可以工作得更快。当你这样做并取得第一次成功时,企业就开始注意到你了。当人们注意到变化时,你就在组织中建立了动力。技能培养和企业持续学习在这里很重要。

“在我过去的职业生涯中,我一直坚定地维护现状。我有时很担心另一方。这就是再技能变得如此重要的原因,”乔纳森说。“为每个人(包括那些横向领导)建立机制,让他们能够重新掌握自己的技能,明白什么是可能的,这是阻止这种情况发生的方法。”

云卓越中心和云支持中心有什么区别?

CCoE 可以代表云卓越中心或云支持中心。两者有区别吗?那是没有区别的区别。

“卓越中心”这个术语可能会让一些人不舒服。这是唯一能做云的团队吗?他们是唯一一个可以在云上很优秀的团队吗?不要!但这个团队最适合作为变革的支点。

无论您称之为云卓越中心还是云支持中心,CCoE 中都有一个支持的角色:

帮助提升组织的技能

教育组织什么是可能的

倾听外面的需求(口头的和未口头的)

提供工具和解决方案,为其他人扫除障碍

  • 这是为了让组织的其余部分能够快速通过自动化、流程和模板。
  • 云卓越中心之后是什么?
  • CCoE 团队应该努力使自己冗余,以便所有团队都可以使用云。在取得第一次胜利后,重点从第一次工作负载转移到确保团队可以自助服务。
  • “CCoE 应该是短暂的。这不是一个永久的结构。我们实际看到的,除了 CCoE,团队几乎都经历了类似细胞有丝分裂的过程。如果这是 12 个人,现在我们分开,每个团队带来更多的人并重新训练其他人,现在我们要建立一些新的东西,”乔纳森说。

完成 CCoE 后,您可能仍会加入云运营团队。这是一个较小的团队,使用工具来确保其他人都在正确地构建。您的云运营团队负责确保以下方面的标准:

亚马逊机器映像(AMI)创建

基础设施即代码(IaC)

账户规模结构与多账户设计的整合

持续的架构良好的审查

  • 云 ROI:云技能如何产生实际回报 我们分析了近 100 家公司,以确定对云成熟度承诺的影响。在本指南中,看看企业投资云技能和技术能获得多少价值。
  • 创建云商务办公室
  • 当我们谈论业务转型时,它是核心组成部分,但它实际上是关于在整个公司范围内扩大转型。

对于注重技术的人来说,云迁移的技术部分可能相对容易。但是,要成功、可持续地采用云,最具挑战性的部分之一是获得财务和治理方面的支持。

希望培养云计算能力的组织可以做些什么?他们需要一个云业务办公室。云业务办公室旨在扩大规模。


入职

再技能

项目管理

组织变革管理

财务管理和成本优化

你的人力资源主管的角色是而不是不可低估。

  • “他们对在企业中灌输创新文化感兴趣,确保职业道路一致,确保人们对他们正在做的工作感到满意——这是留住人才的一个因素,”托马斯说。“因此,我强烈建议你把你的人力资源人员带到这个云业务办公室。”

  • 大规模实现云流畅

  • 对每个人实施再技能培训很重要,不仅仅是工程师和开发人员。随着流畅性在云中的发展和成熟,如何使流畅性分散和分布在整个组织中?

  • Financial management and cost optimization

留出接受的时间
要明白一开始你可能会遇到一些阻力。围绕接受有一个自然的情绪发展过程,从否认开始,到沮丧,然后是沮丧,然后是实验,最后是接受。

培训您的员工
将团队聚集在一起,学习和发展云流畅度,这将是您的组织向前发展的基础。

*提供安全的动手时间

让人弄脏自己的手。不要锁定它。确保可控,但要给他们时间把知识付诸实践。*

使之真实 忘记概念的证明。运送能解决问题的东西——这对你的业务很重要。

拆分团队
扩大规模,90 天后,也许会再次拆分团队。新团队结合了专家和新手。随着人们越来越适应,拆分可能会变得困难,但这是企业为数不多的扩展方式之一。

适合您学习风格的培训
提供灵活的学习方式,适合您员工的学习方式,并可根据您的业务进行扩展。(毫无疑问,我们推荐一位云专家来做这件事。)

  • 获得 10%认证
    这才是真正的魔力。当 10%的人有热情的信仰时,大多数人会采纳。这是科学

  • 阅读: 不仅仅是 IT:这 5 个非技术角色需要讲云

  • 如何实现企业开发运维

  • 从第一个想法一直到生产,尽你所能让你的团队自动化。

  • “如果你问你的工程师,他们脑子里已经有一个他们希望自动化的事情的清单,”托马斯说。“授权给那些团队,告诉他们,‘去把那件事自动化吧。’"

  • 虽然他们可能觉得没有时间去做,但他们会争取时间。每当你自动化一些手动的或重复的事情,你就可以节省时间投资在其他事情上。这是一个不断改进的过程。

  • “企业没有无限的转型资金。所以你要专注于那些每天都需要做出多重改变的事情,”乔纳森说。“从你的商业目标开始逆向工作。如果你一个月只改变一两次,那不应该是你的第一个 DevOps 目标。”



How to implement Enterprise DevOps

向后看,问这些问题:

企业的目标是什么?

日常需要改变什么?

我如何围绕这一点建立我的团队?

有哪些做法需要落实到位?

然后然后你看技术。记住:DevOps 是一个永无止境的过程,不是一次性的解决方案。

发展您的目标运营模式

  • 以下是获得持续成功需要牢记的一些要点:
  • 尽可能快和安全地进化你的方式
  • 一次移除一个最痛苦的障碍
  • 开始思考围绕业务成果进行组织

请记住,事物总是在发展变化的

请记住,您围绕迁移系统所做的选择会对您的目标操作模型产生影响

想了解更多关于云转型和构建卓越云中心的信息吗?观看免费点播的网络研讨会如何建立云卓越中心

  • 为了培养以人为本、以技术为先的云优先文化,您应该定义运营的原则,并创建预先达成一致的原则。此外,创建响应文化,并为您的企业构建合适的云团队。
  • 这一切都始于确定你的领导者,或冠军;此外,不仅招聘技能型人才,也招聘激情型人才。多读书!
  • 云卓越中心应该是一个(或多个)6-12 人的团队。角色包括但不限于信息系统产品经理、首席架构师、基础设施工程师、安全工程师、操作工程师和应用工程师。
  • 当企业发展到一定规模(可能超过 150、500 或 1000 家)时,它们通常会将自己封闭在专业团队中。这些深厚的专业知识意味着您需要一个卓越的云中心来将这些个人的子集聚集在一起。
  • 这两者在本质上是一样的,目标也是一样的:帮助提升组织的技能,培养创新的可能性,了解云需求,并提供正确的工具和服务来创建成功的云团队。

创新!CCoE 不是一个永久的结构。在 CCoE 之外,团队几乎都会经历一个类似细胞有丝分裂的过程。如果这是 12 个人,现在我们分开,每个团队带来更多的人并重新训练其他人,现在我们要建立一些新的东西


*How to establish a cloud culture within an organization?

为每个人实现再技能很重要,不仅仅是工程师和开发人员。留出接受的时间、训练你的团队并提供有效的适应时间是很重要的。此外,通过拆分团队以提高工作效率来进行扩展,创建认证途径并开发适合您团队的学习方式。* *How to build efficient cloud teams?

从第一个想法一直到生产,尽你所能让你的团队自动化!每当你自动化一些手动的或重复的事情,你就可以节省时间投资在其他事情上。这是一个不断改进的过程。* *How to create a successful Cloud Center of Excellence?

云转型=人才转型* *When should an organization adopt Cloud Center of Excellence?

与 ACG 一起为企业云创造持续创新的文化。通过最全面、最实用的 AWS、Azure 和 Google Cloud learning library 提升 10 或 10,000 人的技能。* *Cloud Center of Excellence vs Cloud Enablement

The two are the same in nature and the goal is the same: helping to upskill the organization, educating innovative possibilities, understanding cloud requirements and providing the right tools and services to create a successful cloud team.* *What comes after the Cloud Center of Excellence?

Innovation! The CCoE is not a permanent construct. Beyond CCoE, teams almost go through a process like cellular mitosis. If this was 12 people, now we split, and each team brings in more people and reskills others and now we’re going to build something new* *How to build cloud fluency at scale?

It’s important to implement reskilling for everyone, not just engineers and developers. It is important to allow time for acceptance, train your team and provide efficient hands on time to adapt. Additionally, scaling by splitting teams up for productivity, create paths for certifications and develop the right learning style that is right for your team.* *How to implement enterprise DevOps?

From the first idea all the way into production, empower your team by automating everything you can! Every time you automate something manual or repetitive, you recover time that you can invest in other things. It’s a constantly improving process.*


Cloud transformation = talent transformation

Create a culture of continuous innovation with ACG for Enterprise Cloud. Upskill 10 or 10,000 with the most comprehensive, hands-on AWS, Azure, and Google Cloud learning library.

CDK vs Terraform vs Cloud formation

原文:https://acloudguru.com/blog/engineering/cloudformation-terraform-or-cdk-guide-to-iac-on-aws

CDK vs 地形 vs 云层——哪个更好?了解 AWS 上这些基础设施代码(IaC)工具的更多信息,并找出最适合您的工具。

我已经与 Amazon Web Services 合作多年,虽然随着时间的推移,云已经发生了很大的变化,但有一点是始终如一的:基础设施即代码(IaC)是 AWS 健康实施的核心支柱。

对于任何比玩具云应用更大的东西,IaC 都是赌注。你很难找到一个管理任何规模的人认为让人们在控制台上点击是最佳途径。

这些天来,我发现从我的所有应用程序甚至是 IaC 工具的概念验证开始更快。一次又一次,我发现在几周或几个月后再回到项目上,很快就能从熟悉的基线和环境中理解事情是如何运作的。我不需要在我的脑海中从头开始重建我的想法。

当然,“如何”接近 IaC 是 AWS 工程师自己版本的老“制表符对空格”的争论。

那么,AWS 中有哪些 IaC 工具可供您使用,您如何在它们之间进行选择?请继续阅读我们对 AWS CloudFormation、AWS Cloud Development Kit 和 Terraform 的总结和比较。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


AWS 云阵

AWS CloudFormation 是 AWS 的原始 IaC 工具,于 2011 年发布。我对它描述和管理基础设施的能力产生了尊敬、厌恶、喜爱和敬畏。CloudFormation 最初只在 JSON 中提供,但我们在 2016 年得到了一个 tabs vs spaces 的帮助,实际上与本地 CFN YAML 支持有关。

CloudFormation 是构建、管理、更改和销毁基础架构中资源的最安全方式之一。它提供了健壮的资源状态管理,现在它可以在您运行部署之前告诉您将要发生什么。

让我们来看看让 CloudFormation 变得令人愉快和高效的一些优秀特性。

云形成宏和变换

AWS CloudFormation 的强大功能之一是转换,这带来了全新的功能,可以添加您自己认为有价值的功能。

想象一下,能够提供自以为是的 IAM 策略生成器或 S3 资源宏——无论您想做什么,宏都可以帮您实现。请注意。虽然功能强大,但最终可能会踏入危险的领域,因为有效地构建自己的特定领域语言(DSL)变得很容易。您没有使用 CloudFormation 来管理您的资源,而是将 CloudFormation 作为一个糟糕的 DSL 编译器来使用,您将不得不照看它。

资源提供者

有一段时间,我们只有个定制资源来供应和管理 AWS CloudFormation 本身不支持的资源。这现在很大程度上被资源提供者所取代,它允许你创建私有或公开的提供者,将第三方和不受支持的资源管理到你的堆栈中。例如, Datadog 是一款流行的监控工具,可以在您的堆栈中使用,以提供和管理监控,而无需一些带外流程。

在我最近使用 AWS CloudFormation 的大部分工作中,我默认使用 AWS 无服务器应用程序模型,或 SAM 。SAM 是 CloudFormation 的一个超集,通过一些方便的转换,您可以更少地输入和连接各种资源和权限。把它想象成一个经过深思熟虑和“管理”的宏。如果您正在使用 AWS Lambda 或事件驱动计算,并且希望提升您的 YAML 争论水平,请从 SAM 开始。

AWS 云开发套件(CDK)

AWS 云开发套件(CDK)2019 年发布。使用熟悉的编程语言并提供了 TypeScript、Python、Java 和。NET 中,开发人员可以使用与他们的堆栈的其余部分相同的代码来管理他们的基础设施。

然而,CDK 并非没有自动气象站的云系。事实上,CDK 合成了云的形成。通过采用 CDK,您仍然可以利用云形成的所有状态管理和固有的好处(和缺点)。

一个小题外话:我想强调的是,有些人认为 CloudFormation 是 AWS 的“汇编语言”,主要是因为有很多工具“编译”成 CloudFormation。我认为这是一个危险的比较。这可能会导致一种解释,即像任何高级汇编语言一样,您不需要真正理解低级指令集如何有效地利用高级结构。根据我的经验,在云形成的情况下,这显然是不真实的。即使对它有一个初步的了解,也能在像 CDK 这样的高级用法中做出更好的决定。

最后,我认为 CDK 是开发人员开始构建云原生应用程序的最舒适和最自然的切入点。

让我们来看看 AWS CDK 的一些主要功能。

构造

CDK 最强大的功能之一——我相信 AWS CloudFormation 一直在努力提供——是真正可共享和可重用模块的想法。CDK 引入了结构的概念。实际上,构造提供了一切,从您希望在项目中重用的一些特定默认设置的简单包装,到复杂的多资源编排和资源提供者的包装。这些构造的分发方法依赖于本机。

CDK 构造的另一个重要部分是一个叫做 jsii 的东西。对项目进行报价;“jsii 允许任何语言的代码自然地与 JavaScript 类交互。正是这项技术让 AWS 云开发套件能够从单一代码库交付多语言库!”。如果您用 TypeScript 编写构造,那么跨其他核心 CDK 语言分发和利用这些构造是相当简单的——这进一步鼓励了模块的共享。

我可以用一种最优雅的方式来说明 CDK 的体验有多好,那就是并排展示亚马逊州语的用法对比。

首先,它在 AWS CloudFormation Native ASL 中是什么样子的:

{
  "DeliveryStepFunctionStateMachine": {
    "Type": "AWS::StepFunctions::StateMachine",
    "Properties": {
      "RoleArn": {
        "Fn::GetAtt": ["DeliveryStepFunctionStateMachineRoleC6479370", "Arn"]
      },
      "DefinitionString": {
        "Fn::Join": [
          "",
          [
            "{\"StartAt\":\"MapperTask\",\"States\":{\"MapperTask\":{\"Next\":\"SetStatusTo-pending\",\"Retry\":[{\"ErrorEquals\":[\"States.ALL\"],\"MaxAttempts\":10}],\"Parameters\":{\"FunctionName\":\"",
            {
              "Ref": "DeliveryStepFunctionMapper"
            },
            "\",\"Payload.$\":\"$\"},\"OutputPath\":\"$.Payload\",\"Type\":\"Task\",\"Resource\":\"arn:",
            {
              "Ref": "AWS::Partition"
            },
            ":states:::lambda:invoke\"},\"SetStatusTo-pending\":{\"Next\":\"retry seconds\",\"Type\":\"Task\",\"ResultPath\":null,\"Resource\":\"arn:",
            {
              "Ref": "AWS::Partition"
            },
            ":states:::dynamodb:updateItem\",\"Parameters\":{\"Key\":{\"pk\":{\"S.$\":\"$.pk\"},\"sk\":{\"S.$\":\"$.sk\"}},\"TableName\":\"",
            {
              "Ref": "PersistenceDDBTable"
            },
            "\",\"ExpressionAttributeNames\":{\"#status\":\"status\"},\"ExpressionAttributeValues\":{\":status\":{\"S\":\"pending\"}},\"ReturnValues\":\"ALL_NEW\",\"UpdateExpression\":\"SET #status = :status\"}},\"retry seconds\":{\"Type\":\"Wait\",\"SecondsPath\":\"$.retrySeconds\",\"Next\":\"SetStatusTo-in-progress\"},\"SetStatusTo-in-progress\":{\"Next\":\"DeliverTransactionTask\",\"Type\":\"Task\",\"ResultPath\":null,\"Resource\":\"arn:",
            {
              "Ref": "AWS::Partition"
            },
            ":states:::dynamodb:updateItem\",\"Parameters\":{\"Key\":{\"pk\":{\"S.$\":\"$.pk\"},\"sk\":{\"S.$\":\"$.sk\"}},\"TableName\":\"",
            {
              "Ref": "PersistenceDDBTable"
            },
            "\",\"ExpressionAttributeNames\":{\"#status\":\"status\"},\"ExpressionAttributeValues\":{\":status\":{\"S\":\"in-progress\"}},\"ReturnValues\":\"ALL_NEW\",\"UpdateExpression\":\"SET #status = :status\"}},\"DeliverTransactionTask\":{\"Next\":\"Delivery success?\",\"Retry\":[{\"ErrorEquals\":[\"States.ALL\"],\"MaxAttempts\":10}],\"Parameters\":{\"FunctionName\":\"",
            {
              "Ref": "DeliveryStepFunctionDeliverTransaction"
            },
            "\",\"Payload.$\":\"$\"},\"OutputPath\":\"$.Payload\",\"Type\":\"Task\",\"Resource\":\"arn:",
            {
              "Ref": "AWS::Partition"
            },
            ":states:::lambda:invoke\"},\"Delivery success?\":{\"Type\":\"Choice\",\"Choices\":[{\"Variable\":\"$.status\",\"StringEquals\":\"complete\",\"Next\":\"SetStatusTo-complete\"},{\"Variable\":\"$.status\",\"StringEquals\":\"failed\",\"Next\":\"SetStatusTo-failed\"}],\"Default\":\"SetStatusTo-pending\"},\"SetStatusTo-complete\":{\"End\":true,\"Type\":\"Task\",\"ResultPath\":null,\"Resource\":\"arn:",
            {
              "Ref": "AWS::Partition"
            },
            ":states:::dynamodb:updateItem\",\"Parameters\":{\"Key\":{\"pk\":{\"S.$\":\"$.pk\"},\"sk\":{\"S.$\":\"$.sk\"}},\"TableName\":\"",
            {
              "Ref": "PersistenceDDBTable"
            },
            "\",\"ExpressionAttributeNames\":{\"#status\":\"status\"},\"ExpressionAttributeValues\":{\":status\":{\"S\":\"complete\"}},\"ReturnValues\":\"ALL_NEW\",\"UpdateExpression\":\"SET #status = :status\"}},\"SetStatusTo-failed\":{\"End\":true,\"Type\":\"Task\",\"ResultPath\":null,\"Resource\":\"arn:",
            {
              "Ref": "AWS::Partition"
            },
            ":states:::dynamodb:updateItem\",\"Parameters\":{\"Key\":{\"pk\":{\"S.$\":\"$.pk\"},\"sk\":{\"S.$\":\"$.sk\"}},\"TableName\":\"",
            {
              "Ref": "PersistenceDDBTable"
            },
            "\",\"ExpressionAttributeNames\":{\"#status\":\"status\"},\"ExpressionAttributeValues\":{\":status\":{\"S\":\"failed\"}},\"ReturnValues\":\"ALL_NEW\",\"UpdateExpression\":\"SET #status = :status\"}}}}"
          ]
        ]
      }
    }
  }
}

然后是 AWS CDK(利用一些现有的结构来为我编辑 Amazon DynamoDB 记录)。

const STATUS = "$.status"
const RETRY_SECONDS = "$.retrySeconds"
const PENDING = "pending"
const PROGRESS = "in-progress"
const FAILED = "failed"
const COMPLETE = "complete"

const setPending = stepFunction.setStatus(this, props.table, PENDING);
const setProgress = stepFunction.setStatus(this, props.table, PROGRESS);
const setSuccess = stepFunction.setStatus(this, props.table, COMPLETE);
const setFailed = stepFunction.setStatus(this, props.table, FAILED);
const waitForNSeconds = this.waitTask("retry seconds", RETRY_SECONDS);

const definition = this.mapperTask()
  .next(setPending)
  .next(waitForNSeconds)
  .next(setProgress)
  .next(this.deliverTransactionTask())
  .next(
    new sfn.Choice(this, "Delivery success?")
      .when(sfn.Condition.stringEquals(STATUS, COMPLETE), setComplete)
      .when(sfn.Condition.stringEquals(STATUS, FAILED), setFailed)
      .otherwise(setPending)
  );

如果您必须阅读第二段代码才能理解第一段代码在做什么,我完全理解。当然,没有什么能阻止 CloudFormation 采用和支持更优雅的 DSL。事实上, AWS SAM 正是在这方面的一次尝试,其重点是无服务器开发者体验。

鉴于当前 CDK 社区的发展势头和 AWS 不断增长的投资,我希望看到越来越多的团队从 CDK 开始,并愉快地继续将其作为基础设施管理的主要工具。

AWS 上的 Terraform

Terraform 于 2014 年推出,目标是能够将基础设施编排为代码。它最初的目标是 AWS ,但是已经发展到能够管理一个大型模块生态系统。事实上,多提供商支持能力是该技术的主要卖点之一。

Terraform 推出了自己的 DSL,叫做 Hashicorp 配置语言 (HCL)。从表面上看,它感觉像是一个更人性化的 JSON。如果你有受虐狂的一面,那么 Terraform 本身也支持 JSON。


获取 Terraform 备忘单
查看排名前十的 Terraform 命令,并在我们的 Terraform 备忘单中获得您需要的所有基本命令的完整摘要。


云的形成和地形有什么不同?

作为代码的 AWS 基础设施只是花哨的状态管理。Terraform 和 AWS CloudFormation 的最大区别在于它实际上是如何与基础设施本身进行交互的。有了 CloudFormation,你可以向它提供你的目标状态的表示,它将在你的基础设施上执行所有操作,让你在平台内自然地到达那里。同样,Terraform 采用您的目标状态的表示,构造一个 API 调用计划,直接调用您的 AWS 基础设施以达到该状态。

为什么选择 Terraform 而不是 CloudFormation?

在一个完美的世界里,这两种方法都完美无缺。但这是我们正在谈论的云。正如沃纳·威格尔喜欢提醒我们的那样,每件事都会失败。

直到最近,Terraform 在能够从进程外更新资源的人那里恢复方面还是很出色的。它能够解决不一致问题,并刷新基础架构的正确状态,即使有人“只是为了测试某些东西”而手动编辑了该安全组。AWS CloudFormation 在这些不一致的状态中挣扎,但是漂移检测的引入试图解决一些令人头痛的问题。

Terraform 还提供了一个更优雅的故事,即导入非托管资源,或者来自其他栈的资源。CloudFormation 提供了这一功能,但仅针对支持漂移检测的资源子集。

除了这些好处,AWS 上的 Terraform 确实是“一次学习,利用大多数地方”的一个真正的选择。不管你对多云和混合云的感觉如何,对你自己或你的团队进行单一技术培训的吸引力是诱人的,这种技术可以从许多不同的可能目标的知识转移中受益。

CDK 与云的形成和地形有什么不同?

为地形 (CDKTF)引入 CDK 有效地允许开发者编写 CDK,在引擎盖下,目标是地形而不是云形成。这是我们在云世界中最接近拥有我们的蛋糕并吃掉它的方式,因为你可以想象一个 CDK 应用程序使用 CloudFormation 作为你的 AWS 嵌套堆栈目标,使用 Terraform 作为外部提供者堆栈目标。

CDK vs 陆地 vs 云形成:哪个更好?

那么,应该选择哪种工具呢?鉴于存在大量的选择和业务需求,在一篇 1600 字的文章中强加一个放之四海而皆准的观点是不负责任的。相反,在考虑你的选择时,我会用一系列的问题来问你自己。

| 我是否在开发一个简单的、几乎没有服务器的解决方案并且具有最小的依赖性? | 自动气象站云形成(特别是自动气象站 SAM)很有可能 |
| 我是否拥有最佳实践和流程编排的自上而下的分布? | AWS CDK 或 Terraform |
| 我想完全留在 AWS 生态系统中吗? | 自动气象站云形成或自动气象站 CDK |
| 我需要协调 AWS 生态系统之外的资源吗? | 地形或地形的 CDK(CDKTF) |
| 我是否想要一个多提供商实用程序,特别是针对多/混合云知识转移? | 将(行星)地球化(以适合人类居住) |

Choosing the right IaC tool on AWS

唯一真正错误的答案是阻止你建造任何东西的答案。

IaC 空间正在增长,每个人都有自己的观点和事情应该如何工作。我认为竞争是健康的,在某些情况下,竞争迫使供应商自己提高了竞争力。以下是 IaC 领域中的一些其他可用工具。

| AWS Amplify CLI | 用于简化无服务器 web 和移动开发的 CLI 工具链。如果你主要是一个前端开发人员,或者只是想尽快上手,那就别再找了。Amplify CLI 和框架管理幕后的所有复杂性,帮助您构建和部署实时 web 和移动应用程序。 |
| 电池组 | 如果 Terraform 和 CDK 团队一起重新构思,我觉得它会有点像 Pulumi。 |
| 对流层 | 对流层库允许通过编写 Python 代码来描述 AWS 资源,从而更容易地创建 AWS CloudFormation JSON 。对流层还包括通过 Heat 对 OpenStack 资源的一些基本支持。 |
| 英格拉夫 | InGraph 是用于 AWS CloudFormation 的开源和声明性基础设施图形 DSL。关键特性是能够创建可组合的基础设施组件,同时保留 AWS CloudFormation 语言的严格语义。 |
| 无服务器框架 | 零摩擦无服务器开发。轻松构建可在低成本的新一代云基础架构上自动扩展的应用。 |

Trek10 是专注于云原生和无服务器应用的 AWS 首要咨询合作伙伴。

#CloudGuruChallenge:构建持续集成的全球 Azure 应用

原文:https://acloudguru.com/blog/engineering/cloudguruchallenge-build-a-continuously-integrated-global-azure-web-app

| 挑战主题 : Azure 管道和持续集成 |
| 作者:拉尔斯·克林 |
| 目标:创建一个 web 应用程序,该应用程序在发生变化时持续集成,具有全局性能,并增加了对在线攻击的防护。 |
| 成果:获得适用于现实场景的 Azure App 服务和 DevOps 技能,包括 ARM 模板和 YAML。创建一个安全快速的全球可伸缩的 web 应用程序。 |
| 截止日期:2021 年 3 月 31 日 |

背景

大多数互联网中断都是由被实时推送的破损或有错误的代码造成的。你可能听说过这句口头禅“永远不要在星期五部署!”

这背后的想法是,你部署你的新应用程序,然后回家,在这之后,没有人会在周末的几天里修复这些问题。在我看来,你应该能够在你喜欢的任何时候进行部署。如果不能,那么你的流程就坏了。

像谷歌和网飞这样的公司经常在你没有注意到的情况下,每天为不同的产品部署几次代码。DevOps 的应用程序和产品管理方法几乎强制执行新功能、错误修复和代码的即时和持续推送。

为一个补丁或功能等待数月的日子已经一去不复返了。或者他们应该是。据估计,2020 年 60%的公司每天部署多次、每天一次或每隔几天一次。这意味着 40%的人不是——这对企业、员工和客户都不利。

成熟稳定的部署渠道的主要优势是:

  • 确保更快、更安全地发布软件
  • 降低维护成本
  • 加快应用和功能的上市时间
  • 提高团队的灵活性和敏捷性
  • 给创新留出更多时间


挑战

快速发展的安全公司 Cloud Save 需要一个验证应用程序,用于其不断增长的安全产品套件。他们要求你建立一个应用程序,可以捕捉用户的姓名、地址、照片和声音样本。这是一系列支持工具的第一步,这些工具将使用 web 浏览器与用户进行交互。

该应用程序有望在全球获得成功,因此需要在边缘加速,并使用负载平衡来确保用户体验。还应该考虑应用程序的安全性和对攻击的防御。

Cloud Save 计划快速扩展您的工作,因此他们还需要您确保任何更改、错误修复和更新都可以立即自动测试和部署。您将实施持续集成和可选的持续部署,这是现代企业的一项重要云技能,无疑会在您的简历中脱颖而出。

说够了。让我们开始挑战吧!

用 ACG 系列跟上微软 Azure 的一切 Azure 本周

先决条件

挑战步骤

正如我们在 ACG 的其他云专家挑战一样,这个挑战也有多个正确答案。我不会告诉你如何执行下面的步骤,而是告诉你我想要的结果。你以你认为最好的方式做它。使用 Bing 随意搜索你需要的任何东西,询问你的朋友和同事,使用 Twitter,或者做你在实际工作项目中可能做的任何事情。

首先,请查看我们的 AZ-900 微软 Azure 基础课程。它在二月份(以及其他几门 Azure 相关的课程)在是免费的,它将为你进入微软 Azure 工作打下坚实的基础。

面临的挑战是创建一个可伸缩的、健壮的 web 应用程序,以及一个稳定的应用程序部署管道。这个挑战将让你在 Azure 管道、应用服务、Azure 前门、Cosmos DB、ARM 模板和 YAML 配置方面获得现实世界的技能。

  1. 使用 ARM 模板,创建一个具有以下属性的新 Azure 应用服务。

    • 与名为“ACGVnet”的 Azure 虚拟网络集成
    • 添加名为“staging”的部署插槽
    • 使用 1–3 个实例进行自定义自动缩放,默认为 1。
    • 在 CPU 使用率达到 70%时触发扩展操作的扩展规则。
  2. 使用微软的 Azure 快速启动模板,创建一个 Azure 前台服务。

    • 将步骤 1 中创建的应用服务添加为后端
    • 对应用服务的所有请求必须是 HTTPS
    • (可选)添加路由规则以控制流量和多个后端。
  3. 使用 ARM 模板,创建一个 Cosmos DB 实例。

    • 如果可能的话,使用 Cosmos DB 免费实例(每个订阅只能有一个)。
    • 启用地理冗余
    • API 类型应该是核心(SQL)
  4. 创建一个简单的 web 应用程序,并使用 GitHub 作为源代码控制。

    • 应用程序必须至少有一个测试。
    • 应用程序必须用 ASP.NET、ASP.NET 核心、Java、Ruby、Node.js、PHP 或 Python 编写。
    • 用户数据必须存储在 Cosmos DB 中(您可以使用免费层)。
    • 照片和语音样本可以存储在 Cosmos DB 或 Azure Blob 存储中。
  5. 使用 YAML 在 Azure DevOps 中创建包含以下组件的管道。

    • 它应该构建 web 应用程序
    • 如果构建成功,运行测试。
    • 如果测试通过,将应用程序部署到步骤 1 中创建的 Azure App 服务的“staging”部署槽。
  6. (可选)在 DevOps 的 YAML 中创建一个步骤,该步骤交换应用程序服务的生产和暂存部署槽。

当你完成的时候

你可以自己或与他人合作完成项目要求。欢迎在论坛或社交媒体上使用#CloudGuruChallenge 标签提问!

当你完成了项目的所有步骤后,在指定论坛线程中发布一个你的博文的链接。然后,我将能够在 LinkedIn 上为你在这个项目中展示的技能背书:Azure 应用服务、Azure DevOps、持续集成、Azure 前门、负载平衡、安全。(您还将有机会赢得一些超酷的奖品!)

这项挑战将无限期开放,但要在 LinkedIn 上获得支持并赢得奖品,你需要在 2021 年 3 月 31 日之前在论坛上链接你的博客帖子。

最重要的是,#CloudGuruChallenge 是免费的,任何人都可以使用:你只需要一个 ACG 免费会员就可以在论坛上发帖。


想提升你的蓝色力量吗?

ACG 的微软 Azure 实践学习可以帮助你从一个 Azure 业余爱好者变成微软云计算的大师。二月份,我们有一批特别的免费 Azure 相关课程。吃吧!

#CloudGuruChallenge:使用 Amazon ElastiCache 提高应用程序性能

原文:https://acloudguru.com/blog/engineering/cloudguruchallenge-improve-application-performance-using-amazon-elasticache

什么是#CloudGuruChallenge?点击获取更多信息。

挑战 话题 使用 Amazon ElastiCache 提高应用程序性能
挑战 目标 使用 Amazon ElastiCache 实现一个 Redis 集群,在一个简单的 Python 应用程序中缓存数据库查询。
挑战 胜负 获得使用 Redis 实现数据库缓存所需的 AWS 和 Python 技能。
挑战 截止日期 2021 年 7 月 31 日

先决条件

AWS 自由层账户

Python

Github (Optional)

  • https://github.com/
  • 应用程序代码将存储在 GitHub 上,但只读访问不需要帐户。

挑战步骤

数据库ˌ资料库

  • 部署 RDS PostgreSQL 数据库实例。空闲层 db.t2.micro 实例应该很多。

  • 您还应该创建一个数据库和数据库用户帐户。在配置应用程序时,您将需要这些。

  • 如果您使用 CloudFormation 或 Terraform 模板来部署 Amazon RDS 实例,将会获得额外的奖励。

应用

  • 部署一个 EC2 实例。同样,空闲层应该足够了,

  • 安装 python3 以及 psycopg2、flask、configparser 和 Redis 模块。

  • 按照 README.md 中的说明配置应用程序以连接到您的数据库实例,并对其进行测试。

  • 访问页面几次,并记下页面加载时间。

  • 请注意,应用程序调用的存储过程被人为地降低了速度,以表示供应不足的数据库服务器。这个挑战的目标是在数据库前面添加一个缓存,而不是优化存储过程。

隐藏物

  • 部署 ElastiCache Redis 集群。这可以手动完成,也可以使用您选择的工具和模板自动完成。

  • 确保 Redis 集群只能从应用程序 EC2 实例访问。

  • 更改应用程序,在查询数据库之前检查 Redis 缓存。如果发生缓存未命中,查询数据库并用结果更新缓存。

  • 对打了补丁的应用程序进行测试。确保多次访问该页面,并记下运行时间。

博客帖子

  • 写一篇简短的博文,解释你的收获和应对挑战的方法。一定要包括你为什么接受挑战,你最大的收获是什么,以及缓存前和缓存后的页面加载时间。

  • 如果你没有自己的博客, Hashnodedev.to 都是很好的起点。

完成后

你可以自己或与他人合作完成项目要求。欢迎在 ACG 不和谐服务器(有一个专门的挑战频道)或社交媒体上使用#CloudGuruChallenge 标签提问

当你完成项目的所有步骤后,在指定的 Discord 频道发布你的博客文章的链接。然后,我将能够在 LinkedIn 上为你在这个项目中展示的技能背书:Amazon elastic cache,Python 。挑战结束后,您还将有机会赢得一些超酷的奖品,并获得云计算大师 LinkedIn 帐户的特别大喊!

这项挑战将无限期开放,但要在 LinkedIn 上获得支持,赢得奖品,并在 LinkedIn 上大声喊出来,您需要在 2021 年 7 月 30 日之前 提交您的不和谐挑战。

最重要的是,#CloudGuruChallenge 是免费的,每个人都可以使用!

资源

准备好做一些谷歌搜索,但是如果你是 ACG 会员,这里有一些资源可以帮助你更好地使用 Python 和 AWS :

如果你还不是 ACG 会员,我们鼓励你注册一个免费账户(不需要信用卡)开始学习并探索每月轮换的免费课程

你不需要执行这些额外的步骤来在挑战中“宣布胜利”,但是它们帮助你的项目脱颖而出,并提供令人敬畏的额外学习。

  • 在 github 上创建一个公关
    • 用您所做的更改在 GitHub 上创建一个 Pull 请求。
  • RDS 实例作为代码
    • 使用 CloudFormation 或 Terraform 模板部署 RDS 实例,将实例定义为代码。

最终收获

虽然用于这个挑战的应用程序被故意做得很慢,但是完成这个挑战所学到的技能对于现实世界的应用程序也是有用的。

并不总是能够将数据库调优到最佳性能—例如,当使用不允许访问数据库的第三方应用程序时。在这些情况下,能够在外部缓存数据库结果可以大大提高性能,并允许您进行扩展以满足不断增加的工作负载。

当你试图获得一份云工作时,能够展示这些技术的实际知识将是面试时的真正资产。


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。

# CloudGuruChallenge——AWS 上的机器学习

原文:https://acloudguru.com/blog/engineering/cloudguruchallenge-machine-learning-on-aws

什么是#云谷挑战?在这里获得一些背景和更多信息

话题 AWS 上的机器学习
目标 用 amazon pagemaker 建立一个网飞风格的推荐引擎
结果 获得真正的机器学习和 AWS 技能,同时动手操作真实世界的项目,以添加到您的投资组合中
截止日期 2020 年 12 月 31 日

挑战步骤

你有没有想过网飞是怎么给你推荐电影的?我一直对幕后使用的机器学习技术和算法很好奇,这些技术和算法帮助我浏览了网飞上的数千部电影。

在这个挑战中,你将通过使用亚马逊 SageMaker 构建一个网飞风格的推荐引擎来提升你的 AWS 机器学习课程技能。无论你是第一次接触机器学习还是机器学习大师,这个挑战的某些方面都会让你的技能更上一层楼。所以,我们走吧!

你需要访问 AWS 环境和亚马逊 SageMaker。作为 AWS 免费层的一部分,你可以免费使用亚马逊 SageMaker。如果你以前从未使用过 Amazon SageMaker,你可以免费构建和训练你的模型。如果你不熟悉机器学习,看看凯莎的科尔纳在的第一个视频,了解一下速度。我还建议在开始这个挑战之前探索一下 matplotlibscikit-learnk -means 学习算法。

1。确定用例并获取数据

确定你想推荐什么——是电影、课程、视频、商品还是其他。然后,找数据或者用自己的。有几个公共数据存储库,比如 AWS Marketplace 或 T2 的 UCI 机器学习存储库可能有你需要的数据。如果你想推荐电影,查看 IMDb 数据集下载你需要的文件。你可能会发现title.akas.tsv.gztitle.basics.tsv.gztitle.ratings.tsv.gz特别有用。

2.创建 Jupyter 托管笔记本

为了开始数据检查过程,您将在 Amazon SageMaker 上启动一个 Jupyter 托管的笔记本。你可以使用 Python 和各种数据科学库,如 NumPyPandas 的 DataFrame 来处理你的数据。

3.检查和可视化数据

获取数据的领域知识非常重要,这样您就可以轻松地检测到异常和异常值。有许多方法可以探索和了解您的数据。检查 Matplotlib

4.准备和转换数据

下一步是将数据转换成机器可以学习的格式。您可能需要将杂乱的数据文件合并成一个文件,删除空值,将字符串转换成数字,或者做一些功能工程

5.火车

现在您已经转换了数据,使用您选择的机器学习算法开始训练过程。该算法应该对你的数据进行聚类或分组,以便你能够提出建议。取决于你如何解决这个挑战,你可能会发现k-意味着集群是有用的。亚马逊 SageMaker 提供了一个k-means clustering算法或者你可以探索 scikit-learn版本

6.推荐

现在您已经确定了您的集群,请推荐产品。如果您推荐电影,这可能是 Python 代码,它分析集群以找到共性。一旦你理解了这些共性,你就能找到其他类似的电影来推荐。恭喜你走到这一步!

7。源代码控制

现在您已经完成了,将您的数据文件和 Jupyter 笔记本加载到 GitHub 以便我们检查您的推荐引擎。

8.清理资源

别忘了清理你的资源!至少,停止运行你的 Jupyter 笔记本,这样你就不会因为使用 Amazon SageMaker 而产生每小时的费用。

9.博客帖子

(非常重要)写一篇简短的博文,解释你的收获和应对挑战的方法。在 GitHub 上链接到您的项目,以便我们可以查看它。

当你完成的时候

你可以自己或与他人合作完成项目要求。欢迎在论坛或社交媒体上使用#CloudGuruChallenge 标签提问

当你完成项目的所有步骤后,在指定的论坛主题中发布你的博客文章的链接。然后,我将能够在 LinkedIn 上为你在这个项目中展示的技能背书:机器学习、AWS 和亚马逊 SageMaker。(您还将有机会赢得一些超酷的奖品!)

这项挑战将无限期开放,但要在 LinkedIn 上获得支持并赢得奖品,你需要在 2020 年 12 月 31 日之前在论坛上链接你的博客文章

最重要的是,#CloudGuruChallenge 是免费的,任何人都可以使用:你所需要的就是一个 ACG 免费会员来发表你的论坛帖子。

资源

准备好做一些谷歌搜索,但如果你是 ACG 会员,这里有一些资源可以帮助你更好地使用机器学习、AWS 和 SageMaker:

你不需要执行这些额外的步骤来在挑战中“宣布胜利”,但是它们帮助你的项目脱颖而出,并提供令人敬畏的额外学习。

  1. 对项目进行排序,以便向用户推荐最相关的项目
  2. 仅推荐用户尚未观看(或购买)的项目
  3. 将您的集群知识集成到前端应用程序中,以进行电影(或产品)推荐。

最终外卖

这个挑战将是一个探索机器学习的有趣方式!

我一直很好奇网飞是怎么给我推荐电影的。在给你创造这个挑战之前,我已经自己解决了!如果你是机器学习的新手,这会很有趣。如果你已经是一名机器学习专家,你将有机会使用亚马逊 SageMaker 探索云中的机器学习。我迫不及待地想在这个挑战结束时与你分享我的推荐引擎代码,并回顾你是如何解决这个问题的!

熬过这一关,你就能在下一次求职面试中拿出一个精彩的故事。祝你好运!

#CloudGuruChallenge:多云疯狂

原文:https://acloudguru.com/blog/engineering/cloudguruchallenge-multi-cloud-madness

挑战题目 —多云狂
创作者——斯科特·普莱彻
目标 —使用至少三家不同的云提供商设计并构建图像上传和识别流程。
结果 —通过这次挑战,你可以获得一些与云提供商打交道的实践经验,而你通常可能不会与他们合作。
截止日期—2021 年 1 月 31 日

背景

一般来说,我不建议公司有意将他们的云投资分散到多个公共云平台上。是的,关于这个话题有很多观点,我的观点当然是我自己的。对于每一个“避免供应商锁定”或“分散我们的云投资”的断言,我可以用“稀释技能开发”和“不必要的复杂性”来反驳

现在,从相对舒适的绿地场景来考虑多云策略的利弊是一回事,但当这种选择根本不是一种选择,而是形势强加给你的时候,情况就完全不同了。

很多时候,我们在这件事上没有发言权。举个例子,这些非常真实的场景:

  • 多年来,您的公司被组织成独立的自治部门,每个部门都有自己的 IT 预算和云提供商关系。现在,为了提高规模经济性,该组织整合了 IT 职能,您刚刚继承了五个不同的部门,它们在五个不同的云提供商上运行,具有五种不同的技能基础。
  • 多年的官僚内部流程在整个组织中形成了各种各样的影子 IT 飞地。这些影子 IT 团队中的每一个都采用云计算作为实现其目标的廉价而快速的方式,构建出已经成为业务关键型应用程序的东西。现在,他们需要跨部门共享数据。
  • 我们刚刚宣布了与另外两家零售公司的合作,以统一我们各自的忠诚度积分计划,这样客户就可以在这三家公司的任何商店使用他们的积分进行折扣。唯一的问题是,我们每个人都使用不同的云提供商,他们的架构大相径庭。

不管我们喜欢与否,这些场景都会发生。作为一名渴望冒险的云实践者,准备好一头扎进这样一个跨云难题吧!

挑战步骤

取决于你从哪里开始,这将是一个具有挑战性的挑战。

“嗯,是啊,所以才叫 挑战 !走吧!”

在这个挑战中,您将上传一个图像到云存储,使用图像识别服务从该图像中提取数据,然后将数据和图像路径保存到 NoSQL 数据库中。

“哦,那太简单了!有了[在此插入您最喜欢的公共云],我马上就能做到这一点!”

但是等等,还有呢!您必须使用至少三个不同的公共云提供商来完成这项任务。

“睡吧。”

  1. 创建一个简单的网页,允许您通过移动设备或计算机网络摄像头拍照。(在这里使用你的搜索引擎超能力…)
  2. 将该图片保存到云提供商 1 的存储服务中。
  3. 保存该图像后,触发一个无服务器进程,该进程调用云提供商 2 上的图像识别服务。
  4. 获取从图像识别服务收到的元数据,并将其与原始图像的 URL 路径一起存储到云提供商 3 的 NoSQL 数据库中。
  5. (重要)写一篇简短的博文,介绍你的经历,解释你的选择和结果。包括 GitHub 报告、截图或其他可以证明你努力工作的物品。
  6. (可选)现在,照照镜子,重复这句咒语至少 500 次:“我再也不会有意设计一个多云解决方案了。”

有许多方法可以完成这个挑战,只要你符合要求并遵守指导方针,就没有错误的答案。哪些步骤使用哪个提供者由您决定。您使用哪些服务来完成每个云提供商的各个步骤也取决于您。你可以使用 AWS、Azure 和 GCP。你可以使用 IBM Cloud、Alibaba 和 Oracle Cloud——或者你想要的任何其他组合,只要它们提供存储服务、无服务器选项、NoSQL 数据库和图像识别服务。

您应该能够在大多数云提供商的免费层中完成所有这些工作。就架构而言,我希望您选择由云提供商提供完全托管的服务。换句话说,不要只是从 docker Hub 部署预制的 Docker 容器或启动虚拟机。您应该能够在不直接使用 VM 或容器的情况下完成这项挑战。

当你完成的时候

你可以自己或与他人合作完成项目要求。欢迎在论坛或社交媒体上使用#CloudGuruChallenge 标签提问

当你完成项目的所有步骤后,在指定的论坛主题中发布你的博客文章的链接。然后,我将能够在 LinkedIn 上为你在这个项目中展示的技能背书:多云、互操作性。(您还将有机会赢得一些超酷的奖品!)

这项挑战将无限期开放,但要在 LinkedIn 上获得支持并赢得奖品,你需要在 2021 年 1 月 31 日之前在论坛上链接你的博客文章。

最重要的是,#CloudGuruChallenge 是免费的,每个人都可以使用;你所需要的就是一个 ACG 免费会员来发表你的论坛帖子。

资源

准备好做一些谷歌搜索,但如果你是 ACG 会员,这里有一些资源可以帮助你更好地适应许多可用的选项:

谷歌云平台速成班

AZ-900 微软 Azure 基础 2020

AWS 云从业者

无服务器概念

这里有一些额外的额外任务,在那里你可以展示你对多重云世界的绝对掌控!(好吧,这些只是纯粹供我娱乐,但你一定会学到一些东西!)

  • 来自俄罗斯的爱 —在你的过程中使用 Yandex 云。
  • 法语连接 —在您的流程中使用 OVHcloud。
  • 全力以赴 —在您的流程中利用 SAP 云。
  • 开放免费 —只使用完全开源的平台来完成任务。这些平台可以由公共云以服务的形式提供,也可以托管在虚拟机上。(此任务为您提供了“无虚拟机”要求的例外情况。)
  • 推出您自己的 —使用预先训练的模型(ResNet50、MobileNet)构建您自己的无服务器托管图像识别服务。
  • 管用就不傻 —用 DNS 记录做你的数据库层。
  • Rube Goldberg / Heath Robinson 奖 —该奖项授予为相对简单的过程构建了完全荒谬、过度复杂、淫秽的云设计展示的云开发人员。

最终外卖

虽然人们可能并不总是需要多云架构,但这是云计算的现实。与各种云提供商的实践经验将使你成为更好的开发者、架构师和决策者。此外,当你准备好下一次职业冒险时,它可能会提供额外的经验,使你从所有其他候选人中脱颖而出。

寻找一个 ACG 项目,在那里我将通过一些不同的方式来迎接这个挑战。但是不要等我。。。出去忙起来吧!

# CloudGuruChallenge-AWS 上的事件驱动 Python

原文:https://acloudguru.com/blog/engineering/cloudguruchallenge-python-aws-etl

挑战步骤

你需要安装 Python3 并访问 AWS 环境。 查看这篇来自 AWS 英雄 Ben Kehoe 的文章,了解如何建立一个健康的 Python 开发环境。

Flowchart of an example ETL job

  1. **ETL 工作。**创建一个按每日计划运行的 Python 计算作业。你可以通过创建一个 Python Lambda 函数来实现,然后从每天一次的 CloudWatch 规则中触发它。或者,您可以创建一个 s 调度的 Fargate 任务,或者使用 AWS Glue 查看调度任务。唯一的要求是底层计算必须每天触发一次,而不是在持续轮询的服务器上。
  2. **提取。**在你的 Python 代码中,从 Github 下载这个 CSV 文件。(这是来自《纽约时报》维护的存储库的美国新冠肺炎数据的每日转储。每天,该文件都会更新一行额外的数据。)将数据加载到内存中的对象中。
  3. **转型。**用 Python 代码执行数据操作。
  4. **代码清理。**将你的数据操作工作抽象成一个 Python 模块。这个模块应该只执行转换。它不应该关心 CSV 文件存储在哪里,并且在下一步中不应该知道任何关于数据库的信息。
  5. **加载。**现在,编写代码将转换后的数据加载到数据库中。出于本练习的目的,您可以使用您选择的任何数据库。我建议使用 DynamoDB 搭配 boto3 或者 RDS Postgres 搭配 pyscopg。无论哪种方式,您都希望表中的每条记录都包含疫情一天的日期、美国病例数、死亡人数和恢复情况。
  6. **通知。**当数据库更新后,您的代码应该触发一条 SNS 消息,通知任何感兴趣的用户 ETL 作业已经完成。该消息应该包括数据库中更新的行数。
  7. **错误处理。**您的代码应该能够处理这些常见的控制流情况:
    1. 初始加载与更新-您应该能够在作业首次运行时将整个历史数据集加载到数据库中,然后仅使用最近一天的数据进行更新。
    2. 如果数据包含意外或格式错误的输入,您的代码应该会正常失败,并通过 SNS 报告一条错误消息。下次您的作业运行时,它应该记得它没有成功处理以前的数据,并在继续处理更新的数据之前重试。
  8. **测试。**为了确保您的代码能够处理意外情况,请对您的代码进行单元测试,用无效数据替换新冠肺炎 CSV 文件,并确认您的代码能够正确响应。
  9. **IaC。**确保您的基础设施(Lambda 函数、CloudWatch 规则、SNS 触发器、数据库等)在代码(CloudFormation、Terraform 或类似代码)中定义
  10. **源码控制。**将你的代码和配置存储在源代码控制中(GitHub,或者类似的)
  11. **仪表板。**没有报告的 ETL 流程会是什么样的?看看你能否将你的数据库连接到 AWS Quicksight 或其他 BI 服务,如 Tableau,以生成一段时间内美国病例数、死亡率和恢复情况的可视化。
  12. 博文。(非常重要)写一篇简短的博文,解释你的收获和应对挑战的方法。链接到您的数据可视化,以便我们可以尝试一下!如果你没有自己的博客, Hashnodedev.to 是一个很好的起点。

有兴趣升级或开始您的云开发之旅吗?云专家的 AWS 开发者学习路径提供适合初学者和高级专家的定制课程!


当你完成的时候

你可以自己或与他人合作完成项目要求。欢迎在论坛或社交媒体上使用#CloudGuruChallenge 标签提问

当你完成项目的所有步骤后,在指定的论坛主题中发布你的博客文章的链接。然后我将能够在 LinkedIn 上为你在这个项目中展示的技能背书:Python、事件驱动编程和 AWS。(你还将有机会赢得一些超酷的奖品!)

最重要的是,#CloudGuruChallenge 是免费的,每个人都可以使用;你所需要的就是一个 ACG 免费会员来发表你的论坛帖子。

资源

准备好做一些谷歌搜索,但是如果你是 ACG 会员,这里有一些资源可以帮助你更好地使用 Python 和事件驱动编程:

Python 开发简介 (16 小时课程)

使用 Python 进行数据管理和报告 (6 小时课程)

在 AWS 上构建全栈无服务器应用 (8 小时课程)

你不需要执行这些额外的步骤来“宣布胜利”,但它们将帮助你的项目脱颖而出,并提供令人敬畏的额外学习。

  1. 使用 GitHub Actions、AWS CodePipeline 或类似的服务为您的 ETL 管道创建 CI/CD 管道。您的目标应该是每当您对您的源代码控制库进行更改时,都在 AWS 中更新您的 Python 代码和基础结构。
  2. 向您的 CI/CD 管道添加一个“冒烟测试”,下载一个示例 CSV 文件,对其运行转换,并将其存储在数据库中,然后验证是否将正确的消息发布到 SNS。找到一种不影响正常日常作业运行的“生产”数据的方法。
  3. 想办法创建一个实时更新的仪表板!

请注意,如果您对更有趣的可视化有想法,欢迎调整建议的特定数据转换和数据字段。尽情发挥创造力吧!

最终外卖

乍看之下,这一挑战似乎并不华丽。毕竟,它实际上只是从某个地方获取一些数据,将其与其他一些数据相结合,然后将其存储在其他地方。但是像这样的数据操作是云专业人员面临的一个非常常见的实际问题!以及所有这些棘手的情况——如果外部数据格式突然改变,会发生什么?—导致一些强大的复杂性。

熬过这一关,你就能在下一次求职面试中拿出一个精彩的故事。我保证你的招聘经理会开始想一两个他们自己的故事。

祝你好运!

#CloudGuruChallenge:选择你的挑战大组合

原文:https://acloudguru.com/blog/engineering/cloudguruchallenge-the-choose-your-challenge-mega-mix

每个季度,我们都会请我们的专家培训架构师为我们的社区创建一个免费的挑战。这些不仅仅是以往的挑战。它们就像真正基于规范的工作分配,迫使参与者打开谷歌标签,进入兔子洞,找出每一步。

#CloudGuruChallenge边做边学推向了一个荒谬的极端。它帮助人们通过面试并被录用,因为这个项目在工作面试中是很好的谈话素材。这似乎也产生了一种宜家效应:学习者对社区和挑战充满热情,因为他们在项目中投入了大量自己的工作和创造力。

绝大多数招聘经理表示,在评估求职者时,展现出来的实践技能对他们来说是最重要的。

#CloudGuruChallenge 项目旨在建立您的项目组合,将您与其他充满激情的专业人士联系起来,并提升您的职业生涯。

最重要的是,#CloudGuruChallenge 是免费的,每个人都可以使用!

如果您是云新手,请利用 ACG 的免费*层帐户来学习一些新技能!*(是的,它实际上是一个免费帐户——注册时不需要信用卡!)


把你的手弄脏

边做边学。无论您是技术新手还是经验丰富的专业人士,我们都会通过实践学习让新技能触手可及。


本季度的#CloudGuruChallenge

到目前为止,我们已经遇到了很多有趣的挑战,从 Forrest Brazeal 的事件驱动 Python on AWS challenge 到我们最近的 GCP 简历挑战赛来自 Mattias Andersson。

虽然我们的所有挑战都是无限期可用的,但我们将在本季度重新开放三个非常特殊的挑战。

任何在 10 月 1 日至 12 月 31 日期间完成以下一个(或多个,如果你有雄心的话)项目的人都将在 LinkedIn 上获得一名熟练的培训架构师的认可,一个来自 云专家 LinkedIn 页面的有趣大喊,并有机会赢取云专家奖品!

  1. AWS 上的机器学习–凯莎·威廉姆斯
  2. 多云疯狂–斯科特·普莱彻
  3. 构建持续集成的全球 Azure 应用–Lars Klint

如何参与

你可以自己或与他人合作完成项目要求。欢迎提问或在我们的不和谐服务器中一起工作——我们有一个专门的渠道来应对每个挑战,培训架构师和其他社区成员定期在其中合作!

当你完成项目的所有步骤后,在指定的 Discord channel 中发布你的博客帖子、LinkedIn 个人资料和所有其他项目组件的链接。我们的培训架构师将能够在 LinkedIn 上为您展示的技能背书!

您必须在 2021 年 12 月 31 日 11:59 PM CT 之前完成并提交您的挑战。

我们希望你迎接挑战!

#CloudGuruChallenge:你在 Azure 的简历

原文:https://acloudguru.com/blog/engineering/cloudguruchallenge-your-resume-in-azure

什么是#云谷挑战?点击获取更多信息。

挑战 话题 你在 Azure 的简历!
挑战 目标 创建一个 100% Azure 托管版本的简历。
挑战 胜负 用 Azure 建立技能(如果你以前用另一种云完成过这个挑战,也可能是多种云)。
挑战 截止日期 2021 年 5 月 31 日

挑战

大众需求(我说大众需求是因为我真的想这么做)的背后是云简历挑战。除了这一次,我想看到一些 Azure 提交。

先决条件

图表

挑战步骤

  1. 为您的项目创建一个 GitHub 资源库
  2. 在您的 GitHub repo 中,创建您的网站:
    • 你的网站需要有你的简历信息。
    • 为此你可以使用 HTMLCSS
    • 它可以像你喜欢的那样时尚或简单,如果你喜欢,你可以使用一个模板,这里的是我用的那个。
    • 下面是我的一个例子
  3. 在您的网站上添加访问者计数器:
  4. 网站部署到 Azure Blob 存储
  5. 启用 HTTPS 和自定义域支持:
  6. 设置 GitHub 操作:
    • 任何时候你对你的网站或者你的 API 做了改变,那些改变应该会被自动部署,你可以使用 GitHub 动作。
    • 如果你对你的 API 进行修改,你的代码应该被测试。您也可以使用 GitHub 操作来实现这一点。这里是关于网络测试的文档,例如。
  7. 撰写您的博客文章:
    • 如果你还没有开发者博客,你可以在 Hashnode 上创建一个。
    • 博文的目标是让您记录您的解决方案。我建议您做以下几件事:
      • 你为什么接受挑战?
      • 你是如何完成挑战的?包括截图、图表、代码片段、链接和任何你想要的东西。
      • 最难的部分是什么?
      • 你最喜欢哪一部分?
      • 你最大的收获是什么?
      • 如果您以前使用另一种云解决过这个难题,您会注意到哪些不同?

完成后

你可以自己或与他人合作完成项目要求。欢迎在我们的 Discord 服务器中提问 (有一个专门的挑战频道)或者在社交媒体上使用 #CloudGuruChallenge 标签提问!

当你完成项目的所有步骤后,在指定的 Discord 频道发布你的博文链接和你的 LinkedIn 个人资料链接。然后,我将能够在 LinkedIn 上为你在这个项目中展示的技能背书:Azure、CI/CD 和你为 API 选择的编程语言。

挑战结束后,你还将有机会赢得一些超酷的奖品,并获得一个来自云专家 LinkedIn 账户的特别大喊!

这项挑战将无限期开放,但要想在 LinkedIn 上获得支持、赢得奖品并在 LinkedIn 上大声喊出来,您需要在 5 月 31 日之前提交您对 Discord 的挑战。

最重要的是,#CloudGuruChallenge 是免费的,每个人都可以使用!

资源

准备好做一些谷歌搜索,但如果你是 ACG 会员,这里有一些资源可以帮助你更好地使用 Azure Functions 和 Azure CosmosDB:

如果您还不是 ACG 会员,我们鼓励您注册一个免费帐户(不需要信用卡)来开始学习和探索每月轮换的免费课程。

你不需要执行这些额外的步骤来在挑战中“宣布胜利”,但是它们帮助你的项目脱颖而出,并提供令人敬畏的额外学习。

  • 使用 Azure CLI :这可能是你使用 Azure 的第一个项目,所以如果你通过 UI 创建资源,我会给你一个通行证。然而,这是熟悉 Azure CLI 的绝佳机会
  • 作为代码的基础设施:Azure CLI 非常适合动态创建资源和进行试验,但是在现实生活的生产场景中,您可能希望将基础设施定义为代码。创建一个 Azure 资源管理器模板来定义你的后端基础设施。

最终收获

我知道有些服务捆绑了你必须放在一起的许多功能,例如 Azure Static Web Apps 建立了一个静态网站,有 HTTPS、Azure Functions 后端、GitHub 操作和自定义域支持——它只需几下点击就能为你完成所有工作。但是你自己把这些拼凑起来还是很有价值的。此外,如果您已经在另一个云环境中完成了这项工作,您将获得另一个平台的大量信息,这是另一个很好的优势。

熬过这一关,你不仅会有一个很棒的项目添加到你的简历中展示给招聘经理,你还能解释整个基础设施。

祝你好运。我们走吧!


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。

#CloudGuruChallenge:你在 GCP 的简历

原文:https://acloudguru.com/blog/engineering/cloudguruchallenge-your-resume-on-gcp

挑战题目 谷歌云平台(GCP)简历挑战赛
挑战目标 你将建立一个无服务器的简历/个人品牌网站 GCP 与 API 后端和基于 GitOps 的 CI/CD
挑战结果 您将获得许多技能的真实体验,包括编码、存储、计算、网络、源代码控制、CI/CD、无服务器架构、GitOps 和技术交流。
挑战截止日期 必须在 2021 年 9 月 30 日之前提交有评论的网站。
后续视频通话(30 分钟)必须在 2021 年 10 月 15 日之前完成。

你好,云大师们!您有兴趣在现实世界的云角色中获得成功吗?特别是谷歌云?精彩!但是,即使你不确定,我邀请你继续探索我将要提出的挑战,并在以后做出决定。

让我自我介绍一下。我是马蒂亚斯·安德森(Mattias Andersson),我已经教过很多人关于云的知识——现在可能有十万人了。我希望能够为做有力的担保:说在面向云的技术角色中摇滚——尤其是一个拥有谷歌云平台,也被称为 GCP 的角色。

为了做到这一点,我希望你做三件事:构建、解释和呈现。这是 GCP 简历挑战赛。你将建立一个我描述的系统,以书面形式解释你的系统和项目,然后在视频对话中向我展示

现在,不要被这些吓到。我的意思是,我们称之为挑战是有原因的,但是你会从整个过程中收获很多价值,不管你走了多远——而不仅仅是从最终结果中。(不过最后的结果也真的很牛逼。)

我简单解释一下三个阶段。

阶段

  • 建立
    你将从建立个人品牌或简历网站开始。一些关于你是谁的东西。

    它将包括一个 web 前端,并使用后端 API 和数据库。您将对前端、后端和后端部署配置使用源代码控制;您将有 CI/CD 连接到所有三个。一切—前端、后端、数据库、源代码控制和 CI/CD—都将是无服务器的、安全的、可靠的、高性能的和经济高效的。而且,为了这次挑战,它将使用来自谷歌云平台(或 GCP) 的大量产品和服务。您必须自己构建这个系统,但是您可以获得一些支持,我很快会谈到这一点。

  • 解释
    在你建好之后,你会以书面形式解释你的项目。你应该在你的网站上写一个部分或者一个链接的博客文章,解释:

    你做了什么
    你怎么做的你怎么做的,以及
    你为什么你做了什么(既做了什么又怎么做)

    (为了完整起见只写了,,在之间时的*)

    本解释为公共神器,请给予其应有的关心和重视。尽管如此,这个解释应该比最初的建筑花费更少的时间。*

  • 呈现
    这个过程的最后一步是向我口头呈现你的解释。

    我们会立即进行视频通话,并就你所做的事情(即构建和编写)聊上 20 分钟。你可以认为这是一次模拟面试,如果你愿意的话——或者是项目评估,或者其他——但是认为这是一次放松的机会,让你练习你的技术沟通技巧,让我了解你!不过,主要是我想看到你真的明白你做了什么。(免责声明:万一我们的被参赛者淹没,我可能无法亲自与每一个人交谈,但我们会想出办法。)

  • 结果
    在你成功完成这次挑战后,我将向任何愿意听我讲述的人宣告你的成功。至少,我会在 LinkedIn 上发布关于你的成就和总体出色程度的消息(我的意思是,除非你出于某种原因想要退出)——官方云专家账户也会这么做。我会在 LinkedIn 上为云、谷歌云、无服务器和 CI/CD 背书。但是我想我也可以做一个关于这个的 YouTube 视频,我们会看到其他的东西。

    哦,当然还有奖品要拿!我们将把你的名字登记在赠品中。如果我如愿以偿,将会有和我们参赛者一样多的奖品。😉


看点:解决“没有经验”的云招聘问题
没有工作是得不到经验的。但是谁会雇佣没有经验的你呢?谜题!观看这一免费的点播网络研讨会,进行关于云计算职业发展的小组讨论,并获得您的第一份云计算工作。


细节

好的。这就是所有的序言。现在,让我们进入实质。

系统要求(构建)

以下是构建所需的系统需求:

  • 前端(FE):
    • 个人品牌/简历网站
    • 托管:
    • 前端代码/CI/CD:
      • 将您的站点代码存储在 GitHub
      • 每当代码改变时,使用 GitHub 动作云构建来重新发布你的前端
      • 您可能希望在重新部署时使云 CDN 缓存失效
  • 后端(BE):
    • 编写一些简单的 API 代码——最好是用Python——连接到 Firestore ,以增加网站访问者数量并返回运行总数
      • 你的 fforestre 数据库应该而不是可以公开访问
      • 您不需要使用分布式计数器,但这是一个选项
    • 将您的 API 作为容器部署在云运行
      • 您可能希望将其放在 api.yoursite.com 或 yoursite.com/api,下,但这不是必需的
    • 代码:
    • 通过云构建的 CI:
      • 云构建从云资源库中触发
        • 即使直接到 GitHub 可以工作
        • 不要对此使用 GitHub 操作
      • 将您的计数器代码构建到一个容器中
      • 理想情况下,做一些基本的单元测试
      • 将容器推送到工件注册表
      • 采用 GitOps 风格的方法并在另一个 CSR 报告中更新当前的 API 部署配置
    • 通过云构建的 CD:
      • 由 API 部署配置 CSR 报告的更新触发
      • 将指定的容器部署到云运行
  • 延伸目标:
    • 如果你有时间和兴趣,使用 Terraform IaC 在一个空白的新 GCP 项目中创建你的设置

好的。那是很多;我知道。但这既是可能的,也是有价值的。认真有价值。您将在真实世界的系统中获得真实的实践体验,该系统具有所有(不同程度的)功能:编码、存储、计算、网络、源代码控制、CI/CD 和基础设施即代码(IaC),更不用说无服务器架构了。

但是你需要承担一些责任来克服你遇到的挑战。(所以我们称之为“挑战”,对吧?)我不会牵着你的手。但这并不意味着你不能得到任何支持!事实上, 同伴的支持是最棒的类型之一,因为它帮助的不仅仅是提问者。所以,要参加这个挑战,你必须 加入我们的 ACG 不和谐。这就是围绕这一挑战的讨论重点,特别是 #gcp-resume-challenge 频道。虽然你不需要帮助任何人,但那是你提交整件事的地方。

解释 系统&项目(补记)

接下来,你需要以书面形式解释你的系统项目。这不需要很长时间或花费你大量的时间,但它应该包括以下内容。

出版

理想情况下,您可以将此作为一个部分或页面发布在您的网站上,并通过您的前端 CI/CD 进行更新。如果你真的想的话,我想你可以链接到一个外部的博客网站,但是你会放弃与你构建的系统进行额外的动手操作。将它公之于众会给人们一个真实的例子来证明你的技术交流能力。

高水平(位)

从高层次描述你的挑战项目开始。项目的目的是什么?该系统应该提供哪些关键优势?有什么重要的核心约束或原则吗?

运行时架构

接下来,描述面向用户的系统的架构。为网站服务的数据流是什么?确保包含系统架构图。有很多好的绘图工具可用。

开发时架构

之后,从内部/开发人员的角度看这个系统。数据是如何从一台开发机器上的源代码流向您之前讨论过的运行系统的?

关键权衡

你应该写的另一件事是你所做的一些关键的权衡。

  • 你考虑过哪些替代方案?
  • 这些替代方案能带来什么好处?还有…
  • 你为什么最终选择了你所做的事情?(注意:出于权宜之计选择某样东西可能是一个完全可以接受的答案——甚至可能是一个令人钦佩的答案!)

后续步骤

现在你已经完成了这个系统,如果你有更多的时间,你下一步会追求什么机会?

  • 你会添加哪些“功能”?
  • 你会做什么样的重构?
  • 你会构建什么样的工具?
  • 对于所有这些,为什么?

经验教训

最后,描述一下你在这个过程中学到的一些重要的东西。这真的很重要。你必须能够不断学习新的东西,才能被雇佣。

研究和/或尝试行不通的事情并不是软弱或无能的表现。事实上,这对于每一项技术工作都是绝对必要的。能够与团队中的其他人分享你所学到的东西是非常重要的。

  • 如果你从零开始这个项目,今天,它会快多少?你会跳过或改变什么?
  • 你对自己建立的系统最大的遗憾是什么?
  • 你对这个挑战项目最大的遗憾是什么?

出席(视频对话)

我不太确定该把这部分叫做什么。“聊天”似乎太没有重点了。“保卫”似乎太好斗了。我考虑过的其他想法包括“采访”、“谈话”和“交谈”。但最后,我认为“现在”抓住了我想要你向我口头描述这个项目并回答几个关于它的问题的想法。

是的,我想和完成这个项目的人进行一些交谈!我想通过视频电话和你谈谈你做的项目。你用模拟面试的方式向我解释了一些事情。只是根据你的理解来实时讨论事情。

现在,如果我不知所措,我可能不得不限制这个提议。但我会承诺与至少前 15 名在截止日期前完成这项挑战的人进行约 20 分钟的通话。如果我们在通话中需要一些额外的时间来克服语言上的挑战,或者仅仅是因为我们进行了一次如此愉快的交谈,那也没关系。我很友好,我不想吓跑你。🙂

最后,如果我只是简单地结束了那次通话,感觉你已经非常了解你所构建的东西,那对我来说就足够了。所以不要有压力。

但是这种情况——向其他人展示一些技术性的东西——是一种非常普遍和重要的情况。当然,这有点类似于工作面试,你需要让面试官对你的技能有信心。但这也就像和你的老板聊你正在做的项目;或者与你的同事谈论你在共享项目中的角色;或者和那些向你汇报你的设计的人一起,这样他们可以帮助你建造它。沟通是一项重要的技能,即使对于技术角色也是如此。

提交您的项目

当你完成了上面的构建和解释,然后回到我们的不和(到那时你应该很熟悉了),在我们的**# GCP-简历-挑战**频道上发布你的网站链接。给我贴上标签,让我能看到它,这样我们就可以安排一个电话来做演示了。

你必须在 2021 年 9 月 30 日前提交完成的网站(构建)和报告(解释)。我们随后的视频通话(目前)必须在 10 月 15 日前完成。

我真的很期待看到你的项目,并就此与你聊天!

挑战技能清单

好的。在这个挑战结束时,你将已经积累了大量真正与工作相关的技能。你可以在简历网站上列出的事情。你可以在面试或与老板的项目讨论中讨论的事情。你有足够的常识去了解技术博客新闻T6 报道的事情。不要谎称自己是世界级的专家,或者什么的,但是对这些有价值的现实世界技能感觉良好吗?如果你觉得我错过了一些关键的问题,请告诉我,但这里有一些是我特别关注的。

  • 编码
  • 储存;储备
  • 计算
    • 云运行(无服务器的基于容器的计算)
  • 建立工作关系网
  • 源代码控制
  • CI/CD
  • 流程/方法
  • 沟通
    • 记录和绘制架构
    • 描述和论证权衡决策
    • 口头介绍和解释一个技术项目
  • 个人的
    • 采取主动
    • 自我激励
    • 克服挑战

Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数百万份回复,找出了最容易让学生出错的术语和概念。在这个云指南中,你会发现一些最令人头疼的云术语的简洁定义。


结论

感兴趣吗?太好了!那你准备好了就开始吧,我会帮你解决我们的分歧!#CloudGuruChallenge 对所有人都是免费的!请记住,您必须在 2021 年 9 月 30 日前完成提交。

继续牛逼吧,云大师们!

常见问题

如果我想找一份(新)工作,我只能这样做吗?

绝对不行!这个挑战对求职者来说确实很有价值,但这是因为所实践的技能与几乎所有的技术角色都极其相关。当然,有些角色会比其他人更关注这一点,但是如果你(可能已经)是一名开发人员,或者项目经理,或者系统管理员,或者其他什么人,那么你可以从以下两个方面获得价值:( 1)构建一个这样的系统,亲自动手,而且(2)练习你的书面和口头交流技能。没有人能在技术工作中取得成功(声称有许多 9 的可靠性),除非他们同时具备技术沟通技能。

如果我想要一份(新)工作,这能保证我得到一份吗?

不,我不能做出这样的承诺。但是我可以确信地说,如果你能够建造、解释和展示这个项目,你就比绝大多数其他申请者领先好几光年。

技巧

  • 您不需要一次就构建好这一切。从一些基本的东西(任何东西)开始,然后不断增加。
  • 在控制台中随意操作,感受如何连接一切。控制台 UI 提供了大量有用的信息和建议。
  • 请不要在控制台中执行任何操作:使用 CLI 并保存一个包含您运行的所有命令的文件,以便您可以重复它们。你可以选择在你自己的 GCP 项目中设置它们之前,在 ACG 的云游乐场中为这个项目设计出许多片段。
  • 当你进入自己的项目时,如果可以的话,试着使用一个有免费试用信用的新 GCP 账户。这不会消除所有成本——尤其是长期成本——但肯定会有所帮助。
  • 从不和开始。不要等到你挣扎的时候。

在云中推进您的职业生涯

加入云专家并获得课程、动手实验、测验和学习路径,这些将带你一步一步地从新手成为你所选择的云领域的专家。获得 7 天免费试用或查看我们的免费课程

比较 AWS、Azure 和 Google Cloud IAM 服务

原文:https://acloudguru.com/blog/engineering/comparing-aws-azure-and-google-cloud-iam-services

AWS IAM vs GCP IAM vs 微软 Azure IAM

TL;速度三角形定位法(dead reckoning)

比较三大云提供商通常意味着深入研究最新和最棒的计算节点,或者哪个平台拥有性能最好的 NoSQL 数据库

作为“服务”经常被忽略的一点是如何处理给定云资源的访问和授权。强大的安全控制对于任何拥有云的组织来说都是至关重要的元素,访问管理也不例外。

本文将看看亚马逊网络服务(AWS)谷歌云微软 Azure 的身份和访问管理(IAM)服务,并提供一些有用的云 IAM 对比图表。三家云提供商进入;一篇博文离开。让我们开始吧!


有兴趣升级或开始云安全之旅吗?云专家的 AWS 安全学习路径提供适合初学者和高级专家的定制课程!


我是什么?

我是什么?每个云提供商都使用“IAM”这个名字来描述他们围绕管理云资源的访问和授权的服务和 API 集合。Azure 在某种程度上是一个例外:IAM 一般用来描述 Azure Active Directory 的特性。

在探索每个提供商的功能特性之前,了解问题域以及这些服务旨在为客户解决什么是有帮助的。


*Azure “IAM” generally refers to identity services provided via Azure Active Directory


我是做什么用的?

Azure IAM、AWS IAM 和 GCP IAM 是做什么的?

那么我能解决什么呢?一个有用的起点是“最小特权”的概念最小权限原则(PLOP)是一个信息安全概念,它有效地规定了给定系统或资源的任何用户都只应被授予成功执行给定任务所需的最低权限和访问权限。

在云服务的背景下思考这个问题,PLOP 可以应用于几乎任何资源。存储对象、计算节点、数据库和日志记录仪表板等都包含潜在的敏感关键数据。所有员工和用户都应该对这些资源拥有相同的、广泛的访问权限吗?根据 PLOP 的说法,答案是否定的。满足大多数合规性框架的最低要求也意味着组织必须表明他们正在执行 PLOP,云资源也不例外。

云平台如何为客户提供一种高效、可扩展的方式来执行 PLOP?为每个服务或资源管理单独的访问和授权控制将很快成为一场逻辑噩梦,并且除了非常小的部署之外,不可扩展。通过各自的 IAM 产品,每个云提供商都提供统一的集中式服务来管理访问和授权。


获得痛苦的云词典
说云不一定要努力。我们分析了数百万份回复,找出了最容易让学生出错的术语和概念。在本云指南中,您将找到一些最令人头疼的云术语的简洁定义


AWS、Azure 和 GCP IAM 定价和服务限制

对于三大巨头中的每一个,除了一点点例外,IAM 服务都被认为是基础的,并且是作为正常帐户使用的免费服务提供的。Azure 的 Active Directory IAM 产品是一个例外,它需要一个单独产品的订阅或许可证来解锁免费层。

对于 AWS 和 GCP 来说,一些关键的区别在于每个平台如何定义配额和服务限制。

就 AWS 而言,“配额”和“限额”可以互换。有些配额可以通过请求增加,而有些配额是固定值,不能增加。另一方面,GCP 将配额定义为可以增加的东西,而限额则不能。进一步扩展如何处理配额和限额的差异:GCP 通过“项目”定义一些配额和限额,而 AWS 中的逻辑边界总是在 AWS 帐户内。Azure 利用“限制”来指定可以扩展的限制/配额,以及不能扩展的限制/配额。在 Azure 的情况下,还有一个区别,即客户可以访问的服务层限制了某些限制和功能。此处描述了个定价等级。对于 Azure Active Directory,没有可以通过请求扩展的限制——它们都是固定的。

本页描述了 AWS IAM 的配额。GCP 的配额和限制可以在这里找到。对于 Azure AD,这里描述的限制是。尽管每个服务在哪些值是固定的或者可以扩展方面做出不同的选择,但是有一些等效的资源限制至少有助于提供一个高级别的比较:


资源/提供商 限额/配额 可展开的 最大限制
角色
自动警报系统 1000/账户 5000
GCP 300/组织,300/项目 不适用的
蔚蓝的 30 个角色/组织 不适用的
自动警报系统 300/账户 500
GCP 250/政策 不适用的
蔚蓝的 5000/账户 不适用的
用户
自动警报系统 5000/账户 不适用的
GCP 无限制* 不适用的 不适用的
蔚蓝的 50000 个对象/目录 取决于定价层级
实例配置文件/服务帐户 自动警报系统 1000/账户
5000 GCP 100
未规定的 蔚蓝的 50000 个对象/目录
取决于定价层级 表中的值强调了每个提供商在技术架构和目标客户统计方面的一些基本差异。例如,Google Cloud 依靠 Google groups 和 Google account infrastructure 来进行用户管理,而 AWS 是一个独立的 AWS 帐户。由于其企业焦点,Azure 依赖于 Active Directory,将用户视为传统的 Active Directory 对象,并对总对象数量进行限制。 下一节将深入探讨每个提供商的 IAM 产品的特性,包括等效特性和尺寸的比较和对比。 2021 年云状态网上研讨会 没人能预测未来,但我们请了一组非常聪明的云专家来试试。Jassy 升任亚马逊 CEO 对 AWS 来说意味着什么?今年是多云之年吗?我们生动活泼、未经过滤的小组在今年的免费点播网上研讨会中发表了意见。

*Google users/groups are managed as part of their workspaces, and generally have different constraints


IAM 功能比较

IAM 的核心是管理访问和授权。每个提供商都有一个相似的目标:为其基于云的资源和服务提供一种健壮的、可扩展的方式来管理访问和授权。


StateOfCloudLearning

这三个提供者中的每一个都实现了一个基于角色的访问控制(RBAC) 系统的变体。用户承担“角色”,角色通常是访问和授权策略的预定义分组,定义了他们可以访问和不可以访问哪些资源。


每个提供商如何处理用户管理、配额和逻辑组织的各个方面是客户体验不同的地方。AWS 和 GCP 都有云优先的重点,而 Azure 的企业根源在围绕 Azure IAM/AD 的技术行话和设计模型中显而易见。

逻辑组织

在任何 IAM 系统中,对于给定的用户或服务实体,总会有逻辑边界和操作域。AWS、GCP 和 Azure 对此的处理略有不同。

下表描述了每个提供商及其“基本组织域”,该术语将用于描述围绕其构建限制和配额的基本组织结构,以及用户可能经常与之交互的最常见的逻辑边界:

供应者

基本组织领域

自动警报系统


账户 GCP
项目 蔚蓝的
组织 对于 AWS,配额/限额和访问界限通常属于一个帐户。虽然许多组织通常会维护多个 AWS 帐户,这些帐户在一个统一的计费和管理帐户下累计,但 API 和服务限制仍然适用于每个帐户。访问和授权策略通常仅适用于该特定帐户内的资源和服务,除非使用特定的跨帐户角色机制进行定义。
在 GCP,组织可以充当逻辑边界,但最常见的组织模型是“项目”客户可以在一个项目下部署他们所有的 Google 云资源,或者他们可以选择创建单独的项目,根据最有意义的模式将资源组织到逻辑分组中。IAM 可以用来定义每个项目的访问和授权。 在 Azure 中,基本单元是活动目录组织。在企业和公司 IT 部门工作过的工程师会很快熟悉术语和惯例。Active Directory 植根于最终用户计算,它的大部分设计都源于此。Azure 云产品仍然依赖于一个有效的活动目录系统来发布对用户和其他实体的访问。

深入了解 IAM(身份和访问管理?ACG 有涵盖 Azur e 的 IAM、 GCP IAMAWS IAM 的课程。免费开始!

用户/组

交互式(人工)用户访问将是云服务最常见的使用模式之一。工程师需要部署服务和配置资源,分析师可能需要访问仪表板或分析数据集,业务管理员可能需要访问计费 API 和服务。


Level the playing field blog

下表比较了 IAM 用户上的每个提供者及其各自的能力,查看了用户帐户的主要源目录,用户帐户是否可以启用非交互式访问,以及组是否可以用于应用 IAM 策略:


供应者

主要用户目录

非交互式访问是可能的


自动警报系统 账户
GCP 变化 需要单独的服务帐户
蔚蓝的 变化 需要单独的服务主体
谷歌维护着一个相当多样化的服务范围,用户身份可以来源于这些服务。组织通常会使用谷歌套件用户帐户来定义 GCP 资源的用户,而个人谷歌帐户也可以用于身份。对于非交互式凭据访问,GCP 要求定义单独的服务帐户。 亚马逊将 IAM 用户绑定到一个特定的 AWS 账户。可以授予特定的角色和权限,允许访问独立 AWS 帐户中的资源,但通常单个 IAM 用户的访问权限仅限于帐户级别。 虽然组织通常会将 root 用户身份分配给其组织树中没有资源调配的顶级帐户,但个人用户实际上可以使用其 Amazon.com 帐户作为 AWS 帐户的 root 用户身份。与 GCP 和 Azure 不同,AWS 不区分“服务帐户”和普通 IAM 用户:可以启用配置选项以仅允许非交互式访问,并且可以将固定凭据分配给任何 IAM 用户。

Azure 显然依赖于 Active Directory 进行用户帐户和身份管理。普遍的预期是,正在向云过渡的微软客户将已经拥有活动目录解决方案的内部许可,并且将在未来转向混合解决方案。然而,用户帐户也可以来自其他 Azure 和微软产品,如 GitHub、Windows Live 和 Office 365。

每个提供商为用户帐户提供组,允许逻辑组织和策略应用。不必将策略附加到每个用户帐户,可以创建像“开发”或“管理员”这样的组,并附加正确的访问和授权策略,之后可以根据需要在组中添加和删除用户。

修复 5 个常见的 AWS IAM 错误
这篇凯莎·威廉姆斯的博文中深入了解 5 个常见的 AWS IAM 错误的原因和解决方法。

角色

在任何 IAM 系统中,角色都是一个强大的概念。在 RBAC 中,默认情况下,用户身份没有对给定资源的访问权限或授权。通过某种身份验证机制,用户帐户将“承担”一个角色,并且伴随着这种承担而来的是与该角色相关联的所有访问和授权策略。


在某些情况下,经过一段预定的时间(通常是可配置的)后,用户将被要求再次进行角色验证。否则,他们的令牌将过期,用户-角色关系将终止,直到重新进行身份验证。一些角色分配会持续到手动撤销。


下表比较了给定平台可用的最大角色数和角色会话长度:

资源/提供商

限额/配额

可展开的


最大限制 角色
自动警报系统 5000/账户
GCP 不适用的
蔚蓝的 不适用的
角色会话持续时间
自动警报系统 12 小时
GCP 12 小时(需要 OAuth 2.0)
天蓝色* 模糊的
IAM 角色是 AWS 中的主要身份机制,在实体需要使用权限的各种用例中使用。IAM 策略被称为“信任策略”,用于控制允许哪些主体承担角色。在这种情况下,主体通常指任何可能需要承担角色的身份,如用户或服务。 交互式 IAM 用户可以扮演角色来执行任何需要的操作。特殊角色(称为“实例配置文件”)可以附加到 EC2 计算实例,从而消除了在该实例上运行的任何应用程序的硬编码凭据需求。如果任何用户或服务需要访问另一个 AWS 帐户中的资源,可以将跨帐户角色访问配置为仅对第二个帐户中所需的资源和服务授予细粒度的权限。 GCP 在处理角色的方式上与 AWS 有些不同。在 IAM 服务推出之前,GCP 的基本角色是“所有者”、“编辑”和“查看者”通过 IAM 服务,他们可以提供预定义和自定义的角色。与 AWS 不同,GCP 角色在交互式和非交互式访问之间不可互换:用户主体承担交互式访问的角色,该角色不能委派给非交互式用户,相反,服务帐户必须是非交互式访问和角色承担的承担主体。 Azure 的角色模型比 AWS 更接近 GCP。Azure 既提供了预定义的角色,也提供了创建自定义角色的能力。与 GCP 类似,角色由用户和服务主体分别承担,分别用于交互式和非交互式访问。内置角色具有预定义的策略,而自定义角色具有与角色定义内联编写的用户定义的策略。

*Managing role session duration requires Azure Privileged Identity Manager, which requires an Azure AD Premium license


下一节将更深入地讨论策略配置的相似之处和不同之处。

云迁移:角色扮演游戏 成功的云迁移活动需要策略、知识和一点即兴表演——有点像龙与地下城&的游戏。加入这个独特的角色扮演练习,让专家小组成员通过真实的云迁移场景进行游戏。

策略/配置

在 IAM 服务中,策略是给定身份在访问和授权方面可以做什么和不可以做什么的实际定义。提供者在如何编写和利用策略方面有一些共同点,但也有一些显著的差异。

需要注意的一个关键相似之处是:所有三个提供者都利用 JSON 语言进行策略定义。虽然围绕必须“编写”JSON 的用户体验存在不同意见,但它为策略定义提供了一致的、被广泛接受的模型,并且可以轻松集成第三方工具用于林挺和自动化。


Cloud Adventure

下表提供了一些额外的功能比较:


资源/提供商

限额/配额

可展开的

最大限制


附保单
自动警报系统 10/用户、角色或组 20/用户、角色或组
GCP 每个角色绑定 1500 个用户或 250 个组 不适用的
蔚蓝的 每个订阅 2000 个资源角色分配,每个管理组 500 个角色分配 不适用的
保单长度
自动警报系统 6144 个字符/托管策略* 不适用的
GCP 64KB 总大小,包括标题、描述和权限名称** 不适用的
蔚蓝的 无限制*** 不适用的
Azure 不认为策略文档是独立于角色身份的资源:它们直接与角色一起定义,称为“角色定义”然后,将角色直接分配给用户、组或服务主体。 在 Azure 中,策略分为四个层次:管理组、订阅、资源组和资源。通常,每一级都是一个更广泛的访问定义。管理组级别的定义将分配所有内容,而资源级别只允许访问特定的命名资源。 如表格注释中所述,GCP 实际上不允许创建自定义策略。策略是根据各种 GCP 资源和服务预定义的,并且策略在策略绑定中附加到用户、组和服务帐户。如果需要多个权限范围,可以将多个策略绑定到一个实体。根据使用情况,预定义的策略可能就足够了,或者可能需要自定义绑定。但是,无论哪种情况,客户都依赖于预定义的策略和权限范围。 AWS IAM 策略通常在整个 AWS 生态系统中有更广泛的用例集,并且在创建策略定义时有更多的自由度。AWS IAM 有多种策略类型:基于身份的策略、基于资源的策略、权限边界、组织 scp、ACL 和会话策略。

*AWS also lets users define “inline policies” that are directly attached to a role, user, or group. User policy size cannot exceed 2048 characters, role policy size cannot exceed 10240 characters, and group policy size cannot exceed 5120 characters

**GCP does not allow true custom policies, rather a list of pre-defined resource policies bound to identities
***Azure has no listed limit for policy size, just a fixed limit on role assignments


最常用的策略是基于身份的:这些是附加到传统 IAM 实体的典型策略对象,如角色和 AWS 资源组 s。基于资源的策略是针对 S3 存储桶之类的东西定义的。 AWS 策略生成器是一个工具,它使您能够创建控制对 AWS 资源的访问的策略。其他策略类型有更细粒度的应用,但身份和资源策略是客户花费最多时间的地方。

需要创建策略来控制对 Amazon Web Services (AWS)产品和资源的访问,比如使用基于资源的策略来防止删除 Amazon S3 存储桶

一句话:AWS、Azure 和 GCP 哪个更好?

那么在这场 IAM 对决中,哪个平台“赢”了呢?老实说,这是一个三方平局。有点虎头蛇尾?也许吧,但是每个提供商的 IAM 都是为最适合他们各自提供的服务和资源而设计的。

希望选择云提供商的组织可能不会花太多时间来评估 IAM 功能。他们转而关注哪家供应商拥有最合适、价格最优的产品组合。


通过 Azure 对企业和混合部署的关注,更传统的企业 IT 环境可能会更容易过渡到云。

希望部署高度可用的面向 web 的基础设施的组织需要仔细评估哪些产品最适合他们的用例。例如,希望利用托管 Kubernetes 的组织通常希望给 GCP 一个强大的外观,而那些寻求强大的无服务器产品的组织可能会选择 AWS 更成熟的产品。

归根结底,选择 IAM 更多的是选择哪个提供商的产品最符合他们的基础架构和扩展目标。

关于作者

  • 迈克·范布斯柯克是首席 DevOps 工程师和技术内容创作者。他曾与世界上一些最大的云计算、电子商务和 CDN 平台合作过。他目前的重点是云优先架构和无服务器基础设施。
  • Organizations looking to deploy highly-available web-facing infrastructure will need to closely evaluate which offerings best fit their use case. For example, organizations looking to utilize managed Kubernetes will generally want to give a strong look to GCP, while those looking for a robust serverless offering will likely choose AWS’s more mature offering.

At the end of the day, choosing IAM is more about choosing which provider’s product offerings align the closest with their infrastructure and scaling goals.

About the Author

Mike Vanbuskirk is a Lead DevOps engineer and technical content creator. He’s worked with some of the largest cloud, e-commerce, and CDN platforms in the world. His current focus is cloud-first architecture and serverless infrastructure.

NoSQL 比较:Cosmos DB vs dynamo DB vs Cloud Datastore 和 Bigtable

原文:https://acloudguru.com/blog/engineering/comparing-cloud-nosql-databases-dynamodb-vs-cosmos-db-vs-cloud-datastore-and-bigtable

NoSQL 哪个数据库服务最好?

哪只 NoSQL DB 是山羊?看看在 AWS DynamoDB 与 GCP 云数据存储和 Bigtable 与 Azure Cosmos DB 之间,哪个数据库服务在所有云中占主导地位。请继续阅读!

TL;速度三角形定位法(dead reckoning)

现代应用程序开发的前景已经发生了变化。在云平台出现(和广泛使用)之前,一切都可以用有限的术语来思考。通常有固定的可用计算资源池、有限的带宽和可预测的流量。

这一切都变了。

大量的计算、存储和带宽可以通过几次点击或 API 调用来承担。开发人员现在面临的挑战是如何管理数据,因为现代应用程序堆栈拥有大量数据,并且总是在产生更多数据。

NoSQL 与关系数据库

MySQL、PostgreSQL 等关系数据库以及微软和甲骨文等公司的企业产品长期以来一直是数据存储的主流。然而,它们有其局限性。不灵活的模式和众所周知的困难的水平扩展意味着它们并不总是很好地适应高度可扩展和地理上分散的基础设施堆栈。

开发 NoSQL 数据库技术的目的是为传统关系数据库在大规模应用中出现的问题提供一种替代方案。NoSQL 数据库可以有效地扩展,并且在包含的数据结构类型上更加灵活。

本文将研究亚马逊网络服务(AWS)、微软 Azure 和谷歌云(GCP)的主要 NoSQL 产品。

首先,将提供 NoSQL 与 SQL 在技术方面的一些额外深度,以及选择 NoSQL 作为数据存储的潜在好处。


对升级或开始云数据之旅感兴趣吗?云专家的 AWS 数据学习路径提供适合初学者和高级专家的定制课程!


NoSQL 数据库价格比较

成年人的 NoSQL:DynamoDB 单表建模与里克·霍利汉这个免费的点播网络研讨会中,里克·霍利汉,AWS 的高级实践经理和单表 DynamoDB 设计的发明者,展示了他在 dynamo db 中建模复杂数据访问模式的技巧。


NoSQL 领养背景

为了理解是什么推动了 NoSQL 的采用,理解关系数据库与典型的 NoSQL 数据库相比是如何工作的,以及一些潜在的限制可能是有帮助的。正如在简介中提到的,主要的摩擦点围绕着模式和伸缩性。

通常,NoSQL 数据库被认为是基于“document”的——数据松散地存储在包含各种数据结构的文档中。在关系数据库中,数据存储在一个由行和列组成的表中,用一个模式严格定义。


在 ACG 的这个课程中,学习使用 AWS DynamoDB 构建可扩展的高性能应用。


模式定义了数据库的“是什么”。在一个假设的个人数据库的关系模型中,它告诉用户第一列数据可能是“名字”,第二列是“姓氏”,第三列是“年龄”,依此类推。每行数据代表一个人。该模式或数据映射定义了如何将数据写入数据库。

如果决定需要添加一个“最喜欢的糖果”栏,该怎么办?在大多数情况下,必须进行高成本的操作工作来定义和更新模式,包括存储其副本的任何系统,以及潜在的高成本数据库停机时间。相比之下,基于文档的 NoSQL 模型允许应用程序几乎不受限制地更改和变异数据。

缩放是 NoSQL 大放异彩的故事的第二部分。如果没有复杂的编排,关系数据库很难扩展,维护具有高写吞吐量的高可伸缩、高可用的关系数据库集群是一个不小的工程挑战。AWS、Azure 和 GCP 的主要 NoSQL 产品能够扩展到潜在的数十亿次每日交易,管理基础设施的运营开销几乎完全由提供商处理。

NoSQL 定价和服务限制

卓越 NoSQL 产品的定价在很大程度上取决于如何定义使用指标。每个提供商都根据不同的指标来衡量使用情况,包括明确的和基于时间的衡量标准。AWS 提供了可能是定义这些指标的最佳口语,本文将统称为“计费单位”。

这是所有提供商共有的,也是客户经常遇到的问题:网络和带宽的使用是与基础服务分开收费的。从任何这些服务中传输大量数据都可能在账单上产生不小的费用,这与使用是分开的。

AWS 的主要计费单位是“写请求单位”和“读请求单位”,代表从 DynamoDB 表中写入或读取数据的请求。AWS 还对其他功能收费,如备份、全局复制、流式传输和网络出口。一个仅出口互联网网关用于启用从您的 VPC 中的实例到互联网的 IPv6 出站通信,并防止您的 VPC 之外的主机发起与您的实例的 IPv6 连接。

GCP 在 NoSQL 的两个主要产品是 Bigtable 和数据存储模式的 Firestore。数据存储服务是一种传统的基于文档的 NoSQL 服务,它围绕使用构建计费单位:“实体”读取、写入和删除作为单独的操作计费,数据存储、小型操作和网络出口也是如此。在撰写本文时,Google 正计划在 2021 年将 Datastore 的用户转移到 Firestore 的 Datastore 模式,其中使用计费将对象建模为“文档”。这篇文章提供了更多关于这两者区别的细节。数据存储也有每月免费使用的配额。Bigtable 围绕 Bigtable 集群中底层节点的每小时使用情况以及存储、备份和网络出口来构建计费单位。还需要注意的是,虽然使用是基于调配的容量,但是在 Bigtable 实例上有强制的配额和限制。

Azure Cosmos DB 为提供了两种计费模式供客户选择:供应吞吐量和无服务器。(参见我们在Azure Cosmos DB API 及其用例与权衡上的帖子,深入了解 Cosmos DB 的实践。)

调配的吞吐量以每秒请求单位和每小时账单来衡量使用情况。客户也可以按年或按年预付调配的容量。此外,存储和网络出口也要收费。

在无服务器模式中,客户只需为发生的使用付费,这更适合不一致的突发工作负载。


在这 9 小时的课程中,一位云计算大师将深入探讨 Azure Cosmos DB


无论是关系数据库还是 NoSQL 数据库,任何类型的大规模数据库部署都会很快给任何组织带来可观的成本。NoSQL 的优势之一应该是显而易见的:三个提供商都提供“按需”,基于使用的计费。客户将只承担实际使用的费用,而不会承担调配使用带来的更高的低效率成本。

下表重点介绍了三大巨头在定价和配额方面的一些更细微的差异:

| 服务* | 计费单位 | 成本** |
| --- | --- | --- |
| 写入(已调配)*** | AWS DynamoDB | 写容量单位(WCU) |
| 25 WCUs 月免费,0.00065 美元 WCUs 小时 |
| GCP 大表 | 节点小时 | 每个节点 0.65 美元/小时,使用受限于配额/限制 |
| azure Cosmos DB–单区域写入帐户 | 请求单位(RU) | 400 RU/s/月免费
自动缩放:100 RU/s x 1.5 x 1 区域-0.008 美元/小时
手动:100 RU/s x 1 区域-0.008 美元/小时 |
| 写入(按需)*** | AWS DynamoDB | 写请求单元 |
| 125 万美元/100 万个写请求单元 |
| 数据存储模式下的 gcp 风暴 | 实体写入/文档写入 | 每天 20000 次实体写入,每 100,000 份文档 0.099 美元 |
| azure Cosmos DB–无服务器 | 请求单位(RU) | 25 万美元/10 万俄罗斯联邦 |
| 读取(已配置)*** | AWS DynamoDB | 读取容量单位(RCU) |
| 25 个区域协调单位/月免费,0.00013 美元 RCUs 小时 |
| GCP 大表 | 节点小时 | 每个节点每小时 0.65 美元,使用受限于配额/限制 |
| azure Cosmos DB–单区域写入帐户 | 请求单位(RU) | 400 RU/s/月免费
自动缩放:100 RU/s x 1.5 x 1 区域-0.008 美元/小时
手动:100 RU/s x 1 区域-0.008 美元/小时 |
| 读取(按需)*** | DynamoDB | 读取请求单元 |
| 25 万美元/10 万个读取请求单元 |
| 数据存储模式下的 gcp 风暴 | 节点小时 | 每个节点 0.65 美元/小时,使用受限于配额/限制 |
| azure Cosmos DB–无服务器 | 请求单位(RU) | 25 万美元/10 万俄罗斯联邦 |
| 备份*** | AWS DynamoDB | 千兆字节 |
| 连续备份(PITR):0.20 美元/GB/月
按需备份:0.10 美元/GB/月
恢复:0.15 美元/GB |
| GCP 大表 | 千兆字节 | 每 GB/月 0.029 美元 |
| 天蓝色宇宙数据库 | 千兆字节 | 定期备份:免费 2 份,> 2 份每份 0.12 美元/GB
连续备份:0.20 美元/GB x 区域
时间点恢复:0.15 美元/GB |
| 存储 | AWS DynamoDB | 千兆字节 |
| 25GB/月免费,每 GB/月 0.25 美元 |
| GCP Bigtable

GCP Firestore 处于数据存储模式 | 千兆字节 | 固态硬盘存储:每 GB/月 0.19 美元
硬盘存储:每 GB/月 0.029 美元
T2:每 GB/月 0.099 美元 |
| 天蓝色宇宙数据库 | 千兆字节 | 事务存储(面向行):0.25 美元/GB/月
分析存储(面向列):0.03 美元/GB/月 |
| 复制(已调配) | AWS DynamoDB | 复制写容量单元(rWCU) |
| 每 rWCU/小时 0.000975 美元 |
| GCP 大表 | 千兆字节 | 受互联网出口费率限制 |
| 天蓝色宇宙数据库 | 请求单位(RU) | 自动缩放:
数据跨多个区域分布的单区域写帐户(有或没有可用性区域):100 RU/秒 x 1.5 x N 个区域-0.008 美元/小时
跨多个区域分布的多区域写帐户(以前称为多主机):100 RU/秒 x N 个区域-0.016 美元/小时
标准:
跨 N 个区域分布的单区域写帐户(不包括可用性区域):100 RU/秒 x N 个区域-0.008 美元/小时【T4 对于使用可用性区域的地区:100 RU/s x 1.25 x N 个区域-0.008 美元/小时
具有 N 个区域的多区域写入(以前称为“多主机”)帐户 ^* (有或没有可用性区域):100 RU/s x N 个区域-0.016 美元/小时 |
| 复制(按需) | AWS DynamoDB | 复制写请求单元 |
| 187.5 万美元/100 万个复制写请求单元 |
| 数据存储模式下的 gcp 风暴 | 记录操作 | 单地区价格乘数 |
| azure Cosmos DB–无服务器 | 请求单位(RU) | 1.25 x N 个地区 x 25 美元/100 万俄罗斯联邦 |
| * 此表并未全面列出每个提供商的计费功能。它的主要目的是提供通用特性的高级比较。 | *每个提供商的费用可能因地区而异。请查看本文前面提供的特定地区的具体费用链接。除非特别说明,此处使用美国东海岸/北美。 | **** GCP Bigtable 仅提供调配使用和备份,而数据存储模式下的 Firestore 仅提供按需使用计费,不提供备份。 |

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。

尽管计费单位术语不同,这三个提供商之间的定价相当一致。从功能和价格角度来看,NoSQL 数据库服务的日益普及和需求导致了一个竞争激烈的市场。每个提供商不仅希望从竞争对手那里夺取市场份额,还希望从 MongoDB 和 Hadoop 等第三方解决方案那里夺取市场份额。

(如果你能流利地使用 AWS,并想了解 Azure 的基础知识,请查看我们的微软 Azure 用户指南。)


下一节将比较每种产品的特性、性能和潜在使用案例。


AWS、Azure 和 GCP NoSQL 功能比较

评估给定 NoSQL 解决方案的性能和功能集在很大程度上取决于环境:存储的是什么类型的数据?这些数据是如何构建的?需要什么样的表现?工作负载是一致的,还是突发的?

描述复杂数据存储及其端到端用例的所有技术复杂性和细微差别可以写好几本书(现在已经写了)。相反,本节将尝试将最重要的考虑事项提炼为高层次的类别:典型用例、数据模型和查询、假设用例的价格效率,以及每个提供者如何处理一致性。

NoSQL 是用来做什么的?

正如在开篇中所讨论的,NoSQL 的一般用例是关系数据库通常不足的地方:水平伸缩和非结构化数据。应用程序开发人员可以自由地利用编程数据结构来编写和查询数据,避免僵化的 SQL 模式逻辑。通过提供商提供的托管服务解决方案,精益开发团队可以利用高度可伸缩的解决方案,而没有维护基础设施的运营开销。

服务

用例

AWS DynamoDB

广告技术、游戏、零售、银行和金融、媒体和娱乐、软件和互联网 GCP 大表
金融分析、物联网、广告技术 数据存储模式下的 GCP Firestore
需要高度可伸缩、易于使用的 NoSQL 文档数据库的应用程序开发人员 蔚蓝宇宙数据库
关键任务应用、混合 Cassandra 工作负载、近实时分析、实时物联网设备遥测、实时零售服务 此表强调了每种服务的各种用例之间的一些共性。
当组织需要能够处理大量读写事务的高性能解决方案时,NoSQL 大放异彩,这些事务可能涉及非结构化和不断变化的数据。然而,需要考虑的重要一点是,虽然提供者列举的一般用例之间存在重叠,但是每个实现的底层技术细节都有一些关键差异。 例如,虽然 DynamoDB 和 Bigtable 共享财务分析作为用例,但它们处理和存储数据的方式不同。DynamoDB 将数据建模为键值和文档,而 Bigtable 是一个宽列存储。对于低吞吐量的用例,这种区别最终可能是微不足道的。当架构必须扩展到每天数十亿次交易时,数据模型的选择变得至关重要。

NoSQL:模式、数据和查询

虽然 NoSQL 没有关系数据库的传统模式,但这并不意味着工程团队可以避免规划实现。相反,有效地使用 NoSQL 要求密切关注将要读写的数据类型,也许最重要的是,下游用户最有可能运行的查询类型。

一些人可能会认为这是 NoSQL 在技术上实施“模式”的地方:开发人员通常需要提前知道潜在查询的结构,否则他们可能会遇到大规模的性能问题。

服务

数据模型

支持的数据类型

| AWS DynamoDB | 键值,文档 | 标量:数字、字符串、二进制、布尔、空值
文档:列表、映射
集合:字符串集合、数字集合、二进制集合 |
| --- | --- | --- |
| GCP 大表 | 宽列存储 | 所有数据通常被视为原始字节串 |
| 数据存储模式下的 GCP Firestore | 数据存储:数据存储模式下的键值 Firestore:文档 | 数组、布尔值、字节、数据/时间、浮点数、地理点、整数、地图、空值、引用、文本字符串 |
| 蔚蓝宇宙数据库 | 键值、文档、图形、列 | 凡是可以序列化为有效 JSON 的 |
| 为了理解每个服务可能如何处理潜在的数据和查询,理解它们如何建模数据将是有帮助的。NoSQL 数据库的底层数据模型是任何有意义的数据基础设施的规划和设计的关键部分。 | 关键值数据库 | 键值数据库(有时称为存储)通过利用关联数组来存储数据。大多数开发人员可能都熟悉关联数组的底层数据结构:字典或哈希表。数据存储为成对的键和值。键用于唯一标识存储在值中的数据。值可以是简单的数据类型,如字符串、布尔值或整数,也可以是完整的 JSON 结构。 |

一个简单的例子,使用 Python 字典:

{"user1": "jsmith", "user2": "kjackson"}

查询像“user1”这样的键会产生值“jsmith”,“user2”代表“kjackson”等等。一个更复杂的例子,值是一个 JSON 对象:

{"user1": {"name": "John Smith", "userID": "jsmith"}, "user2": {"name": "Karen Jackson", "userID": "kjackson"}}

查询“user1”键将返回 JSON 对象作为值。由查询作者开发额外的逻辑来解析对象内部的字段。

DynamoDB、Datastore 和 Azure Cosmos DB 都提供键值作为存储数据的潜在数据模型。当存储的数据和访问模式相当简单时,如缓存或为网站用户存储会话数据,键值存储是高性能的。

文档数据库

当讨论 NoSQL 时,人们通常会想到文档数据库。在文档模型中,数据以一种键-值模型的形式存在:惟一的 id 标识值,这些值是半结构化的文档,通常以 JSON 对象为模型。AWS 提供了一个简单的假设文档的例子,这个文档描述了一本书。开发人员通常用给定的语言形成查询,搜索特定的关键字,然后进一步解析返回的文档。然而,与键值存储相比,文档数据对象具有某种结构,并且通常为文档中的各种对象和字段提供元数据关联。

数据存储模式下的 Firestore、Azure Cosmos DB 和 DynamoDB 都可以利用文档模型进行数据存储。文档数据库非常适合于只有一些结构或没有结构的数据,或者开发人员可能需要在以后灵活地扩展和更改数据的情况。通常,这些系统涉及内容管理、高可扩展性,并且需要提供优异的写入性能。

列数据库

列数据库已经存在了一段时间,遵循与典型关系数据库相似的模型,只是表是按列存储的,而不是按行存储的。——列存储数据库实际上是一个独立的 NoSQL 概念,在这个概念中,同一表中不同行之间的列可以有不同的名称和格式。相似的数据被分组为列,相似的列被分组为“列族”。可以对列进行分区,如果需要,单个列可以占据整个磁盘。

GCP Bigtable 和 Azure Cosmos DB 支持宽列数据模型。它们在处理分布式系统中的大量数据时非常有效,尤其是当数据存储太大而无法占用单台机器或集群时。高流和分析数据是宽列存储数据库的理想选择。

什么是 OLTP 和 OLAP?

联机事务处理(OLTP)联机分析处理(OLAP) 是传统上与关系数据库相关的特定类型的数据处理和查询的方法和技术。OLTP 通常适用于大量发生的小型、孤立的交易,并且需要成功的保证,例如银行交易。OLAP 事务是更复杂的查询,通常涉及连接和聚合,可以对大型数据集产生分析见解。

历史上,NoSQL 数据库一直难以提供 OLTP OLAP。OLTP 要求原子性、一致性、隔离性和持久性(ACID) 合规性。交易的每一部分都必须成功;部分成功或失败会导致整个事务回滚。NoSQL 数据库经常回避这些保证,以换取可伸缩性、可用性和速度。

OLAP 在查询中需要复杂的连接和聚合逻辑。由于 NoSQL 数据对象通常是非结构化的性质,连接很难执行,需要复杂的软件逻辑和多次昂贵的查询。在 NoSQL 数据库上实现 OLAP 通常意味着将数据批量导出到辅助 ETL 平台进行聚合和分析。

那么,三大巨头提供的 NoSQL 服务能解决这些问题吗?交易和分析仍然是数据处理的关键需求,能够将 NoSQL 的性能与其中任何一项结合起来将是一个强大的组合。

DynamoDB 在 2018 年增加了事务处理能力,为 NoSQL 数据库带来了 ACID。像金融交易这样的事情所需的原子性和一致性现在在 NoSQL 数据库中是可能的。

相反,像 GCP Bigtable 这样的解决方案明确建议不适合 OLTP/OLAP 。GCP 数据存储区也与共享相同的指南

对于 Cosmos DB 来说,故事更加模糊:对 OLAP 和 OLTP 的支持是最近宣布的。然而,它仍然需要链接不同的运行时和产品来提供完整的体验。

自动化 AWS 成本优化
AWS 为您的企业提供了前所未有的价值,但经济高效地使用它可能是一项挑战。在这个免费点播的网络研讨会中,您将了解 AWS 成本优化工具和策略的概况,如数据存储优化

NoSQL 价格效率比较

在前一节中,列出了每项服务的基本成本。虽然这是很有帮助的数据,但是苹果与苹果之间的比较至少会给潜在客户一个粗略的概念,即对于给定的用例,每个提供商提供的产品的“价格效率”如何。


在这种情况下,考虑价格效率意味着:“为编写、存储和查询给定数量的信息提供最低的端到端成本”。考虑以下假设的例子:


示例数据库(使用 1 个月)

存储大小

平均物体/实体尺寸

读取/秒
每秒写入次数 入口/出口带宽 350 GB 512 字节 高峰:500
非高峰:125
高峰:100
非高峰:25 53.08 GB / 265.5 GB 上表描述了假设的 NoSQL 数据库实施中一个月的使用情况。这是一个简单的示例,不包括复制、备份或提供商可能提供的任何专有增强或辅助服务。为了进一步简化示例,将做一些额外的假设: 高峰时间在工作日每天 8 小时“有效” 将使用 30 天的月份

自由层的使用不会被考虑在内

  • 一个月 30 天的总阅读量:518,400,000
  • 一个月 30 天的总写入数:103,680,000
  • 实体/文档大小将始终为 512 字节
  • 存储大小是总大小的假定计费平均值
  • 地区是美国东部
  • 出口将是美国洲际酒店
  • 下表将利用每个提供商提供的信息来估算在其服务上实现示例数据库的每月总成本。
  • DynamoDB 已配置
  • 存储

显示为

写道

| 带宽 | $81.25 | 高峰:10.40 美元
非高峰:8.32 美元 | 高峰:10.40 美元
非高峰:8.32 美元 |
| $23.90 | 总费用:142.59 美元/月 | dynamo db–按需 | 存储 |
| 显示为 |

写道

| 带宽 | $81.25 | $129.60 | $129.60 |
| $23.90 | 总费用:364.35 美元/月 | GCP 大表 | 存储(SSD) |
| 6 节点集群 |

带宽

| $66.50 | $3110.40 | $31.86 |
| 总费用:3208.76 美元/月 | 数据存储模式下的 gcp 风暴 | 存储 |
| 显示为 |

写道

| 带宽 | $34.65 | $171.07 | $102.64 |
| $31.86 | 总费用:340.22 美元/月 | azure Cosmos DB–自动扩展配置 | 存储 |
| 请求单位 |

带宽

| $87.50 | 高峰:28.80 美元
非高峰:24.58 美元 | $21.24 |
| 总费用:162.12/月 | azure Cosmos DB–手动调配 | 存储 |
| 请求单位 |

带宽

| $87.50 | 峰值:19.20 美元
非峰值:16.38 美元 | $21.24 |
| 总费用:144.32/月 | azure Cosmos DB–无服务器(按需) | 存储 |
| 请求单位 |

带宽

| $87.50 | $155.52 | $21.24 |
| 总费用:264.26 美元/月 | 在“价格效率”讨论中,DynamoDB 解决方案的低成本显然是赢家。 | 其次是 Cosmos DB 手动配置选项。 |
| GCP Bigtable 以很大优势排在最后。然而,目标用户群体可能会通过更大量的数据实现更好的成本效益。 |

一致性和复制

简单地说,在数据库中实现一致性意味着写入一些任意数据将使该数据立即可用于对该数据的所有后续读取。

对于像单个关系数据库节点这样的小型整体架构,这很容易实现。然而,对于大规模的分布式 NoSQL 体系结构来说,如果不是不可能的话,也是极其困难的。

有哪些选项可以实现 NoSQL 服务的一致性——这看起来很重要吗?

组织应该在尝试实施更强的一致性或完全 ACID 合规性之前,评估其数据库架构的主要使用情形。

如果数据库是社交媒体平台的后端,那么强一致性可能不是很重要。来自一个用户的帖子不需要立即被所有其他用户看到。

相反,在敏感、受监管驱动的环境中,如银行业,高度的一致性和完全的 ACID 合规性至关重要。反映借项或贷项的交易需要立即得到继续交易的重视,否则将会发生代价高昂的会计错误。

下表列出了每项服务可用的一致性选项:

服务

一致性选项

AWS DynamoDB

| -最终一致
-强烈一致 | GCP 大表 |
| --- | --- |
| -最终一致
-读您的写操作一致
-非常一致 | 数据存储模式下的 gcp 风暴 |
| -非常一致 | 天蓝色宇宙数据库 |
| –五个定义的级别 | 所有的提供者都提供了很强的一致性作为配置选项,但是它有一些警告。强一致性对计费写入使用具有倍增效应,尤其是在多个群集、碎片或区域的情况下。它还会影响延迟和整体数据库性能,因为每次写入都必须成功执行多次,操作才能被视为“完成”,数据才能用于后续读取。组织应该仔细关注用例、典型的工作负载形式,以及性能权衡是否值得。 |
| 自托管 | 有几个非常强大的第三方 NoSQL 解决方案可用于自托管。 |

对于键值存储,Redis 是一个非常受欢迎的解决方案。

MongoDB 和 CouchDB 是众所周知且广泛使用的文档数据库。

对于宽列风格的数据库,Apache 提供了 HBase 和 Cassandra。

  • 与之前讨论的托管解决方案相比,它们是否有任何潜在优势?

  • 自托管解决方案的主要且明显的优势是最大限度地减少了供应商锁定。任何提供普通计算实例的云提供商都可以作为自托管的潜在平台。组织可以选择具有最合适的生态系统和价格的提供商,并迁移其现有解决方案,而无需昂贵的重新培训和定制。

  • 拥有现有 NoSQL 部署的组织可能会发现移植到托管解决方案的成本和复杂性太高,从而失去了在维护和性能调整方面积累的数据和知识。

对于希望部署首个 NoSQL 基础架构的组织来说,托管服务更具吸引力。操作和管理负担完全由提供商来处理,这对于缺乏资源来部署和维护数据库集群的精简工程团队来说尤其有利。

考虑到这两种方式都会产生带宽成本,在大多数情况下,利用提供商及其托管产品的现有工程智慧是有意义的。

底线是:哪个 NoSQL 服务是最好的?

哪个 NoSQL 服务最好?这是一个两部分的回答。

从价格效率和周边提供商服务生态系统的实力来看,DynamoDB 是最好的 NoSQL 服务。用户可以以非常低的成本利用 DynamoDB 的性能,选择预先配置,或者在他们拨入工作负载时按需配置。可以启用像强一致性和事务这样的特性,为需要关系产品稳定性的组织提供灵活性。

然而,这并不意味着其他产品不值得一看。

数据存储模式下的 GCP Firestore 对于需要构建快速、可扩展 MVP 的小型团队来说极具吸引力,因为它与其他 GCP 管理的产品(如 App Engine)相集成。

GCP Bigtable 支持谷歌的一些最大的服务,如 GMail 和 YouTube,应该值得需要快速流式传输、存储和分析 TB 和 Pb 数据的团队考虑。

Azure Cosmos DB 将 NoSQL 带入了更传统的混合企业世界,因为许多 Azure 客户通常集成云和本地解决方案。Cosmos DB 在数据模型和支持的数据类型方面提供了广泛的灵活性,因此现有的 Azure 客户可以根据需要访问强大的 NoSQL 解决方案,并可以利用传统的 SQL 查询来访问 NoSQL 后端。

  • 像任何技术选择一样,总会有权衡,但在大多数情况下,最佳选择将是 DynamoDB。

  • 获得更好职业所需的技能。

  • 掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。

查看更多 NoSQL 数据库阅读


关于作者

迈克·范布斯柯克是首席 DevOps 工程师和技术内容创作者。他曾与世界上一些最大的云计算、电子商务和 CDN 平台合作过。他目前的重点是云优先架构和无服务器基础设施。


Check out more NoSQL Database Reads

About the Author

Mike Vanbuskirk is a Lead DevOps engineer and technical content creator. He’s worked with some of the largest cloud, e-commerce, and CDN platforms in the world. His current focus is cloud-first architecture and serverless infrastructure.

比较 GitHub 行动与 Jenkins: CI 摊牌

原文:https://acloudguru.com/blog/engineering/comparing-github-actions-vs-jenkins-ci-showdown

GitHub Actions 和 Jenkins 哪个更好?看情况!在本帖中,我们比较和对比了 Jenkins 和 GitHub 的操作和聊天用例,这样你就能感觉到哪种 CI 工具最适合你的需求。

CI/CD 已经从科技巨头的时髦词汇变成了许多软件开发公司的主要产品。但是,就像决定迁移到云(或者决定让你蹒跚学步的孩子给你穿衣服)一样,决定采用 CI/CD 意味着你需要做出许多后续决定。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


为了迁移到云,您需要选择—至少—一个云提供商。(对于为你挑选衣服的蹒跚学步的孩子,你需要问自己一些艰难的问题:你是如何走到今天这一步的。)当您决定采用 CI/CD 时,您将需要选择一个工具,而且有很多这样的工具,看起来每年都在增加。

GitHub 行动 vs Jenkins

因此,让我们比较和对比 CI 工具领域的两个强国:Cloudbees 的 Jenkins,该领域的开拓者之一,以及 GitHub Actions,由那些将社交媒体的令人上瘾的快感引入版本控制的人带给您的。

我们将从四个方面进行比较:开发者体验、安全性、操作复杂性和成本。我们不会挑选一个赢家(抱歉),因为最终,最适合的取决于具体情况。但是我们强调优势,并将它们与具体的用例联系起来,这样你就可以知道什么对你最有意义。

开发者体验

首先,我们有开发经验。“什么是开发者体验?“你可能会问。

简单地说,开发者体验是 UX,但是对于开发者来说。你的团队对使用这个工具有什么看法?好学吗?错误信息是否清晰?有社区支持吗?

詹金斯已经存在 10 多年了。它拥有数量惊人的各种工具和框架的社区插件。几乎任何你能想到需要做的事情,都有一个插件。

所有这些插件的缺点是,有时试图找到对你有用的东西会感觉像用弯刀在丛林中穿行。此外,Jenkinsfiles 是用 groovy 编写的,如果你对它感到满意的话——groovy。但是我已经看到许多新的开发人员在为它而奋斗——特别是如果他们不经常使用 Java 的话。

另一方面,GitHub Actions 没有多年的迭代和强大的社区支持档案。然而,用户创建的社区动作可以支持广泛的用例。

Community Actions 方法的缺点是,它将开源解决方案的使用限制在作业中运行的步骤,而不直接支持围绕安全性、成本或分析的其他潜在增值产品。GitHub 动作工作流是用 YAML 编写的,这在如今的 DevOps 工具中似乎更常见,对于新手来说也更容易掌握。

因此,如果说詹金斯有时可以是一片郁郁葱葱的丛林,那么 GitHub 的行动就像一个有围墙的花园。

安全

Jenkins 和 GitHub 操作的安全考虑有很多重叠。您带入环境的每个开源解决方案都需要经过独立审查。

GitHub Actions 有一些额外的注意事项。GitHub 有两种截然不同的风格:GitHub Enterprise 和 GitHub.com。

  • GitHub Enterprise 是一个在您自己的环境中运行的服务器,与您运行 Jenkins 服务器的方式类似。

  • GitHub.com是更知名的 SaaS 产品。有了 GitHub.com,你不需要担心更新和修补服务器,但是任何 GitHub 用户都可以创建一个公共存储库的 pull 请求。这可能允许恶意用户针对您的存储库运行他们的代码。这可能会耗费资金、影响环境并泄露机密。这是公共存储库的权衡——当向社区征求反馈时,你得到了好的,需要减少坏的。


观察:后 COVID DevOps:加速未来 COVID 如何影响——甚至加速——工程团队的 DevOps 最佳实践?观看与 DevOps 领导者的免费点播小组讨论,我们将探索后 COVID 时代的 DevOps。


操作复杂性

运营复杂性是指该工具将使用运营/基础架构团队的多少带宽。

对于这个类别,Jenkins 和 GitHub Enterprise 处于同一条船上:两者都需要管理托管工具的服务器(补丁、更新、备份等),以及管理将实际执行作业的运行程序或节点。

另一方面,GitHub.com 的运营成本非常低。由于平台和运行者都由 GitHub 管理,所以不需要管理服务器。如果你愿意,你可以在 GitHub.com 上使用你自己的定制跑鞋,有一些令人信服的使用案例,但这不是必需的。

成本

Jenkins 和 GitHub 的行动都可以从很低的成本开始,但是如果你没有一个合适的策略,成本会迅速上升。

当然,成本不仅仅是你每个月从供应商那里得到的账单。如果一个工具需要 20 个资源小时来维护,那就是成本。如果新员工在开始编码之前需要花一周时间学习如何使用这个工具,那就是一个成本。如果一个过时的开源插件导致了数据泄露,那就是代价。

因此,当最小化成本时,通常最好采取比本节所涵盖的更广泛的视角。

Jenkins 是完全开源的,因此您可以将其安装在服务器上并开始使用。您可以添加工作节点、开源插件和第三方集成,并获得一个强大的 CI/CD 解决方案,而无需支付超过运行一切的服务器的成本。然而,Cloudbees 确实提供了一些具有潜在价值的增强功能的企业选项。

另一方面,Github.com 不提供开源选项,它根据任务运行的分钟数收费。GitHub 免费账户持有人每月获得免费分钟的预算,这有利于学习,或支持一两个个人项目,但一旦预算耗尽,成本会迅速增加。您可以使用自定义运行器来降低成本,同样,您只需支付底层服务器的成本,但这会增加您的操作复杂性。

哪种 CI 工具适合您?

在竞争情报工具的战争中,没有失败者。(所以希望这意味着我们都是赢家?)

GitHub Actions 和 Jenkins 都可以为您的项目添加许多 CI 优点,但它们以有意义的不同方式来做。选择最适合您的工具将使添加 CI 的过程变得更加容易,并且您将更快地看到附加价值。

要了解更多关于 GitHub Actions 的信息,请查看新的 GitHub Actions 深度课程。或者,如果你认为 Jenkins 可能是你的工具,你可以通过 ACG 的通过做系列动手实验或我们的 Jenkins 基础课程来了解更多关于 Jenkins 的信息。

无论哪种方式,玩得开心,并自动化所有的事情!


获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。

合规很麻烦,但云可以帮助

原文:https://acloudguru.com/blog/business/compliance-is-cumbersome-but-cloud-can-help

云如何解决您的合规难题

任何曾经从事法规遵从性工作的人都可以证明这样一个事实,即它可能是繁琐和乏味的。它经常涉及截图、电子表格和其他低效(也不那么令人兴奋)的活动。

但是,云如何改变传统的合规性和安全性方法呢?最大限度地发挥云的功能如何为您的组织节省时间、减轻压力,并减少不遵从法规的潜在影响?让我们看一看。

什么是共同责任模式?

对于云消费者而言,与合规性相关的主要优势之一是共享责任模型(SRM)。

共享责任模型创建了一个场景,在这个场景中,消费者不再对其适用框架中的全部安全控制负责。相反,有些是由云服务提供商(CSP)满足的,有些是 CSP 和消费者之间的共享控制,有些是留给消费者的。

利用云服务产品的组织可以继承这些控制。这非常有帮助,尤其是对于没有强大基础设施、IT/网络安全人员和预算的 SMB(中小型企业)。

许多这些法规遵从性控制等同于财务投资、费用以及时间和人员的资源分配。通过利用共担责任模式,您可以依靠 CSP 并利用他们所做的大规模投资,在可以想象的每种合规框架下为全球成千上万的客户提供服务。


Cloud Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数百万份回复,找出了最容易让团队出错的术语和概念。在本云指南中,您将找到一些最令人头疼的云术语的简明定义。


IaaS 和合规性

例如,在基础架构即服务(IaaS)模式中,组织不再需要关注底层物理基础架构、硬件及其相关的安全控制。

PaaS 和合规性

从更高的层面来看,在平台即服务(PaaS)中,组织不仅可以利用托管服务来避免关注底层硬件,还可以避免关注操作系统及其相关的补丁和更新周期,这对于许多组织来说是一件麻烦的事情,而且利用有补丁可用的漏洞也是常见的事情。

SaaS 和合规

最后,在软件即服务(SaaS)层,客户不必担心基础设施、操作系统或软件开发,他们只需使用可用的软件来支持他们的业务活动。消费模型中的每一层抽象都伴随着更少的控制和更少的责任,这是组织必须根据其风险承受能力做出的重要考虑。

客户可以找出哪些云服务产品和功能符合他们的合规性框架,并在他们认为合适的时候利用它们来为他们的组织设计解决方案。鉴于我们在过去几年中看到的大多数云数据泄漏和违规都发生在共享责任模型的客户端,由于客户的错误配置,客户应该依靠 SRM 并最大限度地发挥 CSP 为他们提供的价值,而不是专注于他们组织的核心能力和业务活动。


State of Cloud '21

2021 年云状态网上研讨会 没人能预测未来,但我们请了一组非常聪明的云专家来试试。Jassy 升任亚马逊 CEO 对 AWS 来说意味着什么?今年是多云之年吗?我们生动活泼、未经过滤的小组在今年的免费点播网上研讨会中发表了意见。


模板和 IaC 简化了合规性

AWS、Azure 和谷歌云(GCP)等大型通信服务提供商专门定制产品,以帮助加快和减轻客户的合规负担。

CSP 正在制作包含云特定输入的策略文档模板,消费者可以使用这些模板并填充其组织数据,以支持满足特定的合规性框架。这种文档通常非常耗时费力,能够利用模板有助于减轻一些负担。

在云中,基础设施和架构正在迅速变成代码。这是通过 HashiCorp 的 Azure Blueprints、 AWS CloudFormation 和 Terraform 等产品以及其他与 CSP 无关的选项实现的。(障碍 ACG 的终极地形小抄顺便了解更多。)

因为基础设施和架构现在是代码,包括版本控制和可审计,所以它也是可移植的。

通信服务提供商和第三方可以提供基础设施即代码(IaC)模板,以快速构建符合各种法规遵从性框架的面向法规遵从性的架构,让客户只需使用、配置和运行即可。这大大减少了从零开始定制架构和实施环境以符合法规遵从性安全控制所需的时间。

它还可以帮助那些没有大量 IT/网络安全专业知识,但迫切需要一个与其适用的法规遵从性框架相一致的体系结构和运行环境的组织。


将您的团队提升到云知识的共同水平!借助我们的加速云支持计划,更快地扩展您的数字化转型学习。


什么是法规遵从性?

构建在 IaC 之上的是所谓的法规遵从性(CaC)。CaC 通常意味着将您的法规遵从性要求定义为一种机器可读的语言,这种语言可以在您的整个企业环境中自动部署、测试、监控和报告。

这使您能够准确地知道发生了什么,存在哪些合规性偏差,如果采取进一步措施,会自动纠正与所述合规性要求的偏差。这将通常以 PDF 和健壮的策略文档的形式存在,并将它们与大多数组织迅速采用的技术堆栈集成。考虑到需求和控制被集成到代码库中,而不是存在于许多人永远不会去阅读或熟悉的文档中,这确保了更高的遵从可能性。


Watch: Kubernetes + Azure,哈希公司之道
你有没有想过创造一种标准化的方式来安全地部署你的应用?在 Azure 上使用 HashiCorp 堆栈是一个很好的起点。查看这个免费的点播网络研讨会了解更多信息!


什么是参考架构?

除了客户可以快速提供的 IaC 模板,AWS、Azure 和 GCP 还提供参考架构,供客户在构建自己的架构时使用。

这一指导来源对客户极具价值,并提供了来自超大规模提供商的见解,这些提供商之前已帮助数千客户构建了针对特定合规性框架定制的环境。这些体系结构通常包括各种领域的最佳实践,如运营、弹性、成本优化和安全性。

随着组织越来越多地采用持续集成/持续部署(CI/CD)管道作为提升代码和供应基础设施的方式,您也可以将安全扫描直接集成到管道中,以便在不安全的配置和合规性偏差被供应到环境之前就将其捕获。

当我们谈论“向左转移安全”时,这类活动是这一过程的缩影。如果从一开始就阻止漏洞进入环境,就可以减少要扫描、跟踪和补救的漏洞数量。

云正在打破传统合规范式的一个最有价值的领域是按需 API 驱动的架构和环境。

在传统的内部合规性活动中,您通常需要借助采样和屏幕截图等技术来评估被评估的系统,并证明配置和设置符合合规性要求。这非常耗时、低效,而且最重要的是,不能完全保证环境符合法规遵从性控制(因为您只是对环境的一个子集进行了采样)。

在云中,这些环境是 API 驱动的,这意味着您可以随时按需评估它们的合规性和安全状况,涵盖您的目标或感兴趣的所有系统。通过使用诸如 AWS Config 或 Azure Monitor/Azure Security Center 之类的服务,您可以评估您的资源和环境配置是否符合您选择的特定框架。

更进一步,您不仅可以通过调用按需查询合规性,还可以实现通知和自动补救(如果需要的话),将不合规的配置恢复到合规状态。这确保了如果有人无意或恶意地更改了配置,从而改变了您环境的合规性(或安全状况),您可以自动将这些更改恢复到合规和安全的状态。

不再需要截图、取样,也不再需要手动干预来恢复合规和安全的环境。相反,最大限度地利用 API 和事件驱动的架构,再加上自动化,以确保合规性和安全性。

鉴于合规性框架通常与基本和关键的安全控制措施相关联,自动修复不合规的资源和配置是缩小由于易受攻击的配置的错误配置而导致的攻击窗口的绝佳方式。


The ROI Report: How the Cloud Helps You Grow

云 ROI:云技能如何产生实际回报 我们分析了来自近 100 家公司的信息,以确定承诺对云成熟度的影响。在本指南中,看看企业投资云技能和技术能获得多少价值。


探索潜在的云合规性解决方案

领先的通信服务提供商(如 AWS 和 Azure)已经围绕值得探索的合规性构建了强大的产品,以及新兴的第三方 SaaS 产品(如 ByteChek ),它们将不同的行业专业知识和多云集成结合起来,真正为客户提供价值。

  • AWS 开发了所谓的 一致性包 。这些是 AWS 配置规则以及补救操作的集合,您可以将其作为单个实体轻松部署到您的 AWS 帐户、区域和 AWS 组织中。这些是 YAML 模板,包含各种 AWS 管理的和自定义的规则和补救措施。模板包括对 CIS、DoDs 新兴 CMMC、FedRAMP、NIST 800-53、HIPAA、AWS 自己的运营/安全最佳实践等框架的控制。

  • AWS 最近还推出了 AWS 审计管理器 ,有助于持续审计 AWS 使用情况,收集证据,减少人工工作。它可以利用预先构建的框架,如 FedRAMP、GDPR、Nist 800-53、CIS 基准等,以及您根据个人组织的需求定制的自定义框架和控件。然后可以使用它来创建审计就绪的合规性报告。

  • Azure 的安全中心 已经开发了所谓的“监管合规仪表板”这显示了您对选定合规性标准及其所有相关要求的合规性,并映射到适用的安全评估。您不仅可以在 UI 控制面板中查看合规性,还可以下载 PDF 报告,记录您当前对 SOC、CIS、PCI DSS、NIST 800-53 等各种框架的合规性状况。然后,您可以解决不符合项,以提高您的符合性得分。

  • 在非 CSP 方面,像 ByteChek 这样的组织正在提供面向多云的解决方案。他们建立了一个为审核员和被审核组织量身定制的平台。它内置了自动化就绪性评估,与 AWS 和 Azure 集成,从您的环境中收集安全和合规相关信息,并与 Slack、JIRA 和其他工作流平台集成,使协调合规流程变得更容易。ByteChek 提供了一个单一的平台,让您可以构建、管理和评估您的网络安全计划,并完成您的 SOC 2 审计,所有这些都来自一个单一的平台。ByteChek 还在为国防部的网络安全认证成熟度模型(CMMC)、NIST 800-171、NIST CSF、NIST 800-53、HIPAA 和其他合规框架构建评估能力。


云技能评估

利用云专家的 IT 技能评估来规划您的组织的合规性,并向云流畅度迈出第一步!


云中的法规遵从性:一个新的范例

云已经打破了许多传统的业务和组织活动方式。服从也不会有什么不同。通过引入共享责任模型、基础架构即代码、模板化和 API/事件驱动的架构,法规遵从性将会看到影响该领域的众多创新和效率

组织可以利用这些创新来节省时间、金钱和压力。这让他们可以更专注于自己的核心竞争力、使命和更好地服务客户,同时利用云计算来做到这一点。

利用上面讨论的一些技术、方法和能力,可以为开发人员和系统所有者,以及审计人员和遵从专业人员带来好处。

在系统所有者方面,组织可以自动化并加快其大部分架构部署和内部评估活动,从而提高其安全状况和合规性的可见性。

从审计员和法规遵从性 SME 的角度来看,他们可以避免与组织合作时涉及的大量手工操作。他们可以利用 CSP 本地或第三方工具,而不是要求屏幕截图和肩扛冲浪,而是要求自动报告合规性。

随着数据泄露和网络安全事件的增加,我们可能会看到更多的合规性框架、要求和严格性出现在组织和各种行业中。考虑到这一现实,组织应该寻找改进安全活动和减轻法规遵从性负担的方法,通过利用创新技术来改善安全状况。利用上述解决方案就是这样做的一个例子,所有这些都是由云驱动的。

关于作者

Chris 拥有近 15 年的 IT/网络安全经验。这包括美国空军的现役时间、美国海军和总务管理局(GSA)的公务员以及在私营部门担任顾问的时间。

此外,他还是首都科技大学和马里兰大学全球校区网络安全硕士项目的兼职教授。Chris 还参与了行业工作组,例如云安全联盟事件响应工作组。

Chris 拥有各种行业认证,例如来自 ISC2 的 CISSP/ CCSP 认证,以及来自 AWS 等领先云服务提供商的超过 8 项认证。他定期咨询各行业的 IT 和网络安全领导者,以帮助他们的组织完成云迁移之旅,同时将安全性作为这一转型的核心组成部分。

Chris 目前在 Oteemo 工作,他是美国空军 Platform One 计划的云安全 SME,并与 Oteemo 团队中专门研究云和数字化转型加速的其他成员一起,为其他公共和私营部门组织提供云原生安全最佳实践方面的咨询

计算比较:AWS vs Azure vs GCP

原文:https://acloudguru.com/blog/engineering/compute-compared-aws-vs-azure-vs-gcp

在这篇文章中,我们的云提供商比较系列的一部分,我们将帮助涵盖 AWS、Azure 和 GCP 提供的云计算选项的相似之处和不同之处。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


什么是计算机?

计算通常是组织为开始云计算而部署的第一批资源之一。在这篇文章中,我们研究了亚马逊网络服务(AWS)、微软 Azure 和谷歌云平台(GCP)的可用计算选项。

如果你在 IT 行业工作过一段时间,你可能对服务器很熟悉。多年来,它们已经从独立的白盒发展到耗电的超高密度计算机堆,可以使房间比太阳还热(如果冷却不当)。

随着时间的推移,我们在硬件上虚拟化了操作系统,以提高服务器密度并更好地利用硬件。

自然的发展是将这些服务器迁移到云中,消除管理电源、冷却和服务器硬件附带的所有任务的需要,从而解放 IT 专业人员,让他们从事为组织增加价值的重要工作。还有看猫咪视频。

如果你想了解 Azure、亚马逊网络服务和谷歌云平台是如何实现这些计算资源的,请继续阅读!

计算机入门

在我们开始比较之前,让我们先快速了解一下平台即服务(PaaS)和基础架构即服务(IaaS)。了解这一点很重要,因为对于在云中部署服务的这两个选项,管理责任是不同的。

IaaS 服务的一个例子是将 web 服务器部署到云提供商来托管网站,而将网站部署到托管的 web 服务是使用 PaaS 服务的一个例子。

分担责任模式

共享责任模型概述了谁负责管理云中部署的服务的不同方面。例如,在 Azure 上部署 IaaS 服务器时,组织不必担心物理服务器和虚拟化软件,但是,操作系统补丁和软件更新仍然是持续管理的一部分。

在谈论云计算和云服务时,理解这一点很重要,因为在大多数情况下,计算是一种 IaaS 服务,大部分管理责任落在客户身上。

计算选项

IaaS 计算的核心是所提供的虚拟机大小,具体的大小和功能会随着每个提供商的不同而不断变化。

AWS 有弹性云计算或 EC2。

GCP 称他们的服务为计算引擎。

  • Azure 有虚拟机来提供计算资源,类似于我们都喜欢的本地虚拟机。
  • 接下来,我们将探讨每种产品的大小和性能选项,以及每家提供商的操作系统、可用性和可扩展性以及一些成本节约选项。
  • 让我们从概述每种产品的性能选项开始。

自动警报系统

Amazon EC2 为常见工作负载提供了通用虚拟机,为需要高性能处理的应用程序提供了计算优化类型,为受益于大量内存的应用程序(如在内存中处理数据的应用程序)提供了内存优化选项。

AWS 还为硬件加速处理提供了加速计算选项,利用 GPU 和存储优化选项处理需要对数据集进行高顺序读写访问的工作负载。

  • 此外,它还支持突发性能实例,这对于具有较低基准 CPU 使用率的应用程序来说是一个经济高效的选择。
  • 谷歌云
  • GCP 计算引擎还支持通用虚拟机和计算优化,可为每个 CPU 内核提供高性能。

有一个内存优化选项和加速虚拟机,就像 AWS 一样,还有一个共享核心或可突发虚拟机选项。

  • 在发布时,GCP 没有提供存储优化选项。
  • 微软 Azure
  • 就像其他人一样,Azure compute 提供了类似的通用虚拟机以及计算和内存优化虚拟机。加速器优化的虚拟机称为 GPU 类型。

Azure 提供了一个存储优化的虚拟机,以及针对不需要一致访问 CPU 的工作负载的突发选项。

  • 支持的操作系统
  • 让我们来看看每个提供商提供的不同类型的操作系统。不同的云提供商支持的操作系统略有不同。这三家公司都为 Windows 和 Linux 发行版的多个版本提供了现成的映像。

此外,AWS 提供 Mac OS。在 Azure 中,支持 Windows 10 的多用户版本,被恰当地称为 Windows 10 多用户。

Let’s move on the different types of operating systems available with each provider. The supported operating systems differ slightly between cloud providers. All three offer ready to use images for multiple versions of Windows and Linux distributions.

所有供应商都为各种各样的 Linux 发行版提供映像。一些提供商提供他们自己风格的 Linux,比如 AWS 和 Amazon Linux。具体的发行版本因提供商而异。

保持服务的可用性非常重要,在云中运行服务在服务部署的方式和位置方面提供了更大的灵活性。接下来让我们看看可用性和可伸缩性的选项。

可用性和可扩展性

每个云提供商跨地区分配工作负载。作为一个或多个数据中心分组的区域。如果一个区域出现故障,跨区域分布工作负载可以提供高可用性。

每个区域被分成多个独立但连接良好的区域。请将这些视为位于同一城市的独立数据中心。它们在 GCP 被称为“区域”,在 Azure 和 AWS 被称为“可用区域”。

规划云中的计算服务时,区域和分区非常重要,原因有二。

首先,它们提供高可用性。如果工作负载分布在多个地区和区域,应用程序或服务在某个地区或区域出现故障时具有弹性。

区域还允许我们将工作负载放在离客户更近的地方。延迟是影响应用程序性能的一个因素。在我们能够改变物理定律之前,在云中部署计算和其他服务时,物理位置将是一个考虑因素。

  • Azure、GCP 和 AWS 都提供多个地区和区域,但不是每个地区都支持每种类型的虚拟机。一些应用程序,如机器学习或季节性订单处理,受益于随着负载的增加而动态增加虚拟机的数量。
  • 在需要时向资源池动态添加更多节点并在不使用时取消分配这些节点的能力按需提供容量,同时在不需要资源时降低成本。

自动警报系统

对于这种类型的工作负载,Amazon EC2 提供了自动扩展功能,允许 EC2 实例的数量随着需求的增加而自动扩展,当需求减少时,这些实例的数量会自动缩减。这可以根据 CPU 利用率等指标来完成。

EC2 还提供了一个称为机群管理的特性,它通过自动替换不健康或不可用的实例,将自动伸缩扩展到维护可用性。

  • 此外,预测性扩展使用机器学习来根据使用模式预测和添加容量。
  • 自动扩展在多个区域中可用,在 AWS 中称为“可用区域”。
  • 谷歌云
  • GCP 有称为“托管实例组”或“MIG”的虚拟机组。MIG 可以作为单个实体进行管理。它支持自动扩展,根据负载增加或减少虚拟机实例的数量。扩展策略由 CPU 利用率、容量或负载平衡器或自定义指标设置。

基于计划的自动扩展也是一个选项,GCP 可在已知工作负载增加时增加容量。

  • 另一个称为自动修复的选项可以重新创建未通过运行状况检查的虚拟机。
  • 托管实例组可以部署到单个区域,也可以跨同一区域的多个区域部署。
  • 微软 Azure
  • Azure 和其他虚拟机一样,提供了一个由相同虚拟机组成的集中管理的池,称为“规模集”。

通过基于虚拟机利用率的自动扩展策略,一个扩展集的虚拟机数量可以自动增加和减少。自动扩展计划可以根据预期的高利用率时间进行扩展和缩减。自动实例修复选项可以修复比例集中不可用的失败实例。

  • 规模集可以部署在 Azure 的可用性区域中,以实现跨区域的高可用性。
  • 批准
  • 我们谈了很多硬件,但是软件呢?让我们继续讨论许可虚拟机上运行的操作系统的选项。

使用开源 Linux 服务器,您只需为使用操作系统的虚拟硬件付费。

对于 Windows 操作系统,可以选择为服务器操作系统和硬件付费。这使得 Windows 虚拟机的成本高于可比的 Linux 虚拟机。然而,将许可证附加到虚拟机的优点是虚拟机符合微软许可。

  • 拥有 Microsoft 批量许可和有效软件保障合同的组织可能有资格获得混合使用权益。这是一个自带许可证选项,将现有的 Microsoft 批量许可混合使用优势应用于虚拟机。虚拟机的价格与 Linux 虚拟机的价格相当。
  • 看点:解决“没有经验”的云招聘问题
    没有工作是得不到经验的。但是谁会雇佣没有经验的你呢?谜题!观看这一免费的点播网络研讨会,进行关于云计算职业发展的小组讨论,并获得您的第一份云计算工作。

费用


Windows 和 Linux 虚拟机还有其他省钱的选择。对于在给定时间内运行虚拟机的某些承诺,每个提供商都有办法降低虚拟机的成本。


对于 GCP,承诺使用折扣提供高达现收现付价格 70%的折扣,以及一年或三年的承诺使用折扣。

AWS 和 Azure 都有一个类似的选项,叫做保留实例。保留实例对承诺一年或三年服务的虚拟机价格进行折扣。

  • Azure、AWS 和 GCP 的另一类虚拟机提供了很高的折扣,在某些情况下高达 90%,但有一个条件。当提供商需要额外服务的容量时,可以随时关闭它们。对于无状态和容错的应用程序来说,这是一个很好的选择,这些应用程序可以在资源重新联机后被中断和恢复,或者在不需要生产环境可用性的开发测试环境中。
  • 在 GCP,这些被称为可抢占的虚拟机实例。
  • 在 AWS 和 Azure 中,这些被称为 spot 实例。
    • 对于不需要持续访问 CPU 的应用程序,还有另一种选择。这些虚拟机类型适用于偶尔会有突发活动的空闲工作负载。
    • 在 GCP,这些被称为共享核心虚拟机。共享核心虚拟机在物理处理器上使用时间片,并允许短时间内的条件突发。

Azure B 系列和 AWS T 实例具有类似的功能。它们提供基准 CPU 周期,虚拟机在低利用率期间建立信用。然后,该信用可用于高 CPU 使用率时期。基准和信用量取决于虚拟机系列的具体规模。

  • 有时,您甚至不需要虚拟机全天候可用。例如,开发和测试环境或者只是偶尔运行的批处理。这三个提供者都可以选择停止和终止正在运行的虚拟机。这将从服务中取消分配虚拟机,并停止相关收费。其他相关费用,如光盘存储仍然适用。
  • AWS 和 GCP 都提供了另一种选择:暂停正在运行的 VM 的能力,在 AWS 中称为“休眠”,在 GCP 称为“挂起”。该选项暂停虚拟机,保留内存状态和相关设置,如 IP 地址,有点像合上笔记本电脑的盖子。

这三家提供商都提供了各种各样的虚拟机大小和选项,以满足任何项目的需求。除了大小,还有保留实例、共享和可突发 CPU 以及自带许可的成本节约选项。

寻找关于在云中运行应用程序的更多信息?开始免费试用或查看本月的免费云培训。你也可以在 YouTube 上订阅一位云专家的每周云新闻,像我们一样关注脸书,在 Twitter 上关注我们,并加入 Discord 上的对话。

All three providers offer a wide variety of VM sizes and options to fit the needs of any project. Along with the size, there’s also cost-savings options with reserved instances, shared and burstable CPUs, and bring your own licensing.


Looking for more information on running applications in the cloud? Start a free trial or check out this month’s free cloud training. You can also subscribe to A Cloud Guru on YouTube for weekly cloud news, like us on Facebook, follow us on Twitter, and join the conversation on Discord.

Bash If 语句和脚本——Linux 备忘单

原文:https://acloudguru.com/blog/engineering/conditions-in-bash-scripting-if-statements

如果你使用 bash 来编写脚本,你无疑将不得不大量使用条件,例如一个 if … then 构造或者一个 while 循环。学习和使用这些条件的语法似乎有点令人生畏。本教程旨在帮助读者理解 bash 中的条件,并提供了一个全面的可能性列表。假设有少量的一般 shell 知识。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


难度: 基础–中等

什么是 Bash 脚本?

在我们开始之前,让我们确保我们都在同一页上。什么是 Bash 脚本?思考 Bash 脚本的一个简单方法是将它们想象成电影脚本。他们告诉演员在什么时候说什么,对吗?Bash 脚本告诉 Bash 在什么时候做什么。

Bash 脚本是一个简单的文本文件,包含一系列我们希望自动运行而不是手动运行的命令。

要记住的一件事很容易忘记:当编写自己的 Bash 脚本时,在我们试图调整脚本之前,必须记住设置文件的 execute 位。

Bash 中使用的常见特殊字符

| “”或“” | 表示空白。单引号保留字面意思;双引号允许替换。 |
| $ | 表示扩展(用于变量、命令替换、算术替换等。) |
| \ | 转义字符。用于去除特殊字符的“特殊性”。 |
| # | 评论。该字符之后的任何内容都不会被解释。 |
| = | 分配 |
| [ ]或[[ ]] | 测试;评估 true 或 false |
| ! | 否认 |
| >>, >, < | 输入/输出重定向 |
| | | 将一个命令的输出发送到另一个命令的输入。 |
| *或者? | 全局字符(又名通配符)。?是单个字符的通配符。 |

Bash 编程简介

Bash 具有许多内置的检查和比较功能,在许多情况下非常方便。您可能以前见过类似下面这样的 if 语句:

if [ $foo -ge 3 ]; then

本例中的条件本质上是一个命令。这听起来可能很奇怪,但是用方括号将比较括起来与使用内置的测试命令是一样的,就像这样:

if test $foo -ge 3; then

如果$foo 等于 3,那么将执行“then”之后的块。如果您一直想知道为什么 bash 倾向于使用-ge 或-eq 而不是> =或==,那是因为这种条件类型源于一个命令,其中-ge 和-eq 是选项。

这就是 if 本质上所做的,检查命令的退出状态。我将在教程中进一步详细解释。还有更特定于 shells 的内置检查。这个怎么样?

if [ -f regularfile ]; then

如果文件‘regular file’存在并且是常规文件,则上述条件成立。常规文件意味着它不是块或字符设备,也不是目录。这样,你就可以在使用它之前确保一个可用的文件存在。你甚至可以检查一个文件是否可读!

if [ -r readablefile]; then

如果文件“readablefile”存在可读,则上述条件成立。很简单,不是吗?

bash if 语句的语法

if … then 语句的基本语法如下:

if *<condition>*; then*<commands>*fi

根据其类型,条件被某些特定的框包围,例如[ ]。你可以在教程中进一步了解不同的类型。您可以使用 else 关键字添加在条件为假时要执行的命令,如果主条件为假,则使用 elif (elseif)关键字在另一个条件下执行命令。 else 关键字总是排在最后。示例:

if [ -r somefile ]; then        content=$(cat somefile)elif [ -f somefile ]; then        echo "The file 'somefile' exists but is not readable to the script."else        echo "The file 'somefile' does not exist."fi

这个例子的简短说明:首先我们检查文件 somefile 是否可读(“if [ -r somefile ]”)。如果是这样,我们把它读入一个变量。如果不是,我们检查它是否确实存在(“elif [ -f somefile ]”)。如果这是真的,我们报告它存在,但不可读(如果是,我们会阅读内容)。如果文件不存在,我们也会报告。只有当【T2 if 的条件为假时,才会执行 elif 的条件。属于 else 的命令仅在两个条件都为假时执行。


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数百万份回复,找出了最容易让学生出错的术语和概念。在这个云指南中,你会发现一些最令人头疼的云术语的简洁定义。


bash 条件的基本规则

当您开始编写和使用自己的条件时,有一些规则您应该知道,以防止出现难以跟踪的错误。下面是三个重要例子:

  1. Always keep spaces between the brackets and the actual check/comparison. The following won’t work:

    if [$foo -ge 3]; then
    

    Bash 会抱怨一个“丢失的”。

  2. 在输入一个新的关键字如“then”之前,总是终止该行。单词 ifthenelseeliffi 是 shell 关键字,意思是不能共用一行。放一个“;”在前面的语句和关键字之间,或者将关键字放在新行的开头。如果不这样做,Bash 将抛出类似“意外标记` fi '附近的语法错误”的错误。

  3. It is a good habit to quote string variables if you use them in conditions, because otherwise they are likely to give trouble if they containspaces and/or newlines. By quoting I mean:

    if [ "$stringvar" == "tux" ]; then
    

    有些情况下你不应该引用,但这种情况很少见。在本教程的后面部分,您将会看到其中的一个。

此外,了解以下两点可能会有所帮助:

  1. You can invert a condition by putting an “!” in front of it. Example:

    if [ ! -f regularfile ]; then
    

    请务必放置“!”在括号里!

  2. You can combine conditions by using certain operators. For the single-bracket syntax that we’ve been using so far, you can use “-a” for and and “-o” for or. Example:

    if [ $foo -ge 3 -a $foo -lt 10 ]; then
    

    如果$foo 包含大于或等于 3 的整数且 L ess T han 10,则上述条件将返回 true。您可以在各自的条件语法中阅读更多关于这些组合表达式的内容。

另外,还有一件基本的事情:不要忘记条件也可以用在其他语句中,比如 whileuntil 。解释这些超出了本教程的范围,但是你可以在初学者 Bash 指南中阅读。

总之,到目前为止,我只展示了单括号中的条件。然而,还有更多的语法,您将在下一节读到。

不同的条件语法

Bash 为条件提供了不同的语法。我会列出他们三个:

1。单括号语法

这是您在前面的段落中已经看到的条件语法;这是最早支持的语法。它支持三种类型的条件:

  • 基于文件的条件

  • 基于字符串的条件

    • Allows checks on a string and comparing of strings. Example one:

      if [ -z "$emptystring" ]; then
      

      如果$emptystring 是空字符串或未初始化的变量,则上述条件成立。例子二:

      if [ "$stringvar1" == "cheese" ]; then
      

      如果$stringvar1 仅包含字符串“cheese ”,则上述条件成立。有关更多基于字符串的条件,请参见下表。

  • 算术(基于数字)条件

2。双括号语法

您可能已经遇到过用双方括号括起来的条件,如下所示:

if [[ "$stringvar" == *string* ]]; then

双括号语法是单括号语法的增强版本;它主要有相同的功能,但也有一些重要的区别。我将在这里列出它们:

  • The first difference can be seen in the above example; when comparing strings, the double-bracket syntax features shell globbing. This means that an asterisk (“*”) will expand to literally anything, just as you probably know from normal command-line usage. Therefore, if $stringvar contains the phrase “string” anywhere, the condition will return true. Other forms of shell globbing are allowed, too. If you’d like to match both “String” and “string”, you could use the following syntax:

    if [[ "$stringvar" == *[sS]tring* ]]; then
    

    请注意,只允许一般的 shell globbing。特定于 Bash 的东西,如{1..4}或者{foo,bar}都不行。还要注意,如果您引用了正确的字符串,那么 globbing 将不起作用。在这种情况下,您应该不加引号。

  • The second difference is that word splitting is prevented. Therefore, you could omit placing quotes around string variables and use a condition like the following without problems:

    if [[ $stringvarwithspaces != foo ]]; then
    

    尽管如此,引用字符串变量仍然是一个好习惯,所以我建议继续这样做。

  • The third difference consists of not expanding filenames. I will illustrate this difference using two examples, starting with the old single-bracket situation:

    if [ -a *.sh ]; then
    

    如果工作目录中有一个文件的扩展名为. sh,上述条件将返回 true。如果没有,它将返回 false。如果有几个。sh 文件,bash 将抛出一个错误并停止执行脚本。这是因为*。sh 扩展到工作目录中的文件。使用双括号可以防止这种情况:

    if [[ -a *.sh ]]; then
    

    只有当工作目录中有一个名为“*”的文件时,上述条件才会返回 true。嘘”,不管其他的。sh 文件存在。星号是按字面理解的,因为双括号语法不扩展文件名。

  • The fourth difference is the addition of more generally known combining expressions, or, more specific, the operators “&&” and “||”. Example:

    if [[ $num -eq 3 && "$stringvar" == foo ]]; then
    

    如果$num 等于 3,并且$stringvar 等于“foo”,则上述条件返回 true。也支持单括号语法中的-a 和-o。请注意,运算符优先于运算符,这意味着“& &”或“-a”将在“||”或“-o”之前计算。

  • 第五个不同点是双括号语法允许使用“=~”操作符进行正则表达式模式匹配。更多信息参见表格

3。双括号语法

还有另一种算术(基于数字)条件的语法,很可能来自 Korn shell:

if (( $num <= 5 )); then

如果$num 小于或等于 5,则上述条件成立。程序员可能更熟悉这种语法。它具有所有“普通”操作符,如“==”、“ =”。它支持“&&”和“||”组合表达式(但不支持-a 和-o 组合表达式!).它相当于内置的 let 命令。

条件表

下表列出了单括号和双括号语法的条件可能性。除了一个例外,示例以单括号语法给出,但总是与双括号兼容。

|

1。基于文件的条件:

|
| 情况 | 如果为真 | 示例/解释 |
| [-现有文件] | 文件“existingfile”存在。 | if[-a tmp . tmp];然后 rm -f tmp.tmp # 确保我们不会被旧的临时文件 fi 打扰 |
| [ -b blockspecialfile ] | 文件“blockspecialfile”存在,并且是块专用文件。 | Block special files 是在/dev 中找到的特殊内核文件,主要用于硬盘、光盘、软盘之类的 ATA 设备,if[-b/dev/fd0];然后添加 if=floppy.img of=/dev/fd0 # 将图像写入软盘 fi |
| [ -c characterspecialfile ] | 文件“characterspecialfile”存在,并且是特殊字符。 | 字符特殊文件是/dev 中的特殊内核文件,用于各种目的(音频硬件、tty,还有/dev/null)。if[-c/dev/DSP];然后 cat raw.wav > /dev/dsp # 这实际上适用于某些原始 wav 文件 fi |
| [ -d 目录] | 文件“目录”存在,并且是一个目录。 | 在 UNIX 风格中,目录是一种特殊的文件。kde];thenecho“你好像是 kde 用户。”船方不负担装货费用 |
| [ -e 现有文件] | 文件“existingfile”存在。 | (与-a 相同,参见该条目中的示例) |
| [ -f 正则化] | 文件“regularfile”存在,并且是一个常规文件。 | 常规文件既不是块或字符特殊文件,也不是目录。bashrc];然后 source ~/。巴什尔菲 |
| [ -g sgidfile ] | 文件“sgidfile”存在,并且是 set-group-ID。 | 当在一个目录上设置了 SGID 位时,在该目录中创建的所有文件都将继承该目录的组。选择创建的文件正在继承组“$(ls -ld。工作目录中的| awk“{ print $ 4 }”,"fi |
| [-g fileownebyeffective group] | 文件“fileownedbyeffectivegroup”存在,并由有效的组 ID 拥有。 | 有效组 id 是执行用户的主要组 id。-G 文件];然后# 感叹号反转它后面的条件的结果 chgrp $(id -g) file # 如果它不是有效的组,则更改该组 fi |
| [ -h 符号] | 文件“symboliclink”存在,并且是一个符号链接。 | if[-h \(pathtofile];然后 pathtofile =\)(read link-e \(pathtofile)#*确保\) pathtofile 包含实际文件,而不是指向它的符号链接* fi |
| [ -k stickyfile ] | 文件“stickyfile”存在,并设置了其 sticky 位。 | 粘性位已经有了相当长的历史,但是现在被用来防止任何人删除全球可写目录的内容。-k/tmp];然后# 一个感叹号反转它后面条件的结果回显“警告!任何人都可以在/tmp 中删除和/或重命名您的文件!”船方不负担装货费用 |
| [ -L 符号链接] | 文件“symboliclink”存在,并且是一个符号链接。 | (与-h 相同,有关示例,请参见该条目) |
| [-N modifiedsinclastread] | 文件“modifiedsincelastread”存在,并且在上次读取后被修改。 | if[-N/etc/crontab];然后 killall -HUP crond # SIGHUP 让 crond 重新读取所有 crontabs fi |
| [-fileownebyeffective user] | 文件“fileownedbyeffectiveuser”存在,由执行脚本的用户所有。 | if [ -O 文件];chmod 600 file # 将文件设为私有,如果您不拥有它 fi,这是一个坏主意 |
| [ -p namedpipe ] | 文件“namedpipe”存在,并且是一个命名管道。 | 命名管道是/dev/fd/中的一个文件,只能读取一次。参见我的 bash 教程中使用它的案例. if[-p $ file];然后 CP$file tmp . tmp #确保我们能够任意多次读取该文件 file="tmp.tmp" # |
| [ -r readablefile ] | 文件“readablefile”存在,并且对于脚本是可读的。 | if [-r 文件];然后 content=$(cat file) # 将$content 设置为文件 fi 的内容 |
| [ -s 非空文件] | 文件“nonemptyfile”存在,其大小超过 0 字节。 | if [ -s 日志文件];然后 zip 日志文件# 备份旧的日志文件在创建新的日志文件之前,触摸日志文件# fi |
| [ -S 套接字] | 文件“socket”存在,并且是一个套接字。 | socket 文件用于进程间通信,具有类似于网络连接的接口。然后 mysql–socket =/var/lib/MySQL/MySQL . sock #本 MySQL 提示 fi |
| [ -t openterminal ] | 文件描述符“openterminal”存在,并且引用了一个打开的终端。 | 在 Linux/UNIX 上,几乎所有的事情都是使用文件来完成的,终端也不例外。那里有个黑人。来自终端$(tty)的消息。”>/dev/pts/3 # 任何使用该终端的人都会看到这条消息! fi |
| [ -u suidfile ] | 文件“suidfile”存在,并且设置为-user-ID。 | 在文件上设置 suid 位会导致使用文件所有者的凭据而不是执行用户的凭据来执行该文件。thenecho "正在以用户$(ls-l executable | awk“{ print $ 3 }”)身份运行程序可执行文件。船方不负担装货费用 |
| [ -w 可写文件] | 文件“writeablefile”存在,并且可写入脚本。 | if[-w/dev/hda];然后 grub-install /dev/hdafi |
| [ -x executablefile ] | 文件“executablefile”存在,并且可由脚本执行。 | 请注意,对目录的执行权限意味着它是可搜索的(您可以看到它包含哪些文件)。if[-x/root];选择“您可以查看/根目录的内容。”船方不负担装货费用 |
| [ newerfile -nt olderfile ] | 文件“newerfile”比“olderfile”更新,或者如果“newerfile”存在而“olderfile”不存在。 | if[story . txt 1-nt story . txt];thenecho "story.txt1 比 story.txt 新;我建议继续前者。”船方不负担装货费用 |
| [ olderfile -ot newerfile ] | 文件“olderfile”比“newerfile”早更改,或者如果“newerfile”存在而“olderfile”不存在。 | if[/mnt/remote/remote file-ot local file];然后 CP-f local file/mnt/remote/remote file #确保远程位置也有文件的最新版本 fi |
| [相同的 ef 文件] | 文件“相同”和文件“文件”指的是相同的设备/信息节点号。 | if[/dev/cdrom-ef/dev/DVD];选择“您的主 cd 驱动器似乎也能读取 dvd。”船方不负担装货费用 |
|

2。基于字符串的条件:

|
| 情况 | 如果为真 | 示例/解释 |
| [ STRING1 == STRING2 ] | STRING1 等于 STRING2。 | if[" $ 1 " = = " moo "];thenecho $cow # 试过执行“apt-get moo”吗? fiNote:也可以用单个“=”代替双个。 |
| 【STRING1!= STRING2 ] | STRING1 不等于 STRING2。 | if [ "$userinput "!= " $ password "];thenecho "拒绝访问!密码错误!”退出 1 # 在这里停止脚本执行 fi |
| [字符串 1 >字符串 2 ] | 在当前区域设置中,STRING1 在 STRING2 之后排序(按词法)。 | 尖括号前有反斜杠,因为需要对括号进行转义才能正确解释。作为一个例子我们有一个基本的冒泡排序 : (如果你不理解这个不要觉得惭愧,这是一个更复杂的例子) array=( linux 教程博客)swaps = 1 while((swaps>0));doswaps = 0 for((I = 0;I<((\({ # array[@]}–1));i++));doif["\) { array[\(I]} ">"\) { array[$((I+1))]} "];然后# 这里是排序条件tempstring = $ { array[$ I]} array[\(I]=\) { array[\(((I+1))]} array[\)((I+1))]= \(tempstring((swaps = swaps+1))fidonedonecho\) { array[@]} #返回《博客 linux 教程》 |
| [字符串 1 | 在当前区域设置中,STRING1 在 STRING2 之前排序(按词法)。 |
| [ -n 非 EMPTYSTRING ] | NONEMPTYSTRING 的长度大于零。 | 这个条件只接受有效的字符串,所以一定要用引号括起你给它的任何内容。then user input = parse($ user input)#只有当用户实际输入时才进行解析。请注意,您也可以省略“-n”,因为只有一个字符串的括号的行为是相同的。 |
| [ -z EMPTYSTRING ] | EMPTYSTRING 是一个空字符串。 | 这个条件也接受非字符串输入,比如未初始化的变量:if[-z $ uninitializedvar];thenuinitializedvar = " initialized " #
-z 对未初始化的变量返回 true,所以我们在这里初始化它。
fi |
| 仅双括号语法:[[string 1 = ~ regexpartern]] | STRING1 匹配 REGEXPATTERN。 | 如果您熟悉正则表达式,可以使用这些条件来执行正则表达式匹配。_%+-]+@[A-Za-z0-9。-]+.[A-Za-z]{2,4 } b "]];thenecho "$email 包含有效的电子邮件地址。"船方不负担装货费用 |
|

3。算术(基于数字)条件:

|
| 情况 | 如果为真 | 示例/解释 |
| [1 到 2 之间的 1-eq] | NUM1 与 NUM2 相等。 | 这些条件只接受整数。如果可能的话,字符串将被转换成整数。一些随机的例子:如果[ \(?-eq 0];然后# *\)?返回前一个命令*的退出状态,显示“前一个命令成功运行”fiif[$(PS-p \(PID-o ni =)-ne\)(nice)];thenecho "Process $pid 正在使用非默认的 nice 值" fiif [ $num -lt 0 ]运行;不允许负数;退出…”退出 1fi |
| [一对二] | NUM1 是 note哪个是 NUM2。 |
| [1-gt 乘以 2 ] | NUM1 是 G reater T han NUM2。 |
| [一格二] | NUM1 大于或等于 NUM2 的 T2。 |
| [编号 1 -lt 编号 2 ] | NUM1 是 L ess T 韩 NUM2。 |
| [一二三] | NUM1 比 NUM2 小或等于 num 2。 |
|

4。其他条件:

|
| 情况 | 如果为真 | 示例/解释 |
| [ -o shelloption ] | 外壳选项“shell option”已启用。 | Shell 选项修改 bash 的行为,除了一些指示 shell 状态的不可修改的选项。-o checkwinsize ] # 感叹号反转其后条件的结果 echo "Shell 选项 checkwinsize 被禁用;启用它,这样您就可以毫无问题地调整终端窗口的大小。”shopt -s checkwinsize # 此 shell 选项可修改fiif[-o log in _ shell];thenecho“这是一个登录外壳。”# 此外壳选项不可修改 fi |

使用双括号语法,您可以使用以下条件:

|

5。双括号语法条件:

|
| 情况 | 如果为真 | 示例/解释 |
| (第 1 季第 2 集) | NUM1 等于 NUM2。 | 这些条件只接受整数。如果可能的话,字符串将被转换成整数。一些随机的例子:if (( \(?== 0 ));然后# *\)?返回前一个命令*的退出状态,显示“前一个命令成功运行”fiif (( $(ps -p $pid -o ni=)!= $(nice)));thene CHO“Process $ PID 正在以非默认的好值运行”fiif(($ num<0));不允许负数;退出…”退出 1fi |
| (1 号!=第 2 个) | NUM1 不等于 NUM2。 |
| (编号 1 >编号 2) | NUM1 大于 NUM2。 |
| ((数字 1 >=数字 2)) | NUM1 大于等于 NUM2。 |
| (编号 1 | NUM1 小于 NUM2。 |
| (数字 1 ⇐数字 2) | NUM1 小于等于 NUM2。 |

在这些枯燥的信息之后,这里有一些解释给那些想知道更多的人…

潜得更深一点

我说过,如果本质上检查命令的退出状态,我会讲述更多关于的事实。所以我会的。

bash 关于条件的基本规则是 0 等于真,> 0 等于假

这与许多编程语言截然相反,0 等于假,1(或更多)等于真。这背后的原因是 bash 之类的 shells 大量处理程序。按照 UNIX 惯例,程序使用退出状态来指示执行是否顺利或发生了错误。因为成功的执行不需要任何解释,它只需要一个退出状态。然而,如果有问题,知道哪里出了问题是很有用的。因此,0 表示成功执行,1-255 表示发生了哪种错误。

数字 1-255 的含义因返回它们的程序而异。

总之,如果之后执行程序块,那么当命令返回 0 时。是的,条件就是命令。短语[ $foo -ge 3 ]返回一个退出状态,另外两个语法也是如此!因此,有一个简单的技巧可以用来快速测试一个条件:

[ $foo -ge 3 ] && echo true

在本例中,“echo true”仅在“$foo -ge 3”返回 0 (true)时执行。你可能会问,这是为什么。这是因为 bash 只在需要的时候评估一个条件。当使用组合表达式时,两个条件都需要为真才能使组合表达式返回真。如果第一个条件返回 false,那么第二个条件返回什么并不重要;结果将是假的。

因此,bash 不会计算第二个条件,这也是示例中不执行“echo true”的原因。这同样适用于操作符(" || "),其中如果第一个条件为真,则不计算第二个条件。嗯,潜水到此为止。

如果你想知道更多,我想给你介绍一下高级 Bash 脚本指南Bash 参考手册。你也可以看看我们的课程Bash 脚本系统管理员指南

结论

在本教程中,您已经能够开始理解 bash 脚本中条件的许多可能性。您已经了解了编写和使用条件的基本规则,了解了三种语法及其属性,并且可能利用这个机会进行了更深入的研究。

我希望你像我喜欢写作一样喜欢阅读。您可以随时返回此处,在中查找条件(将该链接标记为书签以直接查看该表),或者刷新您的知识。感谢阅读和快乐脚本!

想提升你的技术水平吗?在 YouTube 上订阅一位云专家,在脸书上喜欢我们,在 Twitter 上关注我们,或者在 Discord 上加入对话!

使用 Pacemaker 配置故障转移集群

原文:https://acloudguru.com/blog/engineering/configure-a-failover-cluster-with-pacemaker

高可用性是 IT 行业的一个主要术语,这有几个原因。随着越来越多的企业通过互联网提供服务,对这些服务始终可访问的需求也在增长。你必须去实体店面购买商品和服务的日子已经一去不复返了。现在,在白天或晚上的任何时候,你都可以购买食物、衣服、娱乐或任何你能想到的东西,并把它们送到你家门口或在媒体设备上消费。这就是高可用性 T4 的用武之地。确保您的服务保持高可用性是在现代市场中取得成功的关键。在本教程中,我们将在两台 CentOS 7 服务器上安装 Pacemaker 集群,并对其进行配置,以确保我们的服务保持高可用性。

安装起搏器集群

Pacemaker 是一个高可用性集群资源管理器(CRM ),可用于管理资源,并确保在发生节点故障时资源仍然可用。 首先,我们需要安装 Pacemaker 包和 pcs 命令行工具。在两个节点上,运行:

sudo yum install -y pacemaker pcs

在两个节点上运行firewall-cmd命令,允许 Pacemaker 的流量(TCP 端口 2224、3121、21064 和 UDP 端口 5405):

sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reload

启动并启用 pcsd 服务。同样,在两个节点上运行这些命令:

sudo systemctl start pcsd.servicesudo systemctl enable pcsd.service

再次在两个节点上为hacluster用户设置密码,该密码是在软件包安装期间创建的。该用户将用于向其他集群节点进行身份验证,并在集群上执行操作:

sudo passwd hacluster

node1日,认证为hacluster用户:

sudo pcs cluster auth NODE1 NODE2

node1 : 生成并同步 corosync 配置

sudo pcs cluster setup --name cluster_name NODE1 NODE2 

node1 上启动集群:

sudo pcs cluster start --all

配置群集资源

现在集群已经启动并运行,我们可以创建我们的集群资源了。首先,我们将创建一个 IP 地址资源,然后创建一个 Apache HTTP 服务器资源。一旦创建了资源,我们就可以设置资源约束来确保 IP 地址总是在 Apache HTTP 服务器之前开始,并且两个资源总是在同一个节点上一起运行。 添加一个 IP 地址资源到node1 : 上的集群

sudo pcs resource create cluster_ip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s

在两个节点上安装 Apache HTTP 服务器,打开防火墙的 HTTP 端口:

sudo yum install -y httpd sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload

在两个节点上,启用状态 URL 进行健康监控:

sudo cat > /var/www/html/index.html <<EOF SetHandler server-status Require local EOF

将 Apache HTTP 服务器资源添加到node1 : 上的集群中

sudo pcs resource create apache ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="https://localhost/server-status" op monitor interval=1min

node1设置一个托管约束,保证集群资源运行在同一个节点上:

sudo pcs constraint colocation add apache with cluster_ip INFINITY

同样,在node1上,设置一个顺序约束,以确保集群资源以正确的顺序启动:

sudo pcs constraint order cluster_ip then apache

验证node1 : 的资源约束

sudo pcs constraint

node1 : 上验证集群资源的状态

sudo pcs status

现在,我们已经使用 Pacemaker 成功配置了故障转移集群!如果一个节点出现故障,资源将自动转移到群集中的一个工作节点。

想了解更多?

如果你喜欢这个简短的教程,并想了解关于 Pacemaker 的更多信息,请查看我的 LPIC-3 304 虚拟化和高可用性 预备课程。本课程涵盖 Pacemaker,以及其他几种支持高可用性和虚拟化的技术和服务。

使用 Route 53 配置 DNS

原文:https://acloudguru.com/blog/engineering/configure-dns-with-route-53

如果你是一个网站所有者,从 GoDaddy(或一些其他注册商)购买了一个域名,并开始探索 AWS 以利用云计算的能力,你需要解决的一个问题是:我的应用程序/网站服务器托管在 AWS 上,但我如何与我从 GoDaddy 购买的域名集成?最简单的答案是更新你的 GoDaddy NS 记录,指向亚马逊的域名服务器。在本教程中,我们将看看这个过程是如何工作的。请注意,我们将查看 GoDaddy,这样我们就有了一个特定的示例,但是无论您在哪里购买域名,这个过程都是非常相似的。

背景

在我们开始行动之前,让我们试着理解这个过程中涉及的一些基本组件,以及它们是如何协同工作的。让我们假设你是域名 mywebsite.com 的所有者。在典型设置中,当用户在其浏览器中键入您的网站 URL 时,会发生以下情况:

  1. 浏览器向域名系统服务器查询您的域的 IP 地址。请注意,在确定使用哪个 DNS 服务器时,查找的顺序是:
    1. 本地缓存
    2. 局域网
    3. ISP 级缓存服务器
    4. 权威 DNS 服务器
  2. 然后,浏览器查询权威的 DNS 域名服务器(根服务器)以找出的“顶级域名”(TLD)域名服务器。com 域名。
  3. 接下来,浏览器查询 TLD 域名服务器以获取mywebsite.com 的域名服务器(您通过注册商配置的)。
  4. 最后,它查询域名服务器以获得运行https://mywebsite.com的主机的 IP 地址。

回顾一下,涉及的主要组件有:

  • 根域名服务器–这些服务器直接响应“根区域”中的记录请求,但它们也可以通过 TLD 域名服务器列表来响应其他请求。
  • TLD 域名服务器–这些域名服务器响应特定顶级域名的查询,并返回给定 FQDN(完全合格域名)的域名服务器。
  • 域名的域名服务器–在顶级域名中,可能有数百万个 FQDNs。每一个域名都将分布在一个域名服务器网络中,这些服务器对用户想要访问的特定域名的请求作出响应。

现在,如果我们将这些信息放在我们试图实现的上下文中,新的流程将保持 DNS 提供商作为“GoDaddy”,但只是作为一个代理。我们可以使用 AWS 名称服务器来解析您的主机 IP。

使用路由 53 配置 DNS

注意,我们这里讨论的步骤是针对“简单”DNS 配置的,比如托管一个基本的网站或应用程序。如果您当前的 DNS 设置很复杂,步骤可能会略有不同。 AWS 文档 在我们继续之前,有一个声明值得一读:

“当您将 DNS 服务从另一个提供商迁移到 AWS Route 53 时,您将在 Route 53 中复制您当前的 DNS 配置。 I n Route 53,您创建了一个与您的域同名的托管区域,并且您在托管区域中创建了记录。每条记录表明您希望如何为指定的域名或子域名路由流量。

在一个简单的场景中,您从当前的 DNS 提供商(在我们的示例中是 GoDaddy)向 AWS 迁移以下一项或多项内容:

  • a(地址)记录–将域名或子域名与相应资源的 IPv4 地址(例如,192.0.2.3)相关联。
  • AAAA(地址)记录-将域名或子域名与相应资源的 IPv6 地址(例如,2001:0 db 8:85 a3:::ABCD:0001:2345)相关联。
  • MX(邮件服务器)记录–将流量路由到邮件服务器。
  • CNAME 记录–将一个域的流量重新路由到另一个域。

步骤 1:创建托管区域

登录 AWS 管理控制台并导航至 Route 53 菜单。然后点击创建托管区域。创建区域后,您将在页面右侧看到一个表单。在字段中输入以下信息:

  • **域名:**您的域名;在我们的例子中,mywebsite.com。
  • **点评:**你可以在这里输入任何你喜欢的东西。
  • **类型:**根据该区域的可用性类型进行选择。默认为“公共托管区域”,这意味着可以从互联网访问该区域。“私人托管区域”可从 AWS VPC 内部访问,不可用于公共互联网。

默认情况下,该步骤将在您的托管区域中创建两个条目:NS(名称服务器)和 SOA(授权起始)记录。记下 NS(名称服务器)条目。下一步,我们将使用 GoDaddy 配置这些。

步骤 2:创建 DNS 记录

单击新创建的托管区域,这将带您进入“托管区域详细信息”屏幕。点击创建资源记录,您将看到一个新的表单。为以下内容选择适当的值:

  • Name :如果你是而不是配置子域,请留空。
  • 类型 : 参考 GoDaddy 找出你当前的类型是什么,在这里使用相同的值。对于建立一个基本的网站,这将最有可能是一个或 AAAA。
  • 别名:选择一个合适的值。AWS 文档的部分提供了更多关于选择什么(和什么时候)的信息。
  • 值/别名目标:根据别名是(或)否,您将指向一个 IP 地址或一些其他别名条目。
  • 路由策略:默认为“简单”。但是如果你想要一个不同的路由策略,你可以参考 AWS 文档来理解基于场景选择哪一个。

步骤 3:通过您的域注册商管理 DNS 设置

在这一步,我们将我们的域映射到我们的服务器。回到我们列出的 DNS 查找的三个组成部分,这种映射在最后一个层面上有所帮助。在向 TLD 域名服务器发出请求后,存放你的记录的亚马逊域名服务器将被返回。这允许用户为您的网站或应用程序解析域名。登录 GoDaddy 控制台,导航到您的域,然后为您要配置的域单击管理。接下来,点击附加设置部分下的管理 DNS (这将在页面底部):点击添加(在页面顶部的记录部分)并将类型设置为名称服务器。在主机字段中,输入您的域名。在指向字段中,输入您在配置 AWS 托管区域记录时在步骤 1 中获得的一个 NS IP 地址。重复此过程,从步骤 1 中的托管区域添加每个 NS 记录。就是这样!您的配置完成了!现在,您需要做的就是花一些时间来传播这些设置。这些相同的原则将适用于这样的情况,你想离开根域与 GoDaddy,但有子域 DNS 的 AWS。除了将 DNS“委托(或)代理”给 AWS 之外,另一种方法是“迁移注册”。关于将域名注册转移到 Amazon Route 53 的 AWS 文档中有关于如何做的详细信息。

配置 AWS 命令行界面(CLI)

原文:https://acloudguru.com/blog/engineering/configuring-the-aws-command-line-interface

配置 AWS 命令行界面并不复杂。在你知道之前,你就可以开始工作了!AWS CLI 根据您的需求提供了许多定制选项。举几个例子,您可以支持多个概要文件,通过向概要文件分配用户角色来限制访问,甚至使用 HTTP 代理。我们开始吧!

AWS CLI 的简单配置

AWS CLI 在本地将用户配置和表示为名为的实体,命名为配置文件,或简称为配置文件。如果没有使用–配置文件选项指定配置文件,将使用默认配置文件,该文件方便地命名为默认。

默认配置文件配置

  1. 打开一个终端窗口,输入以下命令:aws configure在 Windows 上,您首选的终端应用程序可能是 PowerShell 或 Windows 命令提示符(CMD)。在 Linux、Mac 或 Unix 上,可以是任意数量的使用 bash、zsh 或 tsch shells 的终端应用程序。
  2. 输入 AWS 访问键、默认区域名称和默认输出格式:AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLEAWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Defaultregion name [None]: us-west-2Default output format [None]: json

什么是 Aws 访问密钥,我为什么需要它们?

AWS 访问密钥,特别是 AWS 访问密钥 ID 和 AWS 秘密访问密钥,用于在发出请求时唯一且安全地识别您的身份。这些可以在 AWS 管理控制台中找到或创建。关于创建 AWS 访问键的更多信息可以在这里找到。

注意: Amazon 建议您为有限的 IAM 角色使用访问密钥,而不是 AWS root 帐户访问密钥。原因是,根据 AWS 文档,IAM 可以让您安全地控制对 AWS 服务和 AWS 帐户资源的访问。

默认的地区名称是什么?

默认的地区名称是一个非可选的字段,通常是离你最近的地区名称。这是将用于对服务进行调用的默认区域。有关服务和可用区域的列表,请参见区域和端点

默认输出格式是什么?

默认的输出格式是一个可选的字段,指定来自 Amazon Web 服务的响应格式。如果不指定格式类型,将使用 JSON。

可用的格式类型有:

多个配置文件

因此,您已经为默认用户安装并配置了 AWS CLI。很简单,对吧?但是如果你想支持多个用户呢?幸运的是,AWS CLI 通过使用命名概要文件支持多用户。命名配置文件的配置几乎与默认配置文件完全一样。然而,有一点小小的不同。您必须将–配置文件选项与 aws 配置命令一起使用,并指定一个配置文件名称:aws configure --profile my_profile_name关于配置文件的更多信息可在这里找到

如何更新我的配置设置?

您可以通过使用 AWS CLI 或手动更改凭证和配置文件中的值来更新您的配置设置。

  1. 使用 AWS CLI–在您的终端中运行 aws 配置命令,并输入更新的信息。有关更多详细信息,请参考上面的配置部分。

2.手动更改数值–导航至。aws 目录,并更新凭证和配置文件中的键值对。


还有什么 CLI?

查看我们的 AWS CLI 和 S3 备忘单。或者,尝试我们的动手实验,在 CLI 中获得创建和定制 Lambda 函数的真实体验。


我的凭据存储在哪里?

AWS CLI 将凭证存储在名为 c redentials 的本地文件中,该文件位于名为的文件夹中。aws 在您的主目录中。

我的默认区域名称和输出格式存储在哪里?

AWS CLI 将默认区域名称和输出格式存储在名为的文件夹中名为 config 的本地文件中。aws 在您的主目录中。您可以通过将 AWS_CONFIG_FILE 环境变量设置为另一个路径来更改配置文件的位置。关于设置环境变量的更多信息可以在这里找到。

我可以手动添加已命名的个人资料吗?

您可以通过将所需信息添加到凭证和配置文件来手动配置配置文件。凭证和配置文件中的字段由键-值对表示,这些键-值对的名称以括号中的概要文件名开头。默认配置文件也位于这两个文件中。

  1. 导航到。您主目录中的 aws 文件夹。
  2. 打开凭证文件,添加概要文件名,后跟键值对:[my_profile_name]aws_access_key_id=AKIAI44QH8DHBEXAMPLEaws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
  3. 打开 config 文件,添加配置文件名,前缀为 > profile ,后跟键值对。例如[profile my_profile_name]region=us-east-1output=text

**注意:**对于命名配置文件,AWS 凭证文件使用与 CLI 配置文件不同的命名格式。在 AWS 凭证文件中配置命名概要文件时,不要包含“概要文件”前缀。更多信息参见 AWS 文档

我可以为多个命令指定一个默认配置文件吗?

当然啦!您可以通过设置 AWS_DEFAULT_PROFILE 环境变量来实现。关于设置环境变量的更多信息可以在这里找到。

**注意:**设置环境变量会改变缺省配置文件,直到您的 shell 会话结束,或者直到您将该变量设置为不同的值。

我在哪里可以找到更多信息?

有关 AWS CLI 配置的更多信息,请参见用户指南中的配置部分此处

成功!

就是这样!现在您已经配置了 CLI,您已经准备好使用它与 AWS 服务进行交互,并开始从终端管理您的基础设施。下一次,我们将解释如何进行 API 调用来启动服务器、创建安全组,以及只需几个按键就能完成的更多事情。


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


更多 AWS CLI 资源

EC2 连接问题故障排除

原文:https://acloudguru.com/blog/engineering/connect-to-amazon-ec2-using-putty-private-key-on-windows

学习 AWS 可能是一个非常漫长和令人畏惧的经历。有几十种主要服务,每一种都有数百种功能需要学习。然而,当试图访问一个已配置的 AWS 资源(如 EC2 实例)时,很少有事情比连接问题更令人沮丧了。 毕竟,您刚刚花了几个小时了解 ami、实例类型、IP 地址、用户数据、存储卷、安全组和密钥对。 现在你只想实际访问这个该死的实例,并从中得到一些乐趣。但是当您试图访问实例时,无论是通过 SSH 还是 HTTP,您都会得到这些可怕的错误之一:“访问被拒绝”,或者“操作超时”,或者其他一些变化。 不管错误——你都不能登录。

AAAAARRRGGGGGG!

好吧,所以你发泄了一点——也许甚至对着你的电脑大喊大叫。 不管你有多沮丧,你还是需要弄清楚哪里出了问题。 考虑到这一点,我将介绍一些导致许多连接性问题的常见(甚至可能很简单)问题。

Connectivity Path

了解路径:

为了成功地解决 EC2 实例的连接问题,我们首先需要完全理解数据从我们的计算机传输到 EC2 实例时所采用的路径。为了这篇博文的目的,我们必须忽略“开放互联网”这一部分,因为我们无法控制它。 我们将关注的是,一旦数据到达您的 AWS 虚拟私有云(VPC),因为这部分路径是我们控制的。 在这个练习中,我们将回溯 VPC 的基础设施——也就是说,我们将从 EC2 实例开始,找出从 VPC 到开放互联网的方法。

EC2 实例:

它有公共 IP 地址吗?

是:继续下一部分。

否:要么创建一个弹性 IP 地址并将其附加到实例上,要么终止实例并创建一个新的实例(确保在创建过程中“启用”公共 IP 地址)。再次检查连接。 如果成功了,太好了! 大功告成! 如果没有效果,继续下一节。

安全组:

1)安全组是否有 HTTPS 和/或 SSH 的入站允许规则?

是:是:转到问题 2。

否:添加 HTTP 和/或 SHH 的允许规则(取决于您的需要)。再次检查连接。 如果成功了,太好了! 大功告成! 如果不奏效,进入下一节。

2)HTTP 和/或 SSH 是否适用于所有来源的流量(0.0.0.0/0)?

是:继续下一部分。

否:将每个协议的源编辑为 0.0.0.0/0。再次检查连接。 如果成功了,太好了! 大功告成! 如果不奏效,进入下一节。

注意:对于安全组来说,这不是最佳实践,但是我们在这里只是尝试解决这个问题。

子网:

1)子网路由表是否有到互联网网关的路由?

是:转到问题 2。

否:编辑路由表以添加到 IGW 目的地= 0.0.0.0/0 和目标=(互联网网关 ID)的路由

注:如果没有 IGW 存在,移动到 IGW 和返回这里的一节。再次检查连接。 如果成功了,太好了! 大功告成! 如果没有效果,进入下一个问题。

保护子网的网络访问控制列表是否有 HTTPS 和/或 SSH 的入站允许规则?

是:转到问题 3。

否:添加 HTTP 和/或 SHH 的允许规则(取决于您的需要)。再次检查连接。 如果成功了,太好了! 大功告成! 如果没有效果,进入下一个问题。

3)保护子网的网络访问控制列表是否为所有流量设置了出站允许规则?

是:进入下一部分。

否:编辑出站规则以允许来自所有来源的所有流量(0.0.0.0/0)。再次检查连接。 如果成功了,太好了! 大功告成! 如果不奏效,进入下一节。

互联网网关

1)是否有一个连接到 VPC 的互联网网关,其中已经提供了 EC2 实例?

是:回到“子网”部分。

号:创造和 IGW 并将其附属于 VPC。回到“子网”部分。

注意:仅出口互联网网关仅支持 IPv6 地址,用于仅出站互联网访问。

好了,你知道了。 希望通过遵循这个指南,您可以很快连接到您的 EC2 实例!

其他相关资源:

容器与无服务器:哪个适合你?

原文:https://acloudguru.com/blog/engineering/containers-vs-serverless-which-is-right-for-you

容器和无服务器提供了许多相同的好处。但是容器和无服务器有什么区别呢?在本帖中,我们将讨论每种方法的优缺点和用途。

当 AWS 在 2014 年首次推出 Lambda 时,无服务器并不是什么新鲜事,但自那以后,它已经呈指数级增长。今天,您可能会好奇迁移到无服务器是否适合您、您的公司和您的应用程序。虽然这在很大程度上取决于如何构建您的应用程序,但我们可以根据设置做出一些概括。

让我们从更高的层面来看看在选择使用容器还是转移到无服务器时的一些好处和顾虑。


加速您的云计算职业生涯

云专家让你轻松(也很棒)提升你的云事业——即使你对技术完全陌生。查看 ACG 目前的免费课程立即开始免费试用。


容器与无服务器

如果我们不看得太深,容器和无服务器似乎有许多相同的好处:我们的代码是可重用的,可复制的,并且假设我们在使用容器的同时使用某种容器服务,高度可伸缩的。

事实上,如果我们有机会查看托管我们的无服务器代码的服务器(因为在那里有一个服务器,即使我们不能访问它),我们会发现我们的代码运行在一个容器中。但这并不意味着容器和无服务器是一回事。

无服务器优势

设置

当我们开发一个无服务器应用程序时,我们唯一需要提供给无服务器平台的是我们的代码,通常是通过某种版本控制库。这消除了实际启动代码的任何前期设置——我们甚至不需要选择容器映像!也就是说,如果你有任何容器化的 monolith,我们代码之外的任何集成都需要找到一个新家,这实际上只意味着通过使用无服务器,你将被迫放弃一些坏习惯(比如保留 PHP monolith)。

费用

无服务器应用程序仅在被触发时运行。虽然我们可以进行设置,使应用程序中需要保持“温暖”的部分保持温暖,但不需要其他不常用的功能时也不需要。(相比之下,容器需要保持运行,我们的代码才能工作。)这意味着我们不会为我们没有使用的东西付费,这意味着我们在省钱。

缩放比例

我们注意到无服务器和容器都可以扩展,但是它们如何扩展会有所不同。使用无服务器时,我们是在功能级别而不是应用程序或服务级别进行扩展,这意味着我们要扩展的组件更小、更模块化,从而节省成本。

集装箱强度

接近

当使用无服务器时,我们无法访问底层基础设施——容器、服务器或其他。这意味着我们如何进行故障排除、调试、查看日志,以及如何与我们的应用程序进行交互,因为开发人员或 devops 工程师将会改变,让我们完全受我们选择的无服务器平台的支配。这可能是一件好事,但对许多人来说,这将放弃宝贵的资源来使用我们的应用程序。

灵活性

当使用无服务器时,我们在设计应用程序时会受到限制。大多数功能即服务平台都是围绕事件驱动架构的理念构建的,对于其他选项的灵活性有限。我们还受到平台强加给我们的任何限制,比如函数长度、代码上传大小和运行时间。

安全性

最后,对于那些对安全性要求很高的人来说,比如数据保存在某些地区或本地,容器可能仍然是最好的选择。也就是说,请记住,大多数云平台都遵循严格的安全法规,可能比小公司能够管理的安全性更好。最终,这取决于您需要满足什么标准,但是您可能仍然会发现无服务器在某些情况下是被禁止的。

概览:容器与无服务器

容器 无服务器 设置
必须建立集装箱基础设施;选择容器图像、大小等。 只需提供代码;也很可能利用托管服务进行集成 架构
容器可以支持任何类型的代码架构——甚至是你的 PHP 单体 无服务器平台依赖于事件驱动的基础设施 缩放
可在容器级别扩展 在功能级别可伸缩 成本
只要集装箱运行就付款 只有在功能运行时才付费;函数只在被调用时运行 访问
对底层容器(通常是基础设施)的访问有助于故障排除和调试 我们只能访问我们的代码和我们可能使用的其他相关服务;必须利用新的故障排除和调试技术 灵活性
无论你想怎么设计,只要你想就运行函数,使用你自己的运行时 受限于平台的限制,包括函数长度、上传大小和运行时间 安全
完全控制您自己的安全选择,无论是好是坏 以您选择的云平台的安全能力为后盾 结论

虽然无服务器无疑是令人兴奋的,并且不会很快普及,但它是否是正确的选择仍然是每个应用程序或公司最终独特的决定。无服务器当然可以节省成本和最小的开销,但这是以放弃许多开发人员、工程师和管理员所依赖的底层访问和容器提供的灵活性好处为交换的。

要了解更多关于无服务器和容器的信息,请查看我们的课程将架构从容器改变为无服务器。在这篇文章中,我们将探索为什么、是否以及如何从容器迁移到无服务器。

加速您的云计算职业生涯


云专家可以让你轻松提升自己的云职业生涯——即使你对技术一无所知。查看 ACG 目前的免费课程立即开始免费试用。

A Cloud Guru makes it easy to level up your cloud career — even if you’re totally new to tech. Check out ACG’s current free courses or get started now with a free trial.

优化数百万美元的云账单

原文:https://acloudguru.com/blog/engineering/continuous-cloud-cost-optimization

2019 年 12 月,一位云专家收购了我们最大的竞争对手 Linux Academy,以及 270 万美元的年度 AWS 账单。

在收购之前,云支出对 ACG 来说是一项相对较小的支出。毕竟,我们是世界上第一个没有服务器的创业公司的创始人,并且喜欢炫耀我们的空生产 EC2 控制台的照片。有一次,我们每月的办公室餐饮账单实际上比我们在 AWS 上的花费还要高。因此,我们没有在系统化的云成本控制流程中投入太多精力。

但是,当我们将两家公司的云支出合并到一份账单中时, AWS 成本优化很快成为这里的热门话题!

接近黑箱云账单

首先,让我们承认,不断增长的云支出本身并不一定是一件坏事。如果你的毛利润随着云账单的增加而保持不变,这可能是非常好的——实际上是做生意的成本!但是如果利润随着你的成长而减少,或者你想增加利润,那么是时候优化支出了。

因此,在我们采取任何措施减少账单之前,我们知道我们需要制定一些谨慎的治理、规划和预算。差距是显而易见的:我们缺乏前期成本分析流程、未定义的成本指标和 KPI,并且除了账单本身之外,对我们的云支出没有太多的可见性。

这些差距的最终影响?对我们来说,确定单位成本&和支出驱动因素很困难。如果没有云财务管理,我们每年 300 万美元的云总支出就是一个黑箱。

定义和衡量成本指标和 KPI

我们不仅不确定我们在哪些方面花了最多的钱,而且我们也没有一个框架来确定我们是否花了太多的钱。

但我们希望主动进行云优化,因此我们进入了成本控制发现期*–*,寻求实时信息,让我们了解我们的支出金额和支出地点。

以下是我们认为特别重要的一些指标。

| 云成本指标 | 关键问题 | 洞察力 |
| 预算支出与实际支出 | 我们预测我们的花费有多准确? | 如果发现浪费,推动对支出的调查和削减浪费的决策 |
| 按职能/业务部门/服务领域分配的总云支出的百分比 | 我们如何在不同的部门和服务之间分配开支? | 使我们能够识别导致预算与实际差异的领域 |
| 对毛利润的贡献百分比 | 相对于业务的其他部分,我们的云支出消耗了多少开销? | 洞察成本增长/下降是否与收入同步 |
| 每位活跃用户的云支出—按产品线细分,如动手实验室 | 在我们的平台上服务一个用户要多少钱? | 毛利率的领先指标。帮助我们了解用户增长如何推动 COGS |
| 每位员工(即开发人员或培训架构师)的云支出 | 我们在运营活动上的支出效率如何? | 推动运营成本的优化 |

我们能够从现有的财务数据中回答这些问题。一旦我们提出了一组可行的指标,我们就建立一些 KPI 来帮助我们将这些指标引向正确的方向。例如,我们决定希望看到大约 80%的 EC2 支出来自保留的实例或节约计划。


无论您处于云采用流程的哪个阶段,云专家都会结合实践学习功能、不断更新的多云培训和深厚的专业知识,帮助您和您的企业云取得成功。

请求演示


深入了解云支出

云专家和 Linux 学院对我们的云成本有一些相当独特的限制,因为我们允许我们的用户旋转他们自己的云资源,作为我们动手实验室和云游乐场功能的一部分。最初,这些服务的账单通过与我们的 SaaS 平台相同的 AWS 组织累计,因此我们很难分析优化的机会在哪里。

作为第一步,我们重组了我们的 AWS 帐户,以便我们的用户定义资源属于不同的顶级组织,而不是用于运行平台的组织。我们还制定了增强标记策略,以及我们 AWS 组织中更具体的组织单位(ou ),以进一步将成本与其相关服务和部门相匹配。

接下来,我们实施了实时成本监控,以便更好地了解我们的支出和支出地点。

标准的成本监控工具不太适合我们,因为我们的学习者通过 Cloud Playground 建立了所有短暂的 AWS 帐户。因此,我们最终使用 AWS Lambda、CloudFormation 和 Athena 创建了一些简单的工具来解析来自 AWS 组织的日志,并将它们提供给实时的 Looker 仪表盘。

现在,我们可以看到一些非常有趣的指标,如 EC2 的每小时支出、实例预订与按需购买的总组合,以及按服务和组织单位划分的总成本。这让我们能够识别和跟踪优化目标。

例如,上图显示了将我们的实验室帐户移出管理 Linux Academy 平台的 AWS 组织的影响——注意峰值流量如何被密切跟踪实例预留的可预测负载所取代。

示例优化:储蓄计划和预订

当我们对成本有了更好的了解后,我们清楚地意识到 EC2 支出现在是 ACG / LA 合并账单的⅔……而且几乎所有支出都是按需分配的。

如前所述,我们有一些有趣的优化挑战,因为我们是一个培训平台。我们特别鼓励我们的学习者在我们的平台上创建云资源——我们承担费用。

查看下图——您可以看到,在我们动手实验室的指导下,我们的学员正在世界各地构建所有不同大小的 EC2 实例。如果我们希望您使用一些新的、更便宜的实例类型,我们不能只是更改配置参数,我们实际上必须更新我们的课程内容,为您提供不同的说明。

出于这个原因,我们很快就喜欢上了 AWS 计算节省计划 —它们让我们可以对 EC2 实例应用预留,而不管实例大小、操作系统或区域。让 AWS 自动为我们节省成本是一个巨大的胜利。

使用传统保留实例的组合来覆盖我们的平台成本和我们的学习者创建的资源的节省计划,我们已经能够使我们的保留实例组合达到我们总 EC2 支出的大约 80%—这是一个 KPI,它应该在未来 12 个月内将我们的 EC2 账单减少大约 30%,而对我们的用户没有影响。

(哦,关于“无服务器启动”的事情…不,我们没有计划在短期内将所有 EC2 支出转移到无服务器。当我们看到开发人员重新架构的时间和努力,加上培训时间,它根本不在“速赢”桶中。但是我们确实努力在整个团队中分享知识,并在可行的情况下提供应用无服务器优化的选项。)

持续成本优化

这里我们有更多的优化工作要做。我们现在关注 RDS 实例的合理规模,这是我们的第二大成本驱动因素(事实证明“每个微服务一个数据库”的规则有一些成本优化的缺点)。我们也在探索一些战略合作伙伴选项。我们将在软件开发生命周期中投入更多的成本控制。

我们还期待进一步整合我们的报告——目前我们分别跟踪云专家和 Linux 学院组织的成本,每个人都期待着这两个平台(和 AWS 账单)合二为一的伟大一天。

但是,由于我们实施了财务管理指标、工具和监控,我们有信心在这些领域浮出水面时优化它们,同时提高我们工程团队的整体敏捷性和我们学员的体验。

冷却 Azure Cosmos DB 中的热分区

原文:https://acloudguru.com/blog/engineering/cooling-hot-partitions-azure-cosmos-db

当使用 Azure Cosmos DB 时,您将承担的主要设计活动之一是适当的分区设计。分区允许您将数据分块到各个容器中,创建称为逻辑分区的不同子集。以这种方式使用分区使 Cosmos DB 能够兑现其“无限水平可伸缩性”的承诺。

因此,让我们深入了解一下是什么让分区变得又冷又热。

均匀分布很酷

逻辑分区由数据中的关键属性定义,例如客户标识符、仓库位置或产品类别。这些被恰当地称为分区键。然而选择一个好的分区键并不总是容易的!这个想法是选择一个逻辑分区键,这自然会导致在底层物理分区基础设施上的均匀分布。

例如,如果您在一个地区有成千上万的客户,但其中 90%位于斯普林菲尔德市,那么设置分区键“city”将导致不均匀的分布。这将导致该城市客户的高流量和存储需求,并产生所谓的“热”分区。

…热分区,不太冷

现在,有时候“热”也是好的:热玉米粉蒸肉、热狗,还有游泳池边的热天。热分区并不那么有趣。这些通常会超过提供给它们的吞吐量,从而导致限制和连接失败。一些热分区还会给物理资源带来存储压力,虽然这些物理资源在一定程度上是可扩展的,但也有实际限制。

Microsoft 提供了几种方法来设置和调整 Cosmos DB 数据库和容器上的输入。吞吐量配置和谨慎的分区选择通常可以避免热分区,您可以在我的课程 DP-420:使用 Microsoft Azure Cosmos DB 设计和实现云原生应用中了解关于吞吐量、分区键设计和其他主题的所有信息。然而,有时候即使是一个好的分区键,再加上精心的吞吐量配置,也不足以保持凉爽。

分层分区提供了一些阴影

幸运的是,微软最近发布了两项新功能,可以提供帮助。第一个是分层分区,它允许您选择多达三个级别的分区。

例如,假设您为一家连锁酒店工作,其中许多特许经营者有不止一个位置。选择 FranchiseID 属性作为键可能是有意义的,但是如果结果仍然导致热分区,那么您现在可以首先按 FranchiseID 分区,然后按 HotelID 分区。如果你还在水深火热中,尝试多一层,比如一个楼号或楼层号。

这类似于 Cosmos DB 中现有的合成键分区功能,但是设计开发和实现的复杂性要低得多。此功能仍在预览中,DP-420 考试不需要,因此,还没有包括在我的认证课程中。但你可以在这里了解更多:Azure Cosmos DB(预览版)中的分层分区键|微软学习

需要消防软管时的目标吞吐量

我更感兴趣的第二个预览特性是跨物理分区分配吞吐量的能力。

默认情况下,Azure Cosmos DB 在所有物理分区之间平均分配供应的吞吐量。这意味着,当热分区被自己的烟呛到时,低流量分区的数据却坐在空调里,可能希望他们能把它关小一点。

对于这些场景,您现在能够跨物理分区重新分配您所调配的吞吐量,而不必根据最热的分区来增加总体吞吐量。这有点像分区恒温器。假设您调配了 10,000 RU/s。您可以决定将其中的大部分(6000 RU/s)分配给热分区,其余分配给 Cosmos house 中较冷的房间。

要了解更多关于如何注册这个预览功能,以及当前的限制和警告,请访问 Azure Cosmos DB | Microsoft Learn 中的跨分区重新分配吞吐量(预览)。

与此同时,另一个不相关的生活小贴士:如果泳池派对对你来说只是一个梦,感觉罗马正在四处燃烧,拿出棉花糖,拉把椅子。这一切都会过去。

COVID 和云成本优化-来自领导者的经验教训

原文:https://acloudguru.com/blog/engineering/covid-and-cost-optimization-lessons-from-leaders

在全球疫情中领导云迁移是什么感觉?

一位首席信息官,一位退伍军人,将幸存的新冠肺炎对其业务的影响比作一艘正在下沉并着火的船的船长。“如果你惊慌失措,”他告诉我,“你要么被烧死,要么淹死,要么饿死。生存的唯一方法是通过战略努力——让船下沉到足以灭火的程度,然后在你向岸边划去的时候修补船体上的洞。”

在过去的几周里,我与一些首席信息官和其他技术领导者进行了交谈,以了解他们通过疫情对云成本优化的了解。他们经历了火灾和洪水,在许多情况下变得比以前更加强大和灵活。以下是他们的一些见解。

在你做出改变之前了解你的花费

KAR Global 的国际市场首席信息官 Gary Watkins 在疫情来袭时,离提前退休只有几周时间,但他还是采取了行动。

“我们遵循一个四步计划来适当调整我们的云成本,”他说:“识别、测量、计算和优化。”

首先,沃特金斯和他的团队盘点了所有云环境中的资源使用情况,以确保他们知道自己在花钱买什么。

接下来,他们实施了额外的监控来了解这些资源的使用模式。(开发中的那个 Elasticsearch 集群真的需要这么大吗?)

第三,他们建立了治理和标记来确保他们了解谁拥有哪些资源以及为什么拥有。

最后,他们在有意义的地方对成本进行了优化。沃特金斯说:“基本的模式就是对我们使用的东西要有责任心。”。“我们可以关闭什么,我们可以在周末关闭什么?”

沃特金斯的继任者肖恩·贾斯蒂斯(Shawn Justice)指出了如此多的组织未能实施适当的云财务管理的原因:“不这样做更容易。任何时候你都有非功能性的需求,比如错误处理、监控等等——它不是面向客户的,并且需要时间来实现。但当每个人都专注于节约成本时,就更容易证明投资时间的合理性。”

最后,Justice 表示,KAR 通过追求唾手可得的成果,通过自动化和情景意识为开发人员收拾残局,在云账单上实现了显著的节约。“我们只是把东西关掉,听着尖叫声。”

增长也需要成本管理

尽管检疫减缓了经济中某些领域的增长,但其他领域的需求却出现了意想不到的增长。医疗保健初创公司 Chartspan 今年春天经历了一次巨大的流量高峰,当时他们正在将内部工作负载迁移到云中。

首席技术官 David Lowry 开玩笑说,他的主要策略是确保首席财务官不会对他大喊大叫,但他也知道云可以轻松地比你的钱包扩展得更快。

“小的配置问题,虽然不会立即显现出来,但会对你的大规模云账单产生巨大影响,”他说,并引用了最近的一个事件,即流量增加导致后端云作业下载了数千个大的重复文件。这在过去从来都不是问题,但在疫情负载下却消耗了太多的数据传输费用。

Lowry 和他的团队现在使用 Amazon CloudWatch 仪表盘来主动监控支出,并向更多的云原生架构迁移。

“如果你能在 AWS Fargate 上运行一个预定的任务,而不是一个专用的实例,某些成本就会消失,”他说。“现在,您可以专注于更难控制的其他支出,如合规性和数据传输。”


商业 ACG 现在包括 云游乐场 :快速、新鲜、一次性的云环境,让您在不增加预算的情况下保持创新。


战略性工作负载正在涌向云

他们目前可能试图控制支出,但我采访过的领导几乎一致预计他们的云采用率将在未来几个月或几年内增长。在整个行业中,大约 50%的企业目前正在加速他们的云战略,试图领先于潜在的第二波冠状病毒。

尽管 KAR 已经在云成熟的道路上走得很远,Shawn Justice 表示,疫情加快了他的数字化转型。“我们现在总是问自己:我们如何将文书工作和其他昂贵的手动和物理流程数字化?我们相信云是我们所有战略工作负载的合适位置,因为从长远来看,它可以节省我们的时间和金钱。”

有这么多的云提供商和这么多的服务产品,设计混合搭配的解决方案,在这里的计算或那里的存储上节省一点钱,似乎很有吸引力。

但是 Mitel 的云基础设施副总裁 Randy Young 说,这种方法可能会适得其反。“学习两套不同的云服务会产生时间和人才成本,”他说。“当您可以为一组标准服务编写自动化和工具时,您可以在整个业务中获得规模经济。”

不仅如此,他指出,与一家云提供商“全包”可以带来显著的折扣,如果你试图让多家提供商相互竞争,你就不太可能得到这种折扣。但是仔细评估你所做的任何前期承诺可以帮助你避免锁定那些跟不上不可预见的使用变化的支出。

未来:一个大红色按钮

云使得供应新资源变得容易,理论上关闭它们也同样容易…但是惯性和缺乏一致的治理意味着削减云成本就像是在进行一场狙击狩猎

Nationwide 的云计算副总裁 Ryan Hughes 设想了一条更大胆的道路。“云成本管理的未来,”他说,“是一个大红色按钮,可以在紧急情况下单方面关闭 40%的云容量。”

这根本不是传统 IT 组织的思维方式,但将您的基础架构承诺转变为随用随付确实为那些准备好利用这一优势的人提供了不同寻常的灵活性,尤其是对于像石油和天然气这样的行业,其盈利能力与快速变化的外部因素密切相关。

休斯呼吁深入了解什么系统是真正必要的。“如果形势非常严峻,您是否需要所有的开发和试运行环境?您可以关闭哪些生产系统来减少开销?这会产生什么样的连锁反应?”他认为这种机制可以简单到在资源上贴上“必要”或“非必要”的标签。


需要一个解决方案来优化多云环境中的管理和治理?

VMware CloudHealth 满足了这一需求。查看我们的课程,了解这一统一平台,通过一个仪表板来管理不同云提供商(如 AWS、Azure 和 Google 云平台)的资源。


成本优化是每个人的工作

Gary Watkins 知道,他在 KAR 的成本优化四步计划只有在整个组织都参与进来的情况下才会成功。

“我们试图站在前面,从领导的角度解决问题,”他说。“我们必须得到开发人员、分析师、管理员的支持——一直到 scrum 大师和产品负责人。我们围绕成本意识安排了几次会议。”

一旦产品团队达成一致,Watkins 和 Justice 就去他们的供应商管理办公室,要求他们围绕财务管理实践展开游戏,提供对已确定资源的见解,并衡量哪里的云支出最高。然后他们让中央云架构团队参与进来。“我们要求他们退后一步,评估一切,并告诉我们他们对我们可以重新设计的东西的看法。”

Randy Young 在 Mitel 的云卓越中心也采用了类似的方法。这是一个跨职能团队,代表来自基础设施、产品管理、架构和开发以及执行发起人。他们每两周会面一次,讨论一系列反映云组织成熟度的话题,包括成本优化。

“在内部,我们不得不迫使人们感到不舒服,”杨说。“我们使用在线培训、午餐学习和指导来帮助人们了解我们正在抛弃旧的 IT 模式。作为一个核心团队,我们需要支持

最后,Watkins 说,尽管我们正在经历前所未有的时代,但冠状病毒疫情只是强调了每个人都需要掌握的云基础知识。

“我们教导我们的员工质疑一切,”他说。“每个人都应该知道如何提出成本效益问题——不管他们是否自我描述为‘技术性的’。在压力或不确定的时候,这就更有理由去挑战和寻求清晰。”


一位云专家已经通过培训和支持帮助数千家企业扩展了他们的云专业知识。

用 AWS Amplify 和 Flask 创建一个无服务器的 Python API

原文:https://acloudguru.com/blog/engineering/create-a-serverless-python-api-with-aws-amplify-and-flask

Flask 是我最喜欢的创建快速 API 的工具之一。Python 仍然是我最喜欢的编程语言,尽管过去几年主要使用 JavaScript 语法对我来说简单而优雅,像 Pandas 这样的 Python 库的能力令人难以置信。

部署 Python 应用程序并不总是最有趣的活动,所以我们还将使用 AWS Lambda 来使我们的应用程序无服务器。另外,我们将使用 AWS Amplify 的命令行界面来创建和管理我们的资源。

我们还需要一个数据库来存储我们的数据,在这种情况下,我们将为布兰妮的歌曲构建一个 API,并使用 DynamoDB 来存储我们的数据。

本教程对于已经掌握了关于 AWS Amplify、API 如何工作以及 Python 的基础知识的人来说是最有帮助的。

让我们深入研究代码!

项目设置

首先,我们将初始化一个 Amplify 项目。你需要安装和配置Amplify CLI节点。我将从 React 应用程序开始,但我们将专注于教程的后端,所以如果你不是 React 开发人员,你应该没问题!

在您的终端中运行下面的命令来创建一个 React 样板文件,更改为它,然后初始化 Amplify。

初始化 Amplify 会提示你一些问题。对于所有这些,您只需按 enter 键就可以选择默认值!

添加数据库

$ npx create-react-app britney-spears-api
$ cd britney-spears-api
$ amplify init

接下来,我们需要向我们的项目添加一个 DynamoDB 数据库。在您的 CLI 中运行amplify add storage。这会问你一些关于你的数据的问题。

? Enter a name for the project britneyspearsapi
? Enter a name for the environment dev
? choose your default editor: Visual Studio Code
? Choose the type of app that you\'re building javascript
? What javascript framework are you using react
? Source Directory Path: src
? Distribution Directory Path build
? Build Command: npm run-script build
? Start Command: npm run-script start
? Do you want to use an AWS profile? yes
? Please choose the profile you want to use `your-profile`

现在,运行amplify push -y在 AWS 上部署您的数据库!

创建 API

? Please select from one of the below mentioned services: NoSQL Database
? Please provide a friendly name for your resource that will be used to label this category in the project: britneySongStorage
? Please provide table name: britneySongs

? What would you like to name this column: id
? Please choose the data type: string
? Would you like to add another column: Yes
? What would you like to name this column: name
? Please choose the data type: string
? Would you like to add another column: Yes
? What would you like to name this column: year
? Please choose the data type: number
? Would you like to add another column: Yes
? What would you like to name this column: link
? Please choose the data type: string
? Would you like to add another column: No

? Please choose partition key for the table: id
? Do you want to add a sort key to your table? N

? Do you want to add global secondary indexes to your table? No
? Do you want to add a Lambda Trigger for your Table? No

现在,让我们添加一个 API!我们将为所有 CRUD 操作创建路径,并允许数据库交互。

我们将使用 Amplify CLI 添加一个 API:amplify add api

系统会提示您回答一些问题。首先,命名您的 API,然后为您的路由提供一个基本路径。

然后,系统会提示我们创建一个新的 AWS Lambda 函数,并将其命名为。我们将使用 Python 语言。

我们还需要配置一些高级设置,以便访问我们的数据库。使用空格键选择存储和所有 CRUD 操作。

? Please select from one of the below mentioned services: REST
? Provide a friendly name for your resource to be used as a label for this category in the project: britneySongApi
? Provide a path (e.g., /book/{isbn}): /song

然后,您可以对接下来的几个问题回答“否”,尽管我会选择“是”来编辑您的本地 Lambda 函数。它会打开你的文本编辑器找到你想要的文件!

? Choose a Lambda source Create a new Lambda function
? Provide an AWS Lambda function name: britneyspearsapi
? Choose the runtime that you want to use: Python

创建一个 API 将启用 Amazon API 网关,它将处理 HTTP 请求到我们 Lambda 函数的路由。

? Do you want to configure advanced settings? Yes
? Do you want to access other resources in this project from your Lambda function? Yes
? Select the categories you want this function to have access to. storage
? Select the operations you want to permit on britneySongStorage create, read, update, delete

最后,运行 amplify push 将您的服务部署到云中。-y标志将跳过确认步骤。

? Do you want to invoke this function on a recurring schedule? No
? Do you want to configure Lambda layers for this function? No
? Do you want to edit the local lambda function now? Yes
? Restrict API access No
? Do you want to add another path? No

注意:每当您想要部署对 API 的更改时,您都需要重新运行这个 push 命令。

Python 函数

$ amplify push -y

首先,转到您的函数的目录:

您需要为 Python 打包安装 pipenv 。然后,我们将安装必要的软件包。

aws-wsgi将允许我们使用烧瓶路由

cd amplify/backend/function/britneyspearsapi 

在 Python 中支持与 AWS 服务的交互,我们将在 DynamoDB 中使用它

  • 是我们的网络框架
  • 将为我们的 flask 应用程序处理 CORS
  • 然后,打开你的 Lambda 函数的代码——它是在amplify add api步骤中为你打开的,但是如果你关闭了它,在你的函数文件夹中打开src/index.py
  • 在你的文件中会有一个生成的“Hello World”Lambda 函数,你可以删除它。
$ pipenv install aws-wsgi boto3 flask flask-cors

首先,我们需要初始化 Flask 应用程序。我们还将使用flask-cors来处理 CORS。

在这段代码下面,添加一个 Lambda 处理程序—这个函数将处理我们的请求事件。API Gateway 专门寻找一个名为handler的函数,所以一定要这样称呼它!

我们还将使用 awsgi 来使用带有 API 网关的 WSGI 中间件。

from flask_cors import CORS
from flask import Flask, jsonify, request

app = Flask(__name__)
CORS(app)

导入awsgi:

然后添加handler功能:

handler上面,我们来添加我们的第一条路线!在上面的amplify add api步骤中,我们已经为我们的 API 创建了一个基本路径。我将把这个路由保存到一个变量中,这样我就可以用它作为我所有 URL 的前缀。然后,我将为我的 Flask 应用程序添加一个路由,处理那个/songs/ url 并接受 GET 请求。现在,我将发送一个“hello world”消息。

+ import awsgi
from flask_cors import CORS
from flask import Flask, jsonify, request

运行amplify push -y以部署您的更改。

def handler(event, context):
    return awsgi.response(app, event, context)

要在前端使用这个路径,首先我要安装aws-amplify。在你的前端的根目录而不是你的 Python 函数的根目录中这样做。

# Constant variable with path prefix
BASE_ROUTE = "/song"

@app.route(BASE_ROUTE, methods=['GET'])
def list_songs():
    return jsonify(message="hello world")

然后,配置放大器。如果你在一个create-react-app生成的项目中,把它放在index.js文件中。

然后,添加 API 调用。我们将使用aws-amplifyAPI.get向我们的 API 发出 GET 请求。第一个参数是我们创建的 API 的名称,第二个参数是我们想要请求的路由。

$ npm i aws-amplify

添加创建路线

import { Amplify } from 'aws-amplify'
import config from './aws-exports'

Amplify.configure(config)

现在,让我们制作一条将在我们的数据库中创建一首新歌的路线。我将导入boto3uuidos,然后创建一个到数据库的新连接。我们还将从 Amplify 为我们创建的环境变量中获得 DynamoDB 表的名称。这些在amplify add api步骤的输出中列出。

import { API } from 'aws-amplify'

const getData = async () => {
  const data = await API.get('britneySongApi', '/song')
  console.log(data)
}

现在,我们将创建我们的路线。这个仍然位于/song url,但是这次它将处理一个 POST 请求。我们将获取请求对象,将其转换为 json,然后创建项目。我们将提供表的名称和该项目的数据。我们将使用 Python 的uuid4函数随机生成id。然后,我们将返回一条消息,表明该项已被创建。

现在,在前端,我们将发出创建新歌的 POST 请求!

import awsgi
+ import boto3
+ import os

from flask_cors import CORS
from flask import Flask, jsonify, request
+ from uuid import uuid4

+ client = boto3.client("dynamodb")
+ TABLE = os.environ.get("STORAGE_BRITNEYSONGSTORAGE_NAME")
BASE_ROUTE = "/song"

添加列表路由

 @app.route(BASE_ROUTE, methods=['POST'])
def create_song():
    request_json = request.get_json()
    client.put_item(TableName=TABLE, Item={
        'id': { 'S': str(uuid4()) },
        'name': {'S': request_json.get("name")},
        'year': {'S': request_json.get("year")},
        'link': {'S': request_json.get("link")},
    })
    return jsonify(message="item created")

让我们更新我们的 list route 来返回数据库中所有歌曲的列表。将list_items功能的返回改为表格扫描。

const data = await API.post('britneySongApi', '/song', { 
  body: { 
    name: 'Toxic', 
    year: '2003', 
    link: 'https://www.youtube.com/watch?v=LOZuxwVk7TU' 
  } 
})
console.log(data)

然后在前端,你可以提出这个请求来查看所有的歌曲!

添加获取路线

@app.route(BASE_ROUTE, methods=['GET'])
def list_songs():
+    return jsonify(data=client.scan(TableName=TABLE))

现在,我们将添加一个函数,它根据歌曲的id获取一首歌曲。我们将创建一个路由来处理对/song/<song_id>的 GET 请求。然后,我们将在数据库中查询具有该 id 的歌曲!

const data = await API.get('britneySongApi', '/song')
console.log(data)

添加编辑路线

现在,我们需要添加一个路由来编辑一个项目。这将处理对/song/<song_id>PUT请求。这个Key将是我们想要更新的歌曲的idUpdateExpression 将允许我们修改歌曲的所有属性。然后,ExpressionAttributeNames提供键名,ExpressionAttributeValues提供值。

@app.route(BASE_ROUTE + '/<song_id>', methods=['GET'])
def get_song(song_id):
    item = client.get_item(TableName=TABLE, Key={
        'id': {
            'S': song_id
        }
    })
    return jsonify(data=item)

添加删除路线

最后,我们将添加一个删除歌曲的路由。

@app.route(BASE_ROUTE + '/<song_id>', methods=['PUT'])
def update_song(song_id):
    client.update_item(
        TableName=TABLE,
        Key={'id': {'S': song_id}},
        UpdateExpression='SET #name = :name, #year = :year, #link = :link',
        ExpressionAttributeNames={
            '#name': 'name',
            '#year': 'year',
            '#link': 'link'
        },
        ExpressionAttributeValues={
            ':name': {'S': request.json['name']},
            ':year': {'S': request.json['year']},
            ':link': {'S': request.json['link']},
        }
    )
    return jsonify(message="item updated")

运行amplify push -y以部署您的更改!

排除故障

@app.route(BASE_ROUTE + '/<song_id>', methods=['DELETE'])
def delete_song(song_id):
    client.delete_item(
        TableName=TABLE,
        Key={'id': {'S': song_id}}
    )
    return jsonify(message="song deleted")

为了调试 API 的问题,您可以用一个event.json文件更新 run amplify mock来匹配您请求的事件对象。例如,要测试/song路径,您可以使用如下事件:

event.json

然后运行:

在本地测试您的功能。

{ "path": "/song", "httpMethod": "GET", "queryStringParameters": ""}

后续步骤

$ amplify mock function britneyspearsapi

本教程演示了如何使用 AWS SDK 和 AWS Amplify 生成的 Lambda 函数来构建完整的 CRUD API。你可以继续使用其他的放大资源,比如存储歌曲文件的存储器,或者限制 API 使用的认证。您还可以构建一个完整的前端来提取数据。

Next Steps

This tutorial demonstrates how to use the AWS SDK with an AWS Amplify-generated Lambda function to build a full CRUD API. You could continue to use other Amplify resources like storage to store the song files, or authentication to restrict the API usage. You could also build out a full frontend to pull the data.

使用 AWS Amplify Admin UI、React 和 Chakra UI 创建 Instagram Post 克隆

原文:https://acloudguru.com/blog/engineering/create-an-instagram-post-clone-with-the-aws-amplify-admin-ui-react-and-chakra-ui

什么是 Amplify Admin UI?

在本教程中,我们将使用 AWS Amplify Admin UI 来创建 Instagram 卡克隆的后端。2020 年在 Re:Invent 上发布的 Amplify Admin UI ,它允许你使用可视化界面为应用程序创建数据。它还在您的数据模型之上创建了一个 CMS,因此您不需要首先创建表单来创建一些示例数据,也不需要为内容仲裁者创建单独的管理应用程序。此外,它允许您在将数据模型部署到云之前对其进行测试——如果您愿意,甚至可以在没有 AWS 帐户的情况下进行测试!然后,只需点击几下鼠标,就可以部署到云中。

对于前端,我们将使用 React 和 Chakra UI ,这是一个非常棒的组件库,我们将使用它来使我们的应用程序看起来更好。

这是最终产品的图片:

此外,如果你喜欢通过视频而不是书面教程学习,这里有这个项目的 YouTube 版本!

创建数据模型

首先,让我们为数据创建一个模式。您可以通过此链接访问管理用户界面。当我们这样做时,我们正在创建一个利用 AWS Amplify DataStore 的后端。这将自动使您的数据同时在线和离线,这对移动开发人员来说尤其方便!

在主页上,单击“创建应用后端”下的“开始”。

然后,在下一页选择“数据”和“空白模式”。

点击“添加”按钮,然后点击“添加型号”。

我们将创建的第一个模型将是一个时间轴项目。这将有一个字符串形式的description和一个 AWSDateTime 形式的postTime

这将与content有 1:1 的关系,所以每个TimelineItem将有一个关联的Content实例,它存储视频或图像的实际链接。

在我们创建它之前,我们将创建一个Enum。这将有值IMAGEVIDEO——我们将在Content上存储TimelineItem将呈现什么类型的内容。再次点击add按钮,但这次选择Enum。然后将两个可能的值相加!

现在,我们将创建我们的Content模型—再次点击add并选择add model。这个模型将有source,它是一个链接到图像或视频内容的字符串。然后会有一个type,这将是ContentType枚举-如果你滚动到底部,它应该会出现在下拉列表中!

现在,我们将在TimelineItemContent之间创建一个关系。在TimelineItem下,点击【添加关系】。然后,选择Content型号,选择“一个 TimelineItem 对应一个内容”。您还可以更改关系名称——我通常将我的名称全部设置为小写。

现在,再添加两个模型。CommentUserComment会有一个主体,它是一个String,然后User会有一个username和一个profilePic,它们都是字符串。

在一个完整的生产应用程序中,您可能会添加一个从用户到您的身份验证提供者的用户的关系。

然后我们会添加关系。给UserComment模型添加 1:1 关系,给UserTimelineItem模型添加 1:1 关系——我把这个名字改成了“作者”,然后把TimelineItem的 1:n 关系改成了Comments

最终的模式应该如下所示:

部署您的应用

现在,我们将开始部署我们的后端模式。如果你点击右上角的test链接,你会得到在本地测试你的模式的指示——这意味着你可以编写一个初始版本的后端,而不需要创建一个 AWS 帐户,也没有任何机会为任何事情付费。也就是说,对于本教程,我想直接跳到deploy选项卡,这样我们就可以获得 CMS 功能。

转到deploy页面,在这里您将被指示创建一个 AWS 帐户或登录一个现有的帐户。

在下一页上,为您的应用程序选择一个名称,如“Instacard ”,然后选择一个 AWS 地区。部署你的应用需要几分钟时间。一旦完成,点击“后端环境”标签,然后“打开管理界面”。在此页面上,您将能够更新您部署的数据、添加身份验证和管理您的内容。

通过 CMS 添加数据

在管理用户界面中,转到content选项卡。您可以在这里为应用程序创建数据。为每个模型创建几个实例,并将数据连接在一起。我们将用它作为 Instacard 项目的测试数据!你可以从TimelineItem开始,然后创建你关联的UserContentComments。对于图片,使用你想要的任何地方的图片链接,我喜欢那些在 Unsplash 上的图片。

创建 React 应用程序

现在我们的后端可以运行了!我们可以开始我们的前端工作。我们将首先创建一个 React 应用程序:

一旦你完成了,就进入你的项目。我们需要为数据存储模型安装 AWS Amplify JavaScript 库和 TypeScript,然后是 Chakra UI 及其所有依赖项。

$ npx create-react-app instacard 

如果您没有安装 Amplify CLI,请运行以下命令:

$ cd instacard
$ npm i aws-amplify typescript
$ npm i @chakra-ui/react @emotion/react@^11 @emotion/styled@^11 framer-motion@^4 @chakra-ui/icons 

然后,我们需要运行amplify pull将你的应用程序放入本地项目。如果你回到管理界面,点击右上角的local setup instructions链接,你会得到一个命令。继续运行它。

$ curl -sL https://aws-amplify.github.io/amplify-cli/install | bash && $SHELL 

Amplify 遵循类似 Git 的推/拉模型。如果您通过 Admin UI 创建变更,您也可以运行amplify pull在本地获取它们。如果您在本地进行更改,运行amplify push来部署这些更改。

$ amplify pull --appId your-app-id --envName staging 

我们还需要为我们的项目配置 Amplify。打开您的src/index.js文件并添加以下内容:

我们将创建三个主要的组件文件,让我们继续创建它们。

import Amplify from 'aws-amplify'
import awsconfig from './aws-exports'

Amplify.configure(awsconfig) 

我们还将在根组件中设置ChakraProvider

$ touch src/{Timeline.js,Card.js,CommentList.js} 

创建时间轴组件

// App.js
import { ChakraProvider } from '@chakra-ui/react'

export default function App () {
  return (
    <ChakraProvider>
      <div />
    </ChakraProvider>
  )
}

我们要编写的第一个组件是时间轴组件。首先,我们将从数据存储中提取所有的TimelineItem。这看起来与 React 中初始渲染时的任何其他 API 调用非常相似,除了用DataStore.query()而不是fetchaxios调用。DataStore.query()TimelineItem作为参数将从数据存储中获取所有的TimelineItem

现在,我们还将添加我们的 UI 代码,我们将从 Chakra 导入Container,这将使我们的内容在页面上居中。我们还将使用 React 的子模式来传递子元素。这个组件的直接子组件将是一个函数,所以我们将遍历每个TimelineItem并调用那个将呈现其他 React 组件的函数!

// Timeline.js
import { useState, useEffect } from 'react'
import { DataStore } from '@aws-amplify/datastore'

import { TimelineItem } from './models'

export function Timeline () {
  const [timeline, setTimeline] = useState([])

  useEffect(() => {
    const getTimeline = async () => {
      const timelineData = await DataStore.query(TimelineItem)
      setTimeline(timelineData)
    }

    getTimeline()
  }, [])

  return(
    <div />
  )
}

创建卡组件

// Timeline.js
import { useState, useEffect } from 'react'
import { DataStore } from '@aws-amplify/datastore'
+ import { Container } from '@chakra-ui/react'

import { TimelineItem } from './models'

+ export function Timeline ({ children }) {
  const [timeline, setTimeline] = useState([])

  useEffect(() => {
    const getTimeline = async () => {
      const timelineData = await DataStore.query(TimelineItem)
      setTimeline(timelineData)
    }

    getTimeline()
  }, [])

  return (
+    <Container>
+      {timeline.map(post => children({ post }))}
+    </Container>
  )
}

现在,我们将创建一个卡组件。我将继续从 Chakra 导入我最终需要的所有东西,这样我就不需要再回到导入上来了。

然后,我将创建我的起始组件。该组件将从一个呈现“Hello!”的框开始。它最终会接受子元素,但是让我们首先连接我们的<Timeline>组件,为每个TimelineItem呈现一个<Card />

// Card.js
import { Box, Image, Flex, Avatar, Text, Spacer, IconButton } from '@chakra-ui/react'
import { ChatIcon, AddIcon, EmailIcon } from '@chakra-ui/icons' 

现在,我们将返回到我们的<App >组件并渲染我们的卡片时间轴!我需要导入必要的组件,然后在<Timeline>实例中,我们将添加一个返回<Card>实例的函数。时间轴中的.map将遍历所有的帖子,并运行这个函数为每个帖子渲染一个<Card>

export function Card ({ children }) {
  return (
    <Box maxW='lg' borderWidth='1px' borderRadius='md' overflow='hidden' m={5}>
      <h1>Hello!</h1>
    </Box>
  )
}

现在我们有了“你好!”每个TimelineItem都显示在一个框中,我们可以继续渲染实际的卡片数据。每个<Card>都有一个标题、一个主标题和一个页脚。这些都是组件,但是我们将创建它们并在Card组件下导出它们,因为我们将一前一后地使用它们。首先,让我们创建<Card.Header />。这将需要考虑帖子的作者,所以我们将把它作为一个道具。然后,我们将渲染更多的脉轮盒和伸缩组件,以正确排列项目。我们还将使用 Avatar 组件来渲染图片(如果有的话)。在本教程中,我们实际上不会创建下拉菜单,所以我们只添加三个点作为占位符。

//App.js
import { ChakraProvider } from '@chakra-ui/react'

import { Timeline } from './Timeline'
import { Card } from './Card'

export default function App () {
  return (
    <ChakraProvider>
      <Timeline>
        {({ post }) => (
          <Card key={post.id}></Card>
        )}
      </Timeline>
    </ChakraProvider>
  )
}

然后,我们将创建<Card.Main>组件,它将呈现文章包含的视频或图像。我们将为内容类型添加一个条件,然后呈现它。

// Card.js
Card.Header = function ({ author }) {
  return (
    <Box p={2}>
      <Flex>
        <Box d='flex' alignItems='center'>
          <Avatar name={author.username} src={author.profilePic} />
          <Box ml={2}>
            <Text fontWeight='bold' fontSize='sm'>
              {author.username}
            </Text>
          </Box>
        </Box>
        <Spacer />
        <Box p={2}>
          &hellip;
        </Box>
      </Flex>
    </Box>
  )
}

最后,卡片页脚将有三个按钮,在本教程中只是为了显示目的。然后,我们将在图片下面添加标题。我们还将为注释留出一个位置,这将是一个子组件。

Card.Main = function ({ content }) {
  let cardContent
  if (content.type === 'VIDEO') {
    cardContent = (
      <video controls>
        <source src={content.source} />
      </video>
    )
  } else {
    cardContent = <Image src={content.source} />
  }
  return (
    <Box>
      {cardContent}
    </Box>
  )
}

现在,我们将创建最后一个组件,它将呈现所有的评论!这将类似于Timeline组件,但是我们只想查询属于该帖子的评论。因此,我们将根据评论所属的post的 id 来过滤评论。DataStore.query()接受可选的第二个参数,该参数指定查询的条件。

Card.Footer = function ({ author, description, children }) {
  return (
    <Box ml={3}>
      <Box>
        <IconButton icon={<AddIcon />} variant='ghost' />
        <IconButton icon={<ChatIcon />} variant='ghost' />
        <IconButton icon={<EmailIcon />} variant='ghost' />
      </Box>
      <Box mt={3}>
        <Text>
          <Text as='b'>{author.username} </Text>{description}
        </Text>
      </Box>
      <Box>
        {children}
      </Box>
      <Box mt={1} mb={2}>
        <Text fontSize='xs' color='gray.500'>
          2 HOURS AGO
        </Text>
      </Box>
    </Box>
  )
}

现在,我们将返回到<App>组件来渲染卡片的所有这些部分!

import { useEffect, useState } from 'react'
import { DataStore } from '@aws-amplify/datastore'
import { Box, Text } from '@chakra-ui/react'

import { Comment } from './models'

export function CommentList ({ postId }) {
  const [comments, setComments] = useState([])
  useEffect(() => {
    const getComments = async () => {
      const postComments = await DataStore.query(Comment, p => p.timelineitemID === postId)
      setComments(postComments)
    }
    getComments()
  }, [])
  return (
    <Box>
      {comments.map(comment => (
        <Text key={comment.id}>
          <Text key={comment.id}>
            <Text as='b'>{comment.user.username} </Text>
            {comment.body}
          </Text>
        </Text>
      ))}
    </Box>
  )
}

太神奇了!现在我们的 Instacard 完成了!

import { ChakraProvider } from '@chakra-ui/react'

import { Timeline } from './Timeline'
import { Card } from './Card'
import { CommentList } from './CommentList'
import { CommentForm } from './CommentForm'

export default function App () {
  return (
    <ChakraProvider>
      <Timeline>
        {({ post }) => (
          <Card post={post} key={post.id}>
            <Card.Header author={post.author} />
            <Card.Main content={post.content} />
            <Card.Footer
              author={post.author}
              description={post.description}
            >
              <CommentList postId={post.id} />
            </Card.Footer>
            <CommentForm />
          </Card>
        )}
      </Timeline>
    </ChakraProvider>
  )
}

结论

概括地说,我们通过 AWS Amplify Admin UI 为 Instagram 帖子创建了一个模式。然后,我们使用它的 CMS 为我们的应用程序创建内容,然后使用 Chakra UI 在 React 应用程序中显示时间线数据。AWS Amplify 的管理用户界面支持快速后端开发,因此开发人员可以专注于他们的前端和业务逻辑。在本教程中,我们没有讨论身份验证或授权,但是您也可以通过可视化管理 UI 界面来启用它们。

To recap, we created a schema for an Instagram post via the AWS Amplify Admin UI. Then we used its CMS to create content for our application and then displayed the timeline data in a React app using Chakra UI for styling. AWS Amplify’s Admin UI enables rapid backend development so that developers can focus on their frontend and business logic. We didn’t talk about authentication or authorization in this tutorial, but you can enable them via the visual Admin UI interface as well.

使用 VS 代码创建、调试和部署无服务器 API 云专家

原文:https://acloudguru.com/blog/engineering/create-debug-and-deploy-a-serverless-api-with-vs-code

无服务器为开发者体验提供了一个强有力的转变。我们可以快速原型化和构建生产级软件,而不依赖于交付过程。这意味着我们可以更快地迭代,更快地获得反馈,等等。

在像微软 Azure 这样的平台上, serverless 令人兴奋的另一个原因是,你可以从 Azure dashboard 编写代码并立即部署。它显示了开发和生产之间的层次有多少。唯一要付出的代价是,以这种方式编写、测试和部署意味着您离开了您可能已经使用多年的编辑器。

概观

在本文中,我将向您展示如何设置 Visual Studio 代码来编写、测试、调试和部署带有 Azure 函数的无服务器 API。

更喜欢看而不是读?你可以跟随我在下面制作的视频。

注意:这是一本初级指南。要深入了解 Azure 函数的使用,请查看 ACG 的课程使用 Azure 函数的无服务器计算微软关于创建无服务器应用的学习模块

先决条件

要阅读本文,您需要以下内容:

  1. Azure 账户:它是免费的,你不需要为无服务器的东西付费,除非你正在构建一个大规模的 API
  2. VS 代码:永远免费
  3. 节点:运行在计算机上的开源 JS
  4. npm:节点的程序包管理器—它随节点一起安装

安装 Azure 功能工具

Azure Function Tools 解释你的无服务器代码并构建它。当您试图运行或调试您的无服务器代码时,VS 代码会寻找它。运行以下安装命令进行安装。

Mac:

brew tap azure/functions
brew install azure-functions-core-tools@3

Windows、Linux 和 Mac:

npm i -g azure-functions-core-tools@3 --unsafe-perm true

安装 Azure 函数 VS 代码扩展

安装了核心工具后,您现在可以安装 VS 代码扩展,它会为您完成所有无服务器的繁重工作。这个扩展将构建、运行甚至启动你的无服务器应用。它还可以使用各种模板为您搭建一个新的无服务器功能项目。

要安装它,从扩展页面点击安装

该扩展需要访问您的 Azure 帐户,然后才能部署您的无服务器代码。要设置它,请在安装扩展后单击出现在活动栏上的 Azure 徽标,然后单击登录 Azure :

VS 代码会打开你的默认浏览器,重定向到 Azure 的 auth 页面,在这里你可以登录并确认。只有拥有 Azure 帐户,您才能这样做。

创建新的功能项目

我们完成了所有的杂务,可以开始创建一个无服务器的函数项目了。

1.从活动栏中点击 Azure,然后点击创建新项目图标:

2.选择要在其中创建该项目的文件夹。

3.VS 代码会提示你选择一种语言来编写你的函数。在本文中,我将展示 JavaScript 中的所有例子,这样你也可以选择 JavaScript。

4.我前面提到过,这个 VS 代码扩展允许您使用不同的模板创建无服务器函数。在您选择了一种语言之后,扩展将提示您选择您想要的启动模板。我们的例子是一个简单的 HTTP API,所以选择 HTTP trigger 模板。

5.接下来,输入函数的名称。

6.最后,选择您希望该功能是受保护的还是公共的。选择匿名使其公开,我们可以这样做,因为我们并没有构建一个安全的 API。

VS 代码将创建函数项目,并询问您是要在当前 VS 代码窗口中打开它,还是在新窗口中打开它。选择适合你的。

扩展创建了一个文件夹和几个文件。

. # Function project
 ├── hello_serverless # Single function. You can add more of this
 │   ├── function.json # Settings for only the hello_serverless function
 │   ├── index.js # Function logic
 ├── host.json # Global settings for all functions in this function project
 ├── local.settings.json # Environmental variables go here
 ├── package.json # Node dependencies and config go here
 └── proxies.json

根目录是包含我们创建的函数的hello_serverless文件夹。该文件夹中的index.js文件是您的无服务器功能逻辑,您可以对其进行编辑,使其按照您想要的方式运行。值得注意的是,这是一个节点土地,所以安装依赖关系和所有的好东西是允许的。

运行您的功能

要运行该功能,点击活动栏中的调试按钮,然后点击播放按钮。

几秒钟后,您应该在终端中看到以下消息,确认运行成功,并且您的无服务器 API 现在正在端口 7071 上运行。

单击绿色的 URL 预览 API。如果您想要自定义消息:http://localhost:7071/API/hello _ server less?名字=克里斯

调试您的函数

打开index.js文件,在您希望调试器暂停执行的任何地方添加一个断点:

现在,通过单击播放按钮再次运行该功能。在浏览器中打开链接,一旦执行到达断点,浏览器将冻结,您可以返回 VS 代码查看暂停的执行。

部署到 Azure

与创建和调试一样,部署也可以通过表单而不是代码来完成。要部署我们创建的功能项目,请遵循以下步骤:

  1. 点击活动栏中的 Azure 按钮,点击部署到功能 app 按钮:

  2. 该扩展将列出您所有的 Azure 帐户订阅,并要求您选择一个。如果是新帐户,您应该获得默认订阅。无论如何,只需选择您有权部署的订阅即可

  3. 选择 +在 Azure 中新建功能 App:

4.给函数起个名字。该名称必须是全球唯一的,这意味着没有其他 Azure 客户使用该名称。

5.选择节点 14 作为运行时。

  1. 选择离你最近的地点。

VS 代码需要一两分钟在 Azure 上设置新功能并部署它。在部署过程中,您会在 VS 代码窗口的右下角看到状态更新。

部署完成后,单击 View output 按钮打开部署日志。

该日志包含关于您的部署的详细信息,还包含生产 URL,您可以在其中预览您的功能。单击 URL 进行预览。

还可以在 URL 中添加名称查询,获得自定义问候语https://a cloud-fn-demo . azure websites . net/API/hello _ server less?name=Chris

添加另一个功能并部署

您可以通过从活动栏中单击 Azure 图标并单击 Create function 图标向您的函数项目添加更多函数。

您将被要求选择一个函数模板,并重复我们在创建一个新的函数项目中介绍的步骤。

当你创建了这个函数,你可以使用部署到 Azure 中的步骤进行重新部署。唯一不同的是,当提示选择功能时,不是选择 +在 Azure 中创建新功能应用选择您之前部署的功能

结论

尝试使用 npm install 添加一个节点依赖项,并在 index.js 中导入该依赖项,看看是否可行。这篇关于 VS 代码调试器的文档将展示如何实现这一点。

关于作者

克里斯蒂安·恩万巴是微软的一名软件开发人员和高级开发人员。他编码、写作、教学、演讲和组织开发者活动。

用 Python 3 创建一个 IRC 机器人

原文:https://acloudguru.com/blog/engineering/creating-an-irc-bot-with-python3

我们之前已经在博客上发表过一些关于 IRC 的文章,也讨论过 Freenode IRC 网络上的#LinuxAcademy 频道。我们的学生已经多次明确表示,他们也非常希望我们提供更多的 Python。正如我们之前宣布的,更多的是来自我们的新教练,设拉子。然而,在他准备好发布他的新 Python 内容之前,我想我可以用一个我喜欢的有趣的 Python 项目来帮你度过难关:制作一个 IRC 机器人。在这篇博文中,我将讲述如何用 Python 3 创建一个基本的 IRC 机器人。在这篇文章中,我们假设你对 Python 和函数有基本的了解,如果你上过我们的Linux 上的 Python 入门课程,你应该已经掌握了这个基础 IRC 机器人教程所需的所有知识。如果您有任何问题或需要任何帮助,欢迎在下面发表评论或在 Freenode 上的#LinuxAcademy 频道上跳转。我在 IRC(和大多数其他地方)上用 OrderChaos,所以找找那个名字!

IRC 机器人

在我们开始之前,你可能想知道,“什么是 IRC 机器人?”非常有用和精彩的维基百科将 IRC 机器人定义为“一组脚本或一个独立的程序,作为客户端连接到互联网中继聊天,因此对其他 IRC 用户来说是另一个用户。IRC 机器人与普通客户端的不同之处在于,它不是为人类用户提供交互式的 IRC 访问,而是执行自动化功能。(来源)所以基本上,IRC 机器人对其他人来说是另一个用户,而是根据它的脚本执行设定的动作来响应预定的事件(通常是聊天中的特定消息)。它们可以有多种用途:从保存聊天记录,到管理工具,再到任何数量的其他愚蠢、有用或有时奇怪的功能。有一些机器人可以读取 Twitter feeds,执行网络搜索,甚至可以做sed——比如查找和替换(我为此写了一个并在 GitHub 上分享了它!有关详细信息,请参见下面的总结部分)。IRC 机器人可以用多种语言编写。PHP 和 Python 是两种常见的语言,但在许多其他语言中也有,包括 C、Java,甚至 Haskell。维基百科有一页列出了许多 IRC 机器人的对比。他们中的许多人现在已经死了,不再开发或使用,但他们可以作为灵感和有趣的阅读。好了,背景够了。让我们开始最酷的部分:创建你自己的 IRC 机器人。

准备机器人

在我们开始为我们的机器人写所有有趣又酷的东西之前,首先我们必须准备好机器人本身。我们需要确保我们已经设置了 Python,分配了一些变量,并确保我们可以连接到 IRC 网络。在我们开始之前的最后一个注意事项,附在这篇文章之后,我将包括我们所经历的全部代码——如果你在编码时迷路了,只需对照示例查看你应该在哪里。所有代码的解释都包含在附加 bot 的注释中,因此您可以在该文件中获得所需的所有信息。

Python 设置

首先,确保您安装了 Python 3。我们将假设您在这篇文章之前已经安装并配置了它。打开你最喜欢的 Python IDE (如果你没有的话,一个纯文本编辑器,甚至一个终端中的 vim 也行)。首先,我们应该确保指定我们使用的是 Python 3。对于 Windows,这意味着将文件命名为以结尾的东西。py 。对于 Linux/Mac,在文件的顶部包含这一行:#!/usr/bin/python3。指定 Python3 后,我们需要导入“套接字”库。套接字库用于通过网络端口进行连接和通信。我们用它来连接 IRC 服务器并与之通信。在 Python 中导入库非常容易,因为套接字库是内置的,所以您不需要安装任何东西。只需在#!/usr/bin/python3线下添加import socket。因此,现在您的文件应该只包含这两行:

#!/usr/bin/python3import socket

全局变量

既然我们已经指定我们在 Python3 中工作,并且导入了套接字库,我们需要定义一些变量。这些变量在整个机器人中使用,所以我们希望在编写任何函数之前定义它们。第一个变量是我们用来与 IRC 服务器连接和通信的套接字。套接字很复杂,可以以多种方式用于多种任务。如果你想了解更多关于插座的信息,请看这里:【https://docs.python.org/3/howto/sockets.html】T2。现在,只需要知道这是用来在机器人运行时建立与 IRC 服务器的持续连接,以发送和接收信息。接下来是我们要连接的服务器和通道的名称。我们可以对这些进行硬编码,但是有一个变量可以简化一些步骤。例如,如果我们想要连接到一个频道列表(而不是像本例中那样只有一个频道)或更改到不同的服务器或频道,我们不必找到每个实例,只需编辑这个变量即可。在这个例子中,我用的是 chat.freenode.net 的*。对于其他 IRC 网络,只需在相同的位置输入名称。之后,我们定义我们最终要加入的渠道。在我们进行测试时,我们不想使用官方/已建立的渠道。除了粗鲁之外,许多频道对机器人有特定的规则,或者根本不允许它们。请确保在将您的机器人添加到频道之前,您已经咨询了频道的版主。在我们的测试中,我们使用了一个定制的、未注册的房间(在 Freenode 上,由频道名称前的“##”表示)。这样,在我们进行测试时,我们将是唯一一个与机器人保持联系的人。我们给这个机器人起名叫机器人尼克。这是其他用户在频道中看到机器人的方式。确保这是一个未使用和未注册的昵称,因为如果它已经在使用中,你的机器人将无法连接,而如果它是一个注册和受保护的昵称,它将被分配一个随机名称。查看这里关于昵称注册的更多信息最后两个变量将在我们的主函数中使用。IRC 机器人不需要它,但是我们将要使用的函数需要它。我们所做的就是定义一个昵称,它可以向 bot 发送管理命令,并定义一个退出代码来结束 bot 脚本。我们在主函数的最后讨论了如何做到这一点。*

*ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server = "chat.freenode.net" # Serverchannel = "##bot-testing" # Channelbotnick = "IamaPythonBot" # Your bots nickadminname = "OrderChaos" #Your IRC nickname. On IRC (and most other places) I go by OrderChaos so that’s what I am using for this example.exitcode = "bye " + botnick*

连接到 IRC

现在我们已经准备好了机器人,并建立了一些我们正在使用的变量,让我们进入实际的连接部分。要连接到 IRC,我们需要使用我们的套接字变量(ircsock)并连接到服务器。IRC 通常在端口 6667 或 6697 上(6697 通常用于带 SSL 的 IRC,这样更安全)。在我们的例子中,我们使用 6667。我们需要将服务器名(在全局变量中建立)和端口号放在括号中,这样它就可以作为一个单独的项传递给连接。一旦我们建立了连接,我们需要向服务器发送一些信息,让服务器知道我们是谁。我们这样做是通过发送我们的用户信息,然后设置我们想要的昵称。通常这些都是相同的,但是注册用户有时会有几个昵称绑定到他们的帐户上,并且可以选择其中的任何一个。

*ircsock.connect((server, 6667)) # Here we connect to the server using the port 6667ircsock.send(bytes("USER "+ botnick +" "+ botnick +" "+ botnick + " " + botnick + "n", "UTF-8")) #We are basically filling out a form with this line and saying to set all the fields to the bot nickname.ircsock.send(bytes("NICK "+ botnick +"n", "UTF-8")) # assign the nick to the bot*

定义函数

这里我们定义了机器人使用的各种函数。这些是可能需要多次调用的代码段。

渠道连接

连接到 IRC 是好的,但是除非我们和其他用户在一个频道,否则它没有多大用处!我们把它放在一个函数中,而不是像上面的 ircsock.connect 部分那样硬编码,因为你可以用一个连接在多个通道中。我们在这个例子中只使用一个,所以它可以被硬编码,但是这样你可以看到它是如何完成的,并且如果你愿意的话,可以很容易地为多个通道修改它。在这里,我们接受通道名,作为函数的一部分,然后向 IRC 网络发送 join 命令。“字节”部分让我们指定发送编码为 UTF-8 的消息。这是为了明确地向 IRC 服务器发送正确的编码。在 Python 2 中,这是不必要的,但是 Python 3 中对字符串编码的更改使得这成为一项要求。每当我们向 IRC 服务器发送数据时,您都会看到这种情况。另外需要注意的是,消息末尾的“n”是一个新的行字符。这相当于在聊天窗口中按回车键。它让服务器知道我们已经完成了这个命令,而不是把所有的命令都串在同一行上。在发送 join 命令之后,我们希望开始一个循环,不断地检查和接收来自服务器的新消息,直到我们得到一个带有“End of /NAMES list”的消息。这表明我们已经成功加入渠道。下面的主要功能部分详细描述了每个功能的工作原理。

*def joinchan(chan): # join channel(s).  ircsock.send(bytes("JOIN "+ chan +"n", "UTF-8"))   ircmsg = ""  while ircmsg.find("End of /NAMES list.") == -1:      ircmsg = ircsock.recv(2048).decode("UTF-8")    ircmsg = ircmsg.strip('nr')    print(ircmsg)*

乒乓球

不,我不是指桌面游戏。IRC 服务器定期向连接的用户发送“PING”信号以确保他们仍然连接,这是很常见的。我们必须响应这些消息,让服务器知道我们还在那里。如果我们不响应这些信号,我们可能会与服务器断开连接,因为它认为我们已经断开了连接。这个函数不需要任何参数,因为响应总是相同的。只需用 PONG 响应任何 PING。不同的服务器对 PING 的响应有不同的要求,因此您可能需要根据您的服务器来调整/更新。我在 Freenode 上用过这个例子,从来没有遇到过任何问题。

*def ping(): # respond to server Pings.  ircsock.send(bytes("PONG :pingisn", "UTF-8"))*

表达重要意思

我们已经做了所有主要的准备工作,现在让我们写一些函数,这样我们的机器人实际上就有事可做了。该功能将让我们向频道或用户发送消息。对于这个函数,我们只需要接受一个变量,该变量包含我们要发送的消息以及我们要发送给谁。在参数部分使用 target=channel 将“target”变量的默认值设置为 channel 全局变量。如果只有一个参数 msg 被传递给函数,它将使用默认值“target”。目标和消息之间的“:”让服务器将目标和消息分开。

*def sendmsg(msg, target=channel): # sends messages to the target.  ircsock.send(bytes("PRIVMSG "+ target +" :"+ msg +"n", "UTF-8"))*

主要功能

好了,现在我们已经得到了我们的活动函数并准备好了所有的连接信息,是时候写机器人的连续部分了。这是机器人的主要功能。它将根据需要调用其他函数,处理从 IRC 收到的信息,并决定如何处理它。

启动

我们首先加入我们在全局变量部分定义的通道。之后,我们开始一个无限循环,不断检查和接收来自服务器的新信息。这确保了我们的连接保持开放。我们不想再次调用 main(),因为除了不断尝试重新加入通道之外,当连续多次递归调用一个函数时会遇到问题。在这种情况下,无限 while 循环效果更好。

*def main():  joinchan(channel)  while 1:*

接收信息

在这里,我们接收从 IRC 服务器发送给我们的信息。IRC 发送以 UTF 8 字符编码的信息,所以我们告诉我们的套接字连接接收多达 2048 字节,并将其解码为 UTF 8 字符。然后我们将它分配给 ircmsg 变量进行处理。之后,从字符串中移除任何换行符。如果有人在频道中键入“n ”,它仍然会很好地将它包含在消息中。这只是剔除了可能导致处理问题的特殊字符。我们还将接收到的信息打印到终端上。如果您不想看到它,可以跳过它,但它有助于调试和确保机器人正在工作。

*    ircmsg = ircsock.recv(2048).decode("UTF-8")    ircmsg = ircmsg.strip('nr')    print(ircmsg)*

拆分收到的邮件

接下来,检查我们收到的信息是否在文本中包含 PRIVMSG。PRIVMSG 是通道中的标准消息(以及指向 bot 的直接消息)进入的方式。大部分消息的处理都在这个部分进行。如果它是一个 PRIVMSG,我们希望获得发送消息的人的 nick,并将其从消息中分离出来。来自 IRC 的消息格式为“:[Nick]!~[hostname]@[IP Address]priv msg[channel]:[message]"所以我们把它拆分为不同的部分,把它们赋给单独的变量。

*    if ircmsg.find("PRIVMSG") != -1:      name = ircmsg.split('!',1)[0][1:]      message = ircmsg.split('PRIVMSG',1)[1].split(':',1)[1]*

选择一个操作

现在我们已经在它自己的变量中有了名称信息,我们检查名称是否少于 17 个字符。用户名(至少对于 Freenode)被限制在 16 个字符以内。因此,通过这种检查,我们可以确保我们不会响应无效用户或其他恰好包含“PRIVMSG”的消息。之后,我们使用一个检测块来查看它是否包含机器人应该采取行动的特定文本。在第一节中,我们将查看是否有人在消息中的任何地方向机器人问好,然后回复。因为我们没有定义目标,所以它将被发送到通道。第二个例子展示了如何在消息的开头寻找“命令”并解析它来完成复杂的任务。在这种情况下,我们要查找以“”开头的消息。tell”并使用它作为代码来查找要发送的消息和特定目标。整个信息应该看起来像。告诉[目标][消息]"正常工作。附加的 bot 文件中有注释,详细解释了它是如何工作的。

*      if len(name) < 17:        if message.find('Hi ' + botnick) != -1:          sendmsg("Hello " + name + "!")        if message[:5].find('.tell') != -1:          target = message.split(' ', 1)[1]          if target.find(' ') != -1:              message = target.split(' ', 1)[1]              target = target.split(' ')[0]          else:              target = name              message = "Could not parse. The message should be in the format of ‘.tell [target] [message]’ to work properly."          sendmsg(message, target)*

阻止机器人

因为我们在这个函数中创建了一个无限循环,所以没有自然结束。相反,我们将检查一些文本,并使用它们来结束函数(这将自动结束循环)。我们要做的是查看发送消息的人的名字是否与我们之前定义的管理员名字相匹配。我们让两者都小写,以防管理员在加入时输入的名字略有不同。在 IRC 上,‘order chaos’和‘order chaos’是同一个昵称,但是 Python 会把它们解释成不同的字符串,除非我们先把它全部转换成小写。我们还确保消息与上面的退出代码匹配。退出代码和消息必须完全相同。通过这种方式,管理员仍然可以键入带有额外文本的退出代码来解释它或向其他用户谈论它,而不会导致机器人退出。我们所做的唯一调整是去掉消息末尾的任何空白。因此,如果消息匹配,但在末尾有一个额外的空格,它仍然有效。如果退出代码是由管理员发送的,该函数会点击“return”行,该行会自动中断任何循环和 If 语句,并转到调用该函数的行。通常情况下,它会继续运行额外的代码行,但是我们将在调用 main()时结束脚本,这样就不会再有代码需要运行,bot 将会关闭。

*        if name.lower() == adminname.lower() and message.rstrip() == exitcode:          sendmsg("oh...okay. :'(")          ircsock.send(bytes("QUIT n", "UTF-8"))          return    else:*

响应 Pings

如果消息不是 PRIVMSG,它可能仍然需要一些响应。如果我们收到的信息是一个 ping 请求,我们调用之前定义的 PING()函数,用 PONG 响应。这让服务器知道我们仍然在线和连接。

*      if ircmsg.find("PING :") != -1:        ping()*

启动主功能

最后,既然已经定义了主函数,我们需要一些代码来启动它。它不需要任何参数,就像这行代码一样简单。

*main()*

包裹

现在你知道了。一个基本的,可以与 IRC 连接的机器人。它不是最有效或防错的机器人,但它是一个好的开始,会给你一些东西来建立。如果你对更复杂和更高级的 IRC 机器人感兴趣,可以看看维基百科上提到的许多流行的 IRC 机器人的比较。特别是, Sopel IRC 机器人是一个非常复杂和深入的 IRC 机器人,具有众多的功能和插件。它正由许多贡献者积极开发中。我有时也开发我自己的 Python IRC 机器人,它没有太多的特性(还没有!).您可以找到原始版本(用 Python 版本 2!)这里:【https://github.com/Orderchaos/ircbot】T4。它记录最近的聊天,并可以使用类似 sed 的命令进行查找/替换。开发分支有一个 Python 3 版本,我正在进行一次大的重写,将展示一些复杂的 sqlite3 数据库日志功能。附上我们刚刚经历的 bot 。你可以用它来检查你的工作,或者把它保存到你自己的脚本中,然后开始使用它。编辑:附件似乎没有正常工作。我们将把这个机器人上传到我们的 GitHub,并尽快发布。今天晚些时候回来查看完整的代码和注释!与此同时,请随意复制这篇文章中的代码并编译您自己的代码!编辑 2:你现在可以在一个地方找到所有的代码:https://github.com/Orderchaos/LinuxAcademy-IRC-Bot 今天晚些时候将添加额外的评论,这是原始代码,正如这篇博文中所示。如果你想聊天或有任何问题,请随时跳上 Freenode,加入我们的#LinuxAcademy 或给我发消息(我的 Freenode 昵称是 OrderChaos)。

以同样的方式裁剪多个图像(简短教程)

原文:https://acloudguru.com/blog/engineering/cropping-multiple-images-the-same-way-short-tutorial

有时,您会希望从多个图像中裁剪出相同的区域(想象一下从一堆截图中截取同一个窗口的内容)。当然,你可以启动你最喜欢的图片编辑器,一遍又一遍地选择和裁剪,但是,像往常一样,还有一个更好的方法。这个简短的教程描述了一种有效的方法来处理理论上无限数量的图像。难度: 基本–中等 注意:我强烈建议在弄乱这些图像之前,先把它们备份一下。本教程中的一些操作将覆盖图像文件,因此如果您犯了一个错误,您可能会丢失宝贵的数据。本教程假设了基本的 Linux 知识,比如启动程序、打开终端和使用终端。我们将使用的工具是 GIMPmogrify (来自 ImageMagick 套件),所以请确保您已经安装了它们。我们将使用 GIMP 来图形化地选择要裁剪的区域,并使用 mogrify 工具来自动化裁剪,这样可以节省我们很多工作。让我们从选择开始:

现在我们开始在候机楼工作。打开你最喜欢的一个和 cd 到图像所在的目录。请注意,我强烈建议只让在目录中裁剪图像,别无其他。这给你省了很多麻烦。那么,让我们从 mogrify 命令开始。裁剪的语法如下:

[rechosen @ localhost ~]$ mogrify-crop X ++ image.png

现在不要害怕,、等等只是你应该把从 GIMP 得到的值放在那里的地方!请注意,我使用 png 文件作为例子,而 mogrify 能够处理超过 100 种图像文件类型。你不必使用 png 文件。无论如何,如果我填写截图中的值,mogrify 命令将如下所示:

[rechosen @ localhost ~]$ mogrify-crop 643×393+7+83 image.png

这个系统背后的逻辑如下:裁剪一个 643×393 像素的区域,从图像左边的 7 个像素和顶部的 83 个像素开始。明白了吗?那好吧。上面的命令会用一个裁剪过的版本覆盖 image.png。但是这仍然只能处理一张图片。让 mogrify 修改所有图像的最简单方法就是这样:

[rechosen @ localhost ~]$ mogrify-crop 643×393+7+83 *。png

星号让 bash 填充当前目录下的所有 png 文件,mogrify 会愉快地全部处理。经过一段时间(希望很短)的等待后,所有的图像都会被裁剪掉。如果您想要裁剪其他格式的图像,只需更改“*”。png "到,例如," *。jpg "或" *。gif”。您可能想要为裁剪后的图像指定其他名称,这样原始图像就不会被覆盖,并且可以清楚地看到哪些图像已被裁剪,哪些图像未被裁剪。这更复杂,但是,嘿,我们正在开发 Linux!如果你花时间去写,一切皆有可能。

为了给裁剪后的图像起其他名字,我们将使用 bash 循环。这一次,我们将使用转换实用程序。它和 mogrify 来自同一个家族,但是它让我们更容易输出到另一个文件名。我不会解释整个循环,因为大部分都是 bash 知识,但是我会告诉你哪些事情你可以/应该改变以获得正确的结果。有两种情况下的循环,只需选择你最喜欢的文件命名方式。

  • Case 1: You want the output files to be named like this: originalfile.png ⇒ cropped_originalfile.png (again, you can insert any of the over 100 supported image formats here, I just like png). The loop should be like this:

    [re chosen @ localhost ~]\(for file in *。pngdo convert-crop { Width } X { Height }+{ X }+{ Y }\) file cropped _ $ file;完成的

    你应该把“png”替换成你想要的扩展名(想想 jpg、gif、png(当然)等等),把“”、“”等等替换成你从 GIMP 得到的值。您也可以将“cropped_”替换为您喜欢的任何前缀。

  • Case 2: You want the output files to be named like this: originalfile.png ⇒ originalfile_cropped.png (or originalfile.jpg ⇒ originalfile_cropped.jpg, you name it). In that case, you should use the following loop:

    [re chosen @ localhost ~]\(for file in *。pngdo convert-crop { Width } X { Height }+{ X }+{ Y }\) file $ { file %。png } _ cropped.png 完成的

    再次,用你想要的扩展名替换“png”(注意,有它的 3 实例),用你从 GIMP 得到的值替换“”、“”等。您也可以用您喜欢的任何后缀替换“_cropped”。请注意,在这种情况下,您可以轻松地修改输出格式:如果您想以 jpg 格式输出裁剪后的图像,您只需将第三个“png”实例替换为“jpg ”,无论您的输入文件是什么格式。转换实用程序将检测到它并自动更改图像格式。

好了,希望这个小教程对你有帮助。如果你想在这些事情上得到更多的帮助,欢迎发表评论。感谢阅读,上帝保佑!

跨区域 OpenSearch 和新的 Amazon EC2 实例

原文:https://acloudguru.com/blog/engineering/cross-region-opensearch-and-new-amazon-ec2-instances

本周我们又回来对 AWS 进行了一次综合报道,我们将处理上周发生的事情,只为您带来 AWS 新闻中最精彩的内容!本周,我们将讨论新的 AWS 成本分配标签 API、Amazon OpenSearch 跨区域搜索、新的 R6id EC2 实例类型以及一些即将到来的 AWS 事件。准备好所有的细节了吗?继续读下去。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


宣布 AWS 成本分配标签 API

成本分配标签是 AWS 中管理成本的一个非常重要的部分,特别是在大型企业中,我们需要将资源成本分配到各个部门,通常规模很大。但是,管理这些成本分配标签并不容易。嗯,也许这即将改变,因为现在可以使用 AWS API 激活和停用 AWS 成本分配标签。

在您决定了要使用的标签之后,到目前为止,您必须登录 AWS 管理控制台并在计费控制台中激活每个标签。对于多个 AWS 帐户,您可能需要多次执行此操作。通过此次发布,AWS 使得通过 AWS API 管理您的成本分配标签成为可能,包括各种 SDK 和命令行。

如果您正在管理一个具有复杂成本分配的大型 AWS 环境,这将为您提供很多机会来更好地管理这些标签,并消除一些令人头疼的问题,该功能现在在所有地区都可用。

亚马逊 OpenSearch 跨区域搜索支持

亚马逊 OpenSearch 现在支持跨区域搜索。 OpenSearch 以前支持在同一区域内跨域搜索的能力,但这在实践中有一些限制。许多公司将跨不同区域部署他们的资源,包括 OpenSearch 集群,以满足架构需求,例如数据主权。这项新功能支持 OpenSearch 和 7.10 之后的 ElasticSearch 版本的跨集群搜索。

除了版本限制之外,还有一些限制需要注意。最值得注意的是,你不能混搭运行在 OpenSearch 和 ElasticSearch 上的域,并且由于该功能的运行方式,你不能连接到任何自我管理的集群。还有一些需要注意的限制,但是它们在 AWS 文档中有很好的介绍。

如果你在你的组织中使用 OpenSearch,特别是跨地区的,它可能会让你的生活变得更简单。

新 R6id EC2 实例类型

一个新的 EC2 实例家族已经随着新的内存优化 R6id 实例正式上市

新 R6id 运行与 R6i 家族其余产品相同的英特尔至强处理器,还包括大量本地 NVMe SSD 实例存储。与之前的 R5d 系列相比,您需要支付大约 5%的按需费用,但网络接口和 EBS 存储的相对实例存储和性能都有大幅提升。

公平地说,由 AWS 自己的基于 Arm 的 Graviton2 处理器支持的 R6gd 实例家族仍然可用,并且其按需成本比基于英特尔至强处理器的 R6id 低 24%。然而,要做到这一点,您的工作负载需要能够在基于 Arm 的处理器上运行,因此,您可能更好地使用这些新的 R6id 实例及其 x86-64 架构。

因此,如果您正在突破当前配置中实例存储的极限,这可能有助于您更有效地扩展。R6id 目前在北弗吉尼亚(美国东部 1)、俄亥俄(美国东部 2)、俄勒冈(美国西部 2)和爱尔兰(欧盟西部 1)地区提供,更多地区将陆续推出。

即将举行的 AWS 活动


AWS 将在接下来的几周举办一系列活动,本周以亚马逊火星为开端。

re:MARS 是在拉斯维加斯举行的一次会议,汇集了机器学习、自动化、机器人和空间技术领域的许多最有头脑的人(明白吗?米-阿-R-S!).会议涵盖了从将人工智能用于临床医学,管理自动驾驶汽车车队,到使用卫星和机器学习测量碳排放的所有内容,与会者绝对会喜欢。如果你感兴趣,你也可以通过免费直播在线观看主题演讲。

除此之外,AWS 峰会也将于本周在米兰和 T2 拉开帷幕,继续在全球巡回。这些都是联系当地技术社区并花一天时间深入了解 AWS 的绝佳机会。前往 AWS 活动页面查看完整的日期和地点列表。

想跟上 AWS 的一切? 在 YouTube 上订阅一位云大师 的每周亚马逊新闻和 AWS 公告。你也可以像 ACG 上的一样,关注我们上的 推特 ,或者加入 不和谐 的对话!


Want to keep up with all things AWS? Subscribe to A Cloud Guru on YouTube for weekly Amazon news and AWS announcements. You can also like ACG on Facebook, follow us on* Twitter, or join the conversation on Discord*!**

Azure 事件中心和流分析:穿越流

原文:https://acloudguru.com/blog/engineering/crossing-the-streams-with-azure-event-hubs-and-stream-analytics

由 Abhishek Gupta
博客 | LinkedIn | 推特

这篇博客提供了一个如何使用 Azure Stream Analytics 处理来自 Azure Event Hubs 的流数据的实际例子。您应该能够使用 Azure 门户(或 Azure CLI)完成本教程,而无需编写任何代码。在这篇博文的最后,还有其他资源可以用来探索使用 Azure Stream Analytics 进行流处理。

包括哪些内容?

  • 用例、解决方案及其组成部分的快速概述
  • 如何设置所需的 Azure 服务:事件中心、流分析和 Blob 存储
  • 如何使用示例数据配置和测试 Azure 流分析作业
  • 如何运行 Azure 流分析作业并使用实时数据进行测试

想了解更多关于 Azure 认证的信息吗?
查看我们的 Azure 认证和学习路径。

概述

Azure Stream Analytics 是一个实时分析和复杂事件处理引擎,旨在同时分析和处理来自多个来源的大量快速流数据。它支持一个Job的概念,每个由一个inputquery和一个output组成。Azure Stream Analytics 可以从 Azure Event Hub(包括 Apache Kafka 的 Azure Event Hub)、Azure IoT Hub 或 Azure Blob 存储中ingest数据。query基于 SQL 查询语言,可用于轻松过滤、排序、聚合和连接一段时间内的流数据。

假设您有一个应用程序,它接受来自客户的已处理订单,并将它们发送到 Azure Event Hubs。该要求是处理“原始”订单数据,并用额外的客户信息(如姓名、电子邮件、位置等)丰富它。要做到这一点,您可以构建一个下游服务,该服务将从事件中心消费这些订单并处理它们。在这个例子中,这个服务恰好是一个 Azure 流分析作业(当然,我们将在后面探讨它!)


作为基础设施的一部分,您可以使用 Kafka 来处理消息传递。想了解更多关于使用简单 HTTP 请求生成和使用消息的知识吗?尝试我们的动手实验,获得使用 REST 代理消费 Kafka 数据所需的请求经验。


为了构建这个应用程序,我们需要从外部系统(例如,一个数据库)获取这个客户数据,对于订单信息中的每个客户 ID,我们将查询这个客户的详细信息。这将满足低速数据系统或不需要考虑端到端处理延迟的系统。但这将对高速流数据的实时处理提出挑战。

当然,这不是一个新奇的问题!这篇博文的目的是展示如何使用 Azure Stream Analytics 实现一个解决方案。以下是各个组件:

输入数据源

Azure 流分析作业连接到一个或多个数据输入。每个输入定义了一个到现有数据源的连接——在本例中是,它的 Azure Event Hubs

单个订单是一个 JSON 有效负载,如下所示:

{
    "id": "42",
    "custid": "4",
    "amount": "100"
}

参考数据

客户信息作为参考数据提供。虽然,客户信息可能会改变(例如,如果客户改变了她的电话号码),但出于本例的目的,我们将把它视为存储在 Azure Blob 存储容器中的 static引用数据

询问

这是我们解决方案的核心!它基于匹配的客户 ID(在customers数据集中是id,在orders流中是id)将来自 Azure Event Hubs 的订单数据(连续流)与静态参考客户数据连接起来

输出接收器

简而言之,输出让您存储和保存流分析作业的结果。在这个例子中,为了简单起见,我们继续使用 Azure Event Hubs(一个不同的主题)作为输出。

现在您已经有了一个概念性的概述,是时候深入了解了。你只需要一个 Azure 账户。如果你还没有,就免费拿一个。

初始设置

在本节中,您将:

  • 创建 Azure 事件中心命名空间和主题
  • 创建 Azure Blob 存储帐户和容器
  • 创建 Azure Stream Analytics 作业,并为该作业配置事件中枢和 Blob 存储输入

Azure 活动中心

您需要创建一个事件中心名称空间和中心(主题)。有很多选项,包括 Azure PortalAzure CLIARM 模板Azure PowerShell


Azure 资源管理器(ARM)模板提供了一种使用文本文件定义 Azure 资源和配置的强大方法。使用我们的动手实验室来了解如何定位和利用微软的公共 Azure quickstart 模板。


请注意,您需要创建两个主题:

  • 输入(你可以把它命名为orders ): Azure Stream Analytics 将把它作为订单数据的(流)“源”
  • 输出(你可以将它命名为customer-orders ): Azure Stream Analytics 将使用它作为一个“接收器”来存储查询处理的丰富数据

Azure Blob 存储

你需要创建一个 Azure 存储帐户。这个快速入门带你完成这个过程,并为 Azure 门户、Azure CLI 等提供指导。一旦完成,继续前进,使用 Azure 门户或 Azure CLI 创建一个容器。

将下面的 JSON 保存到一个文件中,并上传到您刚刚创建的存储容器中。

[
    {
        "id": "1",
        "name": "Willis Collins",
        "location": "Dallas"
    },
    {
        "id": "2",
        "name": "Casey Brady",
        "location": "Chicago"
    },
    {
        "id": "3",
        "name": "Walker Wong",
        "location": "San Jose"
    },
    {
        "id": "4",
        "name": "Randall Weeks",
        "location": "San Diego"
    },
    {
        "id": "5",
        "name": "Gerardo Dorsey",
        "location": "New Jersey"
    }
]

Azure 流分析

首先创建一个 Azure 流分析作业。如果你想使用 Azure 门户,只需遵循本节概述的步骤或者如果你不喜欢点击 UI,使用 Azure CLI 代替

配置 Azure 事件中心输入

打开您刚刚创建的 Azure Stream Analytics 作业,并将 Azure Event Hubs 配置为一个输入。以下是一些屏幕截图,应该可以指导您完成这些步骤:

从左侧菜单中选择输入

选择 +添加流输入>事件中心

输入事件中心详细信息-门户为您提供了从现有事件中心命名空间和订阅中的相应事件中心中进行选择的便利,因此您只需选择正确的名称即可。

配置 Azure Blob 存储输入:

从左侧菜单中选择输入

选择添加参考输入>斑点存储

输入/选择 Blob 存储详细信息

一旦完成,您应该会看到以下输入:

使用示例数据配置查询和测试

Azure Stream Analytics 允许你用样本数据测试你的流查询。在本节中,我们将分别为事件中心和 Blob 存储输入上传订单和客户信息的样本数据。

上传样本数据为 **orders:**

打开 Azure Stream Analytics 作业,选择查询并上传示例订单数据以供事件中心输入

将下面的 JSON 保存到一个文件并上传。

[
    {
        "id": "42",
        "custid": "1",
        "amount": "100"
    },
    {
        "id": "43",
        "custid": "2",
        "amount": "200"
    },
    {
        "id": "44",
        "custid": "3",
        "amount": "300"
    },
    {
        "id": "45",
        "custid": "3",
        "amount": "150"
    },
    {
        "id": "46",
        "custid": "4",
        "amount": "170"
    },
    {
        "id": "47",
        "custid": "5",
        "amount": "150"
    },
    {
        "id": "48",
        "custid": "5",
        "amount": "200"
    }

]

上传客户样本数据

打开 Azure Stream Analytics 作业,选择查询并为 Blob 存储输入上传样本订单数据

您可以上传之前上传到 Blob 存储的 JSON 文件。

现在,配置并运行以下查询:

SELECT o.id as order_id, o.amount as purchase, o.custid as customer_id, c.name customer_name, c.location as customer_location
FROM orders o
JOIN customers c  
ON o.custid = c.id 

打开 Azure Stream Analytics 作业,选择查询**,然后按照下面截图中描述的步骤操作:**

选择查询>进入查询>测试查询别忘了选择保存查询****

查询JOINs根据匹配的客户 ID(在customers数据集中是id,在orders流中是id)用静态引用customers数据(来自 Blob 存储)对来自事件中心的数据进行排序。)

探究 引用数据 加入 操作 或者挖掘到 流分析查询引用

使用流数据测试作业

很高兴能够使用样本数据来测试我们的流解决方案。让我们继续尝试将实际数据(订单)端到端地流入活动中心。

运行Job需要一个Output。为了配置输出,选择输出> +添加>事件中枢****

输入事件中心详细信息:门户为您提供了从现有事件中心名称空间和订阅中的相应事件中心中进行选择的便利,因此您只需选择正确的名称空间即可。

开始工作

在 Azure Stream Analytics 界面,选择概览**,点击开始并确认**

等待作业开始,您应该看到Status变为运行****

测试端到端流量

为了简单起见,我们可以使用kafkacat CLI 来生成订单和消费丰富的事件(而不是程序)。只需安装它,你就可以开始了。

注意:虽然我使用了kafkacat,但是您可以自由选择任何其他机制(CLI 或编程)。这个 文档提供了大量的例子

创建一个包含事件中心信息的kafkacat.conf文件:

**metadata.broker.list=<namespace><namespace>.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanisms=PLAIN
sasl.username=$ConnectionString
sasl.password=Endpoint=sb://<enter namespace=""><namespace>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=</enter></namespace>**

启动消费者收听来自事件中心的输出主题

让我们首先启动将连接到输出主题(customer-orders)的消费者流程,该输出主题将从 Azure Stream Analytics 获取丰富的订单信息

在终端中:

**export KAFKACAT_CONFIG=kafkacat.conf
kafkacat -b <enter namespace=""><namespace>.servicebus.windows.net:9093 -t customer-orders

//output
% Reading configuration from file kafkacat.conf
% Auto-selecting Consumer mode (use -P or -C to override)</enter>**

这将阻塞,等待来自customer-orders的记录。

在另一个终端,开始向orders主题发送订单信息

**kafkacat -P -b <enter namespace=""><namespace>.servicebus.windows.net:9093 -t orders</enter>**

您可以通过stdout发送订单数据。只需一次粘贴一个,并观察另一个终端的输出:

**{"id": "22","custid": "1","amount": "100"}
{"id": "23","custid": "2","amount": "200"}
{"id": "24","custid": "3","amount": "300"}
{"id": "25","custid": "4","amount": "400"}
{"id": "26","custid": "15","amount": "500"}**

您在消费者终端上看到的输出应该类似于以下内容:

**...
% Reached end of topic customer-orders [0] at offset 0
{"order_id":"22","purchase":"100","customer_id":"11","customer_name":"Willis Collins","customer_location":"Dallas"}

% Reached end of topic customer-orders [0] at offset 1
{"order_id":"23","purchase":"200","customer_id":"2","customer_name":"Casey Brady","customer_location":"Chicago"
...**

请注意订单信息现在是如何被客户数据(本例中是姓名、位置)丰富的。您可以随意使用本主题中的信息。例如,您可以将这个丰富的物化视图持久化到 Azure Cosmos DB ,触发一个 Azure 函数等等。

不出所料,您不会看到与客户(其 ID 不在参考客户数据(在 Blob 存储中)中)下的订单相对应的丰富事件,因为 JOIN 标准是基于客户 ID 的。

这就把我们带到了本教程的结尾!我希望它能帮助你开始使用 Azure Stream Analytics,并在进入更复杂的用例之前进行测试。

接下来去哪里?

除此之外,还有大量的材料供你挖掘。

结论

高速实时数据带来了使用传统架构难以应对的挑战,其中一个问题就是连接这些数据流。根据不同的用例,定制的解决方案可能会更好地为您服务,但是这需要花费大量的时间和精力来做好。如果可能的话,您可能想要考虑提取您的数据处理架构的一部分,并将繁重的工作交给为这类问题定制的服务。**

在这篇博文中,我们探索了一种可能的解决方案,通过结合使用 Azure Event Hubs 获取数据和 Azure Stream Analytics 使用 SQL 处理数据来实现流连接。这些都是功能强大的现成服务,您可以配置和使用它们,而无需设置任何基础架构,而且由于有了云,这些解决方案中涉及的分布式系统的底层复杂性完全从我们这里抽象出来。

想了解更多关于 Azure 认证的信息吗?
查看我们的 Azure 认证和学习路径。

什么是无服务器,什么不是:揭穿神话

原文:https://acloudguru.com/blog/engineering/debunking-serverless-myths

无服务器仍在讨论中。这个术语本身(“无服务器”)是模棱两可的,在我们的会议之前、期间和之后都引发了许多 twitter 风暴。我认为现在有必要澄清一些谣言。如果你觉得我没有解决所有的误区,请告诉我,我很乐意在下面的列表中添加。

五月底,我们在纽约布鲁克林举办了第一次关于无服务器技术和架构的会议。发布会很火爆。我们的票卖完了,大约有 100 人在等候名单上。我不会给你一个总结,但我认为所有的与会者和发言者都喜欢这个活动(所有的演讲将很快在云专家的网站上发布)。

我们也收到了许多积极(和建设性)的反馈,对此我们表示感谢。感谢所有使这次会议成为可能的令人惊奇的、有趣的和热情的人们。


无服务器和 AWS Lambda

绝对不行。首先,除了 Lambda,还有其他无服务器计算服务,如 Azure Functions、Google Cloud Functions、Auth0 Webtask 和 IBM OpenWhisk。Lambda 目前可能会提供(IMHO)一个更成熟的解决方案,但它不是唯一的参与者。

其次,无服务器不仅仅是在 Lambda 这样的无状态计算服务中运行代码。这也是为了简化整个系统,帮助开发人员更快地移动(这是通过使用更多的第三方服务,减少后端代码量和将更多的逻辑移到前端来实现的)。

基本上,无服务器涉及到:

  • 通过消除运行服务器和管理基础架构的需求,简化传统系统的复杂性。
  • 帮助开发人员专注于他们的核心问题,并减少他们需要编写的代码量。

We were trending on Twitter during the conference

无服务器=没有服务器

我经常听到这样的话:“这个无服务器的东西没有任何意义。还有服务器。你错了,你应该感到难过”。如果我每次听到这句话都有一美元,我可能会有大约 38 美元,所以我感觉很糟糕。

当然有服务器。事实上,正是这些荣耀的动物让云和无服务器成为可能。如果你使用 Lambda 这样的无服务器计算服务,或者调用第三方 API——总有一个服务器在执行代码。

称之为无服务器的目的是说我们不再需要自己运行和管理(虚拟或物理)服务器。我们甚至无法接触到他们。我们部署在无状态计算服务中运行的代码,或者调用由其他人管理的服务。

无服务器取代开发运维

这让我有点难过。有人宣称,无服务器意味着不再需要开发运维。您可以看到它们是从哪里来的—如果您实现了一种纯粹的无服务器方法,您就不再需要担心基础架构、操作系统、网络配置、服务器修补等等。

但是——等一下!您仍然需要编码、构建、测试、打包、发布和监控您的应用程序。仍然需要考虑弹性、可用性和工具。是的,您不需要供应、配置、负载平衡和照看机器,但基础架构管理并不是 DevOps 关心的唯一任务。

有人需要对整个系统的质量和平稳运行负责。它不会自己发生。如果工程团队能处理好,那就太好了。但是仍然需要解决自动化、部署、测试、安全和监控等非开发任务。DevOps 试图解决的问题仍然存在…只是没有服务器。

请不要让这个流言不受质疑。


想深入了解 Serveless 吗?

一位云专家提供了一个关于云的所有内容的庞大图书馆,包括:课程、实验室、学习路径等等!


无服务器是一颗银弹

不,这不是银弹。无服务器解决了一些问题;它可以降低复杂性,并使许多应用程序的扩展更加容易。但是,它不能解决您的业务问题。无服务器技术和架构为系统的设计和实现提供了一种可能的方法,但是您仍然需要做这些工作。

无服务器也有它的挑战。你有一个分布式系统来处理,而不是沐浴在一个整体系统的进程内调用的相对健壮性中。然后还有这些问题:

  • 无服务器工具需要改进。感谢无服务器框架让这种情况变得更容易忍受。当我们开始的时候,我们不得不推出自己的框架——这很痛苦。
  • 现有的无服务器计算服务具有不同的限制和约束。
  • 更多的成熟和思考(在架构和模式方面)仍然需要发生。

无服务器技术和架构可以为您的应用程序提供一个很好的方法。我们的整个云学习平台是无服务器的。它支持成千上万的用户同时进行视频流传输和实时互动——不费吹灰之力,成本也很低。但是,无服务器可能不适合您的类应用程序,这没关系!

技术就是建筑

这是一个非常简单的问题,并不是一个神话。然而,我见过有人对此感到困惑。无服务器技术是特定的服务,比如 Lambda,它允许我们在不运行服务器的情况下执行代码。无服务器技术也可以指诸如 Firebase(实时流数据库服务)或 Auth0(托管认证服务)之类的服务,这些服务可以实现无服务器应用。无服务器架构是利用无服务器技术构建应用程序的模式。

我错过了一个神话吗?还有什么需要解决的吗?让我知道,我很乐意在这里添加它。

彼得·斯巴尔斯基

感谢唐纳德·费格森山姆·克鲁宁堡的反馈。

我们正在写一本名为《AWS 上的无服务器架构》的书。我们希望得到您的反馈!如果你想买一本,请发推特到 @sbarski@samkroon 联系我们,我们会给你发送折扣代码。

云专家

云专家的使命是通过提供世界领先的教育内容,让个人参与到提升云计算技能的旅程中来,这些教育内容旨在促进思维模式和职业发展。

“不要让世界上的任何人生活在错觉中。没有上师,谁也不能渡到彼岸。”——古鲁·那纳克

我们的云培训课程由对云计算有着共同热情的行业专家讲授。我们努力为不断壮大的云专家社区服务,他们在我们的论坛、研讨会、见面会和会议上慷慨地贡献了他们的见解。

跟上一个云咕噜剧组@ acloudguru

12 月新闻综述:AWS 有什么新功能?

原文:https://acloudguru.com/blog/engineering/december-news-roundup-whats-new-with-aws

你好,云大师!想知道 AWS 这个月发生了什么变化,但还没有找到时间查看几周的头条新闻?这里是你需要知道的所有信息。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。

AWS 回复:发明


本月初的一切都是关于 AWS re:Invent!我们很幸运有许多你最喜欢的专家在现场,提供最新信息和见解,我们甚至有一个特别的 AWS 本周事件,你可以在下面查看。

活动上有如此多的公告,但你可以在我们的综述文章中查看一些最大的公告,我们将在下面列出其中一些,你可以阅读以了解更多信息!

Amazon Inspector 对 AWS Lambda 函数的支持

现在为一些后 re:发明新闻!

Amazon Inspector 服务扫描云部署中的漏洞。现在,随着扫描 EC2 实例和容器注册表图像, Amazon Inspector 支持 Lambda 函数。它的工作原理是持续监控 Lambda 函数、服务器和容器映像中的 CVE,也称为常见漏洞和暴露。

一旦你打开 Amazon Inspector for Lambda,当一个函数被重新部署时,相应区域的所有函数都会被立即扫描。如果发布了一个新的 CVE,所有的函数都会被扫描一遍,而你不需要做任何事情。

检查人员发现的任何漏洞都会在一个中央仪表板中报告,还可以使用 EventBridge 或简单通知服务将其发送到其他位置。

AWS KMS 推出外部密钥库

AWS 密钥管理服务(KMS)是一个创建和管理加密密钥的优秀解决方案。一旦这些密钥就位,KMS 就允许其他 AWS 服务保护静态数据,加密和解密传输中的敏感数据,还可以创建和验证数字签名。

但是一些工作负载需要在 AWS 之外管理加密密钥。例如,某项法规可能要求加密密钥存储在本地或由无法访问您的 AWS 帐户的第三方独立审计。在这些情况下,用户可以受益于使用 KMS 作为代理,同时将密钥保持在自己的控制之下。

AWS KMS 现在支持外部密钥存储库,对用于加密和解密云中数据的密钥给予更多控制。

AWS 验证访问预览

如果您远程工作并连接到公司网络上的资源,您的 VPN 客户端可能是您求助的主要应用程序。没有 VPN,直接连接到私有资源不是很好吗?

随着 AWS Verified Access 的预览,这种未来已经成为可能,这是一种为企业应用程序提供安全、免 VPN 访问的服务。

验证访问通过使用多个输入来确定是否允许访问。这些输入可以包括用户的身份和角色以及正在使用的设备。与使用策略和网络控制来允许访问的传统 VPN 不同,验证访问检查发送到应用程序的每个请求,以确保该请求应该被允许。如果有任何变化,访问权将立即被取消。

亚马逊 Lex 开始支持更多语言

Amazon Lex 允许开发人员使用语音和文本创建具有对话界面的应用程序,现在该服务支持 27 种语言。

在这次最新的更新中,Amazon Lex 增加了对阿拉伯语、广东话、挪威语、瑞典语、波兰语和芬兰语的支持。这使得聊天机器人、虚拟代理和基于语音的系统能够适应来自世界各地更多国家的用户。

如果您还没有体验过 AWS Lex 服务,现在是开始体验的最佳时机。免费层的 AWS 帐户每月收到一万条文本请求和五千条语音请求。

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


Complete guide to the Cloud and Dictionary

AWS 成本异常检测通知现在包括重要的详细信息


AWS 成本异常检测是一项财务管理服务,允许您自动检测和分析成本异常的根本原因。您可以定义阈值并设置通知,通过电子邮件、Slack、Chime 等向您发出警报。这就是重大新闻的来源。这些通知中发送的详细信息正在增加。现在,它将包括帐户和监视器名称以及监视器类型。

电子邮件通知也越来越多,有开始日期最后检测日期,以及异常持续时间。当你追踪任何事情的真正原因时,这些信息是一个巨大的帮助。这个新功能包含在控制台和 API 中,所以这也是个好消息。

Amazon EBS direct APIs 现在支持 IPv6

亚马逊 EBS 是亚马逊的块存储解决方案。将 EBS 卷连接到 EC2 实例,以快速开始使用该解决方案。它有一个免费层,非常容易使用。您也可以轻松地创建这些卷的快照,但不要忘记在这些快照上设置生命周期,这样您就不会在任何不再需要的快照上累积成本。

关于快照,您可以使用 EBS direct APIs 访问 EBS 快照的内容。您可能需要访问快照来发现两个快照之间的差异。这些直接 API 现在支持 IPv6 。在你兴奋之前,直接 API 端点目前只在 4 个地区可用:俄亥俄州、北弗吉尼亚州、北加利福尼亚州和俄勒冈州。因此,请确保您的环境正在使用这四个区域中的一个,尽情享受吧!

亚马逊 2023 年 4 月的未来更新

亚马逊 S3 或简单存储服务是亚马逊的对象存储解决方案。每个解决方案都有保护它的方法。S3 有几种方法来保证你的对象桶的安全,比如阻塞公共访问,甚至用 ACL 或访问控制列表阻塞对单个对象的访问。

嗯,我们从亚马逊得到消息,亚马逊 S3 安全性的两个变化将于 2023 年 4 月推出。

S3 数据块公共访问将在每个新存储桶上自动启用,ACL 将在新存储桶上自动禁用。这意味着,如果您有任何需要公共访问或使用 ACLS 访问存储桶的应用程序,您将需要有目的地将这些存储桶配置为公共的或使用 ACL。

考虑使用自动化脚本或 CloudFormation 模板来配置这些设置,以便您的环境可以随着它们继续发展。请注意,这些设置将应用于每个地区的每个新存储桶,包括 GovCloud 和中国地区。

从这些 10 个有趣的动手项目开始构建你的云计算技能,学习 AWS


这是 AWS 12 月份最大的头条新闻!


想了解每周 AWS 新闻吗?

查看本周 AWS 的每周新闻综述。加入我们的专家主持人,因为他们涵盖了你需要知道的关于过去一周发展的一切,保持简短、有趣和信息丰富。

无论您是刚刚开始您的云之旅,还是您已经了解自己的东西,每个人都有适合自己的东西!

Whether you’re just beginning your cloud journey, or you know your stuff, there’s something for everyone!

12 月新闻综述:Azure 有什么新特性?

原文:https://acloudguru.com/blog/engineering/december-news-roundup-whats-new-with-azure

你好,云大师!想知道 Azure 在过去的一个月里发生了什么变化,但没有时间查看标题?我们已经写了一篇文章,提供了你需要知道的所有信息。

Azure 的 PSRule

本月初,我们采访了来自微软的 Bernie White,他告诉了我们关于 Azure 的 PS rule——一个开源的 IaC 工具,可以帮助提升 Azure 部署。看看下面的聊天吧!

AZ-800 认证现已推出

本月,云专家推出了一门全新的认证课程,名为 AZ-800 或管理 Windows Server 混合核心基础设施。这是一门很棒的课程,充满了大量的动手实验,数小时有意义的内容,所有这些都是为了教会你 Windows 服务器的来龙去脉。它涵盖了正在向云过渡的企业迫切需要的内容。

如果你有时间,看看吧。有如此多的演示、教程和动手实验,当你完成时,你会真正感觉到你不仅理解了材料,而且已经亲自处理了相当长一段时间的概念。

因此,如果你曾经想学习混合动力,让自己从竞争中脱颖而出,在这个月自己打开这个可怕的新课程。

Azure 容器应用的新部署选项

微软宣布了一些部署 Azure 容器应用的新方法。这些特性中的第一个,目前在 preview 中,允许你仅从源代码部署 Azure 容器应用。不需要提供 docker 文件或创建容器映像的说明。

这是使用 Azure CLI 中简单的az container up命令实现的。

在后台,该命令将部署容器应用程序所需的所有资源,如果您将 GitHub 作为源,它甚至会配置连续交付。

还有一个新的部署选项,除了支持这种连续交付的 GitHub 操作,现在还有用于 Azure DevOps 部署 Azure 容器应用的管道任务。

更好的是,所有你喜欢的源代码语言都被支持,包括。NET,Node,PHP,Python,Ruby 和 Go。如果你更喜欢视觉学习,Wayne Hoggett 将演示这些选项。

Azure Bastion 可共享链接

微软还在公开预览版中公布了 Azure Bastion 可共享链接。这项新功能支持通过简单的链接连接到目标虚拟机或虚拟机规模集。有了这个特性,您不再需要提供对 Azure Portal 的访问,就可以使用 HTTPS 向使用 Azure Bastion 的虚拟机或规模集授予远程访问权限。

这是一个很棒的功能,因为您经常需要提供对虚拟机的临时安全访问,以便软件供应商或开发人员可以为他们在您的虚拟机上运行的应用程序提供支持。你可以在下面看到 Wayne Hoggett 的演示!

Microsoft also announced Azure Bastion Shareable Links in Public Preview. This new feature enables connectivity to a target VM or VM scale set using a simple link. With this feature you longer need to provide access to the Azure Portal to grant remote access using HTTPS to a VM or scale set using Azure Bastion.

Azure 免费服务更新为 55+免费服务

谁不喜欢免费的东西?

微软已经增加了新用户前 12 个月免费的 Azure 服务数量。新服务包括高达 100GB 的本地冗余 Azure 文件和长达 5 小时的直播和点播流媒体服务。

微软最近还将一直免费的 Azure 服务数量从大约 40 个增加到超过 55 个。无论您是 Azure 免费试用版还是预付费订阅版,您都将获得这些服务的免费配额。

一些新服务包括 Azure 容器应用的配额,新的人工智能和机器学习服务,如 Metrics Advisor 和扬声器识别,以及与 Web PubSub 的实时通信。

工作负载迁移和现代化的 3 个关键云采用趋势

微软上个月委托对 1200 多名 IT 决策者进行的一项新研究揭示了三个关键的云采用趋势。

尽管全球的商业环境极不确定,但超过 82%的受访者表示,在不确定的商业环境中,云采用计划仍然是战略的一部分。

超过 74%的受访企业表示,现代化是数字化转型的一个重点。

超过 63%的受访者表示,混合和多云环境是新常态。

  • Brian Roehm 认为,这与他在社区中听到的一致:云将继续存在,采用率可能会继续增长到饱和,而机器学习等新技术将继续发展壮大。
  • Azure PaaS 服务公司的福雷斯特·TEI
  • 继续学习的话题…

微软最近与 Forrester 合作,测量通过利用托管云服务(如 Azure 的平台即服务产品)对传统应用进行现代化改造所带来的真实投资回报。云现代化的最终结果是在三年时间内实现了 228%的投资回报率,这是一个巨大的数字!

进一步来说,应用程序现代化包括停止对内部基础架构的投资,并将应用程序迁移到托管服务(如 Azure App Service)上运行,而不是简单地移植到基于云的虚拟机上。

投资回报数字是根据许多因素计算出来的,包括:

无需购买现场基础设施,节省了成本

降低管理成本

提高开发应用程序的效率

  1. 扩展应用的正常运行时间延长

  2. 通过以前所未有的速度将应用推向市场来节省时间

  3. 总的来说,使用本地应用程序的相同规模的团队能够通过托管 Azure 服务更快、更有效地运行,让他们专注于更有价值的任务,而不是管理基础架构,并且正常运行时间也更长。

  4. 这就是 Azure 月份的所有头条新闻!

  5. 想每周了解 Azure 新闻吗?

本周 Azure 是关于 Azure 的每周新闻综述。加入我们的专家主持人,因为他们涵盖了你需要知道的关于过去一周发展的一切,保持简短、有趣和信息丰富。

无论您是刚刚开始您的云之旅,还是您已经了解自己的东西,每个人都有适合自己的东西!

Want to keep on top of Azure News each week?

Azure This Week is your weekly news roundup for all things Azure. Join our expert hosts as they cover everything you need to know about the past week’s developments, keeping it short, fun and informative.

Whether you’re just beginning your cloud journey, or you know your stuff, there’s something for everyone!

深度潜水:亚马逊 Kinesis 大规模流

原文:https://acloudguru.com/blog/engineering/deep-dive-into-aws-kinesis-at-scale

使用 Amazon Kinesis 流每月在 AWS 上处理超过 2000 亿条记录时发现的最佳实践

ironSource 建立了每月处理超过 2000 亿条记录的关键任务数据生产管道后,我们想分享一些用鲜血写成的规则。

Kinesis Streams

The data pipeline architecture using Kinesis Streams


亚马逊 Kinesis 流概述

Kinesis 是一个无限可扩展的流,即由碎片组成的服务。该服务因其易用性和低开销以及有竞争力的价格而被广泛使用。这是 Kinesis Streams 和 Kafka 之间的一个共同区别。

像任何托管服务一样,亚马逊 Kinesis 有一些你应该熟悉的限制,以及如何通过扩展和节流来克服这些限制。明智的做法是利用 AWS 提供的生产者、消费者和可用工具来利用这些最佳实践。

shared kinesis streams diagram

Kinesis Streams diagram showing the use of shards within a stream


通过亚马逊 Kinesis 生产者库( KPL )降低成本

在大范围内,一旦投入生产,就很难改变体系结构,成本成为一个非常大的问题。该服务按 25kb 有效负载单位计费,因此如果您有较小的记录,则聚合消息是有意义的。

当向你的 Kinesis 流发送数据时,你应该将几条消息压缩并聚合成一条,以降低成本。

亚马逊 Kinesis 生产者库 (KPL) 聚集并压缩(使用协议缓冲区)多个逻辑用户记录到单个亚马逊 Kinesis 记录中,以便高效地输入流。该库由 AWS 用 C++构建,并且(仅)具有 Java 绑定。Golang 中有一个开源版本。

kinesis protocol buffers

KPL explained showing how messages are being aggregated using Protocol Buffers


使用 Kinesis 客户端库( KCL )

KCL 库由 AWS 编写,支持 KPL 用户记录的自动解聚集。KCL 负责许多与分布式计算相关的复杂任务——例如跨多个实例的负载平衡、对实例故障做出响应、对已处理的记录进行检查点操作,以及对重共享做出反应。

KCL 库在{ JavaNode.js中提供了以下语言绑定。NETPythonRuby }。


处理方法—按需/定点实例/ Lambda

虽然可以使用按需实例来处理 Kinesis 流,但是强烈建议利用 AWS spot-instances 来处理您的流——这是最具成本效益的方法。

还有一种处理数据的方法是使用带有 Kinesis 的 AWS Lambda,以及用于 AWS LambdaKinesis 记录聚合&解聚合模块。将 Kinesis 流连接到 Lambda 函数是非常容易的——但是您必须考虑成本,看看它对您的特定用例是否有意义。


想要提升您的云技能吗?

一位云专家提供了一个关于云的所有内容的庞大图书馆,包括:课程、实验室、学习路径等等!


监控室壁运动流

在使用 CloudWatch 监控你的 Kinesis 流时,有两组指标你应该考虑:

  1. 基本流级别指标
  2. 增强的碎片级指标

对于流级别度量,在 GetRecords 上设置一个警报是一个很好的实践。iteratoragemillissues了解你的员工是否在流程上落后。

然而,有时可能会有一个特定的工作者/碎片不同步——但是这种状态不会通过全局 IteratorAgeMilliseconds 平均值反映在流级别上。为了克服这一点,我建议每分钟运行一次 Lambda 脚本,并在碎片级查询它的 IteratorAgeMilliseconds,如果需要的话发出警报。

亚马逊 Kinesis 流指标

AWS 建议监控以下指标:

获取记录。IteratorAgeMilliseconds 跟踪流中所有碎片和消费者的读取位置。请注意,如果迭代器的年龄超过了保留期的 50%(默认为 24 小时,可配置为 7 天),则存在因记录过期而丢失数据的风险。AWS 建议在最大值统计上使用 CloudWatch 警报,在这种损失成为风险之前提醒您。关于使用该指标的示例场景,请参见落后于的消费者记录处理。

readprovisionedthroughputexceed 当您的消费端记录处理落后时,有时很难知道瓶颈在哪里。使用此指标来确定您的读取是否因超过读取吞吐量限制而受到限制。该指标最常用的统计数据是平均值

writeprovisionedthroughputexceed 这与ReadProvisionedThroughputExceeded指标的目的相同,但用于流的生产者(put)端。该指标最常用的统计数据是平均值

腐索。成功,腐败记录。成功 AWS 建议在平均值统计上使用 CloudWatch 警报来指示记录是否未能流入数据流。选择一种或两种看跌期权类型,具体取决于您的生产商使用什么。如果使用 Kinesis Producer 库(KPL),使用PutRecords.Success

获取记录。成功 AWS 建议在平均统计上使用 CloudWatch 警报来指示记录是否从流中失败。


节流运动流

如果你把它推到极限,Kinesis 将开始节流你的请求,你将不得不重新分割你的流。节流可能有几个原因。例如,您可能在每个分片上每秒发送超过 1 MB 的有效负载/ 1,000 条记录。但是您可能会遇到由 DynamoDB 限制引起的节流问题。

正如在跟踪 Amazon Kinesis 流应用程序状态中提到的,KCL 使用 Amazon DynamoDB 表跟踪流中的碎片。当由于重新分片而创建新的分片时,KCL 会发现新的分片,并在表中填充新的行。工人自动发现新碎片,并创建处理器来处理来自它们的数据。KCL 还将流中的碎片分配给所有可用的工作线程和记录处理器。确保 DynamoDB 表中有足够的读/写容量。


重新分割 Kinesis 流

当重新分割一个流时,当它是 2 的倍数或一半时,缩放要快得多。您可以使用 UpdateShardCount API 对您的流进行重新分片。注意,这个 API 不支持缩放超过 200 个片段的流。否则,你可以使用亚马逊 Kinesis 缩放工具

用数百个碎片重新分割一个流可能需要时间。另一种方法是启动另一个具有所需容量的流,然后将所有流量重定向到新流。

kinesis stream re sharding example

An example of re-sharding a Kinesis Streams


AWS Kinesis 资源

开发 Kinesis 的生产者&消费者

监控身势

  • 亚马逊 Kinesis 生产者库 —流生产者库(KPL)提供每个分片、工人和 KPL 应用的指标。
  • CloudWatch 指标 — Streams 向 Amazon CloudWatch 发送自定义指标,并对每个流进行详细监控。
  • 亚马逊 Kinesis 代理 —亚马逊 Kinesis 代理发布定制的 CloudWatch 指标,以帮助评估代理是否按预期工作。
  • API 日志 — Streams 使用 AWS CloudTrail 来记录 API 调用,并将数据存储在亚马逊 S3 桶中。

故障排除

查看更多 AWS Kineses


希蒙·托尔茨 Co delorate . io的联合创始人兼 CTO,是一位 AWS 社区英雄 。感谢阅读!

如何使用 Cosmos DB 和 Terraform 在 Azure 中部署简单的应用程序

原文:https://acloudguru.com/blog/engineering/deploy-a-simple-application-in-azure-using-terraform

Azure Cosmos DB 是一个全球分布式数据库服务。在开发全球分布式应用程序时,它为开发人员提供了很大的灵活性。多亏了 Terraform,您只需几行 HCL 代码就可以轻松部署 Cosmos DB 帐户和资源。

在这篇文章中,我将向你展示如何在 Azure 中部署一个简单的应用程序。我们将通过使用 Terraform 将 Azure Cosmos DB 部署到 Azure 容器实例来实现这一点。首先,我们将学习如何创建 Azure Cosmos DB 实例,然后更新配置以创建 Azure 容器实例,最后创建一个使用这两种资源的简单应用程序。


加速你的职业生涯!

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯


你需要什么

要跟进这篇文章,你需要一些东西:

  • Azure 订阅
  • 要么在本地安装 Terraform ,要么在 Azure 中使用内置 Terraform 的云外壳
  • 如果您在本地使用 terraform,您还需要安装 Azure CLI 来向 Azure 认证 Terraform。
  • 您选择的文本编辑器(我的建议是 VS 代码)

步骤 1:创建初始配置

假设您已经具备了入门所需的一切,接下来要做的事情就是配置 Terraform 来使用 Azure provider 进行配置。您需要在您为项目创建的目录中创建一个名为 main.tf. 的文件。我创建了一个名为 terraformguru 的目录,这将是我这个项目的工作目录。

main.tf 文件中,您首先需要定义您将用于配置的提供者。

一旦我们定义了提供者,我们将需要在初始配置中定义三个资源。

  • 第一个资源是我们的资源组,我们将把其他资源绑定到这个资源组。
  • 我们将需要在下一个资源块中使用随机提供程序来生成一个随机整数,以便在 Azure Cosmos DB 帐户配置中使用。
  • 然后我们可以定义我们的 Azure Cosmos DB 帐户。

您的配置应该如下例所示:

在我们的 Azure Cosmos DB 帐户资源块中,我们需要定义这些参数:

  • 名称(与随机整数组合成唯一名称)
  • 位置(资源组位置)
  • 资源组名称(资源组的名称)
  • 报价 _ 类型
  • 种类
  • 一致性 _ 策略
  • 地理位置

一旦我们定义了三个资源,就该应用我们的配置并创建我们的 Cosmos DB 实例了。

步骤 2:应用我们的配置

第一步是初始化我们的工作目录,这样我们就可以为我们的项目下载所需的提供者插件。我们可以通过运行以下命令来实现这一点:

接下来,我们将通过运行以下命令来验证我们的配置,以确保代码的语法是正确的:

一旦我们确认我们的配置是有效的,我们接下来可以通过运行 plan 命令来进行配置的模拟运行,如下例所示:

如果一切正常,看起来会像我们希望的那样,我们就可以最终应用我们的配置了:

在应用运行之后,我们应该在 Azure 中有一个 Cosmos DB 的实例。现在我们可以更新我们的配置,这样我们就可以使用我们的新实例。

步骤 3:用容器实例更新配置

现在是时候更新我们的配置并添加一个容器实例了。这个容器实例将使用我们的 Cosmos DB 实例,该实例本身使用一个运行小型投票 web 应用程序的容器映像。添加的配置应该类似于下面的示例:

这里我们为容器实例添加了一个资源块。在我们的 Azure 容器组资源块中,我们需要定义这些参数:

  • 名称
  • 位置(资源组位置)
  • 资源组名称(资源组的名称)
  • ip 地址类型
  • 域名标签
  • os_type
  • 容器(这是我们指定图像的地方)
  • 安全 _ 环境 _ 变量

这里需要指出几个关键点。

  • 首先,在我们的容器参数中,注意我们指定了一个从微软容器图像注册表中提取的图像。我们使用 Cosmos DB 后端的前端投票应用程序。
  • 我们从创建的 Cosmos DB 实例中提取两个环境变量,并为每个变量设置一个环境变量。
    • 首先,我们为数据库提取端点并设置环境变量 COSMOS_DB_ENDPOINT ,然后我们提取数据库的主密钥并设置环境变量 COSMOS_DB_MASTERKEY 。这两个环境变量是数据库的关键,允许容器连接到数据库并使用数据库实例。没有它们,应用程序将无法工作。
    • 另请注意,我们正在设置一个输出变量,该变量将显示我们的应用程序端点,以便我们可以连接到应用程序。

一旦我们将它添加到我们的配置中,它应该看起来像这样:

我们现在可以将我们的更改部署到我们的配置中。我们应该验证我们的配置,以确保代码的语法是正确的:

然后,我们将对配置进行一次预演:

最后应用我们的配置:

在应用运行之后,我们应该会看到以下输出:

测试我们的应用

现在我们的资源已经部署好了,我们有了显示在终端输出中的应用程序端点。

转到您的浏览器,使用输出中显示的地址导航到我们的应用程序。您应该看到以下内容:

现在,如果您选择其中一个选项,您应该会立即看到如下的投票结果:

第四步:成功!

就是这样!您已经成功地使用 Terraform 和 Cosmos DB 在 Azure 中部署了一个简单的应用程序。正如你所看到的,这是快速而简单的,只需要几行 Terraform 代码。要了解更多,请查看我的课程Advanced terra form with Azure。保持令人敬畏的大师,学习所有的东西!下次见。

想要跟上 Azure 的所有事物? 在 YouTube 上订阅一位云大师 ,获取每周亚马逊新闻和 AWS 公告。你也可以像 ACG 上的一样,关注我们上的 推特 ,或者加入 不和谐 的对话!

使用云专家 Azure DevOps 部署 Kubernetes 应用程序

原文:https://acloudguru.com/blog/engineering/deploy-kubernetes-app-with-azure-devops

大家好,我是查德·克罗威尔,微软 Azure 课程的讲师,在一个云计算大师那里。我非常热衷于帮助 你实现梦想,并帮助你利用自己的技能度过逆境。在一起,我们可以完成任何事情。


在科技世界里,我们喜欢创造新的流行语!有些会脱口而出,有些不会。他们中的一些人甚至发现自己在我们的职位上,尽管他们可能不应该这样。DevOps 是那些超级酷的流行语之一。DevOps 是那些听起来很酷的词之一(因为马丁·福勒是这么说的),而且似乎甚至在我们今天的对话中仍然存在。因此,我认为探索 Azure DevOps 中的新特性并带您通过一个简单的管道会很有趣。


准备好和云专家一起深入 Azure 内容了吗?


DevOps 是什么?

简单来说, DevOps 就是将之前由于物理系统的约束而分离的两个进程合并。这两个过程是开发(构建计算机程序/应用程序的过程)和操作(创建运行所述计算机程序的基础设施/机器的过程)。无论你是不是开发人员,单独工作还是在团队中工作, Azure DevOps 培训可以帮助你组织你计划、创建和交付软件的方式。

制约因素是什么?物理机器必须由一群工程师以相当智能的方式组装起来。例如,构建计算机、将其添加到网络、实施身份管理、加强安全性等。快进到今天,已经不是这样了。一切都变了。

云改变了一切

许多硬件组件的虚拟化和云的流行(更不用说进入门槛低了)使得许多运营人员改变了他们的工作职能。以前他们处理硬件,现在他们构建代码基础设施(IaC ),以及其他与编码相关的任务。

既然我们已经了解了这些年来工程师工作职能的转变,我们就来谈谈微软 800 磅重的大猩猩(又名 Azure)。Azure 提供的不仅仅是云中的基础设施。有了 PaaS、SaaS 和介于两者之间的一切,Azure 是云中弹性和高可用性的一站式商店。

Azure DevOps

Azure DevOps 的前身是 Visual Studio Team Services (VSTS),它简化了从代码集成到软件应用程序发布和测试的流程,让开发人员感到满意。虽然 Jenkins 一直是 CI/CD 软件的主导者,但微软希望窃取一些市场,但仍然支持 Jenkins 以缓解这种过渡。

AKS 应用集成教程

在真正的边做边学中,让我们直接进入并在 Azure DevOps 中创建一个项目,展示使用一些简单的命令行技巧将应用程序集成和部署到 AKS 中是多么容易。跟着做,最后,你也可以拥有一个运行在 AKS 上的闪亮的新的 web 应用程序,可以从任何 web 浏览器访问,其中包括来自云专家的友好消息。

若要跟进,您必须拥有 Azure 和 GitHub 帐户。GitHub 帐户是免费的,所以如果你还没有注册的话,就直接去 https://github.com注册吧!

此外,在继续之前,前往 https://aex.dev.azure.com创建一个 Azure DevOps 组织(如果您还没有的话)。只需点击“创建新组织”按钮。

以下所有命令都应该在 Azure Cloud Shell 中运行。通过从任何浏览器进入【https://shell.azure.com】并登录您的 Azure 帐户来访问此 shell。

PRO 提示: 可以使用 PowerShell 屏幕,但是在终端中键入“bash”切换到 bash 命令

我们开始吧!

首先,将 Azure DevOps 扩展添加到我们的云外壳会话:

~$ az 扩展添加–名称 azure-devops

接下来,让我们为我们的 shell 添加上下文来引用我们的 DevOps 组织(我的组织名称是“https://dev . azure . com/ccrowellla/”,但您的名称会有所不同):

~ $ az devo PS configure–defaults organization = https://dev . azure . com/ccrowellla/

从云壳,我们必须重新登录,这样我们的帐户才能访问 Azure DevOps。按照终端的提示进行登录:

~ ~ $登录¥t1

接下来,让我们创建一个新的 DevOps 项目:

~$ az devops 项目创建–命名项目 1

现在,设置要使用的默认项目:

~ $ az devo PS configure–defaults project = project 1

让我们创建一个资源组,以便在逻辑上组织我们将在后续步骤中创建的 Azure 资源:

~ $ az group create–name aks-rg–location eastus

我们可以为我们的 AKS 集群创建一个服务主体。我们的 AKS 集群将使用这个服务主体来访问 Azure 容器注册表和拉容器映像。

重要提示:将以下命令的输出复制到记事本中,您以后会用到它:

~ $ az ad sp create-for-RBAC–跳过分配

现在,让我们创建一个 AKS 集群来部署我们的应用程序(在这里,您使用前一个命令的输出将“appId”粘贴到“–service-principal”之后,并将“password”粘贴到“–client-secret”之后):

~ $ az aks create-g aks-rg-n myaks cluster–node-count 1–service-principal " e 848493 e-1614-4f 58-b6a 7-a 880045 e 7d 8 f "-client-secret " 47 b01a 18-903 e-463 b-ac68-641 b 40 be 80 b 6 "

接下来,让我们创建一个 Azure 容器注册中心(ACR)。这将是我们在 AKS 中使用的容器的存储库。ACR 名称必须是全球唯一的,这意味着世界上没有人可以拥有相同的名称。发挥创意的时间:

~ $ az ACR create-g aks-rg-n uniqueacrname here–SKU Basic–admin-enabled true

为了允许 AKS 从 ACR 获取图像,我们必须为服务主体设置我们的 Azure RBAC 权限(在此填写您唯一的 ACR 名称):

~ \(ACR _ ID =\)(az ACR show–name uniqueacrnamehere–resource-group AK s23–query“ID”-output tsv)

~ \(CLIENT _ ID =\)(az aks show-g aks-rg-n myaks cluster–query " serviceprincipalprofile . clientid–output tsv)

~$ az 角色分配创建–被分配人$ CLIENT _ ID–角色 ACR pull–范围$ACR_ID

现在,让我们进入正题;创建和部署应用程序!

对于应用程序代码,您将派生 repo,克隆该 repo(从您的 GitHub 帐户)并更改到“pipelines-sample-app”目录:

Fork 这个 GitHub repo(在新标签页打开这个链接,点击“Fork”):https://github.com/chadmcrowell/pipelines-sample-app

一旦分叉,用“git 克隆”将其克隆到云 shell 中的终端会话,但将 github 用户名改为您的用户名:

~$ git 克隆 https://github.com//pipelines-sample-app . git

~$ cd pipelines-sample-app

现在让我们在 Azure DevOps 中创建一个管道:

~$ az 管道创建-名称“管道 1”

按照终端提示设置管道:

**第一次提示:**输入你的 GitHub 用户名;按回车键

**第二次提示:**输入你的 GitHub 密码;按回车键

**第三次提示:**再次输入你的 github 密码确认;按回车键

**第四次提示:**输入服务连接名称(如管道);按回车键

**第 5 次提示:**选择【3】部署到 Azure Kubernetes 服务;按回车键

**第 6 次提示:**选择您刚刚创建的 k8s 集群;按回车键

**第 7 次提示:**选择【2】为“默认”kubernetes 命名空间;按回车键

**第 8 次提示:**选择您刚刚创建的 ACR 按回车键

**第 9 次提示:**输入图像名称值(回车接受默认);按回车键

**第 10 次提示:**输入服务端口的值(回车接受默认);按回车键

**第 11 次提示:**输入一个值,为拉式请求启用审核应用流(按 Enter 键,无需键入值)

**第 12 次提示:**选择【1】继续生成 YAML;按回车键

**第 13 次提示:**选择【1】直接提交到主分支;按回车键

**恭喜恭喜!**你已经创建了一个 Azure DevOps 项目!等待大约四分钟,让应用程序构建容器,推送到 ACR,然后部署到 AKS。

通过获取 kubeconfig 凭证来访问您的 AKS 集群:

~ $ az aks get-credentials–resource-group aks-rg–name myaks cluster

查看您的项目已经创建的 Kubernetes 资源:

~$ kubectl 获取全部

在新的部署和 pod 中有一项服务。复制服务 IP 地址(在“外部 IP”下)并粘贴到一个新的浏览器选项卡中,在末尾添加“:8080”(例如 104.45.182.156:8080)。

这是你的最终结果:

A Cloud Guru loves Kubernetes

摘要

在这篇短文中,我们在 Azure DevOps 中创建了一个新项目。在该项目中,我们建立了一个 CI/CD 渠道。该管道在一个容器内构建我们的应用程序,将该容器推送到容器存储库,并将该容器部署到 AKS。最终允许我们通过 Kubernetes 服务从 web 上查看我们在 AKS 中运行的 web 应用程序。很酷吧。

重要的:注意我们管道的触发器。回到你的分叉回购,查看文件“azure-pipelines.yml”。您应该看到“trigger:–master”这一行,这意味着每当我们对主分支进行更改时,一个新的构建就会自动开始。

所以,这里最大的收获不是我们运行了 web 应用程序。此外,从现在开始对应用程序的所有更改都将自动部署到我们的 AKS 集群中。这意味着当您开始开发应用程序时,您可以立即“实时”看到变化。太棒了,对吧?!?

如果你和我一样,对将这种自动化构建到你的部署过程中感到兴奋,请查看我的课程“用微软 Azure 构建和部署管道”,在那里我演示了许多这方面的其他例子。


你准备好让你的技能更上一层楼了吗?现在开始训练。


想要更多的 DevOps 善良?看看这些:

使用 AWS ECS 和 Docker 部署容器化 Flask 应用程序

原文:https://acloudguru.com/blog/engineering/deploying-a-containerized-flask-application-with-aws-ecs-and-docker

如今,容器很受欢迎,这是有道理的。让我们花 15 分钟时间,通过使用 Docker、AWS 和 Flask(一种用于构建 web 应用程序的 Python 微框架)部署我们自己的应用程序来找出原因。 注意:这篇文章中的一些假设你使用的是 Linux/Mac 系统。 第一步——先决条件 让我们确保我们拥有完成这项工作所需的一切:

  1. AWS 账号 。

  2. AWS CLI已安装已配置 (有足够的权限采取我们需要采取的所有行动)。

  3. Docker(Docker 命令可能需要 sudo,或者您可以将当前用户添加到 Docker 组)。

  4. 本项目代号 。可以运行git clone https://github.com/linuxacademy/cda-2018-flask-app.git && cd cda-2018-flask-app && git checkout ecs-master

    • (确保切换到另一个分支,因为该分支包含特定于 ECS 的代码)

第 2 步——制作我们的容器图像 从命令sudo docker image ls开始,查看当前的 Docker 设置。如果这是一个新的 Docker 设置,这个命令可能不会显示太多。如果 Docker 已经安装了一段时间,可能已经有一些图像了。 接下来,我们来看看资源库中带有cat Dockerfile的 Dockerfile。我们的 docker 文件非常简单。让我们一行一行地过一遍:

  1. FROM python:3.5-slim–我们从 Python 3.5 映像开始,将其作为 Docker 映像的基础。这意味着在我们进行任何定制之前,我们将免费获得 Python3.5 及其软件包管理器 pip。
  2. MAINTAINER 【fernando@linuxacademy.com】——这一行声明了图像的作者是谁。可以改成你的邮箱。这种格式已不再使用,所以您可能还想将其改为不推荐使用的标签指令,如下: LABEL maintainer="fernando@linuxacademy.com"
  3. USER root–这告诉我们哪个用户应该运行映像和任何命令,比如 docker 文件后面的 CMD 或 RUN 部分中的内容。
  4. WORKDIR /app–这为一些其他命令设置工作目录,例如 CMD 或 RUN 部分中的命令,这些命令稍后将在 other 文件中运行。
  5. ADD . /app–从当前目录复制所有文件和目录(用。)到/app目录。
  6. RUN pip install --trusted-host pypi.python.org -r requirements.txt–这将使用 pip 和提供的 requirements.txt 文件安装我们的应用程序的需求。
  7. EXPOSE 80–这告诉 Docker 在运行时监听哪些端口。
  8. ENV NAME World–将名为 NAME 的环境变量设置为 World 的值。
  9. CMD ["python", "app.py"]–设置运行图像时要执行的命令python app.py(运行我们的 Flask 应用程序所需的命令)

现在我们已经确切地了解了这里的内容,让我们创建新的 Docker 图像。我们将使用:sudo docker build -t cda-flask-app . 在本地构建 docker 映像,然后让我们测试我们的映像。首先,运行curl localhost:80只是为了确保您没有在本地提供任何东西。你什么都没得到?酷,这正是我们想要的。 接下来,运行这个命令在本地运行你的 Docker 镜像sudo docker run -p 80:80 cda-flask-app。现在要么再次运行这个命令:curl localhost:80要么打开一个网页浏览器,在你的网页浏览器的地址栏中输入localhost。 你现在应该看到这样的东西: 耶!我们在新的容器映像中本地运行我们的站点。 **步骤 3–将我们的图像发送到 AWS ** 现在我们将把我们新创建并测试的图像发送到 AWS。 首先在弹性容器注册表中创建一个存储库: aws ecr create-repository --repository-name cda-penguin-app1123 然后运行这个命令来获得一个可以用来登录到您刚刚创建的 ECR 存储库的命令: aws ecr get-login --region us-east-1 --no-include-email 然后将该命令的输出复制并粘贴回终端并运行它。这实际上将向弹性容器存储库验证您的身份,因此您可以将 Docker 映像放入其中。 现在我们已经登录到 ECR,我们可以将我们的图像放入 ECR。让我们这样做:

  1. 通过运行docker image ls 确保我们在本地有我们的映像
  2. 通过运行docker tag cda-flask-app:latest ACCT_ID.dkr.ecr.us-east-1.amazonaws.com/(其中 account ID 是您自己的 AWS 帐户 ID) 来标记图像
  3. 使用docker push ACCT_ID.dkr.ecr.us-east-1.amazonaws.com/hello-world将图像上传到 AWS ECR(再次使用您自己的 AWS 帐户 ID 代替 ACCT ID)

轰!AWS 中应该有一个容器映像。 第 4 步——使用 ECS 部署我们的 web 应用程序 我们在本地构建的容器映像现在位于 AWS cloud 中的 ECR 内。既然我们已经这样做了,我们可以使用同一个容器映像来部署使用 Amazon ECS 的应用程序。 首先,让我们确保可以看到我们在 ECR 内部部署的图像。我们通过导航到 Amazon ECR >仓库下的 ECS 控制台 的 ECR 部分来做到这一点。它应该看起来像这样,尽管您上传的存储库名称和 URL 可能有一点不同。 这意味着我们在 AWS 中存储了应用程序的容器映像,现在我们可以转移到 ECS 来运行它了!不过,在您这么做之前,让我们确保复制下存储库的 URI(我们很快就会需要它)。在 AWS 控制台中,转到 ECS 部分 并导航到集群选项卡。然后按“开始”按钮。 在下一个屏幕上,您应该看到这个页面: 这允许您为您的新服务定义一个容器和任务定义。在同一页面的下方,您需要按“Configure”来设置一个自定义容器: 在配置容器定义时,我们需要将“Image*”旁边的框中的值更改为我们从 ECR 页面复制的图像的 URL。这允许我们在容器定义中引用 ECR 图像。我的 URL 可能看起来与你的略有不同,因为我给了我的应用程序和容器一个不同的名称,而且我们的 AWS 帐户 id 也不同。我们还需要在这个页面上设置一个内存限制——使用 128 这个硬限制。此外,在按下更新按钮之前,请确保在端口 80 上添加一个 TCP 端口映射,如图所示。 这次更新之后,我们应该准备好进入下一步了。我们不需要对任务定义做任何更改,所以只需按“Next”按钮。 在下一页,我们将定义好容器和任务,实际上也不需要对服务配置进行任何更改。如果这是一个生产应用程序,我们可能希望设置一个负载平衡器。但事实并非如此,所以现在,我们只需按下“下一步”按钮。 然后,如果我们愿意,我们可以通过命名集群并再次按下 Next 按钮来完成所有工作。 然后,我们将进入一个页面,在实际创建新服务之前,我们可以在这里查看我们的配置。它看起来应该是这样的: 在页面的更下方应该有一个名为 Create 的蓝色按钮: 一旦我们按下它,我们应该会看到 AWS 开始为新服务创建一堆资源。让它结束,然后按“查看服务”按钮。 我们应该在一个新的屏幕上。如果我们迷路了,我们可以转到 ECS 控制台,单击正确的群集,然后单击服务,再次找到它。在此页面上,我们单击“任务”选项卡。 然后,从 tasks 选项卡中,我们可以单击为这项新服务运行的任务。 然后单击 ENI Id 旁边的 ENI ID 链接: 这将把我们重定向到 AWS EC2 控制台,它应该显示一个实例正在运行。我们可以获取该实例的 IPV4 IP 地址,并将其粘贴到 web 浏览器中。 恭喜恭喜!我们刚刚使用 AWS、Docker、ECS 和 Flask 部署了一个容器化的应用程序! 现在,我们显然可以配置或更改许多这种流程,以做更酷的事情。例如,我们可以:

  1. 定制 Flask 应用程序,让它除了显示可爱的企鹅网站之外还能做其他事情
  2. 根据您自己的应用需求,配置使用 ECS 时可用的许多其他设置
  3. 部署大量具有不同需求、其他编程语言和更多的酷容器

但是这已经足够让你开始了!如果您想观看视频形式的演示,并在 Linux Academy 的现场环境中进行测试,请注册 Linux Academy 并查看包含实际操作环境的 AWS 认证开发人员助理级别准备课程、 !

云中心走向卓越的 3 个阶段

原文:https://acloudguru.com/blog/business/design-cloud-center-of-excellence-for-evolution

亚马逊首席技术官沃纳·威格尔在 2017 年悉尼 AWS 峰会上占据了中心舞台,穿着一件印有“Werner Against the Machine”的定制 t 恤,这是现代超级英雄的胸前徽章。

作为伪装成首席技术官的终极承诺变革代理人, Werner 利用他的 AWS 超能力来拯救世界各地的企业——利用速度、分析、灵活性和摆脱“敌对”数据库供应商的力量。

对于大多数企业来说,超音速是最难以捉摸的超能力。也是最有必要的。像 AWS 这样的云解决方案为组织带来了额外的速度、灵活性和整体商业价值。但许多公司仍未从内部或混合解决方案转向云。

幸运的是,AWS 云卓越中心(CCoE)可以成为您快速采用并持续发展大规模云技术的驱动力。

什么是 AWS 云卓越中心?

AWS 云卓越中心是一个由跨职能专家组成的团队,致力于推动组织的云之旅。他们创建符合业务需求的云迁移战略,采用和增强新的和现有的云技术,并鼓励整个组织的云流畅度。

对于希望从私有云或内部数据中心高效迁移的大型组织来说, AWS 云卓越中心团队成为一个重要机制。

成功采用云的要素是什么?

TL;博士——速度至关重要

这种引力阻止了许多企业获得动力和利用云,至少是以避免饿死人所需的速度。摆脱这种困境的唯一方法?创建一个 AWS 云卓越中心,并制定一个包含优先考虑速度和持续创新的最佳实践的云迁移战略

例如,在我在 Capital One 的 20 年职业生涯中,规模速度是我的工作方式。Capital One 的敏捷思维和 DevOps 文化使他们能够迅速采用云技术并改造公司。这种加速转变由 AWS 的 API 驱动的云计算服务推动,由大数据的实时访问实现,并由对开源社区的承诺推动。

从内部数据中心获得实现逃逸速度所需的超音速需要大胆的领导,并长期致力于创新。虽然技术在任何云战略中都起着主导作用,但人才转型才是成功的真正关键。不存在神奇的药丸,但全力以赴建设 AWS 云卓越中心的组织通常会朝着正确的方向迈出一大步。

通过 AWS 云卓越中心(CCoE)采用云

如果您的企业希望以超音速速度实现云的采用,您需要一个愿意赞助 AWS 云卓越中心(CCoE) 并向其投入资源的高管团队。

设计 AWS 云卓越中心,在您的组织中不断发展

TL;DR–交接事宜

AWS 云卓越中心(CCoE)使云的早期采用变得更加容易。但它需要不断发展,才能跟上云技术快速创新的步伐。因此,您应该有目的地设计您的云程序框架。

设计 AWS 云卓越中心,在您的组织中不断发展

首先,您的 AWS CCoE 和云计划负责人应该观察您组织内的价值流,然后设计一个与企业内部需求同步发展的适应性结构和迁移策略。

西蒙·沃德利在他的价值链映射战略沃德利图中注入了这些流动和转换的概念。西蒙的设计原则先锋→定居者→城镇规划者 (PST)提供了一种创新的方法来导航组织的云采用之旅。每个小组处理旅程的不同阶段,利用他们独特的才能来创新和解决问题。通过使用这种方法,组织可以获得敏锐的态势感知,并在整个云之旅中学会从探索扩展到整体增强

The Stages of a Cloud Center of Excellence

Accelerate through the “Trough of Despair” with an AWS Cloud Center of Excellence and education program that achieves critical mass of cloud fluency.

阶段 1: AWS 云探索中心

拓荒者探索

踏上云之旅需要对底层 AWS 实用程序计算服务进行大量的迭代和试验。在你旅程的早期阶段,创建一个核心团队,由有能力和态度的创新工程师组成。

将这个小型的双披萨团队(一个只需要两个披萨的团队)与久经沙场、经验丰富、理解能力强的工程师组合在一起。他们知道关键功能目前如何运行,以及如何将现有数据中心平台转化为云中心服务。他们了解安全、网络和访问控制最佳实践,以及出现问题时如何排除故障。每天,这些先锋将利用敏捷技术来打破事物——并收集将决定未来成功的解决方案和模式的数据。

每天,这些先锋将利用敏捷技术来打破事物——并收集数据,这些数据将决定未来成功的解决方案和模式。

ProTip 1: An executive sponsor is absolutely essential during the early phases of cloud adoption. As a strong advocate for the cloud, the sponsor provides plenty of air cover and actively engages with the core team to remove obstacles from the board.

阶段 2: AWS 云扩展中心

殖民者扩张

一旦先驱们确定了模式并巩固了早期的成功,就将你的注意力转向将原型扩展成可消费的产品和服务。在广泛听取内部客户的意见后,定居者提炼模式,并帮助整个组织加深理解。

我们如何知道什么是可知的,或者说认识论,在云中与在内部有很大不同。”— 阿德里安·考克洛夫特

在云运营的这一阶段,当务之急是关注对 AWS 的早期理解。实现云流畅度的临界质量是组织能够维持向新运营模式过渡的唯一途径。

通过忠诚的少数群体的影响达成的社会共识表明,当随机分布的代理中只有 10%持有不可动摇的信念时,人口中占主导地位的多数意见可以迅速逆转。

换句话说,将时间和金钱投入多维度云教育计划的组织将会获得收益。拥有令人信服的背景和内容的敬业的员工队伍将极大地加速您的组织度过 Simon 的“绝望低谷”,并确保吸引力而不是损耗。

在实施阶段,您的核心云运营团队不应再被视为最了解云的部门。通过将 AWS 云卓越中心的超能力释放给整个企业的数千名开发人员,您的核心 CCoE 团队应该转向并开始从其他部门收获新的和改进的模式。提升核心团队现有能力之外的其他部门是成功的早期关键指标。当云服务开始在整个企业中扩展时,自然会更加强调治理和控制。有了 AWS,您可以通过利用 API 驱动的服务来访问实时控制和合规性,从而设计您的治理

ProTip 2: Instead of outsourcing your cloud training to Human Resources, tightly integrate cloud education as a core function on your program team. Leverage AWS certifications as a benchmark for cloud fluency and set a minimum goal of 10% completion enterprise-wide.

阶段 3: AWS 云增强中心

随着贵组织的云迁移和 AWS CCoE 的成熟,它们应该会带来速度更快、更具成本效益的平台。在金融服务等高度监管的行业中,组织依靠城镇规划者来确保消费者和监管者能够信任最终产品。

在这个阶段,组织主要将关注点从采用转移到增强和运营。虽然看起来令人惊讶,但创新并不仅仅局限于探索阶段的先驱者。在云采用的运营阶段也会发现这一点。

例如,Capital One 的 Terren Peterson 通过接受 T2 的现场可靠性工程概念和使用创新的方法来管理运营,进化了工程团队的思维模式。

他们的 SRE 团队利用工业化的公用事业功能,通过云托管、基于功能的策略规则引擎来管理合规性和控制。这些团队还为不断扩展的平台贡献了新的功能——随着更高级服务的不断发展,完成了这个循环。

服务本身的起源展示了先锋、定居者和城市规划者的设计原则。最初由他们的先驱在内部开发,这个平台被定居者扩展到整个企业,最终被城镇规划者推向开源商品化。

ProTip 3: Involve your operational teams on day one of your cloud journey. Since operations function 24x7, consider a lift and shift for a subset of their workloads. Leverage a cloud capable MSP for interim support to lighten the load during their talent transition.

成功采用 AWS 云的最佳实践

在您创建云原生代和可持续云转型的过程中,经历以下几个关键阶段:

  1. **管理层支持:**与业务需求保持一致,并让利益相关方参与进来。创建您的 AWS 云卓越中心。
  2. **教育:**对云上的技术和非技术员工进行培训和教育。
  3. **实验:**验证证据点并定义架构、模式和治理。然后测量、监控和迭代。
  4. **混合运营:**提供集中的专业知识,指导分散的创新,发布如何成功采用云的指南和护栏。
  5. 规划 ROI 和计划:规划应用程序的构建和/或迁移,执行 ROI 或总拥有成本收益分析,并迭代和验证假设。
  6. **组织变革:**定义和管理业务变革战略,包括政策、流程和经济。提供额外培训。
  7. **云优先战略:**创建您的愿景,激励团队成员跟随您的脚步。

有了 AWS 云卓越中心(CCoE)和这些组织设计最佳实践,云管理团队可以不断地循环探索、扩展和增强阶段。随着时间的推移,这种方法将以超音速的速度加快云的采用。


准备好开始你的变身了吗?

三分之二的组织表示,他们没有看到他们期望的云带来的好处。云专家可以让您的组织更快地实现云计算(及其优势)。ACG 企业版为您提供转变您的才能和业务所需的一切。


Drew 是 AWS 社区的英雄,Alexa 冠军,也是爸爸笑话的制作者。

在推特上关注@ drew firm# wepower tech

为定制的大规模云学习设计定制学习路径

原文:https://acloudguru.com/blog/news/designing-custom-learning-paths-for-tailored-cloud-learning-at-scale

如果在云计算领域取得成功很容易,那么云计算大师就不会存在了。

我们知道,没有一种正确、简单的方法可以让云走向成熟。你必须浏览不同的云技术,探索不同的流程或做事方式,并对你的团队所拥有的技能持现实态度。这就是为什么定制您的云学习以满足您组织的特定需求的能力如此重要。进入一个新的 ACG 功能:定制学习路径。

定制学习路径使您能够为您的组织大规模定制云学习。根据工作角色、即将开展的项目或已确定的技能差距提升个人或团队的技能。基于即将到来的计划创建多云和云相邻计划。为特定于您的组织的职业发展构建个人学习路径。根据独特的学习目标报告进度。定制的云学习触手可及,有定制的学习路径。


阅读:为什么要投资被低估的人 “一个倾向于想要建立一切而不是购买一切的行业,却选择购买市场上绝对最昂贵的东西:人才,这真是讽刺。”


在这篇博文中,我将描述在为你的组织设计定制培训计划时,你应该考虑的一些初始因素。

其中一些似乎是显而易见的,但是当你需要从头开始设计一个程序,同时还要执行你的常规 IT 或 L&D 工作时,这可能是相当具有挑战性的。以下是一些简单的注意事项,将使这项工作更容易。这些是我在为 Linux Academy 的一百多位客户和一位云专家成功设计学习程序时学到的一些东西。

第一步:为你的培训计划建立目标

设计培训计划时首先要考虑的是目标。你想通过这个项目达到的具体目标是什么?看看你希望你的员工在完成每个计划步骤时能够达到的技能和能力。

将这些目标分层,以实现员工可以快速达到并展示初步成功的入门级目标。这些初始目标应该对雇员和雇主双方都有利,并在合理的时间内实现。从八周到三个月的时间框架是一个很好的起点。这个初始阶段也是建立基线的最佳时机。通过这样做,您可以确保组织中的每个人都说同一种语言。

步骤 2:确定需要培训的角色

除了建立目标之外,下一步要考虑的是确定组织中需要培训的角色。IT 组织培训的一些更常见的角色是:

  • 开发者
  • DevOps 工程师
  • 解决方案架构师
  • 安全专家
  • 数据库工程师
  • 基础设施专家
  • 网络工程师
  • 支持人员

阅读:这 5 个非技术角色需要说话云
日益扩大的云智商差距正在放缓数字化转型的步伐。不要忽视业务团队了解云的重要性和价值。


步骤 3:建立时间框架

在你建立了组织所需的各种角色之后,下一件你应该考虑的事情是你的培训计划的时间框架。你应该从两个方面来解决这个问题。

第一个方面是学习路径的总长度。这个长度可以是课程和推荐实验的总时数之和。例如,时长可能为 40 小时,包括视频课程和实验。如果这是你第一次实施学习计划,你会希望保持时间尽可能适度,而不是用数百个必需的培训小时来威胁员工。一个好的起点是设计一个持续一个季度的学习路径。完成后,您可以从学员那里获得反馈,并为下一季度做出调整。

你要考虑的时间框架的下一个方面是员工可用于培训的小时数。您需要回答的一些问题包括:

  • 公司允许员工在工作时间培训吗?如果是这样,你每周能分配多少小时或工资周期?
  • 他们每周或每月需要学习多少小时?
  • 另一个与时间没有明确关系但与员工沟通的考虑因素是:这种培训是强制性的,还是纯粹推荐的?

步骤 4:确定所需的技术

每天企业对培训的需求包括三大公共云平台:亚马逊 AWS,微软 Azure,或者谷歌云平台。您还需要考虑云相关技术所需的培训,比如 Linux、容器、DevOps 工具、软件开发和数据库管理系统。

将遗留系统移植到云中需要许多规程和工具来迁移这些系统,并将它们重新设计为云原生架构。为了制定完整的培训计划,您需要将这些工具和技术纳入您的定制学习路径,以及标准的云认证培训。


云 ROI:云技能如何产生真实回报

下载完整的云投资回报报告,了解公司在云技能和技术上的投资获得了多少价值。


第五步:决定你的认证政策

在设计学习计划时,您需要做出几个与认证相关的决定。认证是你学习计划中必不可少的一部分吗,或者是一件好事吗?如果你需要认证,你会以哪一个为目标,按什么顺序?如果认证不是重点,从培训的角度来看,在您的组织中,哪些实践技能是至关重要的?

关于认证考试需要考虑的另一个方面是你支付考试费用的政策。员工需要支付他们的测试费用吗,或者你会报销他们的测试费用吗?这个问题很快会出现在正在接受认证培训的员工身上,在设计你的课程时,最好提前解决这个问题。

第六步:与职业道路保持一致

当您设计培训计划时,这是将您的培训计划与您的 it 员工的指定职业道路相结合的好时机。也许组织内不同级别的工作都有特定的认证要求。拥有一条发达的职业道路将有助于鼓励员工踏上不断学习的旅程。

我们有几个工具可以帮助您制定定制的学习路径。其中包括:

  • 专家客户成功代表的支持
  • 学习路径文档示例
  • 我们的课程专家将提供支持,帮助您提出适合您组织的建议

我希望这些建议可以帮助你开始为你的组织设计学习课程。如果你需要帮助,请联系 ACG。我们随时准备提供帮助。


State of Cloud '21

云状态网上研讨会 没有人能预测未来,但我们还是请了一组非常聪明的云专家来尝试一下。Jassy 升任亚马逊 CEO 对 AWS 来说意味着什么?今年是多云之年吗?我们生动活泼、未经过滤的小组在今年的免费点播网上研讨会中发表了意见。

云认证如何解决技能差距

原文:https://acloudguru.com/blog/business/develop-cloud-certification-program

技术领导者默认使用云,但是没有云人才来实现他们的云计划。只有 8%的技术专家表示他们拥有丰富的云技术经验,64%的人表示他们正在寻求入门培训。你无法通过雇佣来摆脱这种云技能差距。你必须创造出你需要的人才。

但是说起来容易做起来难。成功的技能提升项目需要管理层的支持、清晰的流程和愿意开发云技能的团队。

目录


调查称:你有云新手。你需要云大师。下载我们的 2022 年云状态报告,了解为什么您需要缩小云技能与期望之间的差距,就像昨天一样。

为什么对云认证的需求增加了?

领导者希望通过数字化转型来保持组织的相关性和竞争力。这意味着更多的云迁移和向云原生开发的转变。各种规模的组织都在与软件开发企业争夺云人才。不幸的是,没有足够的天赋——这并不是因为缺乏尝试。

根据我们的 2022 年云状态报告,技术专家想要学习。如果公司投资于技能发展,员工留在雇主身边的可能性会增加 94%。那么,为什么我们仍然看到云人才存在如此巨大的技能缺口呢?几个原因,包括:

  • 预算限制和成本
  • 时间不够
  • 强调招聘而不是提高技能
  • 缺少必要的工具
  • 太多的干扰
  • 缺乏雇主的支持

领导者的唯一解决方案是成为人才的创造者,而不是消费者。他们需要通过云认证和课程发展内部技能,而不是争夺少数合格的候选人。


为实现云目标,组织需要创造云人才


领导者如何为云创造人才?

领导者应该利用云技能差距来突出他们的云认证计划,将其作为一项竞争优势。附带的好处是,他们将培养满足内部需求所需的云人才。

不同组织的技能提升项目看起来不同,但目标是相似的:解决技能差距,培养技术流利度,推动内部人才管道。成功需要领导层改变他们对人才的看法。技术专家拥有的最有价值的技能是适应性。没有它,几年后它们就死在水里了。

技术技能是可以教的。有什么不那么好教的?学习的动力、适应能力和领导项目的意愿。当领导者用这种视角看待顶尖人才时,他们的候选人云就会爆炸。

领导者如何推动云认证?

领导者必须建立云认证计划,让他们的技术专家能够最有效地学习。领导者应该依靠三个支柱来建立认证计划。

1.确定您希望您的团队学习哪些云技能

技术人员可以参加许多云认证和课程。领导者应该根据总体目标、当前技术和当前技能差距,准确定义员工需要学习的技能。

按平台划分的流行云认证

开发多云环境的组织应该关注所有提供商的课程,而使用单一云的组织应该关注特定提供商的云认证。领导者应该利用为主要平台提供的基础和专家级云认证:

  • AWS 认证云从业者
  • Azure 基础知识
  • 谷歌云认证

其他云计算课程和学习机会

技能提升提供商,比如云专家 T1,提供按需学习途径。这些课程帮助技术人员为云认证做好准备,并强化其他云技能。AWS、Azure 和 Google 云平台最受欢迎的课程有:

除了提供者特定的课程,ACG 还有提供者不可知的课程,如:

目标是帮助学习者通过云认证考试,并更有效地应用他们的技能。

2.将云认证作为业务重点

领导认为员工会在下班时间进行培训。他们不应该。技能提升,尤其是对于云技能来说,是一种商业需要。领导应该每周留出受保护的学习时间,员工可以在这段时间内参加课程、参加模拟考试并完成云认证。领导者还可以围绕增长路径建立计划,以创建云技能管道,并与员工合作,为完成云认证设定具体的 okr。

需要准确了解整个组织的云计算能力? 云培训需求分析开始,找出技能差距。尝试我们的技能评估,帮助您的团队在云计算领域取得更大成功。

Screenshot of Cloud Migration Patterns webinar

Watch this free on-demand webinar to learn about the costs and complexities of rehosting, replatforming, and rearchitecting applications for the cloud.

3.以身作则

相信技能提升项目力量的领导者以身作则。他们参加课程,完成资源指南,并与员工一起参加考试——他们用资源鼓励团队,帮助他们取得成功。这增加了参与度,并为制定计划的领导者提供了见解。这也有助于他们识别项目中的障碍,并根据需要进行调整。


了解 Pluralsight 的 EMEA SVP 营销团队如何带领她的团队成功获得云认证!


超越云认证:如何培养云流畅度

Cloud-fluent 团队知道为什么云对他们的组织很重要,它是如何应用的,以及它如何与其他技术协同工作。他们可以就其对整个组织工作的影响进行高层对话。

领导者不应将云技术升级局限于技术团队。随着时间的推移,向所有员工开放的项目产生高收入增长的可能性是其他项目的 5.4 倍。近 70%的组织被员工认为是理想的工作场所,68%的组织在客户满意度方面领先同行,62%的组织在创新方面领先同行。

组织对云转型有很好的想法,但缺乏将这些想法变为现实的技术人才。最有效的解决方案?通过云技能提升计划培养人才,首先是建立一支适应性强、愿意学习新事物的员工队伍。这些计划有助于领导者培养云流畅的文化,在他们的组织内发现云人才,并推动云的真正变革。


准备好升级您公司的云了吗?

创建云创新文化,通过大规模实践学习加速云成功。使用最全面、最新的学习库、评估和沙盒软件对 10 或 10,000 人进行升级或再升级。


从头开始开发 Kubernetes 运营商

原文:https://acloudguru.com/blog/engineering/developing-kubernetes-operators

Kubernetes 是构建其他平台的一个很好的平台。这意味着它非常适合创建符合您需求的工作流。Kubernetes 中的操作者模式是启用定制工作流的关键,开发操作者使您能够作为平台提供商利用 Kubernetes。

我们将在我的课程“从头开始开发 Kubernetes 操作符”中深入介绍开发 Kubernetes 操作符的过程,但是如果您想开始开发一个操作符,只需看看这个快速指南就可以了!

你将需要什么

首先,我们需要确保拥有开发操作符所必需的工具。我们将讨论如何创建一个基于 go 的 Kubernetes 操作符。以下是您需要的工具:

  • Go :这将是用于构建操作符的编程语言。
  • Docker :这将用于构建和推送映像,如果您选择将 kind(Docker 中的 Kubernetes)用于本地 Kubernetes 集群,则需要安装 kind。
  • 操作员 SDK :这有两个组件,列举如下:
    • Operator-SDK:命令行界面(CLI)工具和 SDK 方便了操作员的开发。
    • 操作员生命周期管理器(Operator life cycle Manager):这有助于集群内操作员的安装、升级和基于角色的访问控制(RBAC)。
  • **Kubernetes 集群:**这个应该是在本地运行。我推荐 ki n d 做这个,但是任何当地的 Kubernetes 集群都可以。
    • 对于本地开发和测试,使用 with cluster-admin 权限。
    • 您还需要安装 kubectl ,这样您就可以与您的集群进行交互。
  • **图像注册:**例如,使用 hub.docker.com 发布图像。

安装好这些工具后,乐趣就开始了。

创建操作员项目

首先,我们需要为 operator dev 项目创建项目目录。我们需要创建它,然后移动到项目目录中。

mkdir memcached-operator cd memcached-operator

在我们移动到目录中之后,我们就可以初始化项目目录并下拉脚手架文件来帮助您创建操作符。这里是我们开始使用运营商 SDK 的地方。您将使用带有--domain--repo标志的operator-sdk init命令。在我的课程中,我将更详细地解释为什么这些选项是必要的。

operator-sdk init --domain example.com --repo github.com/example/memcached-operator

创建 API 和控制器

我们的下一步是为我们的操作员创建一个简单的 API 和控制器。在本课程中,我们将创建一个更健壮的 Memcached 操作符,但对此我们只是想开始做些事情,所以我们可以简单地使用operator-sdk create api command。为了创建这个 API 的控制器和其他资源,我们还将使用--resource--controller选项。

perator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller

创建和部署操作员图像

接下来,我们将使用 docker 来构建我们的操作员映像并将其推送到我们的映像注册中心。在本课程中,我们将简单地使用 Docker Hub,但是您可以使用任何您想要的注册表。您将使用以下命令来构建和推送映像。

make docker-build docker-push IMG="example.com/memcached-operator:v0.0.1"

现在我们已经构建了我们的操作员映像,对于如何部署我们的操作员,我们有几个选项。

使用 OLM 部署

我们的第一种方法是使用运营商生命周期管理器来部署我们的运营商。OLM 允许您使用操作员框架轻松地管理、版本化和升级您的操作员。首先,我们需要在集群中启用 OLM。

operator-sdk olm install

接下来,我们将为我们的操作员创建包映像,然后我们将构建并推送映像。您将使用 make bundle、make bundle-build和 make bundle-push命令来完成这个任务。

make bundle IMG="example.com/memcached-operator:v0.0.1" make bundle-build bundle-push BUNDLE_IMG="example.com/memcached-operator-bundle:v0.0.1"

接下来,我们将使用operator-sdk run bundle command将操作员部署到我们的集群中。

operator-sdk run bundle <some-registry>/memcached-operator-bundle:v0.0.1

然后,您可以使用我们下载的脚手架创建一个示例定制资源。

kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml

这将显示如下所示的输出:

memcached.cache.example.com/memcached-sample created

接下来,如果我们想卸载我们的操作员,您可以使用以下命令:

operator-sdk cleanup memcached-operator

直接部署到集群

我们部署操作员的下一个方法是直接部署到集群。我们将使用 make deploy 命令。

make deploy IMG="example.com/memcached-operator:v0.0.1"

部署操作符后,我们就可以创建自定义资源了。

kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml

接下来卸载您将简单地运行以下:

make undeploy

在集群外本地运行

最后,我们的最后一种方法是在部署到集群之前测试我们的操作员。您将简单地使用此命令来完成此操作:

make install run

这将运行它在您的终端,并退出它只需做一个 ctrl+c。

那么下一步是什么?

既然你已经有了基本的东西,我相信我们已经激发了你的兴趣!如果这是一个你感兴趣的话题,并且你想更深入地研究这个话题,那么就来看看我的课程“从头开始开发 Kubernetes 操作符”。我将进一步深入介绍所使用的工具以及构建第一个基于 go 的 Kubernetes 操作符的过程。

做一个令人敬畏的大师,学习所有的东西!

开发工件

原文:https://acloudguru.com/blog/engineering/development-artifacts

最广义的定义是,开发人员工件是项目开发周期的任何“副产品”,从最初的计划文档到编译的软件本身。拥有一个工件的集合就像一个路线图,允许维护人员回顾并探索项目的所有阶段。高价值工件也为最终用户和产品维护者提供了关于如何工作或管理产品的信息。

工件概述

考虑名字,神器。如果您的开发项目,从开始到初始发布,再到维护,是一个考古挖掘,那么工件就是留下来被发现的,允许未来的编码人员和项目维护人员不仅学习项目本身的细节,而且学习围绕这些细节的上下文。就像在挖掘现场一样,一些文物比其他的更有价值。项目维护者可能会对概述已经构建并正常运行的功能的目的的用户故事感兴趣,但不会向维护者提供任何关于保持代码库最新和应用程序运行的信息。在这种情况下,代码中的注释、先前测试的输出和书面文档将为维护人员提供更多的价值和上下文,以解决他或她试图解决的任何问题。不管项目的当前状态,以及工件对整个路线图的个别价值,这些工件确实为团队成员和客户提供了关于项目创建和维护的意图、目标和问题的内部可见性。

常见工件和敏捷术语

工件可以跨越项目的整个空间。尽管没有被普遍分类,工件倾向于分为三种信息类型:代码和代码的结果,在项目管理过程中创建的工件,以及文档。

密码

与代码相关的工件可以包括(但不限于):

  • **已编译代码:**代码本身,已编译并处于准备运行状态
  • **测试和代码输出:**测试和 QA 期间生成的信息和日志
  • **设置脚本:**准备运行软件的环境的脚本
  • 测试套件:在测试阶段针对程序运行的测试用例集
  • **最终用户生成的对象:**这些是用户与软件交互时记录的收集数据对象

这些工件是从事项目和项目维护的技术方面工作的开发人员和工程师的主要兴趣,并且还提供了问题和项目增长的技术历史。

敏捷工件

项目管理构件可以包括(但不限于):

  • **可接受标准:**客户或项目业主给出的基本要求
  • **用户故事:**详细描述项目具体需求的高层需求;比标准更加深入和以任务为中心
  • **验收测试:**预期软件行为的描述

证明文件

文档工件可以包括(但不限于):

  • **类图:**系统的静态图
  • **演练:**指导测试人员、QA 或其他团队从头到尾完成应用程序的书面指南
  • **最终用户文档:**旨在帮助客户或最终用户使用软件的文档
  • **内部文档:**旨在帮助员工维护、修复和更改应用程序的文档

这些绝不是项目生命周期中产生的唯一的工件,并且不是所有的工件都必须对每个人可用,甚至是内部的。在上述类型的工件中,软件开发人员和维护人员最关心的是代码和文档,以及帮助客户或最终用户使用产品的文档。这些通常被认为是可交付成果,并且是交付的产品的最终部分,无论是内部还是外部。这些工件最好存储在基于 wiki 的系统上,比如 Confluence、Intranets 和共享文件夹,需要访问这些工件的人可以在这些文件夹中进行访问。工件为项目各个层次的每个人提供了对软件开发过程的更好理解。虽然不是每个人都需要涉众笔记或旧的用户故事,但是工件提供了项目的历史,并在项目的整个生命周期中帮助支持它。

云中的 DevOps 工具——亚马逊网络服务

原文:https://acloudguru.com/blog/engineering/devops-tools-cloud-amazon-web-services

将 DevOps 称为 2018 年的一场革命可能是一种伤害。革命已经发生,DevOps 牢牢地扎根于当今信息技术的运行方式中。然而,我们可以谈一谈 DevOps 的发展,这种发展的驱动因素是主要的云供应商。每一个都有各种工具和服务,允许您在云中应用 DevOps 的概念。今天,我们将看看亚马逊网络服务在这个领域提供了什么。通过获得 AWS DevOps 认证掌握您的 DevOps 知识。

自动化

除了重新定义完成 IT 工作的方式,消除运营(基础架构和管理)和开发之间的传统分工之外,DevOps 还帮助组织自动执行手动任务并管理复杂的大规模环境。尽管有许多工具可以帮助实现这种自动化(Jenkins、Puppet、Chef、Salt 和 Ansible,仅举几个例子),但在云环境中的实现过去更“传统”。您通常将软件(社区版或企业版)安装在一个映像上,并按照您在本地部署所有物理或虚拟基础架构时的方式使用它。现在,每个主要的云供应商都在他们的特性集中提供了这些工具。

与 AWS 的持续集成和交付

无论您是需要构建、测试和部署您的应用程序源代码,还是仅仅为了安全地存储它,Amazon Web Services 都有许多您可以利用的特性。一些最常见的是:

AWS 代码管道

这允许您使用您想要的任何过程触发器快速构建、测试和部署应用程序代码。代码部署和测试的自动化意味着您的环境在每次构建时都保持一致。

AWS 代码构建

这项完全托管的服务将编译、运行和测试您的应用程序代码,并为您提供可部署的包。一旦您设置了所需的功能,它将处理任何所需的配置、扩展和管理。

AWS 代码部署

简单地说,这将自动将代码部署到您想要的任何实例(云或内部)。这加快了您的组织向您的企业交付附加功能的速度,并避免了与部署相关的典型停机时间。

AWS CodeStar

如果您只想关注 AWS,CodeStar 可以帮助您在 AWS 服务和实例上开发、构建和部署应用程序。它将允许您的组织在一个地方管理整个生命周期。

微服务

如果您的组织在开发运维及持续集成的道路上走得有点远,AWS 还提供微服务来帮助您,包括:

自动气象站λ

Lambda 允许你完全不需要部署典型的基础设施就可以运行你的代码。您只需上传您的应用程序代码,其他一切都将根据您指定的使用和缩放规则进行处理。

亚马逊 EC2 容器服务(ECS)

如果您正打算使用或已经在使用容器, Amazon ECS 将允许您在高度可伸缩的环境中利用 Docker 投资,同时降低管理大型容器化应用程序集群的复杂性(不久也将支持 Kubernetes)。

平台即服务

如果您需要混合实现,并且在工具和内部流程方面有大量投资,那么您可以在更传统的平台即服务(PaaS)模型中使用 AWS。将基于 web 的应用程序部署和管理到生产环境已经简化:

AWS 弹性豆茎

您可以在 Elastic Beanstalk 上轻松地部署和扩展您的应用程序(基于您决定的规则)。该服务支持用 Java 编写的应用程序。NET、Node.js、Ruby、Go、Python、PHP,当然还有 Docker,使用 Apache、IIS 或者 Nginx 这样的标准 web 服务器。

结论

DevOps 是如何在 2018 年完成的,就这样。革命结束了,但这并不意味着一切都解决了。这篇文章旨在成为三个讨论的第一个,讨论每个主要的云供应商如何在其环境中接受并帮助促进 DevOps。下周,我们将讨论微软是如何在 Azure 中实现 DevOps 的(不仅仅是针对 Windows 用户)。请在下面给我们留言,分享您在本地或云中使用 DevOps 的体验!

希望提升您的云计算技能?探索我们的课程并开始您的7 天免费试用以启动您的学习!

DevOps vs 敏捷:有什么区别?

原文:https://acloudguru.com/blog/engineering/devops-vs-agile-whats-the-difference

敏捷和 DevOps 塑造了当今软件开发的方式。它们已经被广泛采用和推崇,以至于超越了软件开发领域,渗透到各行各业的项目管理和组织结构图中。

开发运维与敏捷可能很难定义,两者之间的界限似乎常常模糊不清。

  • 在基本层面上,DevOps 是两个团队(软件开发和 IT 运营)的结合,以创建更强大、更高效的软件开发过程。
  • 敏捷是围绕迭代开发的一系列方法,旨在使任务更小、更易管理并增加协作。

但是 DevOps 和敏捷更深层次的区别是什么?DevOps 比敏捷好吗?或者 DevOps 和敏捷可以一起实现吗?在本帖中,我们将深入探讨一些常见的敏捷和开发运维常见问题。

开发运维与敏捷

DevOps 和敏捷有什么区别?

敏捷和 DevOps 都用于软件开发。虽然它们都是为了改进软件开发过程而设计的,但是它们都是通过采用不同的方法来实现的。但它们并不相互排斥。(更多信息请见下文。)

敏捷本质上是给软件开发人员一套共享的原则来推动决策制定,并允许对变化做出更多的响应。

DevOps 是一种文化变革,旨在推动软件开发人员和 IT 运营人员之间的协作。

人们常说 DevOps 是软件开发团队之外的敏捷应用。


后 COVID DevOps:加速未来 COVID 如何影响——甚至加速——工程团队的 DevOps 最佳实践?观看这个免费的点播网络研讨会与 DevOps 领导者进行小组讨论,我们将在后 COVID 时代探索 DevOps。


什么是敏捷?

敏捷是一种迭代的软件开发方法,关注协作和快速发布。它是一套价值和原则,可以用来帮助驱动软件开发中的决策。

说到敏捷,很难比 2001 年写的最初的微型宣言本身更简洁地定义它。(没有 TL;需要灾难恢复版本。只有 68 个字。)它指出:

我们通过自己动手和帮助他人来发现开发软件的更好方法。通过这项工作,我们得到了价值:

  • 个人和交互超过流程和工具
  • 工作软件结束综合文档
  • 客户协作合同谈判
  • 应对变化按照计划行事

也就是说,当右边的项目有价值时,我们更看重左边的项目

清单与 12 条敏捷原则相结合,帮助做出更好的决策。

复制敏捷方法和投资敏捷工具不会让你的团队变得敏捷。这不仅仅是做两周的迭代或者组建更小的团队。在敏捷中,团队做什么没有 T2 为什么做什么重要。

敏捷(顾名思义)就是根据不断变化的需求构建软件的灵活性和适应性,并抛弃一成不变的计划。

这包括更好地连接开发团队和最终用户。(你可以认为这有点像“你说你在这里做什么?”场景来自办公场所。)

敏捷的好处是什么?

  • 敏捷性–更快地响应市场变化或客户反馈。
  • 质量–注重测试和持续的客户参与意味着产品整体质量高的机会更大。
  • 协作——敏捷是关于人的。通过重视人与人之间的互动而不是过程,“这就是它的工作方式”,组织能够让员工根据他们的经验和共同的价值观行事,而不是被微观管理或束缚在详细的文档中。
  • 所有权–领导对敏捷团队的信任可以增加所有权的感觉。
  • 客户满意度–专注于快速发现和解决问题,并在客户和开发人员之间建立直接联系,客户更有可能感到满意,并再次光顾。
  • 可预测性——通过取消那些一成不变且往往脱离现实的大计划,组织可以更好地了解哪些事情进展顺利,哪些事情没有马上奏效,而不是在几个月之后再做任何事情来纠正已经太迟了。
  • 提高生产力——经常使用的计划工具,如看板和 Scrum,帮助团队记录工作和实现目标的进度。

一个公司如何做到敏捷?

许多组织习惯于在瀑布模型中工作。瀑布模型是一种线性方法,是一系列事件,在进入开发、测试和生产之前,首先要投入大量的时间和资源来确定需求和预算。

将这种范式转变为敏捷并大规模运行敏捷可能是困难和复杂的。事实上,“敏捷”不仅仅是你做的事情,更是决策的基础。对于过程高于一切的组织来说,这可能需要一个大的转变,并且肯定需要管理层的支持。

DevOps 是什么?

DevOps 的名字听起来像一个秘密的军事团队,你可能会从技术术语中想到这种愚蠢的大写字母,它将软件开发和 IT 运营结合在一起。把软件开发中的“dev”和 IT 运营中的“ops”合在一起,你会得到这个组合词,这是一个说起来很有趣的术语,描述了多个词的混合,如 spork、phablet、brunch、jorts 和 bromance。

DevOps 不仅仅是一个过程。这是职场文化的转变。这是团队之间的合作。加倍自动化和安装所有正确的软件不会让你独自到达那里。像敏捷一样,人是关键的组成部分。

有兴趣升级或开始您的 DevOps 之旅吗?云专家的 DevOps 学习路径提供适合初学者和高级专家的定制课程!

AWS 提供了 DevOps 模型的以下定义:

DevOps 是文化哲学、实践和工具的结合,它提高了组织高速交付应用和服务的能力:以比使用传统软件开发和基础设施管理流程的组织更快的速度发展和改进产品。这种速度使组织能够更好地服务于他们的客户,并在市场中更有效地竞争。


自动化 AWS 成本优化
AWS 为您的企业提供了前所未有的价值,但经济高效地使用它可能是一项挑战。在这个免费点播的网络研讨会中,您将了解 AWS 成本优化工具和策略的概况。


为什么要把软件开发和 IT 运营结合起来?

这两个群体是怎么合二为一的?为什么您希望将开发和 IT 运营结合起来?

很久以前(大约在 2007 年左右),IT 运营团队与开发团队是分开的。然后,开发和运营社区的人意识到这些团队的结构方式以及他们如何交互(或不交互)存在一些问题。

  • 开发和 IT 运营团队有不同的目标
  • 开发和运营团队有不同的绩效指标
  • 开发和运营团队在物理上被隔离在不同的房间、建筑或办公室中

于是他们开始聊天。这就诞生了 DevOps 和 DevOps 工程师

经常被称为 DevOps 教父的 Patrick Debois 在 2009 年的 devopsdays 上召集了这些团体,在那里他们讨论了弥合这两个领域之间差距的方法。现在,成千上万的企业已经适应或正在努力适应这些实践。

这些新方法在某种程度上基本上使运营成为每个人的工作,这使得运营工作的未来非常有趣。

DevOps 概念和关键术语

  • 容器(Container)——一个轻量级的、独立的、可执行的软件。它包括运行该软件所需的一切。
  • 连续交付(CD)–软件向生产环境的持续手动或自动发布。它针对新的周期。一些组织发布了一个有任何变化的新版本。
  • 持续集成(CI)–代码的持续编程、构建和测试。这是在将其移交给持续交付(CD)系统进行部署之前完成的。加上 CD,就组成了 CI/CD
  • 基础设施即代码(IaC)–定义您希望与云服务能够理解的编程代码一起使用的基础设施。这些云服务然后基于这些代码为您创建基础设施。这允许您定义标准和重用代码,从而节省时间。
  • 微服务–被分成多个小块的应用架构。容器通常用于部署微服务。
  • 开源——在许可下免费发布的计算机软件代码,如 LinuxKubernetes
  • 管道–一组相互连接的流程,其中一个流程的输出是下一个流程的输入。
  • 无服务器–在基于云的基础设施上运行服务或微服务,无需担心服务器运行您的代码。你只需提供代码,云提供商运行代码并给你结果。查看更多关于 AWS、Azure 和 GCP 的功能即服务(FaaS)服务。
  • 源代码库——一个上传和跟踪代码历史的地方,比如 GitHubAWS CodeCommit
  • 单元测试——将你的应用程序分解成小部分,测试每一个功能的工作情况。

DevOps 有什么好处?

DevOps 完全是为了更快地生产更高质量的软件,节省大量的时间和金钱。下面是对这些好处的更详细的分析。

  • 速度–更快地发布更新和新功能,适应不断变化的市场,变得更加高效。
  • 快速交付–增加部署频率和发布速度。更快地响应客户需求,建立竞争优势。
  • 可靠性–内置自动测试。确保部署具有最高质量,并且您的停机时间更少,因为您在部署前构建了稳定性和测试。
  • –实现自动化。通过使用云和容器技术,您可以扩大和缩小使用范围,同时节省资金。
  • 协作–允许曾经分开的团队一起工作。可以合并工作流,降低效率,节省时间。
  • 安全性–允许基础设施由代码创建,就像软件一样。通过这样做(而不是手动操作),您可以定义策略来保持合规性,而不管将部署多少服务器。

想要一个带有强烈讽刺意味的好处概述吗?查看我们的帖子不搬到 DevOps 的 5 个理由。

DevOps 是敏捷的替代品吗?

DevOps 和敏捷可以加速软件的交付并提高软件的质量。敏捷取代了老派的瀑布模型,但是 DevOps 不是敏捷的替代品。

DevOps 因为敏捷而存在,两者可以共存,一起使用。您不必在 DevOps 和敏捷之间做出选择。理想情况下,您的组织将实践这两者。

查看人们正在 ACG 学习的顶尖开发技能

什么是 CI/CD?

持续集成和持续开发(或 CI/CD)是一种 DevOps 策略——一种通过将自动化引入敏捷开发流程来为客户交付应用的方法。

CI/CD 管道(当这些实践结合在一起时,它被称为)已经成为 DevOps 文化的一个组成部分。多种工具和技术被用于实现这样的流水线。(下面有关于这些工具的更多信息。)

CI/CD 渠道由团队以敏捷的方式提供支持,采用 DevOps 或现场可靠性工程(SRE) 方法。

阅读更多关于 为什么你需要 SRE 技能在一个无服务器的世界里茁壮成长 并查看我们的 站点可靠性工程概念 Google Cloud devo PS 和 SREs 课程。

CI/CD 有什么好处?

CI/CD 管道通过自动化手动流程和增强对发布的信心,平滑并加速了从开发到运营和 QA 到生产的代码流。

这与许多大型组织仍在实践的瀑布式发布方法完全相反,在这种方法中,开发人员将代码“越过墙”扔给运营部门,开发人员无法进入生产环境,运营部门也不了解代码如何工作。

CI/CD 允许组织:

  • 构建速度更快
  • 减少代码审查时间
  • 自动的
  • 更快的故障隔离
  • 其他部署功能

如前所述,您可以做正确的事情和使用正确的工具,但仍然不敏捷或不正确地实现 DevOps。一个破碎和混乱的团队会导致破碎和混乱的 CI/CD 管道。你几乎可以根据你的开发和运营团队如何合作来预测你的 CI/CD 管道看起来如何


获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


有哪些常用的 DevOps 工具?

下面是一些最流行的 DevOps CI/CD 工具,如果您在 AWS 云环境中工作,可能会用到它们。

  • Git–免费开源版本控制系统。它存储了您的代码的整个历史,您的开发人员将继续向它推送新的代码。它占用空间小,性能快。它还支持分支,允许其他人单独处理特性,而不会让开发人员被代码绊倒。

  • AWS code commit托管 Git 存储库的全托管服务器。它是安全的、加密的、高度可用的,并且容易与其他 AWS 服务集成。

  • AWS code build完全管理的持续集成代码,编译代码,运行测试,并生成软件包。当开发人员编写代码并将其推入 Git 时,CodeBuild 会编译这些代码并生成一个软件包。它可以自动伸缩,并且可以同时处理多个构建。

  • AWS code deploy完全托管的部署服务,获取软件包(或您更新并推送到 Git 存储库中的文件)并将其部署到 AWS 或本地服务器。它可以与 AWS 服务和您自己的服务器很好地集成。它完全自动化了软件部署,消除了容易出错的手动操作。

  • AWS code pipeline全面管理持续交付服务,帮助您完全自动化您的发布渠道。它可以自动化软件开发的构建、测试和部署阶段,并且可以与 CodeCommit 和 GitHub 集成,让您可以灵活地使用自己选择的源代码控制系统。阅读更多关于使用 AWS CodePipeline 实现 CI/CD 自动化的信息。

其他常见的 DevOps 工具还有 DockerJenkins木偶、Chef、 SplunkAnsibleKubernetes 、Bamboo 和 Nagios

如何用傀儡摆脱配置漂移的困扰。

我怎样才能更好地了解 DevOps?

一位云专家提供了广泛的 AWS DevOps 认证课程、学习途径和资源,以帮助个人和组织利用 DevOps 的力量,包括我们当前一批免费课程现在就开始使用免费账户开始 7 天免费试用

开发运维与敏捷常见问题

******What is the difference between DevOps and agile?

敏捷和 DevOps 都用于软件开发。虽然它们都是为了改进软件开发过程而设计的,但是它们都是通过采用不同的方法来实现的。但它们并不相互排斥。****** ******What is agile?

敏捷是一种迭代的软件开发方法,关注协作和快速发布。敏捷提供了一套价值和原则,可以用来帮助推动软件开发中的决策。****** ******What are the benefits of agile?

敏捷带来了许多好处。这包括能够适应市场变化、改进质量测试、优化团队内部协作、获得对产品的可预测洞察力等等。****** ******What is DevOps?

DevOps 是“开发”和“运营”的组合,如“软件开发”和“IT 运营”DevOps 是文化理念、实践和工具的组合,它提高了组织高速交付应用程序和服务的能力,比使用传统软件开发和基础架构管理流程的组织更快地发展和改进产品。****** ******What is CI/CD?

持续集成和持续开发(或 CI/CD)是一种 DevOps 策略——一种通过将自动化引入敏捷开发流程来为客户交付应用的方法。******


改变职业,改变企业

学得更快。动作快点。借助 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室,立即实现转型。

禁用未使用的守护程序以加快您的启动顺序

原文:https://acloudguru.com/blog/engineering/disabling-unused-daemons-to-speed-up-your-boot-sequence

许多 Linux 发行版在启动时通常会启动大量的守护进程,导致开机后需要等待很长时间才能开始工作。大多数用户很少(甚至根本不)使用这些守护进程。本教程描述了如何以适当的方式禁用未使用或很少使用的守护进程,从而加快引导顺序并减少 CPU 负载。注意:尽管本教程旨在对系统友好且不危险,但如果你不知道你在做什么,请不要禁用任何服务。尤其是在服务器系统上,(意外地)禁用一个重要的服务会产生严重的后果。本教程按原样提供,没有任何担保等等。小心点,好吗?=) 另注:本教程使用了“服务”和“守护进程”这两个词。这两个词有着几乎相同的意思,尽管服务更侧重于流程做什么,或者换句话说,流程提供哪种服务。daemon 这个词指的是“物理的”(软件怎么可能是物理的?)过程。

第一部分:如何做

事实上,为了便于阅读,本教程分为两部分。第一部分简单明了地解释了如何禁用这些服务(以及禁用哪些服务)。第二部分(教程部分)解释了它背后的东西,并允许更深入地了解 Linux 引导。如果你不想和/或不需要那种更深入的洞察,就不要读第二部分=)。

了解您的系统上正在运行什么

大多数发行版都有某种工具,可以让你管理启动时在电脑上启动的守护进程。最常见的是 chkconfig,它具有命令行界面。您可以使用以下命令列出引导至图形模式时启动的所有进程:

[re chosen @ localhost ~]$/sbin/chkconfig–list | grep " 5:on "

运行文本模式系统时,通常会引导到运行级别 3。要查看这些系统在引导时启动的进程,请使用以下命令:

[re chosen @ localhost ~]$/sbin/chkconfig–list | grep " 3:on "

许多发行版还有一个用于守护进程启动配置的 GUI 。一个比较知名的就是 serviceconf。您通常会在“系统”或“配置”中找到这样的 GUI,命名为“服务”、“引导配置”或“守护进程”(注意,第二个 GUI 也可以是引导加载程序的配置 GUI,如 GRUB 或 lilo,这不是我们现在要处理的)。推荐使用 GUI 配置器,因为它们通常比 chkconfig 更适合您的发行版。以下部分包含在某些情况下可以禁用的守护程序列表。将系统上启动的守护程序列表与下面的列表进行比较,阅读说明并确定禁用它是否是个好主意。一旦决定了要禁用哪些服务,继续禁用守护进程。

常见的未使用/很少使用的守护进程

以下列表包含“普通”最终用户可能不使用的守护程序。您可以将系统上启动的守护进程列表与此列表进行比较,看看是否可以安全地禁用其中的一些守护进程。

  • 蓝牙
    • hcid、sdpd 和 hidd(这些守护进程提供蓝牙服务,如果您没有任何蓝牙硬件,则没有必要)
  • 打印
    • cups 和 cups-config-daemon(这些守护进程提供打印机服务,如果您的本地 pc 或网络 pc 上没有连接任何打印机硬件,则不需要这些守护进程)
    • hpiod 和 hpssd(这些守护程序为 HP 打印机提供了广泛的支持。如果您从未使用惠普打印机打印,可以安全地禁用它们)
  • 控制台
    • gpm(这个守护进程为基于文本的应用程序提供鼠标支持,比如 Midnight Commander。它还提供了在控制台环境中使用鼠标中键进行复制/粘贴的功能。如果不经常使用控制台,可以将其禁用)
  • 网络服务器
    • httpd(此守护程序提供 web 托管服务,在不托管任何网站或 web 界面的工作站和服务器上是不必要的)
    • mysqld 和 postgresqld(这些守护进程提供数据库后端服务。如果您没有运行 web 服务器,通常可以禁用它们,尽管有些应用程序使用这些数据库来存储数据)
  • 防火墙
    • netfilter/iptables(这个守护进程提供防火墙服务。如果你在内置防火墙的路由器或 smoothwall 后面,这些就没有必要了)
  • 红外线
    • irda(这个守护程序使您的计算机能够使用 IR(红外)硬件与其他设备通信。如果您没有这样的硬件,您可以安全地禁用此服务)
    • 这个守护进程使用 IR(红外线)接收器提供远程控制支持。如果您没有能够接收红外信号的硬件,则可以禁用)
  • 多个 CPU
    • irqbalance(这个守护进程平衡系统中多个 CPU 的中断。如果您没有多个 CPU 或双核处理器,则可以禁用)
  • 软件 RAID
    • mdmonitor、mdadm 和 mdmpd(这些守护程序提供有关软件 RAID 设备的信息和管理功能。如果不使用软件 RAID,它们是不必要的)
  • DNS 服务器
    • 命名(也称为 BIND)(此守护程序提供 DNS 服务器功能。工作站上通常不需要)
  • 远程内核日志
    • netdump、netcrashdump 和 netconsole(这些服务通过网络连接提供内核日志记录和调试功能。只有当您想在另一台计算机上查看内核的日志和调试消息时才有必要)
  • 文件服务器
    • NFS 服务器
      • nfs(这个守护进程提供 NFS 服务器功能,允许其他装有 NFS 客户端的计算机连接到您的计算机并访问文件。如果您不需要/不希望其他人使用 NFS 访问您的系统,您可以禁用此功能)
      • 端口映射(这个守护进程管理 RPC 连接,由 NFS 和 NIS 这样的协议使用。仅在需要充当服务器的计算机上需要)
      • rpcsvcgssd(这个守护进程管理 NFSv4 服务器的 RPCSEC GSS 上下文,除非您运行的是 NFS 服务器,否则不需要它)
    • 桑巴服务器
      • smbd 和 nmbd(这些守护进程向其他计算机(也包括 Windows 计算机)提供对您的文件的访问。如果您不希望其他人能够通过网络访问您的文件,则不需要这样做)
  • 网络认证
    • nscd(这个守护进程处理密码和组查找,并缓存它们的结果。仅在使用“慢速”名称服务时需要,如 NIS、NIS+、LDAP 或 hesiod)
    • 端口映射(这个守护进程管理 RPC 连接,由 NFS 和 NIS 这样的协议使用。仅在需要充当服务器的计算机上需要)
  • 远程时间设置
    • ntpd(这个守护进程将您的系统时间设置为它从一个所谓的 ntp 服务器获取的值,这个服务器通常提供非常精确的时间。虽然这是一个有用的特性,但它往往会大大降低系统的启动速度,尤其是在找不到服务器的情况下)
  • 流程核算
    • psacct(也称为 acct)(这个守护进程提供进程记帐,可以更详细地了解系统上命令的执行情况。这通常是不需要的,除非你运行的服务器被很多你不能完全信任的人访问)
  • 明文认证请求
    • saslauthd(该守护程序处理 SASL 明文身份验证请求,并且仅在需要使用 SASL 机制进行通信的服务器上是必需的)
  • 邮件服务器
    • sendmail(这个守护进程作为服务器发送和转发电子邮件。您不需要这个守护进程就可以发送普通消息。只有当您需要计算机充当邮件服务器时才需要它)
    • spamd(也称为 Spamassassin)(该守护程序检查传入邮件中的垃圾邮件。这通常可以禁用,但请记住,一些邮件客户端,如 KMail,可以使用 spamd 的功能)
  • SSH 服务器
    • sshd(这个守护进程允许使用 SSH 协议远程登录到您的计算机。如果您不想/不需要此访问权限,可以禁用它)
  • VNC 服务器
    • vncserver 或 xvnc(这个守护进程允许其他人获得一个实际运行在您的计算机上的虚拟图形桌面)
  • 任务调度器
    • cron(及其变体,如 vixie-cron…)(这个守护进程在您的系统上运行定期任务,如更新搜索索引或联机帮助页索引,但也轮换日志文件。这通常是服务器系统正确运行所需要的,但是工作站没有它也能运行)

禁用守护程序

当使用 GUI 来管理在引导时启动的守护进程时,您通常可以通过取消选中复选框来禁用它们。使用 chkconfig 时,可以使用以下语法:

[re chosen @ localhost ~]$/sbin/chkconfig name off

将“名称”替换为要禁用的守护程序的名称。如果您意外禁用了一个错误的守护程序,您可以通过以下方式再次打开它:

[re chosen @ localhost ~]$/sbin/chk config 名称重置

你可能认为这不合逻辑,应该是:

[re chosen @ localhost ~]$/sbin/chk config name on

嗯,不应该。上面的命令将为一组固定的运行级别启动守护程序,不管之前的值是什么。这并不完全是我们想要的,因为我们希望它切换回原来的状态。单词“reset”告诉 chkconfig 恢复 init 脚本中指定的值,该脚本包含如何启动守护程序的指令。这些值是(或者应该是)默认值。请记住,默认值并不总是等于旧值,但它们通常比“on”所暗示的值更接近旧值。您可能需要修改一些运行级别来纠正它。您可以通过指定应该更改哪些运行级别来做到这一点,如下所示:

[re chosen @ localhost ~]$/sbin/chkconfig–35 级名称在

上面的命令将启动运行级别 3 和 5 的守护进程“name”。“–level”的参数只是一个运行级别数字的字符串,没有分隔符。另一个例子:

[re chosen @ localhost ~]$/sbin/chkconfig–level 235 name on

第二部分:教程

这一部分将解释以上所有命令背后的内容。如果你想知道 Linux 如何“知道”在引导时启动什么,什么是“运行级”以及为什么通常有 7 个(或者,可以说是 8 个),请继续阅读。注意:这个部分并不适合每个发行版。在这一点上,发行版之间有很多差异,所以我试图公开最默认的配置。

Linux 如何“知道”在引导时启动什么

当您启动一台 Linux 计算机时,您通常会看到引导加载程序(在 BIOS 完成它的引导过程之后)。引导加载程序,通常是 LiloGRUB ,被配置为将 Linux 内核加载到计算机的内存中。然后,内核将引导加载器留在后面,继续自己引导,初始化硬件,并准备开始运行 init。init 是我们正在寻找的进程:它是第一个运行的进程,并且它产生所有其他进程。但是 init 想知道从哪里开始呢?简单的答案是:in /etc/rc*。d/(通常)。但这还不是完整的答案。为了了解它如何使用这些目录中的文件,我们首先需要了解什么是运行级别。

运行级别

运行级是系统可以驻留的进程状态。例如:运行级别 1 通常是救援模式,它引导系统启动尽可能少的进程,为用户提供根访问控制台,没有网络功能,也没有任何 GUI。另一方面,运行级别 5 通常是成熟的图形多用户模式。还有一些特殊的运行级别,您不应该引导到这些级别,但是您可以在引导后切换到这些级别:例如,切换到运行级别 0(零)会关闭您的计算机(在阅读完整的教程之前不要尝试这样做),切换到运行级别 6 会让您的系统自动重新引导。现在来看看运行级别及其常见配置的完整列表:

  • 0:关闭系统(引导后切换到)
  • 1:将系统引导至救援模式
  • 2:引导系统进入多用户模式,没有网络功能(一些系统,比如 Debian,使用这种模式作为成熟的模式)
  • 3:将系统引导到具有网络功能的多用户模式(一些系统,如 Debian,将此作为成熟的模式)
  • 4:通常不使用(有时与运行级别 5 或 3 相同)
  • 5:将系统引导至成熟的图形多用户模式(当然,带网络)
  • 6:重新引导系统(引导后切换到)
  • (S 或 S:通常类似或等于运行级别 1)

因为最后一个运行级并不总是被认为是真正的运行级(它被称为别名),所以运行级的数量通常是七个,但也可以说是八个。启动后,您可以在所有运行级别之间切换,尽管 0 和 6(当然)需要您再次启动才能再次切换。运行级别之间的切换通常通过 init 命令完成,如下所示:

[rechosen@localhost ~]$ init 3

上面的命令将(以 root 用户身份或使用 root 权限运行)将您的系统切换到运行级别 3,除非它已经在运行级别 3 下运行(如果您想切换到其他运行级别,请用其他数字替换 3)。在运行级别之间切换时,init 会终止在旧运行级别中运行的、不应该在新运行级别中运行的进程(在引导时这些进程为零,在关闭或重新引导时所有进程都为零),并启动不在旧运行级别中运行的、应该在新运行级别中运行的进程(在关闭或重新引导时这些进程为零,但在引导时,这取决于您要引导到的运行级别)。现在我们可以继续 init“知道”什么开始什么停止的方式。

开始什么,停止什么?

当内核启动 init 进程时,它首先查看/etc/inittab 文件,看看在某个运行级别的情况下该做什么。这个文件通常告诉 init 在相应的/etc/rcX.d/目录中查找,其中 X 是运行级别。例如,当引导到运行级别 5 时,init 将运行/etc/rc5.d/ ( 请注意(再次)这并不适用于所有发行版)中的脚本。这些“脚本”通常是指向/etc/init.d/(或/etc/rc.d/init.d/)中相应服务管理脚本的符号链接。但是这样的脚本如何理解 init 希望它启动还是停止服务呢?当 init 希望脚本启动进程时,它会以“start”作为第一个参数来运行脚本。当希望脚本停止服务时,init 将传递“stop”作为第一个参数。如果您想要启动或停止服务,也可以自己执行此操作。例如:

[rechosen @ localhost ~]$/etc/init . d/ntpd stop

上面的例子将停止 ntpd 守护进程。要再次启动它,请使用以下命令:

[re chosen @ localhost ~]$/etc/init . d/ntpd start

停止和启动通常可以通过以下方式结合起来。

[re chosen @ localhost ~]$/etc/init . d/ntpd restart

如果您希望守护进程重新读取其配置文件,这将非常有用。根据为其编写脚本的服务(以及脚本本身),还可能提供其他参数。无论如何,让我们回到/etc/rcX.d/目录。这个目录中充满了名为“K59somedaemon”和“S10anotherdaemon”的文件。我简单解释一下:

  • “K”表示“kill”,而“S”表示“start”:以“K”开头的符号链接将由 init 使用“stop”参数执行,以“S”开头的符号链接将使用“start”参数执行。
  • “K”或“S”后面的两位数字并没有什么真正特殊的含义,它们只是用来排序的。需要在某些其他符号链接之前运行的符号链接的数量应该比其他符号链接的数量少。
  • 对于 init 来说,守护进程后面的名称实际上是不必要的,但是对于系统管理员来说,这是一个很好的实践,这样他们就可以立即看到符号链接的用途。

最后,你应该知道几乎所有的发行版都在某处进行了某种检查,以确保已经运行的进程不会再次启动(这将导致两个相互干扰的进程,除非守护进程自己检查是否没有其他实例在运行),并且已经终止的进程不会被“重新终止”。这通常是由一些特殊的程序或脚本来完成的,它们被调用来完成实际的启动。

最后的话

嗯,我希望这篇教程能帮助你减少计算机的 CPU 负载和启动时间,并理解在你打开计算机后是什么让 Linux 系统启动的。如果您有任何建议(例如:在某些情况下似乎不必要的另一个守护进程或管理守护进程启动的另一种方法),请留下评论。

我真的需要 VPC 吗?

原文:https://acloudguru.com/blog/engineering/do-i-really-need-a-vpc

从安全的角度来看,VPC 并不是一种魔力。这是另一层责任。

在 AWS 上运行应用程序?你需要一个 VPC :一个虚拟专用网络,让你的服务器免受公共互联网的破坏,就像它们在你的旧数据中心一样。

或者说,当 EC2 为王时,我们称之为云 1.0 的指导思想是 IaaS 浪潮。

但是这些天,当我在云中构建新的应用程序或者与其他做同样事情的构建者交谈时,VPC 并不总是参与对话。

这是因为云原生应用越来越多地运行在更高级别的托管服务上,如 Lambda、API Gateway 和 DynamoDB,它们通过 API 相互通信。在 AWS 中,这可能意味着使用 IAM 进行身份验证和授权来保护微服务之间的交互。

如果您需要连接回遗留数据中心,VPCs 将永远占据主导地位。但是,他们是否仍然应该在保护现代的、诞生在云中的应用程序方面发挥重要作用呢?我有自己的看法,但我决定向一些专家求证。

复选框还是必备?

也许你已经参加了安全团队的会议,试图使用为本地应用开发的清单来评估云原生设计。紫盒安保公司的尼哈特·居文也是。“安全和合规领域正在迎头赶上,”他说。“在合规性方面,更多的是遵循标准和勾选方框”,而不是真正考虑 VPC 可能提供或可能不提供的真正安全优势。

AWS 的另一位英雄、即将出版的新书《面向高管的云安全》的作者 Teri Radichel 也认为 VPC 并不神奇。“VPC 什么都不做,真的,”她指出。“你需要一个适当的网络架构,包括 NACLs、子网和安全组。您需要知道如何构建架构,以便能够监控攻击。人们需要了解网络层、攻击以及攻击者如何在网络中穿梭。”

这就把我们带到了问题的关键:为一个功能正常的应用程序添加 VPC 的争论总是围绕着在 IAM 规定的理论最低安全级别上添加安全层。您不会引入 VPC 来解决问题,您这样做是因为您想要额外的保护层来防止数据泄露,或者对流量模式进行更细粒度的分析。

这也是很多工程师感到困惑的地方。

一种责任,而不是一种超能力

从安全角度来看,VPC 不是一个超级大国,而是一种额外的责任。

唐·麦咭以前是 AWS 的安全专家,现在在好事达管理云保障和可观测性。“如果业务不需要 VPC,比如遗留连接,那么你最好不要用它,”他说。由于增加了复杂性,多层安全配置实际上弊大于利

没错:在 KonMari 的安全配置中,越多并不总是越好。如果您还不擅长配置 IAM 角色,那么是什么让您认为您在 VPC 安全方面会做得更好呢?如果你离开 S3 水桶 公开 暴露,你确定你能监管一个 VPC 带来的安全组、ACL 和子网的网络吗?

VPCs 确实给了你一些额外的网络监控工具,比如流量日志,但是,你知道如何有效地使用这些工具吗?如果没有,你只是在花钱获取昂贵的数据,却没有如何检查这些数据的明确计划。

而且,一旦数据进入网络,VPC 并不能为其提供某种内在保护。正如麦咭提醒我们的那样:“即使在 VPC 内部,你的数据也只是和你在 HTTPS 的流量一样加密。你相信吗?”

前进的道路:抽象,而不是放弃

我当然不是说你应该把安全寄托在云上,因为这太难了。相反,我的意思是,正因为网络安全既困难又重要,所以您应该尽可能依赖安全默认设置,而不是自己酝酿网络控制。

如果这听起来像是一种“无服务器”的思维模式,那你就离得不远了。毕竟,正如 AWS Lambda 的发明者 Tim Wagner喜欢指出所有的 Lambda 函数默认运行在一个 VPC 中——这只是一个 AWS 管理的 VPC,它(让我们面对它)可能比你可以带来的定制版本配置得更好。

这都是更大趋势的一部分。AWS 仍然通过其更高级的服务(如 AppSync 和 DynamoDB)为您处理主机级安全。这并不是说网络安全在这些架构中不那么重要,只是更多的责任已经转移到了云提供商身上。是的,你放弃了一些控制权。但是您将获得更快地构建的能力,同时保持在 AWS 设置的最佳实践防护栏内。

您可能会说,保护云原生应用程序就是“放手,让云去做”这就是传统安全团队正在追赶的范式转变,但对于那些已经知道如何利用它的人来说,这是一个巨大的优势。

因此,做好您的威胁建模,了解您的风险,并适当地培训您的团队。您可能仍然会以需要 VPC 的需求而告终。但是,如果你的云原生蜘蛛感官开始刺痛,请记住:有时,强大的力量来自较少的责任。

VPC

Forrest Brazeal 是 AWS 无服务器英雄 和企业架构师,他领导了从初创公司到财富 50 强企业的云采用计划。


成为 AWS 认证的安全专家

云专家拥有从新手到专家所需的课程、动手实验室和考试模拟器。

Docker 认证助理-准备考试

原文:https://acloudguru.com/blog/engineering/docker-certified-associate-preparing-for-the-exam

Docker Certified Associate 是 Docker 提供的一项相对较新的认证(目前还不到一年),在一项官方认证中涵盖了 Docker、Docker Swarm 和 Docker 的企业功能。在这篇文章中,我们将看看一些方法来准备自己成功地参加这个 Docker 考试,并把自己列入认证。

认证详情

这是 Docker 企业版平台(目前)第唯一的官方职业认证计划。一般来说,可以在 Docker 的官方认证网站找到更多关于认证计划的概要信息。该认证由 Docker 于 2017 年 10 月推出,作为建立您在集装箱技术技能方面的专业知识的基准,因为它们与 Docker 相关。(如果您参加了我们的 Docker 认证助理课程和认证考试,我们希望在这里 听到您的反馈 !)目前,考试包括 55 道选择题,您需要在 80 分钟内完成,涵盖 Docker 企业版的以下专业领域:

  • 编排(占考试的 25%)
  • 图像创建、管理和注册(占考试的 20%)
  • 安装和配置(占考试的 15%)
  • 网络(占考试的 15%)
  • 安全性(占考试的 15%)
  • 存储和卷(占考试的 10%)

你可以期待你的问题组合遵循上述权重。一旦您完成考试,您将立即收到您的分数。然后,在后续的电子邮件中,您将会收到上述每个领域的分数明细。

开始准备码头工人考试

首先,你应该有一些使用 Docker 的经验。Docker 建议,成功的候选人应该有六个月或更长时间在真实世界环境中使用 Docker 的经验。你在准备这次考试中的成功将受到你在参加考试之前接触容器的量的影响。然而,您的收获可能会有所不同,这取决于您使用其他工具和实用程序的经验以及您能够多快地获得新概念。准备 Docker 考试最简单的方法之一就是报名参加 Linux 学院。在那里,您可以找到针对 Docker Certified Associate 的 完整认证准备课程,涵盖了以上列出的每个领域的每个目标。您将找到测验和考试问题、学习用抽认卡、视频演示、动手实验和练习以及学习指南,所有这些都旨在帮助您为成功做好准备。然而,除了获取这些材料,你还可以做很多事情来为自己的成功做准备。首先,官方 Docker 文档** 对于列出的每个领域目标都是一个很好的资源。如果您不熟悉容器,文档有时会遗漏一些基本的细节,但是如果您在现实环境中有必要的背景知识,您将能够找到您需要知道的内容。接下来,如果您可以访问 Linux Academy 预备课程,您可以跳过 Docker 的初始设置。否则,您将需要访问 Docker 并获得 Docker 企业版的试用许可,这样您就可以练习将要测试的那些企业功能。你可以获得 30 天的试用许可,所以在学习企业特性的同时,一定要抽出时间在 30 天内完成这一部分。**

准备起动

如果您可以参加 Linux Academy 的Docker Certified Associate preparation 课程,或者您有自己的许可证,我建议您在以下环境中练习:

  • 三个虚拟系统:
    • 一个蜂群主人
    • 两个工作节点

这将允许您设置要使用的基本集群。它还将允许您有足够的系统在一个集群中实践多个主节点,以及当一个主节点在集群管理中丢失时会发生什么(您将能够将集群中的节点提升/降级为管理器)。此外,您将能够在实践中移除和解决工作问题,以及这些问题如何影响服务中的复本。

Docker 考试:需要知道的关键话题

顶部列出的领域和能力在每个领域和能力下都有许多子项目,您需要为此做好准备。考试中可能会以多种形式出现的一些个别主题有:

  • 了解向上和向下扩展服务副本的不同方式
  • 了解如何检查管理器、工人、服务、容器和 Docker 配置的各种组件
  • 了解配置文件的位置以及配置存储驱动程序、日志驱动程序等的格式。
  • 能够初始化一个群集群并将工作节点加入其中
    • 知道如何从主服务器获取加入集群的令牌
  • 能够使用 Docker 对象,如:
    • 网络(添加或删除网络,了解可用的网络类型以及何时使用它们)
    • 存储驱动程序(更改您的默认存储配置以及更改位置)
    • 创建可由您的服务群使用的卷
  • 企业和安全功能:
    • 什么是码头工人 UCP 和 DTR?
    • 如何安全地访问远程 Docker 注册表
    • 管理 UCP 的用户帐户

您可能会看到许多潜在的问题,但绝大多数都集中在用例上(例如,您何时使用命令,该命令表示什么,您可以运行什么命令来排除给定场景的故障,等等。).这就是为什么对容器及其行为的一些真实体验是成功的关键之一。

后续步骤

就像你去卡内基音乐厅的路一样(练习,练习,练习),你会发现自己正在这条路上旅行。无论是使用 Linux Academy 中的 资料和附带的 Docker 虚拟实例,还是使用Docker 文档本身** 和您自己的环境,您最成功的途径就是实践本文中的关键主题。一旦你成功地通过了 Docker 考试并获得了证书,别忘了回来告诉我们,这样我们就可以一起庆祝了。祝你好运!**

Docker 复制 vs 添加:有什么区别?

原文:https://acloudguru.com/blog/engineering/docker-copy-vs-add-whats-the-difference

如果您使用 Docker 文件构建容器映像,您很可能会遇到 Docker 指令 ADD 和 COPY。添加和复制都提供了类似的功能,因为它们都允许您在构建时将文件夹和文件放入映像中。那么应该用哪一个呢?

在这篇文章中,我将讨论复制和添加之间的一些细微差别,并帮助您确定何时使用哪一种。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


什么是 Docker ADD 指令?

首先,我们来谈谈 ADD 指令。ADD 指令一直是 Docker 的一部分。ADD 使用两个参数:源和目标。

  • source 参数适用于所有类型的文件,并且与构建上下文相关。

  • 目标参数可以是 WORKDIR 的绝对路径或相对路径。

ADD 还有其他一些它可以表演的“魔术”。ADD 还支持从远程 URL 下载文件。除了远程文件支持,ADD 还可以自动提取各种类型的档案到镜像中。如果您提供的源文件是用 tar、gzip、bzip2 或 xz 压缩的档案文件,ADD 会自动将档案文件解压缩到所提供的目的地。应该注意的是,它通过内容来确定存档的类型,而不是简单地使用文件扩展名。

什么是 Docker 复制指令?

现在我们来看看复制说明。随着 Docker 版本 1.0 的发布,COPY 作为一个指令被添加进来。像添加一样,复制也可以让您将文件和文件夹放入映像中。

它也有两个参数:源和目的地。

然而,COPY 指令更加简单,并且没有 ADD 的一些额外特性。COPY 不能与 URL 一起工作,而且它还按原样复制归档文件,而不是试图提取它们。

为什么添加和复制做同样的事情?

为什么两条不同的指令做同样的事情?

很久以前,有人指出 ADD 指令并不总是像预期的那样工作。也许您有一个想要复制但不想提取的 tar 存档文件。ADD 会尝试提取它。此外,您可能有一个以无法识别的格式压缩的 tar 归档文件。您可以尝试使用 ADD 来提取它,但是因为它不被识别,所以 ADD 会将它复制为一个文件。

总的来说,大多数人认为 ADD 做得太多了。所以新的指令副本被添加到 Docker 中。ADD 是作为一个指令保存的,以免破坏向后兼容性——此外,一些开发人员喜欢 ADD 提供的附加特性。

什么时候应该使用 ADD,什么时候应该使用 COPY?

那么什么时候应该用 ADD,什么时候应该用 COPY 呢?根据 Docker 最佳实践指南,你通常应该使用副本——但你的里程数可能会有所不同。

您可能想使用添加的远程网址功能或解压缩的档案。无意的添加而不是复制指令可能意味着功能映像和“损坏的”映像之间的差异。例如,您需要在映像中有一个 tar 归档文件作为归档文件。如果你不小心使用了 ADD,你会得到存档的内容,而不是实际的图像。

关于 ADD 的远程 URL 特性,您最好使用 RUN 指令,并提供命令 curl 或 wget 来下载文件,然后在该命令之后使用 tar 或 unzip(如果是归档文件),或者您可能需要为您的映像运行的其他命令。这种方法产生较少的指令,并且较少的指令创建较小的图像。

有关添加和复制的更多信息,请务必查看官方的 Docker builder 参考资料

了解有关容器的更多信息

想了解更多关于容器的知识吗?查看我们新的 Red Hat 容器认证专家和 Kubernetes 考试(EX180) 课程。它旨在帮助您获得通过 EX180 考试所需的知识和技能,并为您提供使用 Red Hat OpenShift 创建、管理和部署容器化解决方案的实践经验。


关注 Twitter脸书订阅 YouTube 上的云专家,或者加入我们的 Discord 社区的讨论,跟上所有的科技技能。看看这个月的免费技术培训的轮值名单!

Docker 桌面不再对“大型”企业免费

原文:https://acloudguru.com/blog/engineering/docker-desktop-no-longer-free-for-some-businesses

你好,云大师们!我是 Nigel Poulton,这是关于 Kubernetes 最新动态的每月更新。在本帖中,我们将深入探讨令许多人困惑的新 Docker 订阅计划。此外,我将与您分享我对上个月 Kubernetes 前三名公告的选择。

想了解更多?请继续阅读!


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


Docker 桌面不再对大型企业免费

Docker 桌面被世界各地的组织大量使用,但是如果你是一个大企业,Docker 桌面就不再免费了。

我们一会儿会定义“大”。但我认为最重要的是,如果你是一个个人用户,如果你在教育或小型企业,那么没有什么会改变。对你来说还是免费的。

但是如果你是大企业呢?是的,事情正在发生变化。

基本上,如果你雇佣了超过 250 名员工,并且你的年收入超过 1000 万美元,Docker 认为你很大,你需要开始付费。老实说,我完全同意他们的观点。

我的意思是,Docker Desktop 是一款精致的产品,人们每天都从它身上获得价值,所以他们应该付费。如果每个人都继续免费使用它,最终,它将不复存在——我们都不想这样。事实上,我坚信一个健康的码头工人对我们所有人都有好处。

不管怎样,如果你真的落入那个大生意桶,你有三个选择:职业、团队或生意。

Docker Desktop Pro 帐户每个用户每月起价 5 美元,团队帐户起价 7 美元,商业帐户起价 21 美元。

Docker Business 是一个新的订阅类别,它的目标是希望对 Docker 开发环境有更多控制的组织。这样,您将获得一个集中的控制平台,能够控制开发人员使用哪些注册表、哪些映像和版本,更好地控制安全性,等等。

所以,是的,如果你很小或者在受教育,你可以在 Docker 个人计划下继续免费使用 Docker。但是如果你很大,做正确的事情,开始付钱。

1.亚马逊 EKS 任何地方

好的,所以我上个月的第一选择是宣布 EKS 在任何地方。

亚马逊将他们广受欢迎的弹性 Kubernetes 服务带到本地数据中心。我猜,如果你是一个现有的 EKS 用户,并且你有自己的数据中心,那么将你的 Kubernetes 管理平台整合到 EKS 可能是有意义的,因为这是你实际上将会得到的。我认为,顾名思义,它会像 EKS 一样,只是在你自己的数据中心。

所以相同的部署模型和工具。此外,还可以通过单一控制台查看基于云的本地 EKS 集群。

我想,即使你不是现有的 EKS 用户,但也许你正在评估发行版(可以这么说),事实上,你现在可以在本地和云中拥有 EKS 的体验和工具,这可能会让 EKS 对你更有吸引力。这显然是亚马逊想要的。

2.NGINX 入口控制器版本 1.0

对,本月综述的第二名:Kubernetes 的 NGINX 入口控制器 1.0 版本。

总的来说,Ingress 在 Kubernetes 的最新版本中做了一些大动作。嗯,这一次流行的 NGINX 入口控制器终于到了 1.0,或 GA。这是在几个领域迈出的一大步。

首先,它显示了项目的承诺,我们希望看到这一点。但这也是一个突破性的改变。

它只适用于 Kubernetes 1.19 和更高版本。它需要 networking.k8s.io API 子组中的 v1 API。所以不再有 v1beta1。

您必须使用最新版本的 Kubernetes,并且需要更新清单中的 API 版本。

除此之外还有很多,但是你可以点击这个链接获得迁移文档的另一个链接,如果你打算使用它,它们绝对值得一读。

观看:自动化 Kubernetes 安全 这个免费的点播网络研讨会中,学习如何用 Pod 安全策略来增强您的 K8s 安全。我们将向您展示它们是如何工作的,以及在一个真实的 Kubernetes 集群中实现它们的样子。


3.Snyk 筹集了 3 亿美元


最后,但并非最不重要的一点是,证券公司 Snyk 刚刚在一系列 F 轮融资中筹集了整整 3 亿美元,使其估值达到 85 亿美元。有了 b,这是 10 亿。

所以祝贺 Snyk 的团队。显然,市场很喜欢他们赋予开发者安全性的方式,并使之变得简单。我知道我之前已经说过很多次了,但是现在组织并没有在安全性上浪费时间,所以你也不应该浪费时间。像 Snyk 这样的工具和合作伙伴真的在推针。

跟上 K8s

本月 Kubernetes 本月到此为止。注意安全,我们下个月再见——同一时间,同一地点。

相关 K8s 资源

想要了解 Kubernetes 的所有信息?在推特上关注奈杰尔或者在这里关注他。在 YouTube 上订阅一位云计算专家,获取定期更新、分析和各种精彩内容。你也可以在脸书上喜欢 ACG,在推特上关注我们,或者在不和谐上加入对话!

Want to keep up with all things Kubernetes? Follow Nigel on Twitter or keep up with him here. Subscribe to A Cloud Guru on YouTube for regular updates, analysis, and assorted awesomeness. You can also like ACG on Facebook, follow us on Twitter, or join the conversation on Discord!

语言、内存、封装尺寸如何影响 AWS Lambda 的冷启动?

原文:https://acloudguru.com/blog/engineering/does-coding-language-memory-or-package-size-affect-cold-starts-of-aws-lambda

在最近的一篇博客中,我们研究了 AWS Lambda 本地支持的语言的运行时之间的性能差异。由于该实验对“热”功能的运行时间差异特别感兴趣,因此“冷启动”时间被有意省略。

当 AWS Lambda 函数在长时间不使用后被调用时,会发生冷启动,从而导致调用延迟增加。

由于 AWS Lambda 的冷启动时间是一个重要的性能考虑因素,让我们仔细看看一些实验,这些实验旨在隔离可能影响首次函数调用的变量。

测试方法

根据我在生产环境中运行 Lambda 函数的经验,冷启动通常发生在 AWS Lambda 函数空闲超过五分钟的时候。最近,我的一些功能直到空闲 30 分钟后才经历冷启动。即使您保持您的功能温暖,当主机虚拟机被回收时,大约每 4 小时就会发生一次冷启动—只需通过 IO 管道检查一下指标。

出于测试目的,我需要一种可靠的方法来持续确保 AWS Lambda 函数的冷启动。创建冷启动的唯一可靠方法是在调用之前部署一个新版本的函数。

为了实验,我创建了 45 种 AWS Lambda 函数。使用下面的无服务器框架设置,很容易用不同的内存大小创建相同功能的变体。

我递归地部署了所有 45 个函数,并使用下面的简单脚本以编程方式调用它们中的每一个。

部署和调用循环大约需要三分钟。为了收集大量有意义的数据点,我进行了超过 24 小时的实验。

我最初的假设

我假设 CPU 资源的数量与分配给 AWS Lambda 函数的内存数量成正比。

  1. C#和 Java 会有更长的冷启动时间
  2. 内存大小线性影响冷启动时间
  3. 代码大小线性影响冷启动时间

现在是时候看看实验是否支持我的假设了。

实验# 1——运行时间和内存的冷启动时间

为了评估内存对冷启动的影响,我创建了 20 个具有 5 个变量的函数——为每个语言运行时使用不同的内存大小。支持的语言有 C#、Java、Node.js 和 Python。

I created 5 variants of the same hello world function (using different memory sizes) for each language runtime

在进行了 24 小时多一点的实验后,我收集了以下数据——以下是结果:

观察:C#和 Java 的冷启动时间要高得多

最明显的趋势是,静态类型语言(C#和 Java)的冷启动时间高 100 多倍。这显然支持了我们的假设,尽管支持的程度比我原先预期的要大得多。

Feel free play around with the interactive plot.ly chart here

观察:Python 的冷启动时间低得离谱

我对 Python 运行时的冷启动体验如此之少感到惊喜。好吧,有一些异常数据点严重影响了一些 99%和标准偏差,但你不能否认在 128MB 函数的 95%处有 0.41 毫秒的冷启动时间。

观察:内存大小线性改善冷启动时间

分配给函数的内存越多,冷启动时间就越短,标准偏差就越小。这在 C#和 Java 运行时中最为明显,因为基线(128MB)的冷启动时间对两者都非常重要。

到目前为止,第一次实验的数据支持了最初的假设。

实验# 2——按代码大小和内存划分的冷启动时间

为了评估存储器和封装大小对冷启动的影响,我用不同的代码和存储器大小创建了 25 个函数。Node.js 是这个实验的常量语言。

以下是这次实验的结果:

观察:内存大小线性改善冷启动时间

与第一个实验一样,存储器大小以大致线性的方式改善了冷启动时间和标准偏差。

观察#2:代码大小改善了冷启动时间

有趣的是,部署包的大小不会增加冷启动时间。我会假设更大的包会相当于更多的时间来下载&解压。相反,更大的部署包似乎对减少整体冷启动时间有积极的影响。

为了看看行为是否一致,我希望其他人使用不同的语言运行时来重复这个实验。用于这些实验的源代码可以在这里找到,包括用于计算统计数据和生成图的脚本。

the burningmonk/Lambda-cold start-comparison
Lambda-cold start-comparison——比较使用多种语言运行时的 AWS Lambda 函数的冷启动时间—github.com

结论

以下是我从这些实验中学到的一些东西:

  • 闲置大约 5 分钟后,功能不再被回收,这使得冷启动远没有以前那么糟糕
  • 内存大小线性改善冷启动时间
  • C#和 Java 运行时的冷启动时间是 Python 的 100 倍左右,而且标准偏差也高得多
  • 您应该考虑使用比 Node.js/Python 函数更高的内存分配来运行 C#/Java Lambda 函数
  • 较大的部署包大小不会增加冷启动时间

更新 04/07/2017 :我贴了一个后续实验,想知道 Lambda 在回收闲置函数之前,会把它们保留多长时间。


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


网络安全领域概述:入侵网络安全

原文:https://acloudguru.com/blog/engineering/domains-of-cybersecurity-a-brief-overview-hacking-into-cybersecurity

欢迎回到黑客入侵网络安全系列。在我们之前的帖子中,我们更关注于帮助你获得网络安全职位。在这里,我们将讨论我们之前顺便提到的一个主要话题:网络安全领域。我们在大多数组织中看到的情况是,域被划分到安全保护伞下的不同部门。这在很大程度上是好的,但是在创建我们的纵深防御策略时会导致一些混乱。请记住,许多组织以不同的方式划分领域,我在下面合并了几个领域,因此您的收获可能会因组织整体而异。

纵深防御

让我们从定义纵深防御开始。为了深入理解防御,想象一座中世纪的城堡。想想他们采取的所有安全措施。首先,你有护城河,只有一座可伸缩的桥横跨在上面。如果你设法穿过了护城河,你就必须对付那堵墙。所以,你穿过了护城河,爬上了城墙?现在城堡在山顶,你穿着 100 磅重的盔甲和武器,走上坡路,有时要走几英里。一些城堡甚至有内墙,迫使你走一条特定的,通常很窄的路。但是当弓箭手向你射击的时候,你必须做所有的事情,他们从山上滚下巨石向你砸来,他们可能在地上倾倒了一些东西来使它变得光滑,这个清单还在继续。然后,当你最终攻破城堡时,你必须爬上一大堆楼梯,通常在你前进的过程中与(充分休息的)敌军战斗。由于这个原因,许多潜在的攻击者认为城堡根本不值得攻击。现代的深度防御策略围绕着同样的概念,即让攻击者通过多层防御,但有一个关键的区别:我们将它应用于我们的计算机系统。想想我们今天在网络上实施的所有控制措施:防火墙、身份验证系统、入侵检测和防御系统(基于网络和主机)、路由器和交换机安全、操作系统安全、数据加密——不胜枚举。不过,让我们在这里明确一点:没有系统是不可攻破的,所以我们采用深度防御策略的目标是在前进的道路上设置如此多的障碍,以至于现在不值得努力去攻击。但是有了所有这些控制,我们如何才能将所有需要的知识集中到一项工作中呢?通常,我们不会。我们将它们分为多个网络安全领域:

域 1:安全管理

我想讨论的第一个领域与人和流程的关系比与计算机的关系更大。安全管理是最容易被忽视的领域之一,我认为这是一种耻辱,因为如果没有它,我们在其他领域所做的几乎没有任何意义。安全管理由几项任务组成:

  • 风险评估,这是我们用来识别组织面临的风险并系统地识别应对这些风险的方法的过程,通常依赖于以下领域专家的意见
  • 监督其他安全职能的流程,以确保这些流程与业务/运营流程保持一致
  • 变更管理流程和程序
  • 用户安全意识培训

域 2: 身份和访问管理

这个域通常被称为 IAM ,它包含组织用来分配身份、处理身份验证和管理访问控制的所有系统、流程和程序。身份是为每个用户和系统分配他们自己的唯一名称的过程。身份验证是为用户建立证明其身份的方法的过程。身份和认证通常分别通过使用用户名和密码来进行。访问管理通常通过使用最小特权原则来实现,这意味着我们为每个人分配执行其工作职责所必需的最低限度的权利或特权。为了帮助简化这一过程,负责 IAM 的个人应该参与对各种资源的访问更改需求有影响的对话。

领域 3:安全工程

安全工程通常指两个关键的子领域:网络安全和计算机操作安全。在这个领域中,您的专业技术可以用来保护网络和主机免受攻击。在这个领域中,我们将以下内容归为一类:

  • 防火墙
  • 路由器/交换机安全性
  • 入侵检测和防御系统(IDS/IPS)
  • 基于主机的安全工具(如防病毒和端点数据丢失防护、DLP 工具)
  • 电子邮件过滤
  • 漏洞扫描

领域 4:业务连续性

这一网络安全领域的重点是在自然灾害等灾难性事件发生后恢复业务运营。这包括灾难恢复和业务连续性计划和程序。当然,我们还应该确保我们定期审查这些计划并对其进行测试。业务连续性领域围绕着理解组织的哪些功能对组织的生存至关重要。一旦我们确定了这些关键功能和相关系统,我们就应该制定程序,以确保它们在发生灾难性故障时能够尽快运行,并尽可能减少数据丢失。

域 5:合规性

正如您可能想象的那样,法规遵从性领域的中心是确保组织拥有适当的安全控制,以满足对适用于组织的法律和法规的遵从性。这个领域通常包括理解这些法规,以便我们可以实施适当的安全控制,然后定期审计这些控制。无论这些审计是在内部执行还是外包给第三方审计机构,通常都在法规中有所规定,但无论谁执行审计,都将是合规领域的一部分。现在,法规遵从性领域参与推动我们上面讨论的安全管理领域非常重要。

域 6:密码术

密码学领域似乎是很多安全人员都在努力解决的一个领域,但它可能是被分析得最多的领域之一。有很多关于加密的理论,但是在现实生活中的应用中,它通常就像点击正确的按钮一样简单。密码术用于保护它所应用的信息的机密性、完整性、真实性和不可否认性。

域 7:物理安全

物理安全是一个经常被忽视的领域,它指的是在我们的权限范围内应该应用于物理硬件的所有控制措施:

  • 我们的设施周围是否有围栏,迫使个人在适当的控制点进出?
  • 我们组织的每个入口都有保安吗?
  • 我们是否保护数据中心,只允许授权人员物理访问我们的服务器?
  • 我们有合适的暖通空调系统吗?

领域 8:软件开发安全

软件开发涉及一些关于内部开发的应用程序或系统的问题:

  • 为开发人员提供适当的安全编码培训
  • 对新代码执行代码分析(无论是新应用还是现有应用的更新)
  • 监督开发过程和程序
  • 了解更新的应用程序功能需求及其对应用程序安全性的影响

域 9:安全操作

安全运营领域是我们监控我们在安全工程领域中讨论的所有工具的地方。顾名思义,大多数 SOC(安全运营中心)职位都将在该领域工作,但是他们需要对大多数其他领域有很好的了解,以便能够很好地履行他们的工作职能。其中一些职责包括:

  • 威胁追踪
  • 事故响应
  • 威胁情报
  • 辩论术

如果你选择进入网络安全领域,我希望这有助于理清你可能工作的不同领域。请记住,在许多组织中,网络安全专业人员将跨多个领域工作,但大多数人将有一个领域比其他领域更受关注。如果我们能在这个旅程中以任何方式帮助你,请通过我们的社区 Slack (搜索#安全频道)联系,或者在下面留下评论!

DynamoDB 原子计数器

原文:https://acloudguru.com/blog/engineering/dynamodb-atomic-counters

AWS 中的轻松视频转码

原文:https://acloudguru.com/blog/engineering/easy-video-transcoding-in-aws

自然,我们尝试了各种工作,以获得对弹性代码转换器的良好感觉,但我们的最终目标是完全自动化。

弹性转码器是一种媒体服务,旨在提供一种高度可扩展、易于使用且经济高效的方式,将媒体文件从其源格式转换(或“转码”)为可在智能手机、平板电脑和 PC 等设备上播放的版本。想了解更多关于转码的知识吗?查看我们的实践实验室,了解如何使用 S3 和 Elastic Transcode 对视频进行转码,并获得更多知识和经验。

输入λ

在无服务器方法中,运行定制代码的一种方式是使用 AWS Lambda。目前,无法通过将文件上传到存储桶来自动运行弹性代码转换器作业。然而,从 S3 事件调用 Lambda 和从 Lambda 函数调用弹性代码转换器更容易。

The whole process: S3 invokes Lambda and Lambda invokes Elastic Transcoder.

This is the whole process: S3 invokes Lambda and Lambda invokes Elastic Transcoder

从 S3 存储桶中调用 Lambda 函数非常简单——在 S3 打开所需的存储桶,然后单击属性。从那里点击事件λ,并从下拉菜单中选择您想要执行的相关λ功能。最后,选择将触发流程的事件( ObjectCreated (All))

深入研究 lambda

之前我提到过,您可以使用弹性转码器控制台创建和执行作业。这很好,但我们也需要能够从我们的 Lambda 函数创建和运行弹性代码转换器作业。谢天谢地,使用 AWS JavaScript SDK 很容易做到这一点。以下是您将经历的主要步骤:

  1. 创建一个基本的 Lambda 函数,并向其中添加 AWS SDK。
  2. 从传递给处理程序函数的事件对象中提取上传文件的桶和文件名。
  3. 创建作业并指定所需的输出以及任何其他设置。
  4. 开始工作,享受在弹性转码器控制台中看到的进展。如果你注册了一个 SNS 主题(当你创建了弹性转码器管道时)并配置了你的电子邮件,你将会收到工作各个阶段的通知。

Monitor your jobs from the Elastic Transcoder console.

Monitor your jobs from the Elastic Transcoder console

下面给出了一个满足我们要求的 Lambda 函数示例。请注意,它创建了一个具有 3 个输出的作业— generic 720p、webm 和 hlsv3。

‘use strict’;
var AWS = require(‘aws-sdk’);
var s3 = new AWS.S3({
 apiVersion: ‘2012–09–25’
});
var eltr = new AWS.ElasticTranscoder({
 apiVersion: ‘2012–09–25’,
 region: ‘us-east-1’
});
exports.handler = function(event, context) {
 console.log(‘Executing Elastic Transcoder Orchestrator’);
 var bucket = event.Records[0].s3.bucket.name;
 var key = event.Records[0].s3.object.key;
 var pipelineId = ‘112321321343–2abcc1’;
 if (bucket !== ‘acloud-video-input’) {
  context.fail(‘Incorrect Video Input Bucket’);
  return;
 }
 var srcKey =  decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, " ")); //the object may have spaces  
 var newKey = key.split('.')[0];
 var params = {
  PipelineId: pipelineId,
  OutputKeyPrefix: newKey + ‘/’,
  Input: {
   Key: srcKey,
   FrameRate: ‘auto’,
   Resolution: ‘auto’,
   AspectRatio: ‘auto’,
   Interlaced: ‘auto’,
   Container: ‘auto’
  },
  Outputs: [{
   Key: ‘mp4-’ + newKey + ‘.mp4’,
   ThumbnailPattern: ‘thumbs-’ + newKey + ‘-{count}’,
   PresetId: ‘1351620000001–000010’, //Generic 720p
   Watermarks: [{
    InputKey: ‘watermarks/logo-horiz-large.png’,
    PresetWatermarkId: ‘BottomRight’
   }],
  },{
   Key: ‘webm-’ + newKey + ‘.webm’,
   ThumbnailPattern: ‘’,
   PresetId: ‘1351620000001–100240’, //Webm 720p
   Watermarks: [{
    InputKey: ‘watermarks/logo-horiz-large.png’,
    PresetWatermarkId: ‘BottomRight’
   }],
  },{
   Key: ‘hls-’ + newKey + ‘.ts’,
   ThumbnailPattern: ‘’,
   PresetId: ‘1351620000001–200010’, //HLS v3 2mb/s
   Watermarks: [{
    InputKey: ‘watermarks/logo-horiz-large.png’,
    PresetWatermarkId: ‘BottomRight’
   }],
  }]
 };
 console.log(‘Starting Job’);
 eltr.createJob(params, function(err, data){
  if (err){
   console.log(err);
  } else {
   console.log(data);
  }
  context.succeed(‘Job well done’);
 });
};

事先调整

在上面的 Lambda 函数中,你可能会注意到一个细节,那就是预设的使用(例如 13516200000001–000010)。预设描述如何编码给定的文件。可用预设的完整列表可在 AWS 文档中找到。

也可以创建自己的预设。你可以通过点击弹性转码器控制台中的预设链接来实现。您将在那里看到系统预置的完整列表,并且您可以通过点击创建新预置按钮来创建自己的预置。

预设允许对文件编码方式进行大量的精细控制。自然,您可以在适当的 AWS 文档中找到很多细节。

后续步骤

弹性代码转换器还能做更多我们还没有触及的事情。字幕和数字版权管理立即浮现在脑海中,两者对平台都非常重要。A Cloud Guru 团队对无服务器媒体编码和服务系统有很大的计划,所以请关注这个领域。

你用过弹性转码器吗,印象如何?我很想听听你的经历,以及你对平台的看法。


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


云专家

云专家的使命是通过提供世界领先的教育内容,让个人参与到提升云计算技能的旅程中来,这些教育内容旨在促进思维模式和职业发展。

“不要让世界上的任何人生活在错觉中。没有上师,谁也不能渡到彼岸。”——古鲁·那纳克

我们的课程由对云计算有着共同热情的行业专家讲授。我们努力为我们日益壮大的云专家社区服务,他们在我们的论坛、研讨会、见面会和会议上慷慨地贡献他们的见解。

跟上一个云宗师剧组 @acloudguru

EBS 快照生命周期

原文:https://acloudguru.com/blog/engineering/ebs-snapshot-lifecycle

亚马逊弹性块存储(EBS)快照是您备份和灾难恢复计划的重要补充,亚马逊数据生命周期管理器(DLM)可以简化这一过程。


加速你的职业生涯!

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯


Amazon EBS(弹性块存储)快照是您备份和灾难恢复计划的绝佳补充。它们通常被大大小小的组织用于此目的。任何好的灾难恢复计划的一部分是定期检查和测试它。您的审查应该包括清理旧的快照,因为随着时间的推移,随着环境的变化和增长,您可能会发现您已经积累了大量的快照。虽然快照被认为是增量的,并且每个快照的相关存储成本往往很低,但情况并非总是如此。例如,您可能需要拥有频繁的大容量快照,这些快照具有不同的保留时间。随着时间的推移,这可能会增加大量存储费用。此外,手动管理所有这些快照可能相当麻烦。这就是亚马逊数据生命周期管理器(DLM)能帮上忙的地方。

什么是 DLM?

Amazon Data Lifecycle Manager 为您管理 EBS 快照备份提供了一种简单的自动化方式。使用此服务,您将能够自动创建、保留和删除您的 EBS 快照。使用它的一些好处包括:

  • 通过实施定期备份计划来保护宝贵的数据。
  • 创建可以定期刷新的标准化 ami。
  • 根据审计员或内部合规要求保留备份。
  • 通过删除过时的备份来降低存储成本。
  • 创建将数据备份到独立帐户的灾难恢复备份策略

让我们来看一个简单的用例

您有一个法规遵从性指令,要求您创建 EBS 卷的新快照。快照需要每小时生成一次,并删除超过 2 天的快照。这可能是一个重复性的任务,但在 DLM 的帮助下,我们可以快速设置为自动化。

对于我们的示例,我们将假设该卷已经存在,并且我们正在设置一个新的生命周期策略。从我们的 EC2 控制面板中,我们希望转到导航窗格中的“Volumes”并选择我们的卷。

DLM 使用标记,因此我们要做的第一件事是为该卷(以及未来的潜在卷)设置一个特殊标记,生命周期策略将使用该标记来管理快照。

  1. 单击卷 ID,然后单击“标记”选项卡。在这里,我们要单击“管理标签”,然后添加标签。
  2. 我将使用键:enable-snapshot 值:yes,然后保存它。
  3. 现在,我们的卷已被标记,单击导航窗格中的 LifeCycle Manager 链接。
  4. 在那里,从下拉列表中选择 EBS 快照,然后单击下一步。
  5. 在这种情况下,我们的目标是一个卷,因此请确保选中该卷,然后我们希望将我们新添加的标记用于目标资源。输入标签,然后单击添加。
  6. 提供此策略的描述。
  7. 我们将 IAM 角色保留为默认角色,尽管您可以为此创建自定义角色。此外,在本例中,我们不会向快照添加任何标签,但是如果您需要或想要,您可以这样做。
  8. 接下来,验证策略是否设置为启用。然后单击下一步。

现在我们需要为策略创建时间表。我们知道它需要每小时运行一次,并且应该保留 2 天。在计划屏幕上,我们可以填写此内容。因为我们只创建这一个计划,所以我将保留默认名称。需要注意的一点是,开始时间采用 UTC,策略将在开始时间的一小时内运行。我们可以跳过其余的高级设置,继续查看策略。验证一切正常后,单击创建策略。

这将我们带回到生命周期管理器视图,我们可以看到我们的新策略。等待时间表的开始时间过去后,我们可以检查“Snapshots”选项卡,看到我们有了一个新的快照。根据我们设置的保留策略,这将在 2 天后删除。


就像这样,我们设置了自动化快照创建和删除策略来帮助我们实现合规性。您不必再担心数量不断增长的快照,因为它们现在由数据生命周期管理器管理。所有技术都有失败的可能,幸运的是,您可以使用 CloudWatch 来监控此类事件,并解决任何可能出现的问题。


想了解更多关于 AWS 的知识?

想了解更多关于 AWS 的知识?看看我最新的课程,在 AWS 上运行 Linux 服务器。由于 AWS 云的很大一部分都是基于 Linux 构建的,所以公司和个人在 AWS 中运行的许多虚拟机也使用 Linux 也就不足为奇了。查看本课程,我们将深入了解在 AWS 平台上运行 Linux 系统的世界。

想跟上 AWS 的一切? 在 YouTube 上订阅一位云大师 的每周亚马逊新闻和 AWS 公告。你也可以像 ACG 上的一样,关注我们上的 推特 ,或者加入 不和谐 的对话!

有效的多云安全解决方案的 4 个关键步骤

原文:https://acloudguru.com/blog/engineering/effective-multicloud-security

***更新于:***2023 年 3 月 2 日

在本文中,我们分享了四个关键步骤,您可以采取这些步骤来帮助提高云环境的可见性,并成功实施多云安全解决方案。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


采取措施实现多云安全

众所周知,企业正在脱离传统的内部数据中心,并迁移到多云框架以提高其灵活性、效率和安全性。但有一点你可能没有意识到,多云策略可能会带来一系列的复杂性。

多云环境使用多个公共云。这意味着应用程序和操作流程可以在所有环境中一致地运行。

所以这应该可以最小化风险,不是吗?首先,每个云提供商都有自己的安全协议和管理控制台。这可能会给组织的整体安全状况带来混乱和不一致。它还会导致阴影笼罩它。这是在 IT 部门不知情或未批准的情况下使用未经授权的云服务的地方。

此外,多云部署策略可以增加您组织的攻击面。这是因为每个云提供商都有自己的漏洞可以被利用。如果一个提供商被攻破,黑客可以通过凭证填充访问你的其他云账户。

如何保护多云环境?

根据您正在构建的多云解决方案的类型(不同的应用程序存储在不同的云中,或者数据在多个云中存储和处理),您的多云安全解决方案看起来会非常不同。

当数据包含在多个云提供商的单个应用程序中时,构建多云安全解决方案会更简单。需要保护的终端更少,数据传输不那么频繁,应用程序(以及这些应用程序所在的提供商)具有本机安全功能,您的数据永远不会传输到外部。您仍然必须确保每个应用程序和每个云的安全特性都是存在的、有效的、准确的。但是风险更小。

在数据频繁地在云提供商之间移动的情况下,保护多云解决方案是可能的,只是需要更多的努力。你必须:

  • 保护您的解决方案、开发这些解决方案的云环境以及从一个迁移到另一个的数据
  • 跨所有云管理不同的身份验证、授权、监控和存储服务
  • 确保您的所有云环境都受到类似的保护

构建多云安全解决方案的 4 个步骤

无论您构建什么样的多云解决方案,都可以采取四个关键步骤来保护您的多云设置。

1.将多云安全集成到开发运维中

多年来,DevOps 一直是软件开发和部署的首选方法。但是就像任何成为主流的东西一样,它也有相当多的批评者。最常见的批评之一是 DevOps 过于强调速度和敏捷性,而对安全性重视不够。

这是一个合理的担忧。毕竟,在当今这个网络威胁不断的世界,安全应该是任何组织的首要任务,无论是哪个行业。

但是没有必要在安全性和速度之间做出选择——你可以两者兼得。将安全性集成到您的 DevOps 流程中,可以让您创建一个快速、安全的开发管道,保护您的应用程序和数据。

这里有两个提示可以帮助你开始。

从一开始就实现 DevSecOps

如果您想在 DevOps 流程中构建安全性,您需要从头开始。这意味着将安全性融入开发生命周期的每个阶段,从规划和设计到测试和部署。这可能是一个挑战,但是如果您想要创建一个安全的开发过程,这是必不可少的。

使用自动化和流程编排

自动化是 DevOps 的关键支柱之一,对于安全性也至关重要。通过自动化安全任务,您可以保持开发和操作过程的速度,并确保您的安全得到保障。

2.购买主密钥(BYOK)

当涉及到保护您的多云设置时,主密钥被称为圣杯。通过购买主密钥,您实际上是为您的数据购买了一份保险。

主密钥也称为自带密钥(BYOK),是一种内部安全密钥,组织可以使用它来加密云中的数据。

大多数公司依赖公共云服务提供商提供的安全性,如 AWS、Azure 和 Google Cloud。主密钥为您的数据增加了一层额外的安全保护,有助于防止数据泄露。

您可以使用自己的主密钥,也可以导入一个主密钥,由云提供商放在他们的密钥管理系统(KMS)中。云 KMS 使用您的主密钥对数据加密密钥(dek)进行加密,然后将其保存到云中以获得额外的安全级别。您也可以将您的主密钥存储在云外 KMS 中。


Download the "Road to multicloud" white paper for more info on multicloud strategies

Curious about multicloud? Check out The Road to Multicloud ebook for more on the pitfalls and obstacles to avoid when developing a multicloud strategy.


3.将监控融合到一个地方

另一种保护多云设置的方法是在一个地方监控所有内容。

Stackify亚马逊 CloudWatch 等监控工具集成到一个平台中,可以让您清楚地了解系统的性能,并快速发现问题。从日志到警报和事件,系统健康状况的完整视图有助于防止停机并保持应用程序平稳运行,同时提供对潜在安全问题的洞察。

通过将监控工具融合到一个平台中,您可以更全面地了解系统性能,并快速识别出现的任何安全问题。您可以深入了解以下情况:

  • 实现并保持理想的应用性能
  • 提高网络和应用安全性
  • 由于快速解决问题和快速报告问题,优化了服务的可用性
  • 简化连续性计划的实施,实现主动风险补救
  • 不同设备上的可用性
  • 云活动增加时的简单扩展
  • 由于对架构的全面了解,减少了意外的云成本泄露

4.通过限制用户访问来提高云安全性

谈到数据安全,企业通常会忘记关注内部。但这很重要,因为问题可能首先出在那些有权访问你的基于云的系统和数据的人身上。

通过减少能够访问敏感数据的人数,您可以显著改善您的云安全状况。仔细考虑哪些用户应该有权访问系统的哪些部分,以便在发生违规时限制潜在的损害。

根据威瑞森 2021 年的一项研究,22%的网络攻击是内部人员发起的。因此,尽管看起来威胁总是来自外部,但有时最大的安全威胁离我们家更近。

这就是为什么区块链/加密存储数据保存在一个分散的网络中,然后存储在一个数字钱包中,该钱包通过加密的数字代码存储资产。这降低了加密购买者之间的信任度。同样的意识形态可以——也应该——适用于有权访问你的云数据的人。访问的人越少,敏感信息泄露的可能性就越小。

如果你想提高这方面的技能,可以看看我们的安全课程。如果你对多云导航感兴趣,并想亲自动手,请查看我们下面的视频挑战。


Nahla Davies 是一名软件开发人员和科技作家。在全职从事技术写作之前,她设法在一家拥有 5000 家公司的体验式品牌机构担任首席程序员,该机构的客户包括三星、时代华纳、网飞和索尼。

EKS Anywhere 现已正式上市,Elasticsearch 更名,面向流媒体的新 EC2 实例

原文:https://acloudguru.com/blog/engineering/eks-anywhere-now-ga-elasticsearch-renamed-new-ec2-instance-for-streaming

你好,云大师们!本周 AWS 怎么了?EKS 扩大了它的覆盖范围,live streamers 有了一些强大的新 EC2 实例,以前被称为 Elasticsearch 的服务有了一个新名字。另外,我们即将举办几场现场活动,您一定不想错过。

我是斯科特·普莱彻,这里有另一批 AWS 新闻,你可能会用到。我们开始吧!

EKS 任何地方是 GA

弹性 Kubernetes 服务现已全面普及

早在 re:Invent 2020 上宣布,Elastic Kubernetes Service Anywhere旨在让组织在自己的数据中心舒适安全地运行 EKS。

从架构上来说,容器化是对冲云提供商风险的一个很好的方法,因为所有主要的提供商都对容器有很好的支持。

EKS Anywhere 的价值主张是,它提供了一种一致的方式来管理本地和基于 AWS 的 EKS 集群。如果您生活在工具和实用程序的 k8s 生态系统中,您会知道一致性有时很少。

还没准备好和 EKS 一起深入任何地方吗?您可以试用 EKS 连接器的新公共预览版,它可以将任何 Kubernetes 集群连接到 EKS 控制台。

保护您的 AWS 环境这个免费的点播网络研讨会中,了解如何从零开始保护复杂的 AWS 环境,并学习如何正确审计和保护 AWS 帐户


Ransomware and Reducing Your Blast Radius on AWS

亚马逊弹性搜索现在是亚马逊开放搜索


“我现在将你命名为开放搜索!”

听着,听着。亚马逊弹性搜索服务现在将被称为亚马逊开放搜索服务

要理解这一更名的原因和方式,人们必须回到今年早些时候,Elasticsearch 和 Kibana 背后的公司 Elastic 宣布,他们将从 Apache 许可证版本 2 转向更具限制性的许可证——这一举动引起了开源社区的愤怒,并使 Elastic 和 AWS 相互指责对方是罪魁祸首。

作为回应,AWS 在 2021 年 4 月宣布了 OpenSearch,这是 Elasticsearch 和 Kibana 的开源分支,AWS 仍然保留在 Apache 版本 2 许可下。

此外,fork 允许 AWS 继续添加功能和增强,它们最近发布了 OpenSearch 1.0。他们决定也是时候改名了。

AWS 并没有完全退出 Elasticsearch,因为客户仍然可以运行 7.10 版本的产品。不过,除此之外,客户还要做出决定。

用于实时多流的新亚马逊 EC2 VT1 实例

过去几年,随着个人和企业试图找出如何在现场活动不被允许或不切实际的情况下继续下去,在线流媒体迎来了一个全新的世界。直播曾经是新鲜事物,现在已经成为一项大生意。曾经需要卫星上行链路和制作人员的工作现在可以用一台很好的笔记本电脑、OBS 和互联网连接来完成。

虽然直播的门槛可能很低,但观众——尤其是那些付费观看的观众——希望获得非常高的质量。

最近,AWS 推出了一个专门为直播构建的新 EC2 实例,名为 VT1 家族。它们的独特之处在于,它们包含 Xilinx 的专用转码芯片,在媒体流方面比基于 GPU 的实例更高效。与 GPU 实例相比,VT1 系列以高达 60%的低成本提供了更多的流能力。

AWS 甚至计划在 AWS 前哨站上提供这些 VT1 实例,允许广播公司在本地进行代码转换。

Kotlin 的 AWS SDK 获得 alpha 版本

作为对所有 Kotlin 开发人员的一个快速提醒:AWS 悄悄发布了一个针对 Kotlin 的 alpha 版本的 AWS SDK。它还不能投入生产,但可能值得一看。

即将在 ACG 举行的现场活动

说到现场活动,我们正在准备另一场 ACG 现场考试演练——这次包括 AWS 认证系统运行管理员助理考试。

Faye Ellis 和我将分发新考试的资料,并浏览一些样题。此外,我们将向您展示这些新的考试实验室如何工作以及如何准备。也就是 9 月 28 日星期二,东部时间上午 11 点,太平洋时间上午 8 点,英国夏令时下午 4 点,并将在 TwitchYouTube 上同步播出。

本周,你可以加入 Mattias Andersson、Lars Klint 和我……再次……在 ACG Discord 服务器上享受认证办公时间。是时候去拜访一下,打个招呼,问一些关于云认证的问题了。(或者给我们讲个好笑话——我们也喜欢。)发生在 9 月 22 日东部时间下午 6 点,太平洋时间下午 3 点。

跟上万物云。在 YouTube 上订阅云专家的每周亚马逊新闻和 AWS 服务公告。你也可以在脸书上喜欢 ACG,在 Twitter 上关注我们,或者在 Discord 上加入对话!

加速您在云计算领域的职业发展

学得更快。动作快点。从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。

Learn faster. Move faster. Get started with ACG and transform your career with courses and real hands-on labs in AWS, Microsoft Azure, Google Cloud, and beyond.

弹性豆茎,CloudWatch 更新;为初创公司构建 AWS 云专家

原文:https://acloudguru.com/blog/engineering/elastic-beanstalk-cloudwatch-application-insights-news-build-on-aws-announced

本周 AWS 有什么新消息?在这篇文章中,我们将涵盖过去七天你需要了解的关于 AWS 的一切,包括 CloudWatch Application Insights 获得一些新功能,Elastic Beanstalk 现在支持动态实例类型,以及宣布为初创公司构建 AWS。

想了解更多?请继续阅读!


开启更好的职业生涯

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


CloudWatch 应用洞察的新功能

简单是 CloudWatch 和这个附加功能的游戏名称!新的自动发现应用程序和资源在您的帐户有或没有资源组,使设置监控前所未有的简单。

设置完成后,将提供一个新的摘要控制面板,显示应用程序监控设置及其运行状况的概述。该仪表板在一个视图中显示了受监控资产、遥测技术、组件和发现的任何问题的摘要。

说到简单,我要讲下一个小故事了…

Elastic Beanstalk 现在支持动态实例类型

偷窥狂们欢呼吧!弹性豆茎现在支撑,请击鼓。。。动态实例类型选择!

E lastic Beanstalk ,部署和自动缩放 web 应用服务,现在将自动包含所有兼容的实例类型,供您运行您的应用程序。这允许您选择最佳的实例类型来优化应用程序的性能。

这是值得庆祝的。。。这就是我们今天庆祝的最后一个原因。

为初创公司引入“基于 AWS 的构建”

构建 AWS 将改变初创公司的游戏规则。这一新产品是基础设施模板和架构的集合,涵盖了由 AWS 专家构建的各种解决方案,以满足 AWS 最佳实践,并专门针对初创公司。

只需点击一下鼠标即可部署云信息模板,参考架构包含可复制的架构图。

有基本的和个性化的解决方案。一些基本的解决方案包括在亚马逊 Lightsail 上托管一个 WordPress 网站,以及使用无服务器选项构建一个数据处理 API。您可以通过使用案例或使用的服务来搜索解决方案选项。而且,如果这还不够棒的话,每一个模板都为生产流量做好了准备。您确实需要访问 AWS 激活控制台才能使用该功能,所以不要忘记申请它。

非常感谢您的观看!继续成为令人敬畏的云大师,我们下次再见!

跟上 AWS 的所有事情

订阅 YouTube 上的云专家的每周亚马逊新闻和 AWS 服务公告。你也可以在脸书上喜欢我们,在推特上关注我们,或者在不和谐上加入对话!

Ell on Infosec -掌握基础知识

原文:https://acloudguru.com/blog/engineering/ell-on-infosec-mastering-basics

埃尔·马尔克斯(Ell Marquez)自称是科学流氓、信息安全新手和正在康复的 Linux 管理员。作为 没关系是新的 活动的发起人,她希望鼓励其他人在享受他们进入技术之地的旅程的同时绕过门卫。

“我要像你一样在网络安全领域!”我曾经告诉我的朋友。当时,我不知道我将要开始我所经历过的最艰难的努力之一。不是因为这个行业本身,而是因为其中涉及的大量技术。

谢天谢地,我足够幸运,有一群黑客愿意帮我找到立足点。从我第一次参加 infosec 会议开始,这个社区就成了我见过的最热情的一群人,他们不仅回答我所有的问题,还花时间让我坐下来,向我详细介绍他们在谈论什么。他们的慷慨,他们提升他人并带他们一起的意愿,是最初激发我对网络安全兴趣的重要原因。

为了感谢我的部落和付出他们的努力,我决定开始这个博客系列,并邀请你们所有人和我一起踏上这个旅程。这条路可能会崎岖不平,我肯定会在路上犯错,但我会分享一切,伤痕和一切。

如果你从这次冒险中学到了什么,我希望是这样一个想法:对新事物没关系,承认自己不知道自己不知道的事情,并愿意寻求帮助。

但是你想做什么呢?

当我告诉我的朋友我想进入网络安全领域时,我并没有意识到这句话有多开放。这就像说我想从事医学或教育事业。他们的回答通常是某种形式的,“太好了,但是你想做什么?”

我很快意识到我知道的还不够多,甚至不知道如何回答这些问题。所以我联系了社区,询问人们他们做了什么以及他们是如何开始的。这最终成为我在 Jupiter Extras 上工作的一大部分。

这就是我第一次遇到詹姆斯·史密斯(T1)的方式,他自称是背街小巷的圣灵降临者、剧本破坏者和龙与地下城(T2)的狂热爱好者。根据他的描述,他绝对是我需要见的人!我们在一起的时候,他教导我“掌握基础知识”的重要性,因为这将为我决定走的任何道路提供坚实的基础。正如一名教官在特种部队服役期间告诉他的队员的那样,“我们看起来很特别,因为我们掌握了基础。”

五大支柱

掌握基础听起来很棒,但是哪些基础呢?对于一个刚刚起步的人来说,甚至弄清楚从哪里开始都可能是压倒性的。詹姆斯把它分成以下五个支柱。

第一个支柱是通用计算。这包括线程、进程、进程树和内存(RAM)等主题。

第二个支柱是计算机网络,包括 OSI 模型、TCP/IP、子网划分和 VLANs 等基础知识。这个专栏还包含我认为更高级的主题,比如数据包捕获和数据包分析。

第三支柱?脚本和编程。在这里,James 保留了编程语言的选择,我很高兴看到他将 BASH 包括在这个列表中。我能说什么呢?我知道 Python 一行程序可以完成我在 BASH 的 20 行代码中完成的工作,但是我仍然为我成功编写了脚本而自豪!

詹姆斯提出的第四个支柱是 Linux 和 MacOS。我承认我在这里有点退缩,认为这两个操作系统虽然都是基于 UNIX 的,但应该是独立的支柱。他的回应?清单上的许多小节也是如此。落在五根柱子上有点主观的选择,他告诉我,如果我愿意,欢迎我制作最适合我的柱子。但有了这个我可以松一口气了。最后,我有一个强大的基础支柱!

然后他来到了第五根也是最后一根柱子——窗户。大口喝。在我的会议演讲中,一个系统管理员的自白,我自豪地说,“我从来没有用过 Windows。”在看了微软关于目前有超过 9 亿 Windows 设备活跃的报告后,这个支柱帮助我意识到我所说的是,“我一直用一只手绑在背后处理这个领域。”

现在,你可能已经注意到,这些支柱没有一个与许多刚开始从事网络安全的人认为是该领域的一部分直接相关。我是说,黑客在哪里!?但是当我们停下来,真正看着柱子,我们就能明白为什么选择它们了。毕竟,我们要防御或攻击什么呢?或许是操作系统和网络?如何实施或抵御攻击?脚本肯定会发挥作用吗?

詹姆斯做了一项惊人的工作,不仅打破了这些支柱,而且还提供了大量的资源,可以帮助你铺平自己的道路。我强烈建议大家阅读一下詹姆斯的 github 上的五大支柱。然后,花几分钟来听听我们最近关于 Jupiter Extras 的对话,我们将深入探讨如何掌握基础知识。

从五根柱子到三根

Marcus J. Carey 是网络安全社区的活跃成员,也是黑客部落系列的作者,他也很友好地提出了他对掌握基础知识的想法。马库斯的观点略有不同,因为他喜欢简化事情。他教授的三大支柱是系统管理、网络互联和软件开发——“从长远来看,它们都是一起工作的。”

系统管理

马库斯说,系统管理至关重要,因为归根结底,这是数据所在的地方。

“大格局,不同操作系统的核心理念是一样的。Windows 当然不同于基于 UNIX/Linux 的系统,但是保护它们的核心原则是相同的。我告诉人们学习 Windows 世界,学习 Linux 的一种风格。”

他还鼓励人们学习脚本,或者至少理解这两个分支。在 Windows 方面,您应该了解命令行脚本,如批处理文件,以及 PowerShell 等高级概念。在 UNIX/Linux 上,学习脚本和 Python,因为这些是系统管理员最常用的。

“攻击者‘靠土地为生’,”马库斯解释道。"他们使用内置工具和程序来达到他们邪恶的目的。"

自己掌握这些工具将有助于您了解它们的漏洞,并为防御攻击做好更充分的准备。

网络互联

“安全专业人员应该非常了解系统如何通过局域网和互联网连接,”Marcus 继续说道。“大多数有针对性的攻击将通过互联网进行,这意味着如果你不了解互联网,你就不会成为最多产的攻击者或防御者。”

我认为这类似于我早先对 Windows 的不情愿。你必须对攻击发生的地方非常熟悉,否则你根本做不了什么。

软件开发

马库斯的第三个支柱是软件开发。“理解这一点很重要,因为软件管理、存储和传输我们试图保护的所有数据。所以你必须知道系统管理来保护软件。您还必须了解网络互联,以确保数据安全传输。”

此外,当安全专业人员和攻击者编写脚本和工具时,他们实际上是在开发软件。在软件开发方面的能力也使我们能够帮助测试和保护软件。

最终,Marcus 认为这三大支柱“以某种三联体或金字塔的形式”协同工作,是安全专业人员应该努力掌握的。

去冒险

那么,我用新发现的知识做了什么呢?很简单——我决定把我想成为我的黑客家族的梦想放在一边,本着真正的黑客精神,一步一步地走自己的路。自豪地宣布我从未使用过 Windows 的日子已经一去不复返了。事实上,我是在一台 Windows 机器上写这篇文章的,甚至在南加州 Linux 博览会(SCaLE)上也在同一台设备上做了演示。我惊喜地发现没有人发出嘘声或嘲笑。事实上,每个人都很支持我的旅程。

目前,我正在为我的安全+认证而学习,这样我就能学会浏览安全社区中使用的字母缩略词。我还加入了 Marcus 领导的免费网络+学习小组——他也向你们所有人发出了邀请。虽然网络+证书不是我现在的首要任务,但知识绝对是我希望拥有的基石。

如果你正在寻找开始旅程的最佳方式,但你不确定这是你开始旅程的最佳地点,没关系!每个人都在走自己的路,经历这一切是加入网络安全社区(或者我称之为我的黑客家庭)最愉快的部分。


开始一段属于自己的旅程

无论你身在何处,无论你的技能水平如何,云计算专家都能帮助你建立现代技术技能,推进你的职业发展。


以持续的弹性拥抱失败

原文:https://acloudguru.com/blog/engineering/embracing-failure-with-continuous-resilience

上周,我有幸参加了 AWS 伦敦峰会。议程上最受欢迎的话题之一是与韦利斯瓦·博雅的持续弹性会谈。以下是我对“持续弹性”的了解,以及它如何应用于 AWS 云中的构建。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


为什么弹性很重要?

在我们生活的快节奏世界中,成功的企业依靠弹性软件的闪电般快速交付来实现其竞争优势。适者生存取决于你能多快适应并将你的产品和服务推向市场。

但是对软件配置的频繁更改也带来了潜在的风险,可能会破坏应用程序,降低服务质量,并最终失去客户。传统上,IT 和工程团队花费了大量的时间和资源来尝试防止此类中断。当我作为一名 SysOps 管理员工作时,后来作为一名解决方案架构师,这当然是我努力争取的事情。没有人愿意因为一个坏了的应用程序而在半夜被吵醒。或者因管理不善的服务中断而遭受声誉损害。

在构建弹性系统时,我们如何将失败转化为优势?

与其试图构建永远不会失败的系统,为什么不专注于设计和构建在不可避免的事情发生时能够快速、自动恢复的系统呢?如果我们预期系统会失败,我们可以创建精通处理失败场景的团队。这反过来又让我们能够自由地进行频繁的软件变更,因为我们知道我们的应用程序会快速恢复,我们的团队知道如何处理危机。

引入持续弹性

不幸的是,在它里面东西会坏掉。硬件最终肯定会坏掉。人们也会打碎东西——我们也是人!任何从事过 SysOps 或 DevOps 工作的人都有故事可讲。从简单地在错误的服务器上运行命令,到我最喜欢的关于一个系统管理员删除了 SSH 软件的故事…从服务器上我们只能使用 SSH 连接!我们都会犯错误,但是我们如何从中学习和成长比纠结于错误要有趣得多。

通过应用 DevOps 思想来构建我们系统的弹性,我们可以随着我们系统的增长和变化保持并不断提高弹性。

在他们的书实践中的弹性工程中,Erik Hollnagel 等人确定了在致力于持续弹性时需要开发的四种基本能力:

  1. 预期
  2. 监视
  3. 反应
  4. 学问

构建 AWS:实现持续弹性的四大支柱

我们可以在自己的环境中做些什么来预测潜在的故障,有效地监控我们的系统,对事件做出适当的响应,并从我们的故障中吸取教训?让我们在 AWS 的上下文中检查这四种功能。

1.预期

这里有一些很好的实践,可以让你预见到失败。

  1. 引入代码评审来提高你的代码质量。你可以通过亚马逊代码专家来自动化代码审查。该工具使用机器学习来审查和推荐改进,以优化代码质量。
  2. 使用面向失败的方法设计应用程序。想象可能会出错的地方,并设计能够适应您所确定的场景的系统。对于具有许多相互通信的组件的分布式系统,使用为您的应用程序设置的适当超时限制,然后配置带有回退和抖动的重试,以便随机化重试之间的延迟。
  3. 使用安全的部署实践。不可变部署包括将变更部署到与生产完全分离的全新环境中。这涉及到生产系统的零停机,当新环境准备好进行实时通信时,使用 Route 53 将请求路由到新环境。如果需要回滚,只需更新 Route53,使其指向原始环境。AWS CodeDeploy 是一个很棒的工具,可以帮助您以这种方式自动化部署。Canary 部署是安全地推出您的更改的另一种方式。例如,您可以使用 CodeDeploy 进行部署,然后使用 Route53 或应用负载平衡器将一小部分(比如说 5%的客户流量)路由到您的新应用,并在将所有流量切换到新环境之前为少量用户进行生产测试。
  4. 通过减小事件的爆炸半径来限制故障的影响。所谓的基于单元的架构是基于服务的多个实例,这些实例彼此独立运行,因此一个单元的故障不会导致另一个单元的故障。考虑基于微服务的架构、依赖于 Lambda 函数的多次调用的无服务器系统,甚至是由负载平衡、计算和数据库服务组成的烟囱式架构,它们作为一个单元独立于其他单元运行,如下图所示。

Use a cell-based architecture to limit the blast radius of failures.

2.监视

这里有一些很好的监控实践,可以帮助您识别故障。

  1. 使用日志、指标和跟踪观察您的应用。这将帮助您在故障发生时识别故障,并执行根本原因分析。
  2. **使用 AWS 监控工具。**例如, Amazon CloudWatch 使您能够监控应用程序日志中的错误和警告并设置警报,并且会就 CPU 利用率等时间点数字指标向您发出警报。 AWS X-Ray 非常适合对分布式应用程序进行故障排除,实际上可以在请求通过系统的不同组件时对其进行跟踪。x 射线也是了解系统中存在延迟和瓶颈的一个很好的工具。
  3. **配置警报。**在执行 canary 部署时,配置您将在生产中使用的相同警报和指标,以便在您的新 canary 环境中出现任何部署失败时发出警报。

*Resilience Engineering in Practice by Erik Hollnagel, Jean Paries, David D. Woods, John Wreathall *

3.反应

自适应能力实验室(Adaptive Capacity Labs)的联合创始人 John Allspaw(事故分析专家)表示,“能够从故障中快速恢复比减少故障次数更重要。”

这里有一些应对失败的好方法。

  1. 建立自动化机制让您的系统快速恢复。
  2. 设计事件驱动的架构,自动响应您环境中的事件。例如,您可以使用 AWS Config 来监控 S3 存储桶的权限。然后,您可以配置一个 Amazon EventBridge 规则,如果 bucket 上的访问权限发生更改,该规则将触发,然后调用单独的 Lambda 函数来更正权限并发送 SNS 通知。

4.学问

这里有一些从失败中学习的好方法。

  1. **重点理解问题。**在可能的情况下,实施变革,利用自动化推动持续改进。这将有助于防止同样的事情再次发生。
  2. **执行错误纠正(COE)。**这类似于事后分析,团队检查发生了什么、影响、促成因素、经验教训和纠正措施。
  3. **实施混沌工程。**这包括将压力和失败注入到应用程序中,以暴露盲点,观察系统行为,并作为一个迭代过程进行改进。像 AWS 故障注入模拟器这样的工具使得以可控的方式破坏你的系统变得非常容易。它使用预定义的模板,例如,在 EC2 实例上运行 CPU 压力,甚至关闭该实例以查看您的系统如何响应。如果你想尝试一个动手项目,我有一个关于混沌工程的视频。

拥抱失败

拥抱失败是运行复杂 IT 系统不可避免的一个方面。转向持续的弹性听起来是一个自然的选择。通过预测潜在的故障,对我们的系统实施有效的监控,对事件做出适当的响应,并从我们的故障中吸取教训,我们都可以希望设计出在不可避免的情况发生时能够快速、自动恢复的系统。

如果您想了解更多关于这里提到的任何 AWS 工具的信息,请查看以下课程。

Embracing failure is an inevitable aspect of running complex IT systems. And moving toward continuous resilience sounds like a natural choice. By anticipating potential failures, implementing effective monitoring of our systems, responding appropriately to events, and learning from our failures, we can all hope to design systems that are capable of fast, automated recovery when the inevitable happens.

If you’d like to learn more about any of the AWS tools mentioned here, check out the following courses.

EMR 无服务器,NoSQL 工作台更新和新 EC2 实例

原文:https://acloudguru.com/blog/engineering/emr-serverless-nosql-workbench-new-ec2-instances

AWS 本周推出了一些令人敬畏的升级和公告,包括能够在无需管理服务器的情况下构建大数据应用,NoSQL 工作台的更新改善了 DynamoDB 开发人员的体验,以及新的 EC2 实例类型以获得更好的性价比。让我们开始吧。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


EMR 无服务器让您无需管理服务器即可构建大数据应用程序

本周 AWS 宣布 Elastic Map Reduce Serverless 现已全面上市。借助这一新的 EMR 部署模式,您将能够使用 Hive 或 Apache Spark 等开源框架运行大数据分析应用,而无需配置、管理或扩展集群或服务器。

历史上,EMR 集群可以在 EC2 或 EKS 上启动。现在 AWS 可以处理所有的自动缩放逻辑,而不需要复杂的定制。如果您发现您必须过度配置您的 EMR 集群以满足需求高峰,您可能会发现通过将您的部署模型切换到 EMR 无服务器可以节省一些成本。

NoSQL 工作台更新改善了 DynamoDB 开发人员的体验

开发人员长期以来一直抱怨 AWS 缺乏围绕 DynamoDB 提供的工具。本周早些时候,AWS 朝着正确的方向迈出了一步,扩展了他们 NoSQL 工作台的功能。NoSQL 工作台是一个用于现代数据库开发的客户端 GUI 应用程序,可用于 Windows、macOS 和 Linux。

使用 NoSQL 工作台,除了查询 DynamoDB 表之外,用户现在还可以创建、更新或删除表。看起来 AWS 可能会投资 NoSQL 工作台作为其首要的 DynamoDB 客户端开发工具。如果您正在积极使用 DynamoDB 进行开发,这当然值得关注。

新的 EC2 实例类型为您提供了更好的性价比

AWS 刚刚发布了新一代 M 级和 C 级 EC2 实例。M6id 和 C6id 实例类型现在可用于内存和计算密集型 EC2 应用程序。这些实例类型由英特尔 Ice Lake 可扩展处理器提供支持,该处理器配备了高达 7.6 TB 的 SSD 块级存储。这两种实例类型都是密集型日志处理的理想选择。

新的 M6id 和 C6id 实例类型还提供了比上一代同类产品高 15%的性价比,因此,如果您的 EC2 账单需要调整,它们绝对值得您考虑!


自动化 AWS 成本优化
经济高效地使用 AWS 可能是一项挑战。在这个免费点播的网络研讨会中,您将了解 AWS 成本优化工具和策略的概况,如数据存储优化


想跟上 AWS 的一切? 在 YouTube 上订阅一位云大师 的每周亚马逊新闻和 AWS 公告。你也可以像 ACG 上的一样,关注我们上的 推特 ,或者加入 不和谐 的对话!

在 Apache2 上启用 Mod 重写

原文:https://acloudguru.com/blog/engineering/enabling-mod-rewrite-on-apache2

ETL 与 ELT 流程图:何时使用两者

原文:https://acloudguru.com/blog/engineering/etl-vs-elt-flowchart-when-to-use-each

在这篇文章中,我们将讨论 ETL 和 ELT 之间的区别,以及什么时候你可以选择 ETL 或 ELT。我们还将包括一个流程图,帮助您完成 ETL 与 ELT 的决策过程。

ETL 和 ELT 的区别

ETL 和 ELT 有什么区别?简而言之,这完全取决于你何时转型。更长的答案?好吧,继续读下去!


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。

ETL 过程


ETL(或提取、转换、加载)是将数据收集到中央数据仓库进行分析的过程。

提取:传统的 ETL 过程首先提取数据。在这个步骤中,应该检查数据的有效性,任何无效的数据都可以被返回或纠正。

  • 转换:接下来执行任何必要的转换。转换是业务和技术需求所要求的一系列规则或功能。它们可以是任何东西,从确保数据的正确格式到将数据与其他数据源相结合。

  • 加载:最后,数据将被加载到最终目标系统中。这可以是任何东西,从简单的平面文件到基于云的数据仓库。

  • 英语教学过程

这就是 ETL 过程,但是 ELT 过程呢?好吧,记住:这都是关于你什么时候转型。

根据所需的转换和您选择的类型端点,您可能希望在加载数据之后转换数据*。这被称为 ELT 过程(或提取、加载、转换)。当加载到提供足够处理能力来执行任何所需转换的最终目标时,这很有用。*

ETL 与 ELT 流程图

这个方便的流程图可以帮助你决定哪个过程适合你。

何时选择 ETL 还是 ELT

如果您的端点目标是基于云的数据仓库,比如 Amazon Redshift 或其他关系数据库,那么在加载之后执行转换是轻而易举的事情。加载后,可以使用 SQL 查询语言转换数据。复杂的转换可以根据需要轻松运行和更改。

如果您的端点是像数据湖一样的平面存储,那么任何转换都应该在加载之前运行,因为这种存储几乎不能执行转换。为了使用更具成本效益的存储,您需要在加载之前执行转换。

您希望运行的转换的性质也将在您选择的过程中发挥作用。

无论是什么类型,在加载到端点之前都应该执行非常简单的转换。这些转换中的许多也可能属于流程中的数据清理或数据验证步骤。在加载前完成这些操作可确保加载一致的数据集。

在 ETL 和 ELT 之间进行选择时,关键在于何时以及如何进行转换。如果您的转换很简单,并且/或者您的端点不支持复杂的转换,那么您应该明确地选择一个 ETL 过程,并在加载之前执行转换。但是,如果您的转换很复杂,并且经常发生变化,并且您的端点支持处理能力,那么 ELT 流程可以让您在加载数据后灵活地运行任何转换。

了解有关 ETL 和 ELT 的更多信息

想了解更多关于 ETL 和 ELT 的知识吗?查看 ACG 的 ETL 和 ELT 基础课程。

本课程将讨论 ETL 过程中每一步所需的步骤,并着眼于一些现实场景的不同解决方案。我们将探索从多种来源和格式中提取数据,对数据执行转换,最后将数据加载到最终位置。

本课程假设您对关系数据库以及标准 Unix 命令行工具(如 sed、grep 和 awk)有一定的经验。

准备开始了吗?现在就开始免费试用,继续保持出色,云大师们!

成年人的 NoSQL:DynamoDB 单表建模这个免费的点播网络研讨会中,里克·霍利汉,AWS 的高级实践经理和单表 DynamoDB 设计的发明者,展示了他在 dynamo db 中建模复杂数据访问模式的技巧。


NoSQL for Grownups: DynamoDB Single-Table Modeling In this free on-demand webinar, Rick Houlihan, Sr. Practice Manager at AWS and inventor of single-table DynamoDB design, shows his tricks for modeling complex data access patterns in DynamoDB.

亚马逊 SQS 和 AWS Lambda 的事件驱动架构

原文:https://acloudguru.com/blog/engineering/event-driven-architecture-with-sqs-and-aws-lambda

事件驱动架构的核心是队列——现在亚马逊 SQS 可以触发 AWS Lambda 函数,这变得更容易了。

您可能知道我非常喜欢事件驱动模式。当系统发生变化时,动作发生,而不是等待和轮询变化。

我们已经谈论这个架构模式很多年了——但是直到最近,它更多的是一个理论上的想法,而不是一个简单实现的模式。

然而,AWS Lambda 为每个人带来了事件驱动计算,并将事件驱动范式提升到了一个全新的水平。像网飞( Bless )和 Capital One ( 云托管)这样的公司现在正在使用事件驱动的架构来执行实时安全性、合规性和策略管理。

Amazon SQS and Lambda create event-driven architecture.

Event-driven patterns

事件驱动架构的核心通常是队列。在 AWS 上,这个中心构件由亚马逊简单队列服务(SQS) 负责。为了从 SQS 队列中读取信息,您的 lambda 函数必须轮询它——直到现在!

在喝咖啡的时候,我注意到在测试 lambda 函数的触发器列表中有一些有趣的东西。我就像——什么??我做梦吗?

让我们试试这个!

  • 首先,创建一个 SQS 队列。我把我的测试队列叫做***TestMySQSLambda***,这是我在两杯早餐咖啡之前能想到的最原始的名字。

  • 我还使用了默认的***Stand*ard Queue** ——它不能保证消息的顺序。

  • 点击***Quick-Create Queue***  —是的,我们想要快点!

  • 然后为您的 lambda 函数创建一个 IAM 角色,以便能够被 SQS 触发。这是一个测试,所以让我们大胆地将下面的策略添加到您的基本 lambda 执行角色中——并将其保存为***SQSLambda***角色。

  • 然后登录 AWS Lambda 控制台,让我们从头开始创建一个函数。还是需要一个非常原创的名字——***MySQSTriggerTest***

  • 点击***create***然后编辑 Lambda 函数——我使用了以下超级高级的 python 代码。

  • 现在选择之前刚刚创建的**Execution role**

  • 然后从触发器的长列表中选择已创建的 SQS 触发器—它是列表中的最后一个。

  • 最后,选择先前创建的***TestMySQSLambda*** SQS 队列。

  • 点击***Add***,然后点击***Save***

  • 如果一切都做得正确,您应该在 AWS 控制台中看到类似的内容——用绿色显示**Saved**

考验的时候到了!

  • 从如下所示的菜单中选择***Configure test event***

  • 然后搜索***SQS***,您应该会看到如下测试模板。

  • 点击***Create***,然后点击***Test***

全绿——我们很好!现在让我们通过将数据直接放入 SQS 队列来测试整个管道。

  • 进入 SQS 控制台,选择之前创建的队列,点击***Queue Actions*** ,然后在 下拉列表中选择 ***Send a Message*** ************

  • 在这里输入你对世界的希望。今天是你做一个好人的机会!

现在去查看 Cloudwatch 日志控制台并搜索***aws/lambda/MySQSTriggerTest***——你应该能看到 SQS 到λ触发器

Developers can build event-driven architecture with Amazon SQS and AWS Lambda.

尼利斯。这是一个期待已久的功能,现在允许开发人员构建真正的事件驱动架构,而无需轮询 SQS 队列获取数据!迫不及待地想看看你要用它来建造什么🙂


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


日常正则表达式

原文:https://acloudguru.com/blog/engineering/everyday-regular-expressions

业务逻辑的演变,从单片到微服务,再到功能

原文:https://acloudguru.com/blog/engineering/evolution-of-business-logic-from-monoliths-through-microservices-to-functions

运行应用软件的全部目的是交付某种商业价值。业务价值是通过创建业务逻辑并对其进行操作来交付的,因此它可以向一些用户提供服务。

创建业务逻辑和使用该逻辑向用户提供服务之间的时间是实现价值的时间。提供这种价值的成本是创造成本加上交付成本。

从微服务到事件驱动功能的业务逻辑

过去,成本很高,效率问题占主导地位,高价值实现时间被视为常态。今天,当组织测量和优化他们的活动时,在竞争压力、技术进步和成本降低的推动下,价值实现时间正在成为一个主导指标。

换句话说,要增加投资回报,你需要找到增加回报的方法,更早地开始回报价值,或者减少投资。当成本占主导地位时,这就是重点所在,但随着成本降低和软件影响增加,重点转向更早获得回报。

单片应用

随着技术在过去十年的进步,我们已经看到了从单片应用到微服务的演变,并且现在看到了由 AWS Lambda 引领的无服务器事件驱动功能的兴起。什么因素推动了这种演变?低延迟消息传递实现了从单片到微服务的转变,低延迟供应实现了向λ的转变。

首先,十年前,在当时的限制下,单一应用程序是交付业务逻辑的最佳方式。这些限制发生了变化,大约五年前,最佳选择转向了微服务。新的应用程序开始建立在微服务架构上,在过去的几年中,工具和开发实践发生了变化,以支持微服务的发展。

今天,事件驱动的功能正在发生另一种转变——因为潜在的约束已经改变,成本已经降低,价值实现时间的根本改进是可能的。

在接下来的内容中,我们将详细探讨变化的不同维度:交付技术、硬件能力和组织实践,并了解它们是如何结合起来推动这一演变的。

过程优化的早期

在这段旅程的开始,运输成本占主导地位。采购、配置和部署硬件需要很长时间,而软件安装本身就是手工制作的项目。

为了优化交付,最佳实践是在每个版本中将这种高成本分摊到大量的业务逻辑中,并且相对不频繁地发布,对于许多组织来说,价值实现时间以月来衡量。考虑到基础架构变更的交付周期较长,有必要提前预配置额外的容量,这导致平均利用率非常低。

降低交付成本的第一步集中在流程自动化上。许多组织开发定制脚本来部署新硬件,以及安装和更新应用程序。

DevOps 运动

最终,像木偶和主厨这样的通用框架变得流行起来,“基础设施即代码”加速了更新的交付。当运营团队采用敏捷软件开发实践并与开发人员密切合作以将价值实现时间从几个月缩短到几天时,DevOps 运动就开始了。

脚本可以改变已经存在的内容,但快速增长的企业或工作负载不可预测的企业很难快速调配新容量。引入自助式 API 调用来使用 Amazon EC2 自动供应云容量解决了这个问题。

当开发人员能够使用 web 服务直接自动化许多操作任务时,第二波开发运维浪潮出现了。运营团队基于云服务构建并运行高度自动化的 API 驱动平台,为开发团队提供自助部署和自动扩展能力。

及时部署容量并按小时支付实际所需费用的能力大大提高了平均利用率,并自动处理意外的工作负载高峰。

容器的时代

当 docker 让每个人都能轻松使用容器时,又一波优化浪潮到来了。Docker 容器提供了一种方便的捆绑包格式,它包括一组固定的依赖项,一个比进程提供更多隔离但比虚拟机实例少的运行时,以秒为单位的启动时间,以及大量的内存节省。

通过将许多容器打包到一个实例中,并将运行时间四舍五入到分钟或秒而不是小时,甚至可以实现更高的利用率。基于容器的连续交付工具也加快了开发人员的工作,缩短了价值实现的时间。

当有合理可预测的工作量进来时,容器可以以高利用率水平运行,但是许多工作负载会在很长一段时间内达到峰值或降至零。例如,工作场所中使用的应用程序可能仅在一周 168 个小时中的 40 个小时是活动的。

为了保持高可用性,通常将应用程序实例分布在三个可用性区域,甚至每个区域需要多个实例。因此,一个服务的最小足迹是六个实例。如果我们想缩小到零,我们需要一种方法在事件发生时启动应用程序的一部分,并在事件结束时关闭它。

这是 AWS Lambda 功能的一个关键部分,它通过只对正在使用的容量收费,以 0.1 秒为增量,将峰值和低使用率工作负载转化为有效的 100%利用率,并根据需要从零扩展到非常高的容量。不需要考虑或供应服务器,这就是为什么这通常被称为无服务器模式。

交付技术的进步为价值实现时间的改进提供了垫脚石,但在过去十年中,还有其他潜在的变化导致了最佳实践的一系列转变。

CPU 和网络技术的进步

一组业务逻辑的最佳大小取决于 CPU、网络、内存和磁盘资源的相对成本(美元和访问时间),以及服务的延迟目标。

对于人类终端用户等待一些业务逻辑提供服务的常见情况,总的服务时间需求没有太大变化。在过去十年左右的时间里,人们的认知和期望并没有像基础技术那样发生很大的变化。

在过去十年中,CPU 速度增长相当缓慢,因为时钟速率在几 GHz 时遇到了瓶颈,但是片上缓存要大得多,内核数量反而增加了。内存速度和大小也取得了相对缓慢的进展。

网络速度大大加快,常见部署从 1gb 发展到 10g,现在是 25GBit,软件协议也更加高效。当常见的做法是通过 1gb 网络发送 XML 有效负载时,通信开销会限制业务逻辑,使其位于大型整体服务中,直接连接到数据库。

十年后,编码比 25Gbit 网络至少高效一个数量级——这意味着通信成本降低了两个数量级以上。

换句话说,在十年前传递和处理一条消息所需的时间内,在服务之间发送 100 到 1000 条消息是可能的。这是远离单一应用程序的一个关键促成因素。

存储和数据库技术的进步

在过去十年中,存储和数据库也经历了一场革命。整体式应用程序根据复杂的关系数据库(RDBMS)模式将其业务逻辑映射到事务,该模式将所有表链接在一起,并允许协调的原子更新。

十年前,最佳实践是实现少量大型集中式关系数据库,通过存储区域网络连接到使用磁盘的昂贵磁盘阵列,前面是大型缓存。

如今,缓存磁盘已经被固态磁盘所取代。区别在于,随着缓存命中率的变化,读取从缓慢、昂贵且不可预测转变为持续快速且几乎无限制。由于损耗均衡算法和其他影响,写入和更新从高速缓存磁盘的快速变为固态磁盘的不可预测。

新的“NoSQL”数据库架构变得流行有几个原因——但我们在这里关注的区别是,它们具有简单的模式模型,并利用了固态存储的特性。简单模式强制将在同一个关系数据库中链接在一起的数据表分离到多个独立的 NoSQL 数据库中,推动了业务逻辑的分散化。

Amazon DynamoDB 数据存储服务从一开始就被设计为只在固态磁盘上运行,为请求提供了极其一致的低延迟。Apache Cassandra 的存储模型会生成大量随机读取,并在没有更新的情况下进行不频繁的大型写入,这非常适合固态磁盘。

与关系数据库相比,NoSQL 数据库提供了简单但极具成本效益、高可用性和可伸缩性的数据库,并且延迟非常低。NoSQL 数据库越来越受欢迎是远离单一模式和单一应用程序的另一个关键因素。剩余的关系核心模式被清理,更容易扩展,并且正在迁移到诸如 Amazon 的 RDS 和 Aurora 之类的服务。

从项目转移到产品

当我们审视 It 领域的变化时,经常会谈到“人员、流程和技术”。我们刚刚看到技术如何通过 AWS Lambda 将部署的利用率和速度发挥到了极致,在不到一秒的时间内就实现了 100%的部署利用率。

它还可以有效地将整体代码基础分解为数百个微服务和功能,并将整体 RDBMS 非规范化为许多简单的可扩展和高度可用的 NoSQL 和关系数据存储。

在过去十年中,“人员和流程”也发生了巨大的变化。让我们考虑一个假设的由 100 个开发者一起建造的整体。为了协调、管理测试并每隔几个月向这个庞然大物交付更新,运行过程的人比编写代码的人多是很常见的。

两倍多的项目经理、测试人员、数据库管理员、操作员等。组织在筒仓中,由票证驱动,管理层级要求每个人都写每周报告,参加大量的状态会议,以及找到时间编写实际的业务逻辑代码!

DevOps 实践、微服务架构和云部署的结合与连续交付流程、基于蜂窝的“两个披萨团队”组织以及票据、会议和管理开销的大幅减少齐头并进。开发人员和产品经理组成的小组在需要时独立编码、测试和部署他们自己的微服务。

开发人员与管理费用的比例正好相反——100 名开发人员对 50 名管理人员。每个开发人员花在会议和等待入场券上的时间更少了,完成了两倍的工作,时间价值提高了一百倍。

这种变化的一个常见的简写就是从项目转移到产品。大量的项目经理被少得多的产品经理取代。在我这个有点做作的例子中,150 人的产出是过去 300 人的两倍。投资减半,回报快一百倍。许多组织已经在进行这种转变,并且有类似改进的真实例子

函数的早期

基于 Lambda 的应用程序是由几乎完全是业务逻辑的单个事件驱动函数构建的——需要管理的样板文件和平台代码要少得多。现在还为时尚早,但这似乎正在推动另一场彻底的变革。

开发人员的小团队在短短几天内从零开始构建生产就绪的应用程序。他们使用简短简单的函数和事件将健壮的 API 驱动的数据存储和服务粘合在一起。完成的应用程序已经具有高可用性和可伸缩性、高利用率、低成本和快速部署。

打个比方,想想与一堆乐高积木相比,用一团粘土做一个模型房子需要多长时间。如果有足够的时间,你可以用粘土制作几乎任何东西,它富有表现力,富有创造性,甚至还有一种用于单片应用程序的反模式,称为“大泥球”。

乐高积木组合在一起,形成一个受限制的块状模型房子,也很容易扩展和修改,只需很少的时间。此外,还有其他类似于乐高积木的砖块,但它们还不够流行,任何一种基于标准砖块的系统都要比定制的粘土快得多。

如果开发人员生产率的数量级增长是可能的,那么我的示例 100 开发人员 monolith 可以从头开始重写,并在几周内由十名开发人员组成的团队替换。即使你怀疑这是否可行,这也是一个廉价的实验。事件驱动函数的调用延迟是限制复杂应用程序的关键限制之一,但随着时间的推移,这些延迟正在减少。

我真正想说的是,现有的整体式应用程序是应该原封不动地迁移到云中,还是应该重写,这在很大程度上取决于重写它们的工作量。典型的数据中心到云的迁移将挑选出高度扩展和高变化率的应用程序,以从单片服务器重写到微服务,并将小型或冻结的应用程序原封不动地进行叉车式迁移。

我认为 AWS Lambda 改变了等式,很可能是构建新的和实验性应用程序的默认方式,并且也使它值得进行更多的重写。

我对您的经历非常感兴趣,所以请让我知道您如何看待时间价值在您的环境中的演变。


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


Angular 入门

原文:https://acloudguru.com/blog/engineering/expand-your-js-skills-with-angular

即使你是 web 开发领域的新手,你也可能听说过 Angular——而且理由很充分。它是当今开发人员使用的最流行、最强大的 web 框架之一。

在您学习了 HTML、CSS 和 Javascript 的基础知识之后,您可能会发现自己正在寻找一个更加结构化和更加通用的平台来开始构建更加健壮的 web 应用程序。别再看了:Angular 是来拯救我们的。

这篇文章将带你了解构建 Angular 应用程序前需要了解的几个关键步骤。在这篇文章结束时,您应该对安装、创建、构建和部署 Angular 应用程序有所了解。

有角和有角 JS 有什么区别?

AngularJS 最初是由谷歌在 2010 年作为开源项目发布的,大约在 2014 年,谷歌团队开始重写 AngularJS,以创建一个具有新功能和增强功能的更强大的框架。这就是 Angular 诞生的时候。

2016 年,Angular 版本 2 发布,更名为 just“Angular”。所以,我们都在同一页上。AngularJS 和 Angular 不是同一个框架!这意味着在生产中运行 AngularJS 应用程序的开发团队需要在重写他们的应用程序和承担维护一个最终不受支持的框架的责任之间做出选择。因此,在 2016 年至 2018 年(AngularJS 进入 LTS)期间,团队处于恐慌期,决定层应用的发展方向。那些选择重写应用程序的人面临着许多挑战,但最终还是很高兴。

Angular 提供了许多优于 AngularJS 的好处,例如,像 Angular CLI 这样的工具,更结构化的编程语言(也称为 Typescript),更直观的项目结构和编程范例。我是从 AngularJS 迁移到 Angular 的团队的一员,我最终很高兴,并且从未回头。

Angular 项目可以用于各种各样的 web 应用程序,从简单的小型网站到拥有数百万用户的企业应用程序。无论应用程序的健壮性如何,您都需要从某个地方开始。

您需要安装正确的工具,您需要创建一个 Angular 应用程序,并且您需要实时部署它。之后,让 sprint 周期开始,挂钩您的版本控制,让聪明的人做一些 CI/CD 魔术,然后你就有了一个活生生的 Angular 应用程序,为世界带来超级重要的信息。

要开始构建您的 Angular 应用程序,您需要首先安装 Angular CLI

Angular CLI 是构建 Angular 应用程序的开发人员的必备工具。您可以创建新项目、打开文档、为应用程序生成各种元素、服务、构建、测试、调试、lint、部署等等。这是一个必要的工具,你需要开始你的角度之旅。但是在安装 Angular CLI 之前,请耐心等待,您需要安装 Node.js 和 npm。幸运的是,Node.js 网站使它非常容易下载和安装,npm 包含在 Node.js 的安装中。

您可以通过运行以下命令来验证 Node.js 是否已安装。

node --version

npm --version

之后,您就可以安装 Angular CLI 了。这可以通过运行以下命令来完成。

npm install -g @angular/cli

这将全局安装 Angular CLI,以便您能够开始构建 Angular 应用程序。您可以通过运行以下命令来验证安装是否成功。

ng --version

第二步: 创建一个角度应用

一旦安装了 Angular CLI,乐趣就开始了!我们可以使用我们新安装的 Angular CLI 为我们生成一个新的 Angular skeleton 项目。我们可以通过运行以下命令来做到这一点。

ng new <app-name>

只需将“<app-name>”替换为您的优秀项目的名称,Angular CLI 将开始构建您的项目。

系统会提示您是否要在项目中包含角度布线以及要使用何种 CSS 格式。您也可以在``ng new`'命令中将这些作为参数传递,但是为了简单起见,上面的命令就是您所需要的。

一旦 Angular CLI 完成,您将有一个全新的准备开始开发搭建出来的 Angular 应用程序。恭喜你,你是一个有棱角的开发者!

第三步: 为你的角 App 服务

一旦您准备好开发 Angular 应用程序,您将需要在本地提供它,这样您就可以在 Angular 项目中实际看到您所做的更改。

您可以使用下面的命令在本地运行您的 Angular 应用程序,以便开始开发和调试。首先,您需要在项目目录中导航

cd <app-name>

然后运行以下命令

ng serve

这将编译您的所有 Typescript 代码,并允许您打开 web 浏览器并查看您的应用程序。默认情况下,Angular 在端口 4200 上启动应用程序,因此您应该能够从“http://localhost:4200”上查看应用程序。

在这里,您可以直接对 Angular 项目进行更改,并在 web 浏览器中看到它们自动刷新。这是使用 Angular CLI 和自动刷新功能的另一大优势。

从这里开始,天空就是极限。您可以开始构建其他组件、服务,并实现路由,使您的 Angular 应用程序更加健壮。

当然,这只是对创建和构建 Angular 应用程序的简单介绍。你决定的实现和特性的丰富性将从这里开始闪耀。

第四步:部署你的 Angular 应用

一旦你有了一个令人敬畏的 Angular 应用程序,并准备好向全世界展示,你就需要构建你的项目,以便它可以用于生产,或者一些外部公共可访问的地方。

有许多不同的方法来托管 web 应用程序。这可以在任何云平台(AWS、GCP、Azure)或其他部署平台上完成,如 GitHub PagesNetlifyFirebase Hosting 等等。您甚至可以启动一个简单的 Apache 或 Nginx 服务器,并在那里托管文件。

无论您选择什么,您都很可能需要运行以下命令来编译并打包成一个单页面应用程序。这个命令的作用是将你的应用程序打包成一个 HTML 文件、几个 javascript 和 CSS 文件,以及你可能拥有的任何其他资产,比如图像或视频。这几个文件可以上传到您的部署平台,并准备好提供给您的最终用户。要编译、构建和打包 Angular 应用程序,请使用以下命令:

ng build --prod

这将在您的项目目录中创建几个文件(在一个名为``dist/`的文件夹中)。

为了让事情变得更简单,有一些流行的工具可以让您使用ng deploy`'命令让您的部署更进一步。您不必手动上传这些文件,您可以简单地配置部署工具,运行ng deploy``命令,应用程序将编译、构建、打包和部署您的 Angular 应用程序。很可爱,是吧?

以下是一些已经创建并准备好使用的部署工具的链接:https://angular . io/guide/deployment # automatic-deployment-with-the-CLI

了解更多关于 Angular 的信息

无论是构建简单的 web 应用程序还是健壮的企业应用程序,在决定使用框架时,Angular 都应该是首选。在某些情况下,其他框架可能更适合您团队的需求,但是由于健壮性、结构、强大的设计模式、健壮的支持和工具生态系统,它是迄今为止我最喜欢的用于行业和个人项目的 web 框架。

这篇文章只是对 Angular 提供的能力的一瞥,但是嘿,你必须从某个地方开始!如果不了解如何安装、创建、构建和部署 Angular 应用程序,那么您将无法学习更多内容。

如果您想了解更多关于 Angular 应用程序的原理和元素,甚至是简单的实现,那么请查看课程使用 Angular 扩展您的 JS 技能(由您真正创建)。

其他资源和链接

Linux 5.14、Debian 11、Predator-OS 和 Linux Mint 的新外观

原文:https://acloudguru.com/blog/engineering/exploring-linux-5-14-debian-11-predator-os-and-linux-mints-new-look

在本帖中,我们将报道所有最新的 Linux 新闻。而且我们有很多新闻要讲,包括 Linux Mint 的新外观,Linux Lite 5.6,Predator-OS 特性,Debian 11,以及 Ubuntu 21.04 和 22.10 的发布日期!但首先,让我们谈谈最大的发展之一:Linux 5.14 内核。让我们直接跳进来吧!

Linux 5.14 内核现已正式发布

在上个月的 Linux 本月的第一集中,我提到了 5.14 内核的第一个发布候选里程碑,表明第一个开发版本可以进行公开测试,但这不是一个生产就绪的版本。现在,我很高兴地宣布,5.14 内核已经作为 GA 公开发布,这意味着它已经向公众开放,并且现在已经可以生产了。

Linus Torvalds 在 Linux 30 周年后的几天发布了这个公告!我对这个版本感到非常兴奋,因为它在安全性和性能方面都有很大的改进,这对 Linux 用户和云用户都很有价值。

Linux 内核是 Linux 操作系统的核心,它运行大约 90%的公共云工作负载。此外,这个版本已经通过了七个候选版本,所以它是一个经过充分测试的稳定版本。

在这个版本中,我最喜欢注意的特性包括:

对 Raspberry Pi 400 的主线支持,如果你是一个游戏玩家,你可能已经见过这台电脑和键盘合二为一,可以连接到你的电视上。我很高兴看到这个设备被添加到主线支持。

  • 该版本还为众多其他硬件类型提供了更好的硬件支持,包括核心处理和对英特尔和 AMD 图形驱动程序的改进。再说一次,谁不喜欢更多的图形和硬件支持呢?
  • 添加了内核调度,以帮助缓解 Spectre 和 Meltdown 攻击以及其他现代 CPU 漏洞,在这些漏洞中,无权限用户可以访问内核内存。这个新特性支持性能和安全性,这两者在云计算中都是特别重要的组件。以前的缓解措施要求禁用 CPU 超线程,这会导致性能影响。核心调度支持可信和不可信任务的分离,这样它们就不会共享一个 CPU 核心。这限制了攻击的风险,同时保持了云级别的性能。
  • 最后,添加了一个名为 memfd_secret()的新系统调用,它可以为应用程序创建秘密的内存空间,即使是内核也无法访问。我真的很喜欢这个功能,因为我们终于开始解决一些 CPU 漏洞,我们在过去已经看到,非特权攻击者能够访问特权内存空间。
  • 要获得新特性和改进的完整列表,请查看位于kernel.org的发行说明,在那里您也可以根据自己选择的 Linux 发行版手工编译内核。

Debian 11,也被称为牛眼,已经发布

截至 2021 年 8 月 14 日, Debian Bullseye 现已全面上市。这个稳定的长期支持版本将支持到 2026 年 8 月。

这个版本开发了 2 年 1 个月零 9 天,它包含了超过 11,294 个新的包,总共有 59,551 个包。此外,上一个版本中超过 72%的包已经更新。这是很多的更新,但是我可以说的是,牛眼是第一个提供支持 exFAT 文件系统的内核的 Debian 版本。并且支持九种不同的架构,包括。英特尔、小端和 ARM 架构。

默认情况下,这个版本还会激活它的持久日志,所以默认情况下您会得到额外的日志记录,而不会浪费任何时间来设置它。您可以通过在https://debian.org/CD/live访问该版本来测试该版本的多种桌面环境,而无需安装它,这允许您在计算机内存中运行完整的只读操作系统。

Linux Mint 获得了新的外观

Linux Mint 正在重新设计他们网站的外观和感觉——以及他们的操作系统。

Linux Mint 宣布他们的新网站设计已经完成了 75%,并将于本月部署。他们还说,他们正在审查 Linux Mint 本身的外观和感觉。Mint-X 正在修改应用内通知,并改进 Nemo 工具栏。Mint-Y 正在进行精简,以简化明暗主题以及图标的新艺术作品。Linuxmint.com 的有完整的功能列表。

Linux Lite 5.6 已经推出(还有一个可靠的 Windows 11 替代版本)

Linux Lite 5.6 最终版于 8 月 31 日发布。这个操作系统是一个基于 Ubuntu 20.04.3 的稳定版本,随 Linux 5.4.0-81 内核一起提供。

它使用的是 XFCE 桌面,对于从 Windows 切换过来的人来说,这是一个有点熟悉的桌面环境。随着 Windows 11 的重大变化,对于那些希望尝试 Linux 发行版而不是升级现有系统来支持新的 Windows 11 系统要求的人来说,这可能是一个很好的选择。

这个版本包括了“支付你所能支付的”数字下载模式的引入。。。但是该团队强调 Linux Lite 将永远免费。最新版本包括直接从 Lite 欢迎界面进行更简单的安装,更新的图标主题,7 种新壁纸,Python 3,Firefox 91.0.1 和 libre office 6.4.7.2

Ubuntu 22.04 将于 2022 年 4 月发布

Canonical 现在正在完成 Ubuntu 21.10,预计将于 2021 年 10 月 14 日发布。他们还预计下一个主要版本 Ubuntu 22.04 长期支持将于 2022 年 4 月 21 日发布。因此,您现在就可以升级您的系统,并且有足够的时间来计划下一次升级到长期支持版本。

去直升机那里!Predator-OS 带来了强大的安全功能

最后,我想提一下 Predator-OS 的最新版本。如果你没有听说过 Predator-OS,你应该知道!这个新的开源社区项目成立于 2021 年,旨在进行渗透测试和道德黑客攻击,它基于 Ubuntu 20.04 LTS 迷你版和 Linux 内核 5.10 LTS 版,并包括一个轻量级 XFCE4 桌面环境。

该操作系统经过安全强化,可提供匿名性、隐私性和安全性。它包括 100 多种功能,如利用工具、渗透测试、安全审计、取证工具、安全风险分析和漏洞评估。这些功能和更多功能在这里列出

提升您的 linux 学习水平

这就是本月的 Linux 新闻。在我忘记之前,我想让你知道我们提供的几门 Linux 课程: Linux 操作系统基础 Linux 网络客户端管理

这个月就这些了。愿您的源代码保持开放,您的代码可以编译。下次见,继续牛逼吧,云大师们!

加速您在云计算领域的职业发展

立即从 ACG 开始,通过围绕 AWS、Microsoft Azure、Google Cloud、Linux 等的实践学习转变您的职业生涯。而且,在有限的时间内,节省高达 89 美元

探索 SELinux:环境

原文:https://acloudguru.com/blog/engineering/exploring-selinux-context

SELinux 的一个关键部分是理解和使用 SELinux 上下文。系统中的一切都包含一个上下文,这些上下文用于确定哪些用户、应用程序和服务可以访问哪些文件、目录和应用程序。即使不了解详细的策略创建,大多数 SELinux 用户也可以通过使用和改变上下文来管理他们的系统。SELinux 中有三种类型的上下文,通过查看 SELinux 对文件的权限可以很好地解释这三种上下文。要查看一个目录的 SELinux 上下文,请使用带有-Z标志的ls命令。这是为/var/www/准备的目录:

[vagrant@centos www]$ ls -Zdrwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bindrwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

我们想从权限输出中看到的是类似于system_u:object_r:httpd_sys_script_exec_t的部分。这是文件的三个上下文。让我们深入了解一下:

SELinux contexts 用户上下文

第一个蓝色部分是用户上下文。这有三个可用值:user_usystem_uroot。其中每一个都表示哪种类型的用户可以访问该文件,而不是具体哪个用户。在用户上下文为user_u的情况下,普通登录用户可以访问文件(关于普通文件权限);值system_u表示系统用户——如上例所示;最后,root表示只有系统的 root 用户才能访问该文件。

角色上下文

角色上下文,在上面的例子中是洋红色的,主要用于流程和域。普通 SELinux 用户可能不需要担心这个上下文。对于文件和目录,这总是object_u

类型上下文

紫色的类型上下文可以说是在设置 SELinux 权限和解决 SELinux 问题时最重要的上下文。类型上下文提供了与 SELinux 相关的细粒度控制。您的系统,即使只启用了缺省的 SELinux 并且没有做任何更改,也有许多类型上下文。使用semanage fcontext -l命令查看所有可用类型。当查看特定文件或服务的上下文时,您可能希望通过管道连接到grep。输出使用正则表达式来表示给定的上下文是否是递归的。例如,以下是 CentOS 7 安装中类型上下文为httpd_sys_content_t的所有目录:

[vagrant@centos ~]$ sudo semanage fcontext -l | grep "httpd_sys_content"/srv/([^/]*/)?www(/.*)?                            all files          system_u:object_r:httpd_sys_content_t:s0/var/www(/.*)?                                     all files          system_u:object_r:httpd_sys_content_t:s0/etc/htdig(/.*)?                                   all files          system_u:object_r:httpd_sys_content_t:s0/srv/gallery2(/.*)?                                all files          system_u:object_r:httpd_sys_content_t:s0/var/lib/trac(/.*)?                                all files          system_u:object_r:httpd_sys_content_t:s0/var/lib/htdig(/.*)?                               all files          system_u:object_r:httpd_sys_content_t:s0/var/www/icons(/.*)?                               all files          system_u:object_r:httpd_sys_content_t:s0/usr/share/glpi(/.*)?                              all files          system_u:object_r:httpd_sys_content_t:s0/usr/share/htdig(/.*)?                             all files          system_u:object_r:httpd_sys_content_t:s0/usr/share/drupal.*                                all files          system_u:object_r:httpd_sys_content_t:s0/usr/share/z-push(/.*)?                            all files          system_u:object_r:httpd_sys_content_t:s0/var/www/svn/conf(/.*)?                            all files          system_u:object_r:httpd_sys_content_t:s0/usr/share/icecast(/.*)?                           all files          system_u:object_r:httpd_sys_content_t:s0/var/lib/cacti/rra(/.*)?                           all files          system_u:object_r:httpd_sys_content_t:s0/usr/share/ntop/html(/.*)?                         all files          system_u:object_r:httpd_sys_content_t:s0/usr/share/doc/ghc/html(/.*)?                      all files          system_u:object_r:httpd_sys_content_t:s0/usr/share/openca/htdocs(/.*)?                     all files          system_u:object_r:httpd_sys_content_t:s0/usr/share/selinux-policy[^/]*/html(/.*)?          all files          system_u:object_r:httpd_sys_content_t:s0

改变上下文

如果我们愿意,我们可以改变某些目录的上下文。这可能是因为我们需要更改权限,或者因为我们在不同位置之间移动了一个文件——虽然在一个文件夹内创建的所有文件都继承了上下文,但移动的文件保留了它们的原始上下文。假设我们将新的index.html文件移动到我们的/var/www/html目录中:

[vagrant@centos ~]$ sudo mv index.html /var/www/html/[vagrant@centos ~]$ cd /var/www/html/[vagrant@centos html]$ ls -Z-rw-rw-r--. vagrant vagrant unconfined_u:object_r:user_home_t:s0 index.html

这个例子特别合适,因为我们可以在实践中看到 SELinux 的效果。如果我们试图通过网络浏览器查看我们的index.html文件,我们会收到一个禁止错误。这是因为,如上所示,它保留了它原来的user_home_t类型,而不是它需要的httpd_sys_content_t上下文。这可以用restorecon命令改变:

[vagrant@centos html]$ restorecon index.html[vagrant@centos html]$ ls -Z-rw-rw-r--. vagrant vagrant unconfined_u:object_r:httpd_sys_content_t:s0 index.html

使用 SELinux 的默认上下文来确保所有文件都是适当的类型。在这种情况下,它看到 index.html 的/var/www(/.*)?目录的一部分,并确保它继承了适当的上下文。或者,假设我们移动了整个html/目录,并需要改变 SELinux 上下文。假设,不管出于什么原因,我们的服务器没有 Apache 必需的缺省 SELinux 策略。为此,我们可以使用semanage来改变类型上下文:

semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?'

-t标志表示类型。另外,注意包含了(/.*)?——这告诉 SELinux 在/var/www/html目录下的文件和目录也继承了这种风格。如果需要,我们还可以删除目录的上下文:

semanage fcontext -d "/var/www/html(/.*)?"

即使通过管理 SELinux 上下文和权限,我们也只是触及了这个深入工具的表面。回来看看博客,了解更多关于 SELinux 的内容,或者去 LinuxAcademy.com 的 T2 了解更多关于 SELinux 和其他系统管理和安全主题的课程。

使用云 VPN 将您的网络扩展到 Google Cloud

原文:https://acloudguru.com/blog/engineering/extend-your-network-to-google-cloud-using-cloud-vpn

将您的私有内部网络连接到 Google 云平台上的安全资源的能力非常强大。通过虚拟专用网络(VPN)将您的 GCP 资源连接到您的专用网络,您可以创建一个加密隧道,将 GCP 资源与您组织的其他资源放在同一个专用网络上。本指南将向您展示如何创建和配置到 GCP 的基本 VPN 连接(或隧道)。首先,几个参数:

  • 云 VPN 通过使用共享密钥(IKEv1 或 IKEv2)的 IPsec 连接运行
  • 云 VPN 支持静态和动态路由(使用云路由器时)
  • 云 VPN 适用于站点到站点的 VPN 连接(即路由器到路由器),但不支持客户端到站点的连接,例如您用笔记本电脑连接的连接。

在我们开始之前,您需要从您的本地网络路由器:

  • 路由器 IP 地址
  • 您的网络上将通过 VPN 连接的子网
  • 为您的本地路由器 VPN 设置配置的共享密钥。

为 VPN 隧道选择一个区域(GCP 端)

默认情况下,GCP 项目在全球每个地区都有一个子网,所有子网都在同一个专用网络中。您可以在任何地区建立 VPN 隧道,并让其他地区可以访问它。为了获得最佳性能,您应该在托管 GCP 资源的同一区域创建 VPN 隧道,例如需要访问您的本地网络的虚拟服务器。例如,如果您的大多数 GCP 资源位于美国中部 1 的“子网 a”中,您可能希望将您的 VPN 隧道连接到同一个美国中部 1 区域。请注意,同一区域中可以有多个子网,但是 VPN 连接只关心它所连接的单个区域。

为 VPN 隧道保留静态 IP 地址

在创建 VPN 通道之前,您需要保留一个静态 IP 地址。下面是这样做的步骤。

  • 从 GCP 控制台,从左上角菜单,导航到网络-VPC 网络-外部 IP 地址

  • 选择保留静态地址

  • 为保留的地址命名以供参考(在本演示中,我们将使用“vpn-tunnel”)。

  • 选择我们的 VPN 通道将使用的同一个区域。静态 IP 仅在保留它们的区域可用。请注意,同一个区域中可以存在多个子网。

  • 将所有其他设置保留为默认设置,并点击保留。【T2

创建 VPN 隧道

现在我们已经保留了一个静态 IP 地址,接下来是创建 VPN 隧道的有趣部分。从您的 GCP 控制台,在左上角的菜单中,导航到网络–互联–VPN 点击创建 VPN 连接。这将带您到主菜单来创建您的 VPN 通道。这里有很多要讨论的,所以让我们来分解一下。我们将首先配置我们的 VPN 网关。

给 VPN 连接一个名称;我们将使用“vpn-1”。

  • 选择要使用的 VPC 网络,我们将使用默认网络。
  • 选择创建 VPN 连接的区域。我们正在使用我们的中心 1。
  • 选择一个保留的 IP 地址。请注意,如果我们在不同的地区保留了一个 IP 地址,它将无法访问。
  • 接下来,我们需要配置 VPN 网关将使用的本地网络隧道。在同一区域的一个 VPN 网关上可以有多个隧道。

远程对等 IP 地址是您本地 VPN 路由器的 IP 地址。将其输入本栏位。

  • 留下艾克版本为 IKEv2。
  • 输入共享密钥,您需要在本地路由器中进行配置。
  • 由于我们在本演示中使用静态路由,因此在路由选项下,选择静态并输入该 VPN 隧道需要访问的本地网络子网。
  • 将所有其他设置保留为默认设置,并点击创建。
  • 短暂延迟后,您的云 VPN 连接将成功完成,您的 GCP 资源将可以通过专用网络访问您公司的内部网络。哇-啦!准备好开始使用谷歌云了吗?这是我们最新的谷歌云实践培训内容!如果你对更多的实践教程感兴趣,请务必订阅我们的 YouTube 频道,我们将在每周四展示谷歌云平台的现场实践演示,更不用说在周三重点介绍最新的谷歌云新闻了!

After a brief delay, your Cloud VPN connection will be successfully completed and your GCP resources will then have private network access to your company’s on-prem network. Wa-La!Ready to get started with Google Cloud? Here’s our latest hands-on Google Cloud training content! If you’re interested in more hands-on tutorials, make sure to subscribe to our YouTube channel where we’ll be demonstrating live hands-on demos of the Google Cloud platform every Thursday, not to mention highlighting the latest Google Cloud news on Wednesdays!

法耶·埃利斯走进聚光灯下

原文:https://acloudguru.com/blog/engineering/faye-ellis-on-stepping-into-the-spotlight

非常聪明并深深致力于帮助她的学生学习, Faye Ellis 成为第一位女性云大师讲师。自 2017 年加入团队以来,Faye 撰写和合著了平台上最受欢迎和最受关注的课程。六次 AWS 认证和一个重新发明扬声器,Faye 的职业生涯作为一个技术领先的女人爆炸。

Faye 致力于探索更好的方法来创造内容,正在重新定义教育行业。我想了解更多关于她的故事。是什么让她来到 ACG,她总是有信心站在镜头前吗?

在一次有趣而富有洞察力的采访中,Faye 描绘了从金融服务解决方案架构师到 AWS 培训领导者的经历。

见见 Faye

给女性的忠告: “为自己的成就感到骄傲,是宣示自己权力的最好方式。”

最初是什么吸引你成为云大师的?

我是一名学生,选修了(ACG 联合创始人)瑞安的 AWS CSAA 课程(T1)。我通过后,有人联系我做学生证明。为了表示感谢,一位云计算大师带所有做了推荐的学生出去吃饭。我和其他学生一起见到了这个团队,我记得我当时想,“这些家伙玩得太开心了。他们有如此伟大、友好的动力。”

几天后,Ryan 联系我,问我是否考虑加入成为一名讲师。这不是我认为我能在未来看到的东西。我做得很好,作为一名自由职业者在银行业为自己工作。但我无法停止思考那天晚上四处走动,会见每个人,感到非常羡慕他们的友谊。他们互相支持,为一家非常成功的公司做着一件伟大的事情,从中获得了很多乐趣。

几天后,当我见到 Ryan 时,我发现他对让每个人都能接受教育和改变人们的生活充满热情。我和我丈夫谈过了,他说我必须去做。“试试看吧,”他说。“银行里的工作,你试了不喜欢,还是会有的。”他鼓励我尝试不同的东西,我很喜欢。这是我做过的最好的事情。


“作为一名担任工程角色的女性,你总是需要证明自己。。。但在某种程度上,我有一个优势,因为这意味着我自然会以更高的标准要求自己。”

—Faye Ellis


性别在你的故事中扮演了怎样的角色?

作为一名担任工程角色的女性,你总是需要以一种男性永远都不需要的方式证明自己。从来没有人看着新来的人会想,“他知道自己在说什么吗?”他们总是这样对待一个女孩。

但在某种程度上,我有一个优势,因为这意味着我自然会以更高的标准来要求自己。我总是确保自己比周围的人都努力。我不认为我会做得和他们一样多;我要比他们做得更多。我会努力成为最好的。

我觉得很多在 IT 界工作的女性都是这样的。这意味着,如果你雇佣了一名女工程师,你就雇佣了一名一流的高级员工,因为她们必须奋斗才能达到现在的位置。他们不能只是出现并成为普通人——他们必须比他更好。我想对于任何一个有少数民族背景的人来说大概都是这样吧。每当你雇佣一名女性工程师或来自少数族裔的工程师时,你通常会找到知道如何做更多的人,因为他们总是不得不这样做。

在一个权力空前强大的时代,女性并不喜欢宣称自己的权力。你做了什么让你觉得拥有自己的权利很舒服?

老实说,我认为这是尽你所能做到最好:做好你的工作,并确保每个人都知道这一点。不声不响地取得成就是不够的。你必须确保每个人都知道这件事。女人不想夸耀自己的成就,但男人一直在这么做。如果我做了我引以为豪的事情,我会告诉每个人,“看看我都做了些什么!”为你的成就感到骄傲是展现你力量的最好方式。

云大师如何赞美你的独特之处?

相信我,不要告诉我如何做人或如何改变我的个性。通过让我对我所做的事情有创造性的自主权。在 ACG,每个人都被鼓励释放他们的创造力,这是值得庆祝的。这是我以前演任何其他角色都没有经历过的。例如,我做了一个讲座,用 cookies 来解释微服务的所有不同元素。当我们这样做的时候,被鼓励去创新和庆祝真的很重要,因为当人们因为某事得到奖励时,他们会做得更多。


被鼓励去创新和庆祝真的很重要,因为当人们因为某事得到奖励时,他们会做得更多。

—Faye Ellis


在 ACG,你职业生涯中最具决定性的时刻是什么?

肯定是在 re:Invent 做演讲。这对我来说是件大事。虽然我每天都做演示,但我很少在这么多人面前做现场演示。那里有很多人。我从未想过我会做那样的事情。如果你两年前告诉我,我会想,“天哪,我该怎么做?”但我做到了。

我还认为通过 AWS 机器学习专业考试和 T2 解决方案架构师专业考试是职业生涯的决定性时刻。

在 ACG 工作之前,我参加了课堂培训,我记得老师告诉我 SA Pro 考试有多难,几乎不可能,大多数人第一次都通不过。我心想,“这听起来太难了。我永远也做不到。”机器学习专业对我来说也非常困难,因为我只有一点点大学数学经验,而且之前没有数据科学方面的经验。但是我第一次就通过了。我兴奋了一个月。

那么,下一步是什么?

我的未来是发展教育。教育向何处去?我们怎样才能使在线教育不断发展并响应学生的需求?我们现在做的很棒,因为它让我们有了 150 万学生。但是,如果我们真的要发展,我们该如何适应这种不断变化的环境呢?进入管道的下一代工程师是在 YouTube 上长大的一代,我们的注意力持续时间都更短!我们如何继续发展我们的内容,以迎合一个不断发展的世界?

一位云计算专家正在定义这个行业。我一直在研究让内容更吸引人的方法。怎样才能做出你想看的内容?我们如何制作不用看五遍就能记住题目的内容?想象一下,如果你能创作出一个你曾经听过的故事、例子、场景或类比就能牢牢记住的内容:这就是我所追求的。


访问我们的 LinkedIn 生活页面职业网站,了解更多关于云计算专家的职业信息。

Fedora 36、RHEL 9 和 Alma Linux 9 现在都正式发布了!

原文:https://acloudguru.com/blog/engineering/fedora-36-now-ga

在本月的 Linux 新闻中,它一个接一个地被发布!我们不仅看到了 Fedora 36 的普遍可用性,还看到了 RHEL 9 和 Alma Linux 9。我将深入下面的每个亮点,以及看看红帽峰会点播。所以让我们开始吧!


加速您的职业发展

云计算专家让你的云计算职业生涯变得简单(也很棒)。查看 ACG 目前的免费课程立即开始免费试用。


Fedora 36 发布

Fedora 36 已经发布,根据他们的网站,这是“由社区,为社区”。该公告强调了使这一版本成为可能的特殊类型的团队——一个包容和友好的社区——并强调了专家和新手一起工作的重要性。

此版本包括一些非常重要的更新,包括 F34/F35 更新中的错误修复。这意味着在执行升级之前,您的系统应该是完全最新的,否则如果这些依赖关系没有得到满足,它可能会失败。

工作站的改进包括带有文本编辑器和控制台的 GNOME 42 桌面环境,以及从 NVIDIA 到 Wayland 图形驱动程序的过渡。服务器方面的改进包括 Ansible Podman 4.0 的最新版本,具有向后兼容的 API 更改,以及更新的编程语言和系统库,如 Ruby 3.1、Golang 1.18 和 PHP 8.1。

我印象最深的更新是添加了 Cockpit,这是一个管理 NFS 和桑巴共享的工具。这使得在网络上使用文件共享比以往任何时候都容易,并且证明了 Fedora 实际上拥有开源世界所能提供的最新技术。

红帽峰会 2022

红帽几乎在五月举行了他们的年度峰会。今年,他们在网上举办了一场互动的虚拟体验,其中充满了主题演讲、嘉宾演讲和专家小组讨论。虚拟峰会可在线使用一整年,而且是免费的!今年的主题是“探索当我们分享观点并一起工作时我们能做些什么。”

按需会话包括从大数据、DevOps、高可用性、物联网、混合云和多云、虚拟化和安全性的所有内容。

除了主题演讲和精彩的技术内容,它还包括开源故事、红帽创新奖和红帽年度认证专家。

他们甚至在开源的街机中加入了一些挑战性的活动,只是为了好玩。我最喜欢的是:

命令行英雄,你可以看到在 60 秒内你可以输入多少 bash 命令;

Pod Escape,你的项目正在被删除,你必须帮助一个 Pod 从数字景观中消失。

还包括编译器,这是一个在技术新手和代码背后的人之间架起桥梁的节目。您可以参加一个有趣的“这个或那个”测验,以获得您可能感兴趣的定制节目内容。它是根据你的偏好定制的,你可以回答诸如“你喜欢汉堡还是披萨?”

  • 按需提供相当惊人,但红帽并没有就此止步。他们还将举办一系列面对面的“联系”活动:
  • 纽约州纽约市 2022 年 9 月 15 日

德克萨斯州达拉斯,2022 年 9 月 28 日

加利福尼亚州旧金山,2022 年 9 月 29 日

  • 您可以找到关于这些会议的更多信息,并在线访问虚拟内容。
  • 获得痛苦的云词典
    说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。
  • 开源安全基金会增加 15 名新成员

所以,如果你到现在还没有听说过开源安全基金会,不要担心,因为我在这里告诉你关于它的一切。根据他们的网站,OSFF 是“一个提供工具、服务、培训、基础设施和资源的组织,通过验证软件供应链的质量和代码的来源来实现参与者使用和共享高质量软件的未来”。


Complete guide to the Cloud and Dictionary

许多公司现在都参与进来,为开源软件的未来做出贡献,并通过合作让人们听到他们的声音。在最近增加了 15 名新成员之后,OpenSSF 现在共有 25 名高级成员,包括 AWS、Cisco、DELL、GitHub、IBM、Intel、Oracle、Microsoft、Meta、Red Hat 和 VMWare 等公司。


如果你想了解更多关于开源软件的未来,也许你自己也参与其中,你可以在 openssf.org 找到更多信息。

RHEL 9 稳定版正式上市

RHEL 9 稳定版于 5 月 17 日正式面向公众发布!该版本旨在满足混合云环境的需求,同时也支持物理硬件、虚拟机和容器上的工作负载,是支持从边缘到云部署的完美版本!

Fedora 36 修复了生产稳定性和开发敏捷性问题,但我最喜欢的功能是新的 Linux 9 web 控制台, Cockpit。它支持实时修补,并包含通过报告高 CPU、内存、磁盘和网络资源使用峰值来识别系统问题的性能指标。

通过将所有这些工具放在一个地方,而不必运行所有这些单独的命令,这使得管理您的服务器更加高效,并且还减少了停机时间。

Alma Linux 9 发布

如果你更喜欢 Alma Linux 的好处,第 9 版已经发布,而且是免费的!它实际上也是基于 RHEL 9。它配有内核 5.14 LTS,是第一个通过 CentOS 流从 RHELs 源代码生成的版本。

它包括 RHEL 9 的所有更新,包括 web 控制台中的性能指标、从单个构建节点构建映像,以及 OpenSSL4 更好的安全性和加密。

这就是本月 Linux 新闻的全部内容。在 DiscordTwitter脸书以及上加入对话,在 YouTube 上订阅一个云专家来获取新鲜的 Linux 和云内容,帮助你了解所有科技的最新动态。

If you prefer the benefits of Alma Linux, version 9 has been released, and it’s free! It’s also actually based on RHEL 9. It ships with kernel 5.14 LTS, and it’s the first version produced from RHELs source code through the CentOS stream.

It includes all of the updates from RHEL 9, including performance metrics in the web console, building images from a single build node, and better security and encryption with OpenSSL4.

That’s it for Linux news this month. Join the conversation on Discord, Twitter and Facebook, and subscribe to A Cloud Guru on YouTube for fresh Linux and cloud content that helps you keep up to date on all things tech.

AWS DeepLens 为每一位开发者带来视频人工智能

原文:https://acloudguru.com/blog/engineering/first-looks-the-new-deeplens-device

深度学习的未来不是热狗,而是在边缘

来自 Andy Jassy 的 AWS re:Invent 2017 主题演讲向世界介绍了亚马逊的新 DeepLens 设备——一种完全可编程的摄像机,可以让你在本地运行深度学习模型,以分析并采取行动。这款最先进的相机将从 4 月份开始以 250 美元的价格零售,现在可以预订。

宣布之后,AWS 为 re:Invent 参与者开放了几个动手实验室,以探索和试验新设备。初步检查,外观没什么特别的。DeepLens 设备基本上是一个安装在一个白色盒子顶部的摄像头,上面有一些端口和按钮——但神奇之处就在里面。

这是一个运行 Ubuntu 的小盒子,内存 8GB。DeepLens 预配置了 AWS Greengrass,因此处理发生在设备上,而不是云上。

AWS Greengrass 是一款软件,可让您运行本地计算、消息传递、数据缓存、同步和机器学习功能。连接的设备可以运行 AWS Lambda 功能,保持设备数据同步,并与其他设备安全通信,即使没有连接到互联网。

要认识到的关键事情是,DeepLens 不仅仅是一个摄像机,它是世界上第一个支持深度学习的开发套件。可编程摄像机持续监控视频流,使用干扰模型来查找您定义的项目,然后根据需要在云中采取后续行动。

摄像机配备了一些现有的训练模型,以帮助进行对象检测、人物检测、活动检测等。

该架构旨在将所有繁重且消耗带宽的活动保留在设备上。DeepLens 使用云来管理下游连接和事件处理,并使用新的 SageMaker 工具来管理机器学习的日常和困难部分。

从工作流的角度来看,这实际上是非常好的构想——让人想起其他复杂的 AWS 工具(如 Elastic Beanstalk)中清晰的指导流程。

当您登录到 AWS DeepLens 控制台时,设置设备就像选择训练模型、选择推理 Lambda 函数并部署到设备一样简单。拆箱后,只需使用 Amazon 控制台,几分钟就可以上线。

在 AWS 培训实验室中,我们使用了预先配置的模型,这些模型是整个机器学习过程的大脑。我们的实验室是围绕可疑的硅谷灵感“有热狗还是没有热狗”任务建立的,就像电视节目中一样,它实际上并没有很好地工作。

有没有芥末,有没有面包,都没什么区别。我们的模型在热狗大赛中惨败。

The red bar indicates the probability of “No HotDog”.

但这只是第一天——更有用的识别人的任务出奇地成功。正如下面的照片所示,DeepLens 能够拍摄现场视频,并轻松找到所有没有任何问题的人。

令人印象深刻的是——即使在拥挤的培训室中——边界框即使在奇怪的角度也始终准确。

DeepLens 与 AWS 物联网世界集成,因此您可以将事件连接到 Lambda 进行 SNS(电子邮件、短信等)或在生态系统内采取任何其他行动。在设备上完成所有工作的绝对速度开辟了一个可能性的领域,这在云中处理是不可行的。

公平地说,你仍然需要熟悉机器学习的模型构建,才能充分利用深度学习,尽管我可以想象模型市场会很快出现。

即使有了 SageMaker,也无法跨越这样一个事实,即你需要一些培训来掌握机器学习概念。这个产品直接面向开发者,而不是普通大众。一旦它在野外变得松散起来,我们只是触及了可能性的表面。

研讨会与会者获得了免费的 DeepLens 设备。我将在接下来的几周继续玩它,并提供更新。尽管我可能不会用热狗。

你在 re:Invent 获得了试验 DeepLens 的机会,或者计划订购该设备来探索深度学习吗?我很乐意听到你对 DeepLens 的想法,并在下面的评论中了解你的项目!

你可以通过 AWS Marketplace 做五件令人惊讶的事情

原文:https://acloudguru.com/blog/business/five-surprising-things-you-can-do-with-the-aws-marketplace

AWS 市场在 2012 年推出。当时,它为许多供应商提供了一种简单的方式来简化你可以通过亚马逊 EC2 启动的亚马逊机器映像的使用。

随着时间的推移,越来越多的供应商开始提供商业软件或托管开源产品。很长一段时间以来,当有人提到 AWS 市场时,最常想到的就是这个:

"这就是你得到管理的艾米."

但是,作为 AWS 的传统,市场不断发展,并继续提供一个又一个功能。作为我在这里为云专家开发的最新课程“AWS 市场简介”的一部分,以下是我从 2021 年的 AWS 市场中学到的五件事…


您的团队是否需要一份 IT 职业发展计划?谈到云学习,没有放之四海而皆准的解决方案。无论您的需求如何,ACG 定制学习路径总有一条适合您的路径。


1.购买完全开发的机器学习模型

AWS 市场上提供的许多产品类型之一是预先训练的机器学习模型。没错,你可以买一个完全开发的 ML 模型和亚马逊 SageMaker 一起使用!

这些型号已经过安全问题扫描,并部署在网络隔离模式,因此您知道您的处理是安全的,您的数据始终在您的控制之下。

供应商可以定期更新模型,这样您就可以随时利用最新的知识。结合灵活的计费模式,这一类别的优惠是启动您的 ML 工作的绝佳方式。

2.获取大量数据集

您是否曾经需要访问一个非常大的数据集,但不知道从哪里获得它?你有没有想过,“嘿,那可能在 AWS 市场上?”

可能不会,但你应该。

AWS 数据交换为 AWS 市场“数据产品”类别提供了一个独特的视角。目前列出了超过三千个数据集。

这包括医疗保健数据、金融信息、游戏数据等等。一些数据是免费的,而另一些则提供订阅模式。

一旦你订阅,这些数据就可以被发送到亚马逊 S3,这意味着你可以很容易地使用所有优秀的 AWS 数据工具来处理和可视化这些数据。


如何简化和纵向扩展以实现云成功

这个免费点播的网络研讨会中,了解企业如何通过 AWS Marketplace 简化其采购流程,并通过 ACG 提升其团队的云技能。


3.协商私人报价

AWS Marketplace 中的每一件产品都清楚地标明了它的定价模式和当前成本。

对于需要部署 AWS 基础设施的产品(如 Amazon EC2 实例),您还可以获得一个快速的 AWS 成本计算器,这样您就可以知道您看到的总费用。

但是如果你不想支付标价呢?

对于大量采购或您有独特需求的情况,AWS Marketplace 有一个名为“私人报价的功能

这允许您与供应商协商自定义条款,包括许可证数量、定价、合同期限等。然后,供应商会向您发送一个自定义合同链接,允许您按照自己的私人条款购买公开列出的商品。

私人报价为通常令人沮丧的过程提供了简化的工作流程。如果你曾经和公司采购打过交道,你就知道我在说什么。

如果你从未这样做过,算你走运。私人提供意味着你可能永远不会有!

4.购买 SaaS 套餐

我总是将 AWS 市场与需要在我的 AWS 帐户中运行的项目相关联。在这里,我可以将软件部署到我的 AWS 环境中。

SaaS 类别的报价打破了这种看法。任何构建 onboarding 集成的 SaaS 都可以在 AWS Marketplace 中列出。

您为什么想通过 AWS 市场购买 SaaS?

主要原因是它会像任何原生 AWS 服务一样显示在您的 AWS 账单上。对于一些组织来说,这是他们能够获得这种类型的解决方案而不需要经历一大堆麻烦的唯一方法。

有选择是好事!

AWS Marketplace 使寻找、购买和部署 AWS 云解决方案变得更加容易。ACG 提供了一门课程,分解了AWS market place deep security as a service更复杂的方面,以帮助在采购云解决方案时做出明智的决策。

5.使用许可授权

我惊喜地发现 AWS Marketplace 也有三个低级对象可以使用。将您的帐户链接到产品(免费或付费)的订阅、使用该产品的许可证以及使用该许可证的授权。

最后一个想法可能看起来有点奇怪。为什么你需要许可证的授权?…此外,你知道,法律“东西”

在 AWS 组织结构中,支付许可证费用的帐户并不总是——事实上,很少是——需要使用许可证的帐户。

授权的想法可以让你在可用性(这是我们支付的所有费用)和使用(谁在使用什么)的可见性之间找到一个很好的平衡。).


转变职业,转变企业

学得更快。动作快点。通过 AWS、Microsoft Azure、Google Cloud 等平台的课程、真正的技术和 IT 实践实验室来转变您的团队。


下一步是什么?

AWS 市场发展迅猛。这适用于服务的特点和产品目录的规模。

虽然很多人忽略了这个市场,但不管你是否意识到,它已经对我们购买云解决方案的方式产生了巨大的影响。

供应商正在将他们的计费模式转变为每月订阅或基于消费的定价,这是由市场和用户需求驱动的。

这对于组织来说要容易得多,因为他们不再局限于他们可能使用的软件和服务的多年合同。

如果您想了解更多关于 AWS 市场的特性和功能,为什么不试试我的新课程呢?

免费会员可以使用它,所以没有借口!今天就从云专家的AWS 市场介绍开始吧。

您需要解决的 5 大常见 AWS IAM 错误

原文:https://acloudguru.com/blog/engineering/fixing-5-common-aws-iam-errors

Amazon Web Services (AWS)身份和访问管理(IAM)是一项在云中提供安全性的基础服务。它允许您管理对 AWS 服务、资源和应用程序的访问。这是 AWS 的核心服务,但没有什么是完美的。在使用它的时候,你可能会遇到错误。但是不要担心!让我们深入探讨五种常见 AWS IAM 错误的原因和解决方法。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


1.AccessDeniedException–我无法承担角色

IAM 角色可用于跨您拥有的不同 AWS 帐户委派对您的 AWS 资源的访问。例如,您可以与不同帐户的用户共享一个帐户中的资源。这可以通过在信任帐户和其他 AWS 信任帐户之间建立信任关系来实现。

让我们以这样一种情况为例,您希望让开发帐户中的用户能够访问生产帐户中的资源。在这种情况下,需要将开发中的更新提升到生产中。这种访问称为跨帐户访问。如果权限设置不正确,您可能会遇到下面的错误。

错误
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam:::user is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::user:role/role

原因 这个 AccessDenied 错误可能有两个原因:您的开发账户中的用户没有权限调用 sts:AssumeRole ,或者生产账户中的信任关系配置不正确。

假设您已经在生产帐户中创建了一个角色,开发帐户中的用户可以承担该角色(以检索临时安全凭据),请考虑下面的解决方案。

解决方案#1 验证附加到您的开发帐户中的用户的 IAM 策略是否授予该用户对您的生产帐户中的角色的 sts:AssumeRole 操作的权限。您必须使用类似如下所示的策略明确授予此权限。

解决方案#2 也许你的开发账号中的用户已经拥有了 sts:AssumeRole 动作的权限,但是错误仍然发生。下一步是验证您的开发帐户(您从中调用 AssumeRole 的帐户)是否在您的生产帐户中设置为用户试图承担的角色的可信实体。在您的生产帐户中,一个类似于下图所示的角色应该可以做到这一点。

{
 "Version": "2012-10-17",
 "Statement": [{
   "Effect": "Allow",
   "Action": ["sts:AssumeRole"],
   "Resource": "arn:aws:iam::user:role/role"
 }]
}

成功承担角色后, AssumeRole API 返回一组临时安全凭证,这些凭证可用于使用角色中指定的权限访问生产帐户。

{
 "Version": "2012-10-17",
 "Statement": [
   {
     "Effect": "Allow",
     "Principal": {
       "AWS": "arn:aws:iam::user:user-name"
     },
     "Action": "sts:AssumeRole",
     "Condition": {}
   }
 ]
}

2.AccessDeniedException–我不能调用 AWS API 操作

当在 AWS 帐户中提供对资源的访问时,请考虑最低特权权限的原则。最低特权权限仅授予执行给定任务所需的最低级别的访问权限。这个原则强调了这样一个事实,即用户和服务只有在被明确授予访问权限后才能访问资源。

让我们以一个用户尝试使用命令行界面调用亚马逊 S3 存储桶上的列表存储桶操作为例。用户遇到以下错误。

错误
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

原因 发生访问被拒绝错误是因为试图执行此操作的用户没有被明确授权访问列表桶内容。除非您明确授权,否则用户无权执行此操作。

解决方案 简单的解决方案是给用户附加一个内嵌策略,类似于下面的代码片段。

为了提供额外的安全级别,可以在资源元素中命名对象,而不是使用通配符 ***** ,它代表所有资源。如果您不熟悉资源元素,它指定了策略覆盖的一个或多个对象。

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "VisualEditor0",
           "Effect": "Allow",
           "Action": [
               "s3:ListAllMyBuckets",
               "s3:ListBucket",
               "s3:HeadBucket"
           ],
           "Resource": "*"
       }
   ]
}

以下示例允许使用资源、亚马逊资源名称(ARN) 和通配符*访问特定亚马逊 S3 存储桶中的所有商品。

让我们开始您的 AWS 之旅

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "VisualEditor0",
           "Effect": "Allow",
           "Action": [
               "s3:ListAllMyBuckets",
               "s3:ListBucket",
               "s3:HeadBucket"
           ],
           "Resource": "arn:aws:s3:::bucket_name/*"
       }
   ]
}

希望获得 AWS 认证或提升您的云计算职业生涯?通过与 ACG 一起做来学习受欢迎的 AWS 技能。

3.未经授权的操作-我无权执行操作


尝试执行某项操作时,您可能会看到一条错误消息,指出您无权执行该操作。让我们以使用 describe-instances 动作列出帐户中的 EC2 实例为例。

错误 An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.

原因 发生未授权操作错误是因为试图执行操作的用户或角色没有权限描述(或列出)EC2 实例。

解决方案 简单的解决方案是附加一个内嵌策略,类似于下面的代码片段,为用户提供访问权限。

需要强调的是,不能用资源元素中的 ARN 来定义 DescribeInstances 动作。有些服务不允许您为单个资源指定动作,而是要求您在资源元素中使用通配符 ***** 。虽然您可以为 EC2 API 的子集定义资源级别权限,但是描述实例操作目前不支持资源级别权限。在这种情况下,如果您向资源元素添加一个 ARN 号,您将继续看到未授权操作错误。

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "VisualEditor0",
           "Effect": "Allow",
           "Action": [
               "ec2:DescribeInstances"
           ],
           "Resource": "*"
       }
   ]
}

想要阻止删除亚马逊 S3 桶? 使用 AWS 策略生成器工具创建策略,控制对 AWS 产品和资源的访问!


4.一个服务无权对另一个服务执行操作


在管理 AWS 资源时,您通常需要授权一个 AWS 服务访问另一个服务来完成任务。让我们来看看这样的情况,您需要从 Lambda 函数中查询 DynamoDB 表。下面的 Lambda 代码片段查询 USERS 表,导致如下所示的错误。

错误 arn:aws:sts::user:assumed-role/role/function is not authorized to perform: dynamodb:Query on resource: arn:aws:dynamodb:region:account:table/USERS

table = boto3.resource('dynamodb').Table('USERS')

response = table.query(KeyConditionExpression=Key('USER_ID').eq(userid))

原因 这个错误是因为 Lambda 的执行角色没有权限查询 USERS DynamoDB 表。

解决方案 简单的解决方案是通过附加如下所示的内联策略来修改 Lambda 的执行角色:

可以遵循相同的方法来允许 Lambda 访问亚马逊 S3。如果 Lambda 函数和 S3 桶在同一个 AWS 帐户中,上述方法将起作用。但是,如果他们在不同的帐户中,您需要授予 Amazon S3 Lambda 执行角色和 bucket 策略的权限。

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "VisualEditor0",
           "Effect": "Allow",
           "Action": "dynamodb:Query",
           "Resource": "arn:aws:dynamodb:region:account:table/USERS"
       }
   ]
}

5.策略必须包含有效的版本字符串

创建或修改策略时,您可能会遇到一个错误,指出策略必须包含有效的版本字符串。此版本策略元素不同于用于托管策略的多版本支持版本策略元素指定了应该用于处理策略的语言语法规则。对于那些 IAM 新手来说,这可能是一个困惑点,因为他们经常试图将当前日期用于版本策略元素;然而,版本仅限于几个选择值。例如,将当前日期用于版本字符串,类似于下面所示,将导致错误。

错误 This policy contains the following error: The policy must contain a valid version string

{
   "Version": "2020-07-30",
   "Statement": [
       {
           "Sid": "VisualEditor0",
           "Effect": "Allow",
           "Action": [
               "ec2:DescribeInstances"
           ],
           "Resource": "*"
       }
   ]
}

原因 发生错误是因为版本被限制为几个选择值。

解决方案 解决方案是使用其中一个有效的 版本元素值。目前,IAM 支持以下版本元素值:

2012-10-17——这是当前版本的政策语言。

  • 2008-10-17——这是一个旧版本的策略语言,不支持新功能。
  • 如果不包括版本元素,则该值默认为 2008-10-17。

了解更多关于 IAM 的信息


好了,现在你知道了!我们回顾了使用 IAM 时可能遇到的一些常见错误和解决方法。

寻找更多详细信息和提示来帮助您解决 IAM 的其他错误?查看我关于 IAM 的新入门课程,身份和访问管理(IAM)概念

如果你想更多地了解 Azure 中的 IAM,请查看 10 月份的免费课程 IAM for Azure 。这是云专家免费提供的 24 个免费云课程之一。

从那来的还有更多!云专家提供学习路径、测验、认证准备等。


There’s more where that came from! A Cloud Guru offers learning paths, quizzes, certification prep, and more.

追随构建者:2021 年要追随的 21 位 DevOps 构建者

原文:https://acloudguru.com/blog/engineering/follow-the-builders-21-devops-builders-to-follow-in-2021

首届 ACG 社区峰会将于 6 月 28 日至 30 日召开,我们正在表彰云中的一些杰出人士,他们激励我们构建更好、更具包容性的云应用。

之前,我们介绍了我们的顶级 AWS 构建者Azure 构建者,您应该关注。本周,我们将关注 DevOps 构建者、sre 和架构/系统人员。其中一些人更倾向于 DevOps 的领导层,但他们仍然是“建设者”,因为他们直接参与在他们的组织内创建 DevOps 文化和实践。

这些人通过他们的工作对社区产生了巨大的影响,但社交媒体的“影响力”并不是这个名单的首要考虑因素。相反,我们为云社区寻找积极的技术贡献者。

准备好粉碎那些喜欢、订阅和关注按钮吧——以下是 2021 年你应该关注的 21 个 DevOps 构建者。

布莱恩·勒鲁

推特:@ brianleroux

布莱恩·勒鲁(Brian LeRoux)是一名加拿大网络开发人员、演说家,也是 in.comggBeg的联合创始人,也是一名 AWS 无服务器英雄。他在 Serverlessconf 上谈到了利用 OpenJS Architect 实现更快的云计算交付。

www.brian.io 跟上 Brian。


通过 AWS DevOps 认证掌握您的 DevOps 知识!


玛丽安·贝洛蒂

**推特:@贝尔马尔

Marianne Bellotti 为联合国建立了数据基础设施,作为美国数字服务的一部分,处理了世界上一些最古老和最复杂的计算机系统,在 Auth0 运行平台服务,目前在 Rebellion Defense 运行身份和访问控制。

她是《用火杀死 It:管理老化的计算机系统(和未来的现代系统) 的作者,她在 ACG 博客上和我们聊了聊应用程序现代化和 COBOL 的未来

bellmar.medium.com了解玛丽安的最新情况。

亚历克斯·伊达尔戈

**推特:@ ahidalgosre

Alex Hidalgo 是 Nobl9 的网站可靠性工程总监,曾在谷歌和 Squarespace 担任高级 SRE 职位,并在世界各地培训其他 sre。他是谷歌 IT 专业认证项目的主要开发者之一,为网站可靠性工作手册做出了贡献,并且是SLO 图书 的作者。他和 ACG 讨论了如何像 SRE 人一样思考。

www.alex-hidalgo.com 了解更多关于亚历克斯的信息。

布赖森·泰瑞尔

推特:@ bryson 3 GPS

Bryson Tyrrell 是 Jamf 的系统开发工程师。他在许多会议上发表过演讲,并且是 AWS 社区建设者的一员。Bryson 为 ACG 博客写了关于为什么现在应该总是使用 DynamoDB 全局表AWS 的 EC2 Mac 实例的文章。

他在 www.linkedin.com/in/brysontyrrell 的 LinkedIn 上。

杰西卡·克尔

Twitter:@ jessitron

软件开发人员、顾问和 symmathecist Jessica(又名 JessiTRON)是如此多产的优秀内容制作者,以至于你可能真的认为她是一个机器人。她对弹性工程、领域驱动设计和(当然)DevOps 感兴趣。她和我们谈论了 DevOps 的未来。

你可以在www.jessitron.comwww.systemsthinking.dev 找到她的作品,或者在大于代码被捕 DevOps 播客上听她做专题讨论。

多诺万·布朗

推特:@ Donovan brown

多诺万·布朗(Donovan Brown)是微软 Azure CTO 孵化器团队的合作伙伴项目经理,认证 Scrum Master(T1),也是一名前流程顾问。他周游世界,帮助公司使用敏捷实践、Visual Studio 和 Team Foundation Server 开发解决方案。他已经和 ACG 谈论过后 COVID DevOps ,他在职业空气曲棍球世界排名高达第 11 位。(第二个和 DevOps 没什么关系,但还是挺牛逼的。)

跟上多诺万在 www.donovanbrown.com 的进度。

妮可·福斯特

Twitter:@ nicolefv

Nicole Forsgren 博士是一名 DevOps 和开发人员生产力专家,他与工程组织合作以使工作更好。她是 DevOps 报告中 加速状态的主要作者。她还是 GitHub 的研究战略副总裁,一位成功退出谷歌的技术创始人/首席执行官,以及 ACM Queue 编辑委员会的成员。****

妮可在 www.nicolefv.com 写博客。

慈善专业

推特:@ mipsystipsy

查里蒂是一名运营工程师,曾任脸书公司的产品工程经理,与人合著了奥莱利的数据库可靠性工程蜂巢的“意外创业创始人”,她是蜂巢的首席技术官。慈善是 ACG 的一张熟悉的面孔,在我们的运营:过去、现在和辉煌的未来网上研讨会中与我们聊天,并撰写关于为什么不能调试带有仪表板的系统运营工作的未来

跟上慈善在 www.charity.wtf

利兹·方·琼斯

推特:@ Liz the grey

Liz Fong-Jones 是劳工和道德组织者 Honeycomb(T1)的首席开发人员,也是网站可靠性工程师(SRE ),在从谷歌云负载平衡器到谷歌航班等产品方面拥有超过 16 年的工作经验。她和 ACG 讨论了 T2 的云状况和 T4 的自动气象站预测。

www.lizthegrey.com了解莉兹的最新消息。

伊恩·科尔德沃特

推特:@ Ian cold water

Ian Coldwater 是 Kubernetes SIG Security 的联***,也是 Twilio 的一名架构师,他专门研究如何破解和加固 Kubernetes、容器和云原生基础设施。

布莱克·斯托达德

推特:@ T3 rabytes

Blake Stoddard 是 Epic Games 的高级开发和运营工程师,也是 Basecamp / HEY 的前高级网站可靠性工程师。他和 ACG 聊起了 T2 在 AWS 和 Kubernetes 上的升级。

亚历克斯·陈

推特:@ alexwlchan

Alex Chan 是 Wellcome Trust 的一名软件开发人员,他通过一致的、设计良好的 API 来展示 Wellcome 的资产。(编辑/常驻博物馆书呆子注意:如果你在伦敦,惠康收藏馆是一个辉煌而奇异的免费博物馆,在这个充满杰出博物馆的城市中脱颖而出。)

Alex 活跃在 Twitter 和他们的 T2 博客上。

安吉拉·安德鲁斯

推特:@ ScooterPhoenix

Angela Andrews 是 Red Hat 的解决方案架构师。她是一名拥有 20 年 IT 经验的 AWS 认证解决方案架构师,并且是 Red Hat 即将推出的编译器播客Red Hat 峰会虚拟体验的共同主持人。

www.angelawandrews.com赶上安吉拉的速度。

萨沙·罗森鲍姆

推特:@ divine ops

Sasha Rosenbaum 是 Red Hat 的托管 OpenShift 黑带(MOBB)团队的高级经理,她帮助企业客户在他们最喜欢的公共云上迁移到托管 OpenShift。她是 GitHub 和微软的前高级项目经理,芝加哥开发日的组织者,DeliveryConf 的主席,演讲者,播客,以及 Azure with 中的 *无服务器计算的作者。*网

www.sasharosenbaum.com跟上萨沙。

卡米尔·傅里叶

推特:@斯卡米尔

Camille Fournier 是一名工程师兼首席技术官,Apache ZooKeeper 社区的成员,也是《经理之路的作者。她是一位经验丰富的领导者,集深厚的技术专长、执行领导力和工程管理于一身,对“分布式系统、功能失调的编程和所有那些管理上的书”很感兴趣

查看她的网站www.camilletalk.com或者她的博客 www.elidedbranches.com。

诺拉·琼斯

推特: @nora_js

**诺拉·琼斯是 Jeli 公司的创始人兼首席执行官。此前,她曾在 Jet.com 的网飞、斯莱克和 Alarm.com 担任高级技术领导职务。她是 混沌工程的合著者:实践中的系统弹性从软件事件中学习 的创造者,并且对软件和人的交叉有着热情。

尼克·克拉弗

推特:@ Nick _ Craver

Nick Craver 是微软 MVP,也是 Stack Exchange 的架构负责人。他热衷于开源和分享经验,这有助于在构建时节省他人的时间。他维护许多开源项目,包括 OpserverStackExchange。异常微型分析器堆栈交换。RedisDapper

你可以在www.nickcraver.com找到尼克,还有栈溢出GitHub

进去亨利

推特:@ reinh

Rein Henrichs 是 Procore Technologies 的首席软件工程师。他称自己是一名“软件开发人员,他花更多的时间考虑用人类制造的系统,而不是用计算机制造的系统。”你可以在 GitHub 上找到 Rein,作为播客大于代码的主持人,以及作为被捕 DevOps 的常客。

里沙布·库马尔

推特:@ rish abk 7

Rishab 称自己为“学习 DevOps 的云工程师”。他可能是 DevOps 世界的新成员,但我们是目前所见的大粉丝。他是 ACG 社区的活跃成员,参与我们的云简历挑战,并且他很快回馈社区,分享项目和有用的资源,如针对 AZ-104 Azure 管理员的学习指南

你可以(也应该)看看里沙布的博客或者在 GitHub 上找到他。

塞拉特运河

推特:@ srhtcn

Serhat Can 是一名工程师,自 2015 年以来一直作为 Atlassian 的 Opsgenie 团队的一部分构建和运营产品。作为一名工程师和 DevOps 布道者,他热衷于帮助团队建立更好的随叫随到和事件响应实践。他是 AWS 社区的英雄、博客作者、活动组织者、演讲者,并帮助协调全球 80 多个城市的志愿者日。他是电子书《随叫随到 :管理高效快乐的随叫随到团队 的权威指南》的作者。

西尔维亚·博特罗斯

推特:@ db smasher

Silvia Botros 是 Twilio 公司的高级首席工程师,她称自己是“T2 明日边缘的艾米莉·布朗特”。而是为了数据库。”当她不试图破坏数据库或寻找软件漏洞时,她是会议和播客的常客。

除了 Twitter 之外,你还可以在www.blog.dbsmasher.com或者 GitHub 上与 Silvia 保持联系。


上面代表的是几百年的工程经验。这些人中的每一个人都表现出了在公开分享这一经历的同时致力于推进这一经历的决心。这是一个非同寻常的机会,我们建议您今天就抓住这个机会。跟着建筑商走!

无论你是不是开发人员,单独工作还是在团队中工作, Azure DevOps 培训都可以帮助你组织你计划、创建和交付软件的方式。

下次,我们将分享我们的顶级谷歌云构建者名单。与此同时,你还关注哪些杰出的 DevOps 构建者?在 Twitter 上标记它们,这样其他人也可以找到它们!

追随构建者:2021 年要追随的 21 位 GCP 构建者

原文:https://acloudguru.com/blog/engineering/follow-the-builders-21-gcp-builders-to-follow-in-2021

随着有史以来第一届 ACG 社区峰会 即将召开(6 月 28 日至 30 日),我们正在表彰一些激励我们的出色的云人类。

之前,我们介绍了我们的 DevOps 构建者顶级 AWS 构建者以及您应该关注的 Azure 构建者。本周,我们来看看来自谷歌云(GCP) 宇宙的建设者。这些人通过他们的工作对社区产生了巨大的影响,但社交媒体的“影响力”并不是这个名单的首要考虑因素。相反,我们为云社区寻找积极的技术贡献者。

让我们来玩一个 GCP 跟随领导的游戏吧!以下是 2021 年引领潮流的 21 位 GCP 建设者。


格雷厄姆·波利

推特: @polleyg

Graham Polley 称自己是 1x 工程师和“经验丰富的江湖骗子,15 年以上的时间都是我一手打造的。”他的工作地点在澳洲的墨尔本,是 Servian 的合伙人,他在 T2 的网站上写博客。

Lynn Langit

推特: @lynnlangit

Lynn Langit 是一位多产的云内容制作人。她是独立的云架构师、开发人员和教育家;一个谷歌云开发者专家;AWS 社区英雄;也是前微软员工。她与 ACG 谈论了大数据、NoSQL、谷歌和 AWS,并与 T2 的 ACG 传记分享了她的故事。

GitHub ,或者在【www.lynnlangit.com】的跟上她。

克里希纳·加希拉朱(GK)

推特: @multicloudguy

Krishna Gadhiraju (GK)是一名技术人员,他从云诞生之初就开始研究云,并在过去几年里使用 YouTube 分享他的经验和见解。他目前是威瑞森的一名杰出的架构师,致力于将应用从本地迁移到云。

萨特希·VJ

推特: @sathishvj

Sathish VJ 是 11 次获得 GCP 认证的谷歌开发专家、投资者、技术架构师和导师。除了推特,他还在他的 YouTube 频道( AwesomeGCP )和媒体上分享他丰富的 GCP 知识。

乔纳森·脉动者

推特: @jonpulsifer

Jonathan Pulsifer 是加拿大云安全专家,Kubernetes 超级粉丝,前安全工程师,负责 Shopify 。请在 GitHubwww.pulsifer.ca 上关注 Jonathan。

沙米斯塔·查特吉

推特: @sharmichat82

Sharmistha Chatterjeea 是机器学习和云领域的数据科学布道者、作者、演讲者和谷歌云开发专家。她在 YouTube 和 www.techairesearch.com 的 T2 主持思想领袖和行业领袖的网络广播。

石村信吾

推特: @sinmetal

Shingo Ishimura 是一名具有丰富 GCP 经验的服务器端开发人员,也是 Google 云平台用户组( GCPUG )的组织者。在 GitHub 上与他保持联系。

李友友

推特: @yoyu777uk

Yoyu Li 是 Infinite Whys 驻英国的创意技术顾问,Google Cloud 的 Google 开发专家,Women Techmakers 和 Wagora.io 的大使,AWS 用户群 UK 的社区组织者,以及 People Atlas 的联合创建者。在 www.yoyu777.com跟上 Yoyu。

尼尔·戈什

推特: @neilghosh

Neil Ghosh 是一名 Google 开发专家和 Salesforce 的工程主管,他对构建高度可伸缩的分布式系统很感兴趣。在 GitHubwww.neilghosh.com与他保持联系。

维克拉姆·蒂瓦里

推特: @Vikram_Tiwari

Vikram Tiwari 是 Omni Labs 的联合创始人和技术人员,也是谷歌云和机器学习的谷歌开发专家,热衷于帮助他人学习和构建。在 GitHubwww.vikramtiwari.com上跟上他。

安东尼奥·卡川

推特: @thony_ac77

Antonio Cachuan 是一名作家、教师和 GCP 专业数据工程师,对云、大数据和物联网充满热情。他活跃在媒体上。

凯尔西·高塔

推特: @kelseyhightower

Kelsey Hightower 是谷歌负责谷歌云的首席工程师,帮助开发和完善产品,如谷歌的 Kubernetes 引擎(GKE) 、云功能和 Apigees 的 API 网关。他是一名导师、技术顾问和发言人,实际上帮助撰写了关于 Kubernetes 的书。他也是一个巨大的开源贡献者(在 GitHub 上关注他);他的 Kubernetes the Hard Way 是同名 ACG 球场的灵感来源。他和 ACG 谈论过你如何需要 SRE 的技能来茁壮成长。

yochay kiriaty

推特: @yochayk

Yochay Kiriaty 是 Kubernetes、GKE 和谷歌云的产品经理,他将在 GCP 举行的 ACG 社区峰会上发表主题演讲。你可以在 GitHub 上关注他。

山姆维特维奇

推特:@山姆 _ 维特芬

山姆·维特芬是机器学习和深度学习的谷歌开发专家,红龙人工智能的创始人,也是创始人研究所的导师。他专注于机器学习、张量流和 Unity。你可以在 GitHubMedium 上关注他。

劳拉·莫里尼戈

Twitter:@ this islalak

劳拉·莫里尼戈是伦敦的导师,三星的网络开发倡导者,Firebase 的谷歌开发专家,女性科技创客大使,GDG 云伦敦的共同组织者。跟上她在 GitHub 或 T2 媒体上的工作。

托马斯·图拉真

推特: @tomastrajan

Tomas Trajan 是一名教师、演讲人、博客作者、Angular 和 web 技术的谷歌开发专家,也是 Twitter 机器人 Release Butler 的开发者,该机器人帮助人们了解流行的前端框架和库的最新发布。跟上托马斯在 GitHubMedium ,以及在www.tomastrajan.com

Daniela Petruzalek

推特: @danicat83

Daniela Petruzalek 是首席数据架构师、摩根大通执行董事、谷歌围棋和 GCP 开发者专家、多样性和包容性倡导者、博客作者和爱猫人士。她的专业是数据工程和后端开发。在 GitHub 上关注她

塔维斯·奥尔德尼

推特: @taviso

塔维斯·奥曼迪是谷歌零计划的白帽黑客和漏洞研究员。你可以在 GitHub 上或者 www.lock.cmpxchg8b.com 的 T2 找到 Tavis。

希瑟·阿德金斯

Twitter: @argvee

希瑟·阿德金斯是谷歌的信息安全和隐私总监,也是《构建安全可靠的系统*的合著者。跟上希瑟在 www.argv.ai 。*

弗洛里安·拉斯格贝尔

推特: @frathgeber

弗洛里安·拉斯格贝尔是谷歌的一名网站可靠性工程师,他专注于谷歌云中面向用户的服务的服务水平目标(SLO)、可靠性和性能,并且是一家慈善机构 Codebar 的教练/主持人,该机构举办免费编程研讨会,试图弥合多样性差距。在 www.kynan.github.io 与弗洛里安保持联系。

马来西亚女人

推特: @lindydonna

Donna Malayeri 是 Google Cloud 的无服务器爱好者、开发者倡导者、作家、演讲者和产品经理。她在 Serverlessconf 上谈到管理无服务器应用程序生命周期无服务器是一种编程模型的运营体验。跟上 lindydonna.com的唐娜


上面代表的是几百年的工程经验。这些人中的每一个人都表现出了在公开分享这一经历的同时致力于推进这一经历的决心。这是一个非同寻常的机会,我们建议您今天就抓住这个机会。跟着建筑商走!

你还关注过哪些杰出的 GCP 建设者?在 Twitter 上标记它们,这样其他人也可以找到它们!

跟随构建者:要跟随的实践 AWS 构建者

原文:https://acloudguru.com/blog/engineering/follow-the-builders-21-hands-on-aws-builders-to-follow-in-2021

云的未来属于构建者。在线社区给了我们一个难以置信的机会,让我们可以实时学习他们的经验。

在这份名单中,我们表彰了云中的一些人,他们的公开例子激励我们构建更好、更具包容性的云应用。

这里列出的每个人都通过他们的工作对社区产生了巨大的积极影响,但社交媒体“影响力”并不是这个列表的首要考虑因素,相反,我们为云社区寻找积极的技术贡献者。

首先,我们将关注 AWS。准备好你的手指——这里有一些你今天应该跟随的实际操作的 AWS 构建者。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


mattias andersson

推特: @MattiasEh

谈到云学习,Mattias Andersson 是加拿大的国宝。(幸运的是,由于技术的魔力,即使你不在加拿大,你也可以受益于他通过技术帮助人们改变生活和职业的热情。)Mattias 是一名软件开发人员、解决方案架构师、云讲师、团队领导,也是一名无服务器狂热者。他是云专家的 AWS 认证指南的作者,也是 T2 ACG 博客和 T4 ACG YouTube 频道的定期撰稿人。

吉莉安·阿姆斯特朗

推特: @virtualgill

吉莉安·阿姆斯特朗是 AWS 机器学习英雄,也是位于北爱尔兰的 Liberty IT 的解决方案架构师。(实际上有一整窝伟大的 AWS 构建者在自由活动,包括几个更多的 AWS 英雄——我们建议把他们都找出来。)即使在这样一个稀少的公司,Gillian 也因其对机器学习和人工智能的务实态度,她一贯的博客,以及她有益的 Twitter feed 而脱颖而出。

https://virtualgill.io/了解更多关于阿娇的信息

丹尼斯·鲍尔

推特: @allPowerde

AWS 的另一位英雄——实际上是第一位来自澳大利亚的数据英雄——Denis 将她在 AWS 的工作应用于医疗保健和基因组学领域的各种有趣问题——包括对新冠肺炎的研究。她的云原生生物信息学工作利用了无服务器、EC2 等等。如果你对处理 AWS 上的海量数据集感兴趣(或许,拯救世界),Denis 是一个不错的选择。

你可以在这里找到更多关于丹尼斯的作品:https://bioinformatics.csiro.au/

詹姆斯·贝斯维克

推特: @ jbesw

James Beswick 是 AWS 的一名主要开发人员,致力于开发无服务器应用程序。虽然我们不会在这些列表中列出大量的开发者拥护者,但是詹姆斯的工作太有价值了,不容错过。詹姆斯是一位云计算大师的定期撰稿人,他以亲自动手的无服务器深度潜水以及惊人的产出水平而闻名。从 Lambda 操作指南无服务器之地,他对构建和解释 AWS 无服务器应用的承诺是无与伦比的。

如果你不熟悉詹姆斯的作品,从这里开始:https://acloudguru.com/blog/author/james-beswick

大卫·博因

推特: @boyney123

David 是英国一名经验丰富的 AWS 开发人员和技术负责人。他吸引了我们的注意,因为他在 GitHub 上免费提供了出色的 AWS 工具和实用程序,如 EventBridge Atlasawstools.dev. 大卫经常在社交媒体上分享有用的云技巧和窍门——如果你从他的项目中受益,请确保关注他。

如果你不熟悉大卫的作品,从这里开始:https://www.boyney.io/projects

本·布里兹

推特: @benbridts

Ben 是位于荷兰的 Cloudar 的首席 AWS 技术专家。他也是 AWS 社区的英雄,理由很充分:他是 AWS Twitter 最活跃的实践开发者之一,提供了源源不断的小技巧、功能请求和对话话题。他是比利时 AWS 用户组的共同组织者,并经常在各种其他活动中发言。

如果你不熟悉本的作品,从这里开始:https://www.cloudar.be/author/bbridts/

马克·布鲁克

推特: @MarcJBrooker

这份名单上的建造者代表了一系列的经验,马克·布鲁克是其中最先进的。作为 AWS 的高级首席工程师,他为云计算领域一些最卓越的技术创新做出了贡献。对我们来说更好的是,他很有风度地发表了他的许多见解。我们不会说谎,他的一些学术出版物有点超出我们的理解范围,但是每一个实践云工程师都可以从他对亚马逊建设者图书馆的卓越贡献中学习。

如果你不熟悉马克的作品,从这里开始:https://brooker.co.za/blog/

Nader Dabit

推特: @dabit3

直到最近,Nader Dabit 还是 AWS 的一名开发人员,现在他已经转向加密初创公司 Edge and Node。但是他仍然用他标志性的对 GraphQL、Javascript 等的深入研究来祝福我们。纳德是另一个宣扬他们的实践的建筑师;他的教程通常不假设先验知识,但他将大量信息打包到每一个教程中。他还为一位云计算专家撰写了文章!

如果你不熟悉纳德的作品,从这里开始:https://dev.to/dabit3/

Jaana Dogan

推特: @rakyll

Jaana 是 AWS 的首席工程师,专注于监控和可观测性。你会经常发现她在 Twitter 上谈论开源监控解决方案。Jaana 开始了精彩的对话,并以经验以及对风景的远见卓识来支持她的建议。如果你在 AWS 做任何 DevOps-y,贾安娜多安是一个必须遵循的。

如果你不熟悉贾纳的作品,从这里开始:https://github.com/rakyll

我叫路克

推特: @donkersgood

Luc 是 Sentia 的 AWS 技术负责人;他还是 APN 大使和 AWS 社区建设者。他还获得了 12x AWS 认证(这可不是小成就!),但他远不只是好学。正如他频繁的博客所证明的那样,他亲自操作了从 DynamoDB 到 CDK 等流行的 AWS 工具和服务,并致力于分享他所学到的东西。

如果你是第一次接触卢克的作品,从这里开始:https://www.sentiatechblog.com/author/luc-van-donkersgoed

乔·艾米森

推特: @JoeEmison

Joe Emison 是一名连续创业者和后端开发人员,目前是 Branch Insurance 的技术联合创始人。众所周知,他对云服务和架构有着自己的见解,你可能不会同意他所说的一切——但你不能否认这是由艰苦的生产经验支持的。如果你是一名创业工程师,希望从实践中学习,而不是从理论中学习,那么没有比乔更好的选择了。

如果你不熟悉乔的工作,从这里开始:https://acloudguru.com/blog/author/joe-emison

里克·霍利汉

推特: @houlihan_rick

里克·霍利汉是亚马逊一些世界上最重要的生产 NoSQL 部署的背后——所以当他谈到 NoSQL 时,你最好听听。他以其超人气(和丰富的信息)re:Invent 演讲而闻名,并推广了 DynamoDB 单表设计的理念,他是 DynamoDB 上世界上最受尊敬的声音。(但要注意:你可能需要以 0.5 的速度回放那个声音,才能吸收他所有的智慧。)

这是最近一次由 Rick 参加的云专家活动:https://get . acloudguru . com/no SQL-for-grown ers-dynamo db-webinar

本·凯霍

推特: @ben11kehoe

iRobot 的云机器人研究科学家 Ben Kehoe 是 AWS 的长期英雄——但这可能低估了他对 AWS builder 社区的贡献。他对 AWS 最佳实践的清晰愿景、他代表机构群体对 AWS 的一贯支持、他深厚的技术知识以及他对机构群体问题的积极参与,使他成为 AWS 领域最值得信赖的声音之一。

如果你是本作品的新手,就从这里开始:https://a cloud . guru/series/server less conf-NYC-2019/view/YAML-better

克莱尔·利古里

推特:@克莱尔 _ 利古里

Clare Liguori 是 AWS Container Services 的首席软件工程师,专注于开发人员工具和经验。因此,她对 AWS 社区的许多最大贡献都来自 CI/CD 的容器邻近领域也就不足为奇了。她的 Amazon Builder 的库文章是关于 Amazon 部署过程的,她的开源贡献包括 Spinnaker、GitHub Actions 和 AWS CDK。此外,她是服务观看 AWS 质子演变的关键领导人。

如果你不熟悉克莱尔的作品,从这里开始:https://clareliguori.com

科姆·麦克阿瑟

推特: @colmmacc

传说中,如果你随机说“洗牌切牌”这个词几次,就会出现 Colm MacCárthaigh。作为 AWS 的副总裁/杰出的工程师,Colm 在社区中因其对 AWS 传奇分布式系统的内部工作的深入研究而闻名,从密码学到,是的,洗牌切分。向科尔姆这样杰出的工程师学习是一个非同寻常的机会,所以现在就帮自己一个忙,跟随他吧。

如果你不熟悉科尔姆的作品,从这里开始:https://shufflesharding.com

艾米·阿兰布洛·内格雷特

推特: @nerdypaws

Amy Arambulo Negrette 为包括 Yahoo!幻想体育和美国宇航局艾姆斯研究中心。她现在在 Duckbill Group 担任云经济学家,并在一系列云和 web 开发领域担任演讲者和开源贡献者,拥有十年的工程经验。如果你正在写代码,并把它装在容器里运到云端,艾米是你想倾听的声音。

如果你不熟悉艾米的工作,从这里开始:https://www.amy-codes.com/

泰莉 radichel

推特: @TeriRadichel

Teri Radichel 是第二视线实验室(2nd Sight Lab)的首席执行官,他将云计算和信息安全社区联系在一起,坚定不移地关注商业价值。她在写的关于云计算高管网络安全的书是必读之作(不管你的职位是什么),但她也经常通过博客和社交媒体分享她在 pentesting 和安全评估工作中获得的智慧。泰瑞成为 AWS 的英雄是有原因的——她知道自己在说什么。

泰瑞的新工作?从这里开始:https://acloudguru.com/blog/author/teri-radichel

斯蒂芬·塞尼特

推特: @ssennettau

Stephen Sennett 是一名云技术专家、内容创建者和演讲者。他拥有跨技术领域的高级证书,并且是一名 AWS 社区构建者和 Pluralsight 的高级内容架构师。他定期给 ACG 的博客投稿。

跟上斯蒂芬在 www.ssennett.net 的步伐。

贾里德·肖特

推特: @shortjared

Jared Short 是 Stedi 的 AWS 开发人员工具英雄和工程师,他每天都在 AWS 上进行构建,并经常分享他的经验。他还因其不同寻常的云学习技巧而闻名,比如每周从头到尾阅读 AWS 服务的文档。在任何一份无服务器构建者的名单上,Jared 都应该排在前面。

如果你是 Jared 工作的新手,从这里开始:https://acloudguru . com/blog/engineering/cloud formation-terraform-or-CDK-guide-to-IAC-on-AWS

阿里·斯皮特尔

推特: @ASpittel

Ali Spittel 在 AWS Amplify 领导开发人员宣传。她还共同主持了瓢虫技术播客和博客,比如云专家和我们学习代码。除了领导职责之外,Ali 还创造了非凡的技术深度,将 web 开发、无服务器等结合在一起。任何一个全栈云工程师现在都应该跟着阿里。

刚接触阿里的工作?潜入:https://acloudguru.com/blog/author/ali-spittel

珍妮·汤森

推特: @jt7d

作为 AWS Twitter 保守得最好的秘密之一,Jennine 并不寻求聚光灯——但她当然值得。Jennine 是一名职业系统管理员,拥有从 Archer Education 到 Rent.com 的丰富经验,他维护着一个活跃的 Twitter feed,其中充满了对 AWS 的深刻见解。如果每次打开 Twitter,你都想了解 AWS 的一些新知识,那么没有人比 Jennine 更好了。

尼克·特里安塔菲卢

推特: @xelfer

Nick Triantafillou 是一位云计算专家和 AWS 社区构建者的高级技术讲师,也是 Alexa 爱好者、云计算工程师和 Linux 系统管理员。作为本周 AWS 的常规主持人,你可以跟上他。

凯莎·威廉姆斯

推特:@ 凯沙维尔兹

除了担任云大师的首席培训架构师之外,凯莎·威廉姆斯是世界上唯一一个既是 AWS 机器学习英雄又是 Alexa 冠军的人。再加上丰富的企业软件开发经验,你就有了一个人人都应该效仿的 AWS 构建者。

kesha.tech 了解更多关于凯莎的信息,或者关注她最近的 #CloudGuruChallenge

马修·威尔逊

推特: @msw

Matthew S. Wilson 在 AWS 构建核心服务方面有着悠久的历史,他目前的职位是副总裁/杰出的工程师。今天,你会发现他在 Twitter 上很活跃,尤其是围绕 AWS 参与的各种开源项目。马修只是按字母顺序排在这个名单的最后,而不是根据他对社区的贡献;您会发现他乐于助人,对问题很有耐心,甚至会将支持请求传递给 AWS 团队!

如果你读到这里,仍然想知道是否真的值得关注这些人,考虑一下这个列表中有数百年的工程经验。这些人中的每一个人都表现出了在公开分享这一经历的同时致力于推进这一经历的决心。这是一个非同寻常的机会,我们建议您今天就抓住这个机会。跟着建筑商走。


跟随建造者

查看我们关注构建者系列的其余部分,了解更多必须关注的云构建者列表!

跟随构建者:2021 年要跟随的 21 个实践 Azure 构建者

原文:https://acloudguru.com/blog/engineering/follow-the-builders-21-hands-on-azure-builders-to-follow-in-2021

在有史以来第一次 ACG 社区峰会召开之前,我们表彰了一些优秀的云人士,他们的公开例子激励我们构建更好、更具包容性的云应用。

下面列出的人通过他们的工作对社区产生了巨大的影响,但社交媒体的“影响”并不是这个名单的主要考虑因素。相反,我们为云社区寻找积极的技术贡献者。

之前,我们重点关注了您应该关注的顶级 AWS 构建者。本周,我们将关注微软 Azure builders。准备好粉碎那些喜欢、订阅和关注按钮——这里有 21 个你应该在 2021 年关注的实际操作 Azure 构建者。


你是想开始你的 Azure 职业生涯还是想让你的技能更上一层楼?我们的 Azure 云架构师学习路径提供定制化的路径,帮助您超越云之旅!


莉娜霍尔

推特:@ Lena droid

Lena Hall 是微软 Azure 的工程总监,她专注于大规模分布式系统和现代架构。她在解决方案架构和软件工程方面拥有十年的经验,并在微软领导跨大数据服务的产品改进战略。她为一位云计算专家写过关于云数据共享模式的文章。

除了 Twitter ,你还可以在 LinkedInGitHub 上关注她。

他是波兰人

推特:@ AdiPolak

Adi Polak 是微软 Azure 工程组织的高级软件工程师和开发者倡导者。她专注于分布式系统、大数据分析和机器学习管道。她还是一名导师和志愿者,为代表性不足的技术社区工作。

她为一位云专家撰写了关于实时分析的文章,并且在 blog.adipolak.com 的 T2 写了关于数据、ML 和开源的博客。

特洛伊·亨特

推特:@ troy hunt

haveibeenpwned.com 的创造者 Troy Hunt 是一名澳大利亚微软地区总监,也是微软最有价值的开发者安全专家。他和一位云专家谈到是一名安全工程师CloudFlare ,如果云安全太容易搞砸

你可以在 troyhunt.com 关注他的博客。

大卫·奥布莱恩

推特:@大卫 _ 奥布赖恩

David O'Brien 是墨尔本的微软 Azure MVP,对云安全、自动化和架构感兴趣。他还是上下文云安全服务 ARGOS 的首席技术官和联合创始人。

在 cloud-right.com 查看大卫的博客。

有牛郎星

推特:@ hasal taiar

Has AlTaiar 是一名总部位于澳大利亚的开发人员,也是一名专注于数据、物联网和人工智能的顾问。他是微软 Azure MVP、演讲者、作者和全球人工智能委员会的董事会成员。

看看他在 Twitter的微软 MVP 页面上分享了什么。

索尼娅·卡夫

推特:@ SoniaCuff

Sonia Cuff 是微软的高级云倡导者。她是一名作家、演讲者、博客作者、播客、主持人和培训师,拥有 20 多年的技术经验,是世界各地 IT 运营和 IT 专业人士的拥护者。

她为 ACG 写了关于活动目录和活动广告的文章,她在 soniacuff.com 的 T2 写了博客,并在 ITOpsTalk.com 的 T4 和她的微软团队分享技术文章

阿尔瓦罗·维德拉

推特:@ old _ sound

Alvaro Videla 是微软的高级云开发者倡导者。他是《rabbit MQ in Action》的合著者,并为计算机协会撰稿。他也为 ACG 写文章,分享关于介绍 Azure 上的数据库在 Azure 上运行无服务器 PHP用 GitHub Codespaces 开发无服务器应用的帖子。

跟上阿尔瓦罗在alvaro-videla.comgithub.com/videlalvaro

克里斯蒂安·恩万巴

推特:@ code beast

Christian Nwamba 是微软的一名软件开发人员和高级开发人员倡导者。他编码、写作、教学、演讲和组织开发者活动。他帮助建立和发展了一些社区,比如非洲之路、、[角尼日尼亚]、[连接会议]、me . io和 front stack . io。他写过关于如何用 VS 代码为 ACG 创建、调试和部署无服务器 API 的文章。

在 codebeast.dev 上关注来自 Christian 的最新消息。

新美乐股份公司·科廷

推特: @Simona_Cotin

新美乐股份公司·科廷是微软的首席云计算倡导者,他热衷于云计算和 JavaScript 的教学。她在像 Women Who Code、ngGirls 和 codebar 这样的社区提供指导。

GitHubTwitter 上关注新美乐股份公司。

Nitya Narasimhan

推特:@ nitya+@ SketchTheDocs

作为一名视觉说书人,Nitya Narasimhan 通过她的插图使复杂的概念变得易于理解和保留。她是微软开发者关系团队的高级云倡导者,并为 ACG 制作了一个关于 Azure 基础知识的视觉介绍。

推特和【sketchthedocs.dev/visual-azure】T2 上关注 Nitya 的工作。

莱默斯蓝绿藻

推特:@ glau CIA _ lemos 86

格劳基亚·莱默斯是微软的 JavaScript/Node & TypeScript 的巴西云倡导者。她是 GitHub 和 T2 node . js Foundation 和 T4 React 社区开源项目的积极贡献者。她写过关于如何用 Azure 函数和 MongoDB 为 ACG 创建 CRUD 应用程序的文章。

更多格劳基亚的信息,请关注她的博客和 T2 的 YouTube 频道。

茉莉·格林纳韦

推特:@帕拉迪克

Jasmine Greenaway 是微软驻纽约的开发人员和云倡导者。通过文字和代码,她用 Azure 展示了开发人员可以利用云做的了不起的事情。她在纽约市担任兼职讲师,教授 web 开发的基础知识,她还写过关于 5 服务的文章。不熟悉 Azure 的网络专业人士应该尝试一下 ACG 的

GitHubTwitterLinkedIn 上关注 Jasmine。

斯科特·汉瑟曼

推特:@山塞尔曼

Scott Hanselman 是世界上最受喜爱(和追随)的开发人员之一,他是一名教师、演讲者、程序员和博客作者。他是《Hanselminutes》播客和这位开发者的生活背后的播客,也是一位活跃的 YouTuber 。他和 ACG 聊了聊将 17 年的基础设施迁移到 Azure 的事情以及开源的影响

了解斯科特在 hanselman.com 的精彩表现。

布伦特·奥扎尔

推特:@布伦托

Brent Ozar 是微软认证的硕士、教师和 SQL Server 向导,致力于使 SQL Server 更快、更可靠。他是一个多产的博客写手和优步用户,他和我们讨论了 SQL Server 的未来。

跟上布伦特在brentozar.com的工作进度。

四月之夜

推特:@ vogueandcode

April Speight 是微软空间计算技术团队的高级云倡导者。她是《一口大小的 Python:Python 编程简介 的作者,并在帮助他人学习和过渡到科技行业的职业生涯中找到了激情。

在 vogueandcode.com 了解更多关于四月的信息。她也在 YouTubeGitHub 上。

马克·潜水员

推特:@ Marc duiker

Marc Duiker 是微软 Azure MVP、pixel 艺术家和 Xpirit 的首席顾问,专注于无服务器和事件驱动架构。他积极参与开发人员社区,并且经常在与 Azure 云和无服务器技术相关的聚会和会议上发言。

关注马克的博客或他在 T2 的微软 MVP 页面上的最新活动。

詹妮尔·克罗瑟斯

推特:@ jkc 137

Jennelle Crothers 是微软的 MVP 和系统工程师,对计算机网络和服务器管理充满热情。通过她在微软的角色,她专注于分享微软技术的新功能,并帮助客户成功使用云。

关注詹妮尔的博客,techbunny.com

史蒂夫·福克纳

推特:@ south pole Steve

Steve Faulkner 是微软 Azure Cosmos DB 的首席工程经理,他是一名开源开发人员,前初创公司创始人,曾经是南极物理研究员。他在 ACG 的博客上谈到了无服务器。

除了 Twitter ,你还可以在 GitHubLinkedIn 上与史蒂夫联系。

杰夫·霍兰德

推特:@ jeffhollan

Jeff Holan 是 Azure Apps 的产品总监。在 ACG,他是一个熟悉的面孔,他和我们谈论了 Azure 的功能、Azure 无服务器的状态以及在 Azure 上构建云原生应用的 T4。

hollan.io 查看杰夫的近况。

琳达·尼科尔斯

推特: @lynnaloo

Linda Nichols 是一名云原生和无服务器专家,热衷于社区参与和开源。她是 Norfolk . js 的组织者和联合创始人,在server less conf发表过演讲,并且是非营利组织revolution va的董事会成员和联合创始人,参与了 RevolutionConf、HRDevFest 和 NorfolkNodeBots Day

琳达在 https://github.com/lynnaloo 的 GitHub 上。

拉斯·克林

推特:@ LarsKlint

ACG 的常驻 Azure 极客 Lars Klint 是一名作家、培训师、微软 MVP 和社区领袖,他在云中制作一些最令人愉快的内容。他主持了 Azure Community Live 和 ACG 的 Azure This Week ,他还是【llamacam.com.au】的的创作者。Lars 也是我们的 AZ-900 Microsoft Azure 基础知识课程的负责人,并且是 A Cloud Guru 博客YouTube 频道的定期撰稿人,在那里他涵盖了从挑选你的 Azure 认证路径如何成为云架构师的所有内容。

在 larsklint.com 了解最新的事情。


上面的列表代表了数百年的工程经验。这些人中的每一个人都表现出了在公开分享这一经历的同时致力于推进这一经历的决心。这是一个非同寻常的机会,我们建议您今天就抓住这个机会。跟着建筑商走!

下一次,我们将分享我们的顶级 DevOps 构建者名单。在此期间,你还关注哪些杰出的 Azure 建设者?在 Twitter 上标记它们,这样其他人也可以找到它们!

Azure 政府云:必须知道的四件事

原文:https://acloudguru.com/blog/business/four-essential-things-about-azure-government-cloud

什么是蔚蓝政府?

当我告诉人们我已经建立了一个专注于 Azure Government 的云课程时,我得到了两种常见的回应。在第一种情况下,在我说完“受控、非机密数据”这句话之前,先前有意识和警觉的个人突然打瞌睡。

第二个是明确的信念,即这只是“香草”Azure 的一个营销角度。你知道,蓝色代表政府,蓝色代表医疗保健,蓝色代表气球艺术家,对吗?

第一个反应也许是有根据的。大多数第一个回复的人都有真正的需求想知道 Azure Government 是什么,所以在短暂的小睡之后,他们通常会带着新的兴趣回到对话中。

然而,第二种回应是基于一种误解。说到 Azure Government,我们谈论 Azure 并不是为了某个特定的目的。我们正在谈论一个完全不同的云平台,称为“Azure 政府”


转变职业,转变组织

知识就是力量。是时候爬上职业阶梯,在 AWS、微软 Azure、谷歌云等领域的实践实验室中进行严格的学习了。


蓝色政府的四个 w

让我们看看我能否通过回答四个问题来为你总结一下。为了避免这篇文章变成助眠剂,我会保持简短——然后你可以决定你是否想继续你的探索,了解更多关于 Azure Government 的知识(我保证这是非常值得的)!


1.是什么让 Azure Government 与众不同?

Azure Government 是 微软美国主权云 的一部分,构建在物理上和逻辑上都分离的完全隔离的环境中。除了 Azure,Office 365 和 Dynamics 365 也可以在美国主权云中托管服务。顾名思义,美国主权云中的所有服务都包含在一个认证边界内,该边界要求筛选美国人和美国大陆内的数据主权。

政府产品–Azure vs AWS vs GCP

AWS 和 GCP 也有针对政府的产品。但 Azure 的方法与 AWS 和 GCP 的产品明显不同。目前,无论是 AWS 还是 GCP 都没有选择自主云之路。与 Azure Government 类似,AWS 和 GCP 宣传额外的物理安全措施。但与 Azure Government 不同,他们声称与全球云平台隔离的数据中心就足够了。


如果你有兴趣深入研究其他云提供商提供的政府专用产品,请探索我们的AWS gov cloud:Beyond the buzz words课程。


蔚蓝政府 vs 全球蔚蓝

Azure Government 建立在与 global Azure 完全相同的技术上,但它是一个完全独立的云平台。以下是 Azure Government 与 global Azure 的一些不同之处:

Azure Government 有几个地区或数据中心位置,都位于美国。这与 global Azure 中的几十个全球范围的区域形成了对比。

有几个国防部特定区域和“未公布”区域,为处理机密数据的组织提供服务。

Azure Government 中的数据中心有额外的物理安全性,管理和支持 Azure Government 的微软人员要经过额外的筛选过程。

蔚蓝政府机密和蔚蓝政府绝密

在 Azure Government 内部,有两种产品,称为 Azure Government Secret 和 Azure Government Top Secret,但公开提供的对该基础架构的描述是模糊的(可以理解)。

Azure Government 包含了很多 Azure 特性,但是为了覆盖更多的合规范围,并没有包含所有 Azure 资源。你很少会在 Azure Government 的预览版中看到资源,但是,每隔一段时间,一个服务或功能会在 Azure Government 中可用,然后才在 global Azure 中可用。

要了解按地区(包括 Azure Government)划分的可用服务,请查看按地区划分的 Azure 产品资源。确保使用区域下拉列表并选择“非区域”、“Azure Government”以将这些区域包括在您的搜索结果中,并勾选“保留访问区域”选项选择“美国”作为与 Azure Government 最相关的服务可用性对比。

Azure 政府和多租户

就像几乎所有的云平台一样,Azure Government 是多租户的。也就是说,多个客户可以共享相同的硬件。然而,在 Azure Government 中,可能是数字邻居的客户都必须是公共部门组织。


2.谁可以使用 Azure Government?

Azure 政府订阅仅适用于美国公共部门的组织或其指定的服务提供商。

这些公共部门类别包括联邦政府、国防部、英特尔社区、市政当局、部落政府、司法和公共安全以及电力和公用事业。

微软对这个要求非常严格,我甚至无法获得 Azure 政府订阅来制作我们的 Azure 政府介绍课程!(幸运的是,出于培训和试验的目的,这两个门户中的所有功能看起来和行为都与 global Azure 非常相似。)


3.为什么使用 Azure Government 而不是 global Azure——反之亦然?

如果您的组织在公共部门安全和隐私标准方面的法规遵从性要求相对较低;或者你的绝大多数服务和内容都是面向公众消费的,你应该考虑 global Azure 而不是 Azure Government。

Azure 政府服务集

global Azure 中有更多的服务,这本身就是一个令人信服的理由。但是,Azure Government 中的一些服务有一些 global Azure 中没有的差异和限制,如 Azure Government 和 global Azure 中的服务的比较中记录的那样当然,没有什么可以阻止您的组织订阅 Global Azure 和 Azure Government 云!

Azure 政府合规标准

通常,合规性标准将决定你应该采用哪种云,以及你何时应该使用 Azure Government Secret 或 Azure Government Top Secret 产品。微软维护这个Azure Government Services by Audit Scope文档,它告诉你什么时候应该使用什么。

不管服务集和审计范围如何,有时您的决策就像您需要存储和管理的数据类型一样简单。这张文氏图说明了一切:


4.Azure Government 在混合和云计算架构中处于什么位置?

通常,当您将传统网络与云平台相结合时,这被视为混合云部署。但是,同样,如果你在不止一个微软产品中拥有云资源,比如 global Azure 和 Azure Government,这被认为是一个“混合”选择。当您将来自微软和亚马逊等多家供应商的云平台产品组合在一起时,这被认为是多重云。

如果这开始变得令人困惑,不要惊慌。幸运的是,许多公共部门组织发现他们可以采取“以上所有”的方法。你可能已经在 AWS 或 GCP 有了业务,或者你决定在云提供商之间进行多元化发展。如果是这样的话,Azure Government 与 AWS 或 GCP 政府产品相结合,可能会提供一个合理的多云机会。

想了解更多关于 Azure Government 的信息吗?在我的课程 蔚蓝政府介绍中,你可以在历史悠久的 66 号公路上进行一次虚拟的公路旅行。


公共部门采用云面临着一系列挑战。但是也有巨大的机会。在这份深入的白皮书中,克里斯·休斯专业地阐述了公共部门采用云的挑战、机遇和潜力。

从学生到工程师:如何为云专家更明智地学习

原文:https://acloudguru.com/blog/engineering/from-student-to-engineer-how-to-study-smarter-for-cloud-certs

开始开发云技能并找到你的第一份云工作可能会感觉势不可挡。我最近在一个关于需要多少认证才能获得云工作的帖子中看到了下面的漫画。这让我开始反思自己在云计算中获得角色的经历,以及学习认证如何帮助我实现这一目标。

你需要学习多长时间才能获得认证?

无论你准备的是 AWS、Google Cloud 还是 Azure 认证,一个常见的问题是“我需要学习多长时间?”

您的里程在这里会有所不同。这将取决于你对那片云有多熟悉。准备几乎所有认证的关键是理解——死记硬背是不行的。

我花了很长时间学习我的第一个认证,AWS 认证开发人员助理。我准备了五个月,几乎每天至少学习两个小时。


Cloud Adventure

云迁移:角色扮演游戏 成功的云迁移活动需要策略、知识和一点即兴表演——有点像龙与地下城&的游戏。加入这个独特的角色扮演练习,让专家小组成员通过真实的云迁移场景进行游戏。


获得您的第一份云计算工作

通过 AWS 认证考试几个月后,我开始寻找能让我接触到云的角色。我最终在一个使用微软 Azure 的地方找到了一份系统管理员的工作。

随着时间的推移,我会想办法接触一些更有经验的工程师会处理的云任务。我还会经常和我的经理谈论那一周我读到或了解到的与云相关的事情。由于我的坚持,当然还有从学习中获得的知识,我的经理愿意让我承担更大、更实质性的 Azure 任务,这让我晋升为云工程师!

直到最近我通过了 LPI Linux 基础认证,我才觉得有必要再考一个认证。为此进行的学习教会了我几个新命令,让我亲身体验了 Bash 和脚本,并让我接触到了 Linux 和开源的奇妙世界。(有兴趣了解更多关于 Linux 和开源运动的基础知识吗?查看本月的免费课程列表,其中包括我们的 Linux 基础课程。)

说了这么多,我为你收集了一些建议,帮助你充分利用学习时间(并确保你在云职业生涯的另一方面付出的努力得到双倍回报)。

1.带上你的学习材料,安排一次试驾

都会以不同的方式学习。有些人喜欢视频,有些人喜欢音频,有些人喜欢文本,有些人(我自己)需要所有的混合。

唯一能明白你需要什么的人就是你自己。这是一件很难做到的事情——但是接受它。一旦你找到了完美的混合物,学习就变得简单了。

这对于你制定理想的学习计划也很重要。我们都知道临时抱佛脚不起作用,只会让我们在考试前一天晚上痛苦不堪。那么什么是可靠的替代方案呢?

首先,试用你的学习材料。拿起一门课程,一本书,或者随便什么,浏览一下它的内容。这也有助于你对将要学习的内容有一个大致的了解。观看一个模块或阅读一章,这样你就能对教学风格有所了解。问问你自己感觉如何,你是否认为你会从整个事情中受益。

既然你已经找到了一些你喜欢的材料,那么什么时候才是坐下来学习的最佳时间呢?这里有许多变量,但有一些指导原则:

  • 什么时候可以有自己不受打扰的时间?(为此你可能不得不减少另一项活动。)

  • 如果这对你现在的工作有好处,考虑和你的经理协商一些时间来学习。

  • 也许你没有太多的时间,但是你可以把它分成几个时间段。这是我最近一直在实施的。我在早上做两次练习,主要是阅读和观看材料,在晚上下班后做两次练习,动手写下早上所读内容的笔记。这样安排学习时间还有一个额外的好处。请查看芭芭拉·奥克利在的演讲。

如果对你的朋友或同事有用的东西对你没用,不要气馁或害怕。最终,这是一个反复试验的过程,但是值得一试。


Tips for Learning Online

如果您想要更多云认证考试学习技巧,我们有:


2.不要像网飞秀一样消耗你的学习材料

好的,我们找到了对我们有用的学习材料,我们有时间学习了。如何物尽其用?简单。不要像看网飞的节目一样使用你的学习材料。不暴饮暴食。没有半分注意。把你的手机拿开。在这里,我们都是专注和主动的学习。

这里有一个清单,可以让你从一堂课中获得最大的收获:

  1. 仔细看,记下你不理解的术语或概念。

  2. 查找你不懂的术语/概念。我强烈建议您首先查阅官方文档。为什么?学习阅读文档是云职业生涯的一大优势。对任何从事技术工作的人来说,这都是一项至关重要的技能。

  3. 再次观看视频,现在对你不知道的术语有了新的理解。在这一点上,事情会开始变得更好。很神奇的感觉!

  4. 如果视频有某种形式的演示,动手吧!为了你自己。如果是某种代码,把它打出来(不要只是复制粘贴)并运行它。如果是某种云服务,就在自己的环境中部署。只是不要在完成后不小心让资源运行。(设置一些账单和预算提醒在这里会有所帮助。或者,通过——无耻的插件——使用 ACG 很酷的云沙盒服务,避免任何累积意外账单的机会。)

  5. 写下你刚刚复习的内容。这有助于你把事情记住,并给你一些参考资料,以后用你自己的语言写出来。

  6. 额外步骤:在网上综合你的学习:你可以不做这一步,但我强烈推荐。我是说你已经在做笔记了。把它们变成一篇博文或 YouTube 视频。解释你学到了什么。你甚至可以把动手的部分拿出来,构建出来,放到 GitHub 上。你将获得分享知识和建立投资组合的额外好处。


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数百万份回复,找出了最容易让学习者出错的术语和概念。在这个云指南中,你会发现一些最令人头疼的云术语的简洁定义。


3.别理那些 LinkedIn 的帖子!

现在你可能会想,“哦,天哪。如果我每节课都要做这些,那我要花很长时间才能完成!”嗯,我说我会给你一些如何充分利用你的学习的建议,而不是如何更快地完成它。虽然听起来很老套,但缓慢而稳定会赢得比赛,对吗?

当 LinkedIn 上的每个帖子都在展示他们最近通过的考试时,你很难避免感觉自己落后了。但是想一想:你是愿意花时间学好一件事,还是愿意快速学完一件事——不要保留太多——只是为了继续下一件事?这里的游戏是长期的。

还有,我们不只是在这里学习。在我们学完每一课之后,我们还有:

  1. 阅读文档。
  2. 拿到手了。
  3. 已创建笔记。
  4. 甚至可能创建了博客帖子、视频和/或 GitHub 项目。(在 Discord 上的#i-made-this 频道与我们分享这些)

这是一个很大的额外好处,值得额外的时间。

一旦你觉得准备好参加你的认证考试,你有几个如何参加考试的选择。基本上所有的云认证考试现在都可以在线进行

我需要多少云认证?

这里我想说的另一点是,你真的不需要那么多认证!我在这里是根据经验来说的。在成为云工程师之前,我只有一个,现在我只有在完全陌生的时候才会去找它们。

问题就变成了:我需要多少认证才能获得云工作?很高兴你问了!点击此处阅读更多内容。

我有证书!现在怎么办?

嗯,先休息一下。我是认真的。冷静下来,看一些你为了学习不得不放弃的节目,度周末,和家人在一起——无论你需要什么。

在技术领域,我们有这种不停学习的习惯(不确定是好是坏,但这超出了本文的范围)。如果你不给自己一些放松的时间,你会累垮的。这对任何人都没有好处。

“下一步是什么”是一个很难回答的问题,但我会给你一些帮助我的指导方针:

  • 你在工作中有什么需要学习的吗?

  • 对你必须完成的工作有什么要求吗?

  • 在你之前的学习中,有什么让你印象深刻的事情吗?

  • 有你感兴趣的东西吗?

我在这里想说的是,答案不一定是“另一个认证”聪明点,尊重自己的时间和大脑。不要陷入认证竞赛或者教程地狱

让我们庆祝并帮助你!

伴随着休息而来的是庆祝你的成就。如果你刚刚通过了考试,那么恭喜你!请跳到 Discord 的#yay 频道让我们知道。我们喜欢和你一起庆祝,并承诺给你提供表情符号和 gif。

祝你在学习旅途中好运。拥抱把它变成你自己的,因为好处只给你,你猜对了,你自己。

请允许我补充一句,我们有相当多的课程提供给云专家。从认证到一次性课程、新闻节目、超短教程等等!(我已经盯上了这个 Python 的系统管理员课程!)

查看 ACG 目前的免费课程名单或开始参加 T2 的免费课程试用。

云冒险:5 个有趣的免费云计算课程

原文:https://acloudguru.com/blog/engineering/fun-free-cloud-adventures-courses

云冒险不是你一般的云计算培训。这些课程将学习科学与积极参与结合起来,帮助您掌握云技术。

我们希望您在学习最新的云技术和应用的同时也能获得乐趣。因此,为了保持生动和新鲜,我们正在帮助您以尽可能最好的方式学习云(包括使用如下漫画!).

5 门免费云探险课程

我们正在将云计算带入生活。参加云冒险课程意味着你将观看动画来了解 Amazon Polly,阅读关于 Microsoft Azure 的漫画,甚至去寻宝——所有这些都是在你获得将在工作中使用的实用知识的同时!

在本文中,我们将介绍每一门云冒险课程。当然,我们包括了我们的 5 个免费(是的,完全免费!)您可以参加的课程,开始探索云冒险并提升您的云技能。

亚马逊 Polly 简介

通过了解亚马逊 Polly 开始你的冒险,这是一项真正面向机器学习大师的创新技术。

与作者 Jess Alvarez 一起近距离接触亚马逊 Polly 服务。本课程包括令人惊叹的动画,将帮助您了解 Amazon Polly 的文本到语音(TTS)服务,了解如何使用它,并在真实的使用案例中演示其功能。

作为对电影爱好者的奖励,你的培训将包括观看亚马逊 Polly 配置为从博客页面阅读尼古拉斯·凯奇的电影评论。毕竟,如果你不能从中获得一点乐趣,为什么还要提升机器学习的水平呢?

在 Microsoft Azure 中使用 CLI 部署基础架构

想对命令行部署感到兴奋吗?好吧,别再找了。Mike Boorman 将漫画带入生活,帮助您了解 Microsoft Azure 中的新部署策略。本课程以漫画形式展示了“本月最佳部署者”在不同基础设施部署中的表现。

本课程概述旨在提供概述,既可作为入门知识,也可立即转化为实践。通过四次动手实验,您将学会如何轻松地导航 Azure 图形用户界面来满足客户的要求。

使用云运行启动和更新网站

准备好深入研究基于云服务的托管网站。作为该技术的一种非常常见和流行的使用,Cloud Run 可以帮助您更轻松、更快速地进行开发和部署。

您将一步一步地学习,从最初在 GCP 上测试您的网站,到使用云构建创建容器化的映像,将其存储在容器注册表中,并将其部署到云运行。

本课程不采用边做边学的方法,每节课都配有实验,为您提供刚刚涵盖的主题的在职知识。最终,一个全面的动手实验以指导和挑战两种模式提供,在一个稍微复杂一些的场景中包含了所有过去的培训。

Azure Data Studio 探索者指南

如果没有 Azure Data Studio,这个免费课程列表将是不完整的! Azure 已经成为许多组织的主要产品,这意味着现在是了解 Azure 可以为您和您的团队提供的诸多好处的最佳时机。

加入艾米·库格林和丹妮尔·凡西亚对 Azure Data Studio (ADS)的探索。这门课程是沉浸式的,主题性的。您将获得使用该工具以及连接到各种数据源(包括本地和基于云的数据源)的经验。

数据讲故事是技术领域最受欢迎的技能之一,这意味着学习如何使用广告的独特功能来可视化和共享数据将会带来巨大的好处!

另外,你将通过 A+讲故事来学习所有这些技能。通过生动的叙述、生动的视觉效果和背景音乐,我们保证您会感觉像一个真正的探险家!

在翻译中找到:亚马逊翻译简介

加入印第安纳·琼斯、内森·德雷克和劳拉·克罗夫特的行列,成为一名认证的寻宝者。与作者伊丽莎白·霍德和朋友马普·E 一起,你将使用亚马逊翻译来翻译一张多语言的藏宝图。在这次冒险结束时,您将能够使用快速翻译技术帮助更多人以更多语言阅读您的内容。多酷啊。

更好的是,本课程与我们的其他几个云专家课程相结合,包括亚马逊 Polly 简介。你可以选择两门课程(按照你喜欢的顺序)来加倍乐趣!

学习云计算最好的方法是什么?

  • 动手学习
  • 一口大小的内容
  • 吸引讲师和演示
  • 适用于在职情况

这就是为什么我们的云冒险服务不仅仅是普通的培训,而是一种学习体验。一位云专家在我们策划的云冒险课程选项中结合了这些学习方法。这意味着学习云从未如此简单!还是这个好玩!

更好的是,这些课程是为在职云从业者设计的。通过微观或“小范围学习”的经历,这些课程让你享受到学习新知识的乐趣,你会在日常生活中用到这些知识。Cloud Adventures 将带您踏上掌握 AWS、Azure、Linux 等新技能的旅程!

还有哪些好的在线云计算课程?

喜欢我们的免费云冒险服务吗?通过完整的云冒险课程,您可以将您的云学习提升到一个新的水平。20 多门课程和超过 30 个小时的学习,每个人都有适合自己的东西。

如果你是一个目标是成为 AWS 云认证的新人,这可以是你认证旅程的开始。如果您正在开发成功的云计算战略,这些课程是增长知识的绝佳场所。或者,也许你是一名专业人士,希望缩小行业技能差距,我们也为你提供服务!

如果你准备好开始享受乐趣,你可以在这里注册一个免费的 ACG 账户****(只需不到一分钟!),或者用一个** 免费 7 天试用 获得完整的 A 云宗师体验。**

这是《云历险记》目前的学习行程【最后更新于 11/16/22】。从这个课程列表中,你可以策划你自己的云学习体验。

AWS

用 AWS 故障注入模拟器动手操作混沌工程

Faye Ellis 教授如何使用 AWS 故障注入模拟器在您的 AWS 环境中运行混沌工程实验!动手+乱?!从来没有比这更令人兴奋的组合了!注意:在这个场景中,你的老板是一只狗(这是一个 ruff gig)。

用 AWS 安全中枢动手安全

AWS 安全中心简介,重点介绍安全发现。这些发现提供了对一个 AWS 帐户或多个帐户的当前安全状况的见解。通过威胁模拟练习,本课程让您通过深入的实验甚至短剧,以互动的方式了解并提高您的安全性!

使用 AWS CDK 部署应用程序

如果您正在寻找构建无服务器应用程序并与之交互的新方法,请不要犹豫!

您将学习使用 AWS CDK 部署基本的无服务器应用程序,这是一个开源的基础设施即代码(IaC)框架。本课程始终充满挑战,因此您能够快速轻松地掌握新技能。

利用实例调度程序降低 AWS 成本

通过本课程了解实例调度程序的架构。您将了解如何应用三种不同的方法来削减成本和标记资源——在 DynamoDB 中手动、通过 Scheduler CLI 和使用 SSM 维护窗口。

在自动气象站上展开云系部署

本课程将帮助您掌握构建自己的云信息模板或修改现有模板以包含适合您环境的参数所需的技能和知识。通过构建一个多层次游戏的例子,Chris Silva 通过一个有趣的 CloudFormation 案例指导学习者。

了解 AWS EC2 和 GCP GCE 的区别

在本课程中,您将简要了解 AWS EC2 和 Google Compute Engine 的对比。通过两次动手实验的全面实践,您将为部署做好准备

以及使用 AWS 和 GCP 自动扩展组。

将 DevSecOps 应用于 AWS 网络应用

想要提升 AWS web 应用的安全性吗?本课程将为您提供确保安全的方法和实践!您将获得识别问题和编写安全代码的练习,以便在日常实践中使用。

亚马逊技术培训主题

从现场 PostgreSQL 迁移到亚马逊极光

在从现场 PostgreSQL 迁移到 Amazon Aurora 的课程中,您将加入 Steady Shelly the turtle 和 quick-Up Hank the hare,学习如何将现场 PostgreSQL 数据库迁移到 Amazon Aurora 云数据库。

在亚马逊 EC2 上配置 OpenVPN

在这个课程中,马修·皮尔森向你展示了如何在亚马逊的 EC2 服务上安装和配置 OpenVPN。在客户机和服务器之间建立信任关系很重要,但也不一定很无聊!在巧妙的服装变化和简洁的学习大纲之间,本课程一定会吸引你的注意力!

蔚蓝色

用 Ansible 管理 Azure 资源

本课程教你如何配置 Ansible 来管理 Azure 资源,以及如何为 Azure 创作 Ansible 剧本。这个课程是为那些拥有 Azure 和 Ansible 实际操作经验的人设计的,他们希望了解 Ansible 如何与 Azure 一起使用。我们最喜欢的部分?über 视觉思维导图将帮助您从头到尾分解技术细节。

使用 Azure 容器实例部署 Minetest 服务器

花点时间了解一下容器、Docker 和 Azure 容器实例。然后准备使用 Azure 容器实例部署一个简单的游戏服务器。在本课程中,您将使用 Minetest,但是您可以应用这些知识来部署几乎任何您选择的游戏服务器!

使用 Azure 基础架构即服务(Iaas)进行实际网络故障排除——密室冒险

如果你曾经做过密室逃脱活动,那么你应该知道密室逃脱是为了解决问题(或者用技术术语来说,“排除故障”)。完成本课程后,您将具备解决现实世界中的 Azure 网络问题和逃出虚拟密室所需的 Azure IaaS 网络故障排除技能!

使用 Azure 应用服务环境保护您的应用

这个课程是为安全忍者准备的!通过一个诡秘的忍者主题和一个测验来测试你的知识,这个课程将帮助你获得你需要的知识,以帮助保护和隔离你在 Azure 中托管的应用程序。

自动化 Azure 文件共享的生命周期管理

在本课程《Azure 文件共享的自动化生命周期管理》中,您将学习为 Azure 文件定制开发自动化。首先,您将探索如何挂载 Azure 文件。接下来,您将了解如何利用 Azure Automation,最后,您将了解如何将这两种技术结合起来进行定制云开发。学完本课程后,你将具备实施定制云开发所需的 Azure 文件和自动化的技能和知识。

排查 Azure 数据工厂——失败的实验

在本课程中,排除 Azure 数据工厂故障-失败的实验,您将学习在 Azure 中构建数据管道。本课程被称为“失败的实验”,因为你将通过纠正一些最常见的错误来学习构建管道。通过失败的实验学习管道,你会更好地理解数据管道是如何工作的,如何纠正常见错误,最重要的是,如何避免它们,你自己。

如何保障 Azure AI 服务

如果你曾经想知道人工智能服务的安全性或安全性,或者想,“嘿,我想了解更多,”那么你就来对地方了。在本课程中,您将通过配置网络访问、保护凭据和学习几个安全最佳实践来实际操作如何保护 Azure AI 认知服务。这是一个循序渐进的课程,非常适合拥有大约六个月 Azure 经验的学习者!

Linux

Linux 发行版对比

动画。颜色编码。企鹅。我们还需要多说这门课有多有趣吗?这个课程会给你介绍 Linux,而不会让你感到不知所措。有了引导式教学,您将能够通过一系列动手实验实践您所学到的知识,并测试您使用各种 Linux 发行版的技能

用 Linux 和灰名单控制垃圾邮件

如果有一件事我们都希望自己做得更好,那就是保护我们的收件箱。电子邮件灰名单是一种减少垃圾邮件数量的方法。它的工作原理是稍微延迟收到的电子邮件,并迫使发件人重新发送电子邮件。本课程是一个实际应用,你的整个团队都可以使用和欣赏!

地形

为多云使用创建地形配置

你会觉得你是在一个 8 位主题的视频游戏中。当然,您实际上必须使用 Terraform 配置将相同类型的资源部署到两个不同的云环境中(单独或同时)。本课程可能是您制定成功的云计算战略的下一步!

Kubernetes

Kubernetes中的水平 Pod 自动缩放

准备好以前所未有的方式进行部署!您将了解如何使用 Kubernetes 来自动缩放数量,从而提高工作流程的效率,让开发团队更加快乐!

Vim

高级 Vim 定制

完成本课程后,您将具备 Vim 向导的技能和知识,随时准备开发任何类型的代码,而无需退出臭名昭著的文本编辑器。

SDS

根据预算设置软件定义的存储(SDS)

成功地坚持预算是每个人都可以支持的前提。随着应用程序收集和存储越来越多的数据,管理本地存储变得非常麻烦也就不足为奇了。在本课程中,我们将探讨如何创建您自己的软件定义的存储(SDS ),而无需在软件上花费大量资金。

选择云计算之旅的下一步

云计算中总是有新的东西需要学习。有了五门全新的交互式免费课程,这是开始学习云冒险的最佳时机。在此 注册 您的免费 ACG 账户,开始学习吧!

通过注册一个 免费试用来访问 ACG 的全部内容库 ,你有丰富的选择。从完善你的谷歌云知识到成为 Ansible 或 Terraform 的专家,前途无量。

G2 将云专家列为 2021 年增长最快的产品

原文:https://acloudguru.com/blog/news/g2-ranks-a-cloud-guru-among-fastest-growing-products-for-2021

我们云专家的使命是向世界传授云技术,确保每个人都能获得工具,帮助他们精通塑造我们未来的技术。我们致力于为任何希望“无所不知”以实现更光明未来的人提供机会,并且我们正在让组织更容易可持续地投资于他们的员工,这是他们拥有的最宝贵的资产。

为了完成这一使命,我们必须提供世界上最有效、最全面、最实用的云教育平台。这是一个沉重的责任,我们在这里都非常认真。这就是为什么我们非常荣幸地宣布,我们被 G2 评为 2021 年增长最快的产品。这意味着我们正在以前所未有的速度和包容性提供改变人们生活的教育机会。

G2 是一个全球性的商业解决方案评论网站,其所有列表都是根据云专家用户的评论整理的。这使得这一点特别令人兴奋——它不是基于我们自己的数据,而是基于我们的客户对我们提供的价值的宣传。

虽然我们很自豪能够与 Zoom、Slack 和 Paylocity 等公司一起上榜,但我们也希望借此机会展望未来。我们的产品可能在快速增长,但是我们到底在增长什么呢?

很明显,技术教育的面貌正在改变,我们正在用清晰的学习方法推动这种转变。不是认证,不是通过枯燥的课程培训,不是一年学一次。这是一个现实世界中的,实用的方法,在你工作的最紧迫的机会中不断成长和提高技能。

当然,我们将继续履行我们的承诺,让技术教育变得有趣,并与世界各地最好的教师合作。

技术的未来看起来不一样。它更包容,更多样,更开放,更多云。我们是为此而来的。

《权力的游戏》对《云》

原文:https://acloudguru.com/blog/engineering/game-of-thrones-vs-the-cloud

《权力的游戏》回来了!时隔近两年,这部热播剧在周日晚上回归了第八季,也是最后一季,我们迫不及待地想看看它会如何发展。

谁来阻止夜王?谁会最终登上铁王座?哪些心爱的角色会变成冰僵尸?Clegane Bowl 最终会发生吗?我们还会看到热馅饼吗?

是的,我们是七大王国的吸盘。如果是的话,我们认为我们的云专家可能也是。所以我们昨晚看了一下我们的平台活动,看看当人们暂停学习观看第一季首播时,是否有任何明显的下降。

Dip 似乎是轻描淡写。

城墙和悬崖

GOT-time-on-acg

HBO 将《权力的游戏》的流媒体流量模式描述为

“the wall”

,而如果是这样的话,我们绝对看到了“悬崖”!

与前六个周日的平均活动相比,昨晚的活动总体下降了近 11%,在首映式播出期间下降了 17%。事实上,大约过了三个小时,经济活动才开始反弹。这可能是一个挥之不去的影响,飘带开始一集有点晚,情绪恢复,并在安顿下来学习更多令人敬畏的云的好处之前看到通常的夜间例行公事。

众所周知,当新一集《权力的游戏》播出时,人们会暂停各种在线活动,所以看到我们的云大师们暂停几个小时并不奇怪。我们大多数人也是!

幸运的是,我们所有的课程、实验、测验、原创系列和新推出的学习路径都是全天候可用的。所以请尽情享受这最后几集吧——当演职员表滚动时,我们会在这里。

顺便提一句,如果你想知道 HBO 如何在不融化整个互联网的情况下成功播放《权力的游戏》,他们在 AWS 上部署 Kubernetes 背后的故事非常有趣


成为云学士

加入一个云专家来学习 AWSteros 的最远端或掌握 Azure Ahai 的奥秘。我们的认证课程、学习路径、实验室、测验和原创系列为您提供了赢得您的链所需的一切。


GCP 为 Log4j 2 漏洞提供支持

原文:https://acloudguru.com/blog/engineering/gcp-offers-support-for-log4j-2-vulnerability

本月谷歌云有什么新进展?Log4j 相关的东西,智利的一个新 GCP 地区,云任务从应用引擎中解放出来,可以在所有的地方使用,等等!这是你对 12 月份 GCP 新闻的综述。我们走吧!


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


智利圣地亚哥的新 GCP 地区

先说谷歌提前给南美人的节日礼物!智利圣地亚哥的 GCP 区现已开业!这是谷歌在 T2 的第 13 个地区,也是他们在南美的第二个地区。这是一个与巴西圣保罗地区进行配对的绝佳地区,可用于低延迟多区域系统—无论是灾难故障切换还是主动-主动设置。

谷歌在 Forrester 浪潮中命名了一个“领导者”:人工智能基础设施,2021 年第四季度

接下来,你可能不会对此感到惊讶,但 Forrester Research 刚刚在 2021 年第四季度的“Forrester Wave”中提名 Google 为“人工智能基础设施”的“领导者”。不仅如此,在所有竞争者中,谷歌被评为拥有最强战略最强当前产品。

云入侵检测系统现已正式发布

至于产品公告,谷歌刚刚发布了他们的 Cloud IDS 产品,用于将所有的云网络流量镜像到一个托管的 Palo Alto Networks 入侵检测系统(IDS)中。这可以帮助您检测各种基于网络的威胁。说到这个…

Google 为 Log4j 2 问题提供支持

接下来,我们来看看与非常及时的“Log4j 2”问题相关的一些事情。谷歌在这个艰难的时刻向 T1 提供支持。如果你不确定我在说什么,那么我强烈建议你看看马克·努恩尼克霍文的精彩视频,它只用了四分半钟就解释了这种情况。

Log4j 2 问题的云 IDS 检测

嗯,如果你正在使用我刚才提到的 Google 的 Cloud IDS 产品,那么你已经现在启用了对试图利用这个 Log4j 2 问题的监控!完全自动。

Log4j 2 问题云晶圆缓解

此外,如果你正在使用谷歌的云装甲产品来帮助保护你的系统,那么你可以打开他们新的预配置的 WAF 规则来帮助检测和阻止利用漏洞的企图。

所有这些来自谷歌的支持可以给你一点额外的喘息空间,而你继续你的关键工作,以妥善修补您受影响的系统。

现在,我们来看一些其他产品发布。

云任务不再依赖 AppEngine

谷歌的云任务产品现已在全球 23 个地区推出。但这还不是大新闻。

更令人兴奋的是,云任务现在已经长大并离开了巢穴:我的意思是,它现在独立于 App Engine !因此,您现在可以在同一个 GCP 项目中的多个区域创建云任务队列!呜哇!

Azure 的 Anthos 多云 API GA

有了 Google 的 Anthos Multi-Cloud API ,在多个云中创建和管理 Kubernetes 集群只需一个“gcloud”命令。现在,该功能的 Azure 版本已经准备就绪,并且可以普遍使用。你只需运行“g cloud container azure clusters create”。

Datastream 现已正式上市,提供无服务器变更数据捕获(CDC)和复制

谷歌的 Datastream 产品现在也普遍可用。这是一种无服务器的方式,可以从各种不同的数据库或定制源捕获数据更改,并将它们复制到各种不同的目的地。

安全指挥中心(SCC)现在允许您静音嘈杂的调查结果

接下来,为了帮助启用 SRE 的“实用警报”,安全指挥中心现在让你“静音”你认为较低优先级的嘈杂发现。相反,这可以让你专注于更重要的事情。

发布/订阅现在可以存储 31 天的主题消息

最后,这不是一个巨大的变化,但仍然是一个受欢迎的变化,你可以现在让 PubSub 存储你的主题信息的副本 31 天——比以前的 7 天有所增加。这给了您更多的喘息空间来解决您可能遇到的任何问题,并在您的固定应用程序中重现这些问题。

GCP Gem:GitHub 操作的工作负载身份联盟

好吧!现在在这些帖子中,我通常只关注谷歌云平台的新内容。但是我想分享一个围绕谷歌管理的 GitHub 行动的精华——尽管它确实与 GCP 有关!

首先,为了设置上下文,我们已经知道我们应该使用服务帐户来使在我们的 GCP 项目中运行的应用程序能够使用其他 GCP 资源——对吗?我们这样做是为了避免拥有任何需要安全分发、保密和频繁轮换的长期凭据。所有这些东西都让人头疼,更不用说不安全了。

嗯, Google 的工作负载身份联盟支持也使我们能够从我们的 GCP 项目之外使用服务帐户。而这绝对是一件好事。不幸的是,与制造一些长寿命的钥匙相比,它的使用也非常复杂,人们并没有尽可能多地使用它。

但是我们的英雄出场了!Seth Vargo 是一个你可能从优秀的“SRE 类实现 DevOps”播放列表中认出的人——他也是新 GitHub 行动的主要贡献者,该行动使 GCP 能够进行无钥匙认证!(呵!“关键”贡献者。那是一次愉快的小事故!)

无论如何,这就实现了我所说的:短期凭证、更少的开销和更细粒度的作用域!所以你不再有任何借口不做正确的事情!我的意思是,如果您在 GitHub Actions 上执行 CI/CD,请使用它为您在 GCP 的部署创建一个信任关系,并消除不必要的安全风险和管理开销,这些都是由您的长期密钥引起的。

继续牛逼吧,云大师们!

好吧,云专家们,这是 2021 年的总结。这一年来,我们真的很喜欢与你互动——无论是在我们的 Discord 服务器上,还是在Twitter 和脸书,还是在 YouTube ,还是在罕见的面对面活动上,或者无论什么地方!我们非常重视与您的联系,因为您是我们做这些事情的原因!

我们 Cloud Guru 和 Pluralsight 的所有人真诚地希望您度过一个精彩的假期,并在即将到来的 2022 年取得各种成功。继续牛逼吧,云大师们!

本月 GCP:新的云存储功能,新增的云功能支持,新的多伦多地区

原文:https://acloudguru.com/blog/engineering/gcp-this-month-new-cloud-storage-features-added-cloud-functions-support-new-toronto-region

这个月 GCP 发生了什么事?好了,摘下你的无沿帽,放下你的小嘴,因为我们有了一个新的地区在加拿大多伦多的现场。我们还将了解有关存储、备份、Eventarc、发布/订阅、云功能等方面的新闻。所以,当我们本月从 A 到 Zed 报道谷歌云时,给自己拿一双双和一盒 Timbits,然后回到你的切斯特菲尔德。


提升你的 GCP 技能

今天就和云专家一起开始,边做边学。ACG 可以通过围绕 Google Cloud、AWS、Azure 等的课程和实际动手实验室,帮助你掌握新技能并转变你的职业生涯。


多伦多新的谷歌云区域

当然,我们必须从创业板开始:谷歌已经增加了 另一个新地区——第 28 个登陆加拿大多伦多。

从一开始,这个地区就有三个独立的区域,它支持计算引擎、云运行、GKE、云存储、大表、大查询、扳手、数据流等。

一些政府和企业有数据驻留要求,因此当这个新的多伦多区域与谷歌在蒙特利尔的第 15 个云区域相结合时,这使组织不仅能够在加拿大存储和处理数据,还能够在加拿大境内的不同区域进行备份和灾难恢复。

在推出这一新区域的同时,谷歌还宣布了“加拿大保证工作负载”产品的预览版,以确保合规性。当然,这个新的多伦多地区也有助于减少居住在加拿大最大城市的数百万加拿大人的等待时间!诚然,蒙特利尔并不那么遥远——500 多公里——但它仍然有所不同。

当然,我们所有在加拿大西部的人都希望在温哥华有一个地区,所以…谷歌,如果你在听的话!别犯傻了,快去做吧!给她,嗯?好的。对于所有的加拿大笑话,我真的很抱歉。让我们继续这个月的快餐。

双区域云存储桶增强

谷歌刚刚宣布了两个即将到来的对双区域云存储桶的增强——顺便说一下,这仍然是 GCP 独有的主动-主动方式,而不仅仅是复制。

无论如何,你很快就可以选择你自己的区域对来使用——而不仅仅是从谷歌提供的区域对中选择。

此外,尽管通过任何地区的访问已经非常一致,但谷歌称之为“Turbo Replication”的选项将保证在 15 分钟的 RPO 内跨这些地区复制数据,并由 SLA 提供支持。

Filestore Enterprise 提供快照和 99.99%可用性 SLA

在文件存储领域,谷歌一个新的 Filestore 企业产品添加到他们现有的 Filestore Basic 和 Filestore High Scale 中。所有这些都是 NFS v3 解决方案,但这个新的 Filestore Enterprise 还支持快照和额外的 9 倍可用性:99.99%,由 SLA 提供支持。

新的 GKE 备份保护有状态的 GKE 工作负载

现在,如果你碰巧使用 GKE — 处理有状态的工作负载——你会很高兴听到关于谷歌新的“GKE 备份”产品。这使您可以计划定期备份集群状态和应用程序数据,并且如果您愿意,它支持跨区域还原。

Eventarc 获得一流的云存储触发器

如果您正在使用 Eventarc 将服务连接在一起并管理事件,您现在可能会很高兴听到云存储 buckets 现在是 Eventarc 中的一级事件触发器。以前,您必须通过云审计日志来捕获此类事件,这增加了延迟和复杂性。

发布/子主题保留简化并降低了成本

下面这条新闻可能看起来没什么大不了的,但它实际上是一件相当好的事情。现在,您可以配置发布/订阅以在主题级别保留消息,而不必为每个订阅都这样做。这不仅使事情变得更简单,而且还可以显著降低拥有多个订阅的主题的成本。

云函数支持最小实例

如果你在云功能的冷启动上有问题,你会有兴趣听到你可以现在设置谷歌将为你的功能提供的最小实例数。就个人而言,我认为这对于优化 staging 和 prod 来提高系统的响应能力非常有帮助。当你打开它时,你为你的最小实例使用的内存支付常规价格,但是 CPU 时间比正常少很多

云功能获得原生机密管理器集成

此外,云功能刚刚与谷歌秘密管理器进行了本机集成。不需要更多的自定义代码。

云构建集成到 Git 部署中

好吧…这是另一件对开发者来说很酷的事情。你现在可以运行“git deploy ”,让它看起来和感觉上像一个本地版本,即使你实际上云版本中受益。一旦您触发了它,Google 新的本地 git 扩展将负责推送您的代码,然后找到构建进度并将其传输回您的终端或 IDE。滑头!

Google Cloud Next 将于 10 月 12 日至 14 日推出

Google Cloud Next 2021 即将到来!谷歌的年度大会将于 10 月 12 日至 14 日举行,届时将充斥着关于 GCP 方方面面的新闻和见解,包括人工智能和人工智能、应用开发和现代化、数据分析和安全。

当然,我们会听到一群谷歌高管的发言,但我尤其对萨拉·罗宾逊、凯尔西·海塔尔和——T2 发明互联网的人之一——温顿·瑟夫的演讲感兴趣。完整的活动目录现已发布。而且这一切都是完全免费的。所以现在就去报名吧!

跟上所有云的步伐

说到免费,你知道云专家有一个免费账户层吗?不需要信用卡。每个月你都可以参加一套新的免费课程?查看本月免费课程,在这里报名

想要跟上云的所有事物?在 YouTube 上订阅一位云专家的每周微软 Azure 新闻(以及其他云提供商的新闻)。你也可以在脸书上喜欢我们,在推特上关注我们,或者在不和谐上加入对话!

这个月就这些了。保持安全,照顾好你周围的人,继续保持敬畏,云大师们!

Complete guide to the Cloud and Dictionary

获取谷歌云痛苦字典
说云不一定要硬。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取 GCP 中一些最痛苦术语的简洁定义。

了解你在 ACG 的招聘人员:汉娜·金

原文:https://acloudguru.com/blog/news/get-to-know-your-acg-recruiter-hanna-kim

“如果你在你感兴趣的领域没有一个好的四年制学位,我们不会在意。如果你的简历中有空白,这不是危险信号。找到一个新的工作地点是一件严肃的事情,但我希望申请人在申请 ACG 大学时不要感到害怕。”汉娜·金

Hanna Kim 通过为我们的走向市场团队寻找价值观一致的人才,为云专家的一些发展最快的部门的未来添砖加瓦。即使行动很快,她也总有时间听你的故事,听是什么让你与众不同。专注而努力的汉娜是我们候选人的支持者,因为她知道自己是怎样的一个人…

汉娜:我曾经被麦当劳拒绝过。我曾经以为他们会阅读我的简历,分析我在求职信中详述的资历,然后说不,不够好。事实上,他们可能只是在没有阅读申请的情况下就自动拒绝了(或者至少我是这么告诉自己的,以保持自尊不受伤害)。

我想说的是,我知道找工作有时会是一个非常痛苦的过程。这感觉就像你在往一个黑洞里投简历,你在对着一片空白大喊大叫,感觉毫无希望。我真的希望所有 ACG 的候选人都知道,招聘团队会审查每一份申请。屏幕另一边有一个人在看你的简历和求职信(你好!)无论如何,我都会回答你是或不是。

最初是什么吸引你成为云大师的?

在真正的 2020 年时尚中,我的工作受到了新冠肺炎的影响,我生活的几乎每个方面都陷入了混乱。我决定在今年剩下的时间里休息一段时间,重新定位,专注于自己的幸福。五个月后,我偶然发现了一家云计算专家公司的空缺。我从一开始就对这家公司有好感,我在面试过程中与每个人的对话只是固化了我的直觉。

现在,我很自豪能在一家言行一致的公司工作。我们的使命是让教育民主化,我们的产品帮助那些可能在职业生涯中期转向科技的人。

如果你没有自己感兴趣领域的四年制大学学位,我们并不担心。如果你的简历中有空白,这不是危险信号。

我喜欢我们的招聘过程反映了这一点——如果你在你感兴趣的领域没有一个漂亮的 4 年制学位,我们不会在意。如果你的简历中有空白,这不是危险信号。找到一个新的工作地点是一件严肃的事情,但我希望申请人在申请 ACG 大学时不要感到害怕。

No alt text provided for this image

你最喜欢的津贴或福利是什么?

我对我们的顶空许可证感到非常兴奋。我们都在努力度过疫情,如果你说你没有压力、不知所措、焦虑或以上所有的感觉,那你就是在撒谎。我期待着打盹通知,每天抽出几分钟给自己。

当我们远程工作时,我们每周还可以报销一顿午餐。我最近搬到了奥斯汀的另一个地方,尝试新餐馆和支持当地企业是如此有趣。

你最喜欢的价值观是什么?

我最喜欢的价值观是“支持我们的客户”作为招聘人员,我的客户是外部候选人和内部团队/招聘经理。我认为这个价值观是我最常想到的,因为它影响到我工作的每一个部分。

我尽力确保我接触的每个候选人对我和 ACG 都有积极的体验。这意味着透明和沟通,对他们的处境感同身受,考虑他们的最佳利益。这也意味着我正在努力寻找该职位的最佳候选人,并与招聘经理建立可信赖的合作关系。它们是我必须平衡的共生关系,所以我不断努力成为内部和外部客户的最佳代言人。

作为招聘人员,为什么多元化和包容性对你很重要?

我认为企业环境中的 D&I 需要一种自下而上和自上而下的方法。就个人和职业而言,我负责解决和挑战我持有的偏见;以吸引不同申请人的方式发布职位空缺广告;以包容所有人的方式帮助起草职位描述。

另一方面,公司需要以具体的方式设定鼓励多元化的基调和标准,而不仅仅是简单的 D&I 声明。例如,我非常欣赏 ACG 的招聘政策,即我们的任何职位都不需要大学学历。那不是你经常看到的。大学有着巨大的准入门槛,而且对于很多人来说,大学不可行(经济上和其他方面)有着巨大的系统性原因。颁布这样的政策会让 ACG 变得更容易接近,而且肯定会鼓励多元化。

D&I 是拥有包容性无毒工作环境的关键要素。它防止人们被符号化,并且它使边缘化群体更容易在他们感到需要改变的时候大声疾呼。拥有不同的观点从来都不是一件坏事!对我来说非常重要的是,D&I 不仅仅是一个流行词,而是我们所有人都认真对待的东西,以促进安全、快乐和友好的工作环境。

对我来说非常重要的是,D & I 不仅仅是一个流行词,而是我们所有人都认真对待的东西,以促进安全、快乐和友好的工作环境。


你可以通过访问来了解更多关于云宗师职业的信息。

与 Amazon SageMaker 线性学习者一起动手

原文:https://acloudguru.com/blog/engineering/getting-hands-on-with-amazon-sagemaker-linear-learner

在这篇文章中,我们将讨论如果你是机器学习的新手或者正在寻找构建 AWS ML 技能的实践介绍,亚马逊 SageMaker 的线性学习器算法是一个很好的起点。

| introduction to machine learning | 这是亚马逊 SageMaker 内置算法系列帖子的第一篇。本系列确实假设您以前有过机器学习的经验。如果你想了解更多,请观看我们的机器学习介绍课程。 |

四年前,我开始了我的机器学习之旅,当时我是一名 Java 软件工程经理,想要转型。我不知道从哪里开始,所以我求助于亚马逊网络服务(AWS) 来提升我的技能。快进到今天,我已经在 AWS re:Invent 和 TED 舞台上谈论过机器学习,被命名为 AWS 机器学习英雄,并获得了我的 AWS 认证机器学习-专业认证


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


监督学习和二元分类

我解决的第一个机器学习问题类型是二进制分类的监督学习。我发现这个用例简单易懂。在这个用例中,通过给机器提供已经标注了您希望它学习如何预测的答案的数据样本,您可以教它回答简单的是/否问题。

当时,我从亚马逊机器学习服务开始,但很快就升级到了亚马逊 SageMaker。如果你不熟悉 Amazon SageMaker ,它是机器学习即服务,为准备、构建、培训和部署机器学习模型提供端到端的环境。

我发现使用 Amazon SageMaker 很容易复制我的 Amazon 机器学习用例。内置的线性学习器算法允许我更多地使用 Python、Jupyter 笔记本和各种数据科学库来训练我的模型。


想了解更多关于在 AWS 上设计和部署机器学习解决方案的信息吗?云大师的 AWS 机器学习 学习路径提供适合初学者和高级大师的定制课程!


线性学习算法

Amazon SageMaker 的美妙之处在于它带有几个内置算法可以应用于几个问题类型。

| 学习类型 | 问题类型 | 内置算法 |
| 监督 | 二元分类
多类分类
回归 | 线性学习器
因式分解机
K-最近邻(KNN)
XGBoost |
| 受监督,RNN | 时间序列预测 | 迪帕尔 |
| 无人监督的 | 降维 | 主成分分析 |
| 无人监督的 | 异常检测 | 随意砍伐的森林(RCF) |
| 无人监督的 | IP 异常检测 | 知识产权洞察 |
| 无人监督的 | 嵌入 | 对象 2Vec |
| 无人监督的 | 使聚集 | k-均值算法 |
| 无人监督的 | 主题建模 |
潜在狄利克雷分配(LDA)神经主题模型(NTM) |
| 文本分析 | 文本分类 | BlazingText |
| 文本分析 | 机器翻译
文本摘要
语音转文本 | 序列对序列 |
| 图像处理 | 图像和多标签 | 图像分类 |
| 图像处理 | 目标检测和分类 | 目标检测 |
| 图像处理 | 计算机视觉 | 语义分割 |

线性学习器非常适合我的用例,因为它解决了二进制分类问题(以及其他问题)。

线性学习者解决的问题类型

线性学习算法解决了几种问题类型。

| 方法 | 问题类型 | 描述 | 例题 |
| 逻辑回归 | 二元分类 | 通过预测 0 或 1 来回答是/否问题 | 这是不是垃圾邮件?
这笔交易是不是欺诈?
犯罪可能性大不大? |
| 多项式逻辑回归 | 多类分类 | 通过预测 0 到 n-1 类来回答许多问题中的 1 个 | 这个物品是书、电影还是玩具?这种动物是狗、鸟还是猫? |
| 线性回归 | 回归 | 回答连续数值问题 | 亚特兰大明天的气温是多少?这种产品会卖出多少台?这栋房子会卖多少钱? |

它是如何工作的

对于训练,线性学习者需要一个数据矩阵,其中的行代表观察值,列代表特征。数据矩阵中的一列应该代表您希望机器学习如何预测的标签。对于 SageMaker 的线性学习者,标签应出现在数据矩阵的第一列,列标题应排除在外。

对于我的用例,我将训练数据存储在亚马逊 S3 中,并指定输入桶作为训练数据源,指定输出桶保存最终的模型工件。线性学习器支持 RecordIO (protobuf)或 CSV 格式的训练数据,接受 JSON、CSV 或 RecordIO (protobuf)格式的推理请求。对于我最初的用例,我使用 CSV。将 S3 数据加载到 Amazon SageMaker 托管的 Jupyter 笔记本实例有两种模式:filepipe。虽然我最初使用文件模式,pipe模式更有效,因为它通过流式传输数据减少了训练时间并节省了资金,而不是像file模式那样将完整的训练数据集存储在磁盘上。

在配置您的培训工作时,有几个超参数。我在下面列出了一些用于模型训练的更重要的超参数。线性学习算法的超参数的完整列表可以在亚马逊 SageMaker 开发者指南中找到。

| 超参数 | 描述 | 可能值 |
| predictor_type | 这表示目标变量。对于二进制分类,我选择了binary_classifier。如果您正在使用多类分类,您将选择multiclass_classifer。对于回归,您将选择regressor。 | binary_classifier multiclass_classifier regressor |
| epochs | 通过数据的次数。 | 一个正整数,默认值为 15。 |
| feature_dim | 输入数据中的要素数量。 | auto或正整数 |
| l1 | L1 正则化值。 | auto或非负浮点数 |
| wd | L2 正则化值。 | auto或非负浮点数 |
| optimizer | 优化算法。 | auto, sgd, adam, rmsprop Adam是自动的默认设置。 |
| learning_rate | 优化器的步长。 | auto或正浮动 |
| loss | 损失函数。 | 这根据选择的predictor_type而变化。
对于binary_classifier,选项有autologistichinge_loss
自动的默认值是logistic。 |
| mini_batch_size | 每批的观察次数。 | 正整数;默认值为 1000 |
| num_models | 线性学习器并行训练多个模型。这允许您设置模型的训练数量并相互比较。 | auto或正整数 |

当你准备好训练你的机器学习模型时,一个单机或多机 CPU 和 GPU 实例。需要注意的是,线性学习者不支持增量训练;相反,它使用分布式培训。

模型调整

线性学习者报告了几个指标,以帮助您在将模型发布到生产环境之前对其进行评估和调整。每个指标都被报告为测试和验证指标。

  • 目标损失–这代表损失函数的平均值。对于我的用例,损失是物流损失。
    • test:objective_loss
    • validation:objective_loss
  • 准确性–这代表正确的真阳性和真阴性的数量。
    • test:binary_classification_ accuracy
    • validation:binary_classification_accuracy
  • Precision–这表示所有的预测阳性–实际阳性的百分比。
    • test:precision
    • validation:precision
  • 回忆一下–这代表所有的实际阳性–正确预测的百分比。
    • test:recall
    • validation:recall
  • F1 得分——这是精准和召回的平衡。
    • test:binary_f_beta
    • validation:binary_f_beta

2021 re:Invent Pre-Show

观看:re:Invent 2021 一年中最激动人心的大汇演时间到了:re:Invent 2021。请于 11 月 17 日周三加入我们,与我们的 AWS 英雄小组一起在牌桌上抢占一个席位,他们将对今年的大会上将发布什么产品下注。


行动中的线性学习者

现在让我们看一个真实的例子。我的用例的目的是使用 SageMaker 的线性学习器算法来训练犯罪预测的线性模型。在这个例子中,拦截搜查犯罪数据来自 https://data.police.uk/data/[的](https://data.police.uk/data/) data.police.uk 数据集。data.police.uk 是一个公开英格兰、威尔士和北爱尔兰犯罪和治安数据的网站。

此处的目的是使用该数据集构建预测性警务模型,以确定在给定以下数据点的情况下是否可能发生犯罪:

  • 位置
  • 年龄
  • 性别
  • 一天中的时间
  • 星期几

该模型根据提供的输入返回“犯罪”或“不犯罪”的预测。用例的样本代码是免费提供的。为了开始这个过程,我推出了一款由亚马逊 SageMaker 托管的 Juptyer 笔记本。

导入库

我在笔记本中导入了必要的数据科学和 SageMaker Python 库。

数据摄取

接下来,我将数据集从在线 URL 读入内存,用于训练前的预处理。

数据检查和可视化

一旦数据集被导入,通常作为机器学习过程的一部分来检查数据,理解分布,并确定可能需要哪种类型的预处理。

我检查了数据的前几行。

我用直方图来理解分布。

我分析了各县的犯罪数量。

我使用交叉表来了解性别分布。

数据清理

在可视化和理解数据之后,我删除了空值或坏值。在我学习的这个阶段,我没有考虑任何数据插补技术。

我发现性别和平均年龄字段有几个应该从数据集中删除的观察值。


获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


数据编码和转换

在训练之前,我将分类特征转换为数字特征,因为分类器只处理数字值。

我将“星期几”转换成它的数字表示。

我把性别转换成数字表示。

分成训练集、验证集和测试集

为了防止模型过度拟合,并允许我在模型尚未看到的数据上测试模型的准确性,我将数据集分为训练集、验证集和测试集。

训练线性模型

在我将清理后的训练数据加载到 S3 之后,我使用线性学习器来训练模型。第一步是设置容器图像。

然后,我为最终的模型工件设置了必要的超参数和存储桶位置。

模型评估

在每个时期,评估度量被记录。我用这个来确定模型在数据集上的每次运行情况。这些分数帮助我调整我的模型以获得更好的性能。

模型托管

一旦我有了一个训练好的模型,我就把它放在 Amazon SageMaker 上,这样其他用户和应用程序就可以使用deploy函数来访问它。

结论

删除模型端点

当我完成使用我的模型进行预测时,我删除了它,以确保我不再为此付费。

了解有关机器学习的更多信息

如果你是机器学习的新手,亚马逊 SageMaker 的线性学习算法是一个很好的起点。我发现回答简单的是/否问题是最简单的用例。

在本系列的下一篇文章中,我将回顾用于聚类和查找数据中离散分组的内置算法。

想了解更多关于机器学习的知识吗?查看 ACG 的机器学习简介AWS 认证机器学习-专业认证课程。

想跟上万物云? 在 YouTube 上订阅一位云专家 的每周 AWS 新闻(以及其他云提供商的新闻)。你也可以像我们一样关注**,关注我们的* 推特 ,或者加入 不和谐 的对话!*

在 AWS re:Invent 2021 会议上亲身体验 QuickSight

原文:https://acloudguru.com/blog/engineering/getting-hands-on-with-quicksight-at-aws-reinvent-2021

首先,让我先说 AWS re:Invent 2021 绝对是惊艳!好了,现在我已经把它从我的系统中剔除了,让我们来谈谈我在 re:Invent 参加的一个研讨会:构建你自己的可定制的成本报告仪表板。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


我选择这个会议来了解一些成本服务,并深入了解一下 Amazon QuickSight ,它非常有用,定制和使用起来也非常容易。

研讨会为我们提供了一个 JSON 模板,以启动必要的最低限度的基础设施,以便能够进入并拥有供我们的仪表板使用的数据。

如果你不熟悉亚马逊 QuickSight,它是一种无服务器的商业智能(BI)服务。它允许每个人通过用自然语言提问、利用交互式仪表盘或通过机器学习自动发现模式和异常值来理解你的数据。您可以共享仪表板,将其作为报告,将您的控件固定或保留在主页上,以及自定义控件,这有助于过滤您需要可视化的信息。

我参加的研讨会允许我们定制已经存在的条形图和折线图,通过添加新的控件和创建新的视觉效果来定制控件。

我们添加了一个新选项卡,专门查看客户的退款。如果您的公司需要能够正确地向客户收取使用费,那么这个特定的用例会很有帮助。这些视觉效果让我想起了 Kibana,但是有了更多的可定制性。

您可以选择要提取的数据以及如何对这些数据进行分组,以便将它们转换成最能描述您需要显示的数据的视觉效果。

例如,如果您需要查看月环比视图,您可以使用如下所示的表格来更好地了解每个月如何影响您的成本。

如果您想了解您的即期、按需和储蓄计划计算成本如何构成您的月成本,您可以使用如下所示的圆环图。

可供您可视化数据的选项非常丰富!

要进一步了解成本智能控制面板的框架,请看下图。

您可以从您的成本和使用报告(CUR)或可信顾问组织报告开始,并使用 SQL 查询、Amazon 的 Athena、Glue 和 QuickSight 服务设置您的 CID 框架。

这些服务中的每一个都可以在将数据输入到您的仪表板中发挥作用。

总的来说,研讨会很有趣,如果你遇到困难或有问题时,有人可以帮助你,这是一次令人难以置信的经历。

我希望这些信息能帮助你更好地理解亚马逊的 QuickSight 服务。如果你能亲自动手,希望你能更轻松地驾驭它。感谢阅读,继续牛逼吧,云大师们!

跟上 AWS 的一切:发明 2021

在推特上关注 ACG脸书,以及在 YouTube 上订阅一位云专家来更新:发明 2021!查看 ACG 和 Pluralsight re:Invent 内容中心获取新闻和 AWS 资源。加入我们令人敬畏的 Discord 社区,与 AWS 培训架构师和其他志同道合的阴云密布的人一起接触数字。

Docker Compose 入门

原文:https://acloudguru.com/blog/engineering/getting-started-with-docker-compose

弥合 Docker 和 Kubernetes 之间的差距可能会令人生畏——根据您的用例,它可能实际上对您没有必要。如果您希望能够有一个创建和编排少量容器的可重复过程,那么 Docker Compose 可能非常适合您。在跟进之前,请确保安装 Docker Compose

定义 Docker 合成服务

当我们开始使用越来越多的docker run功能运行容器时,命令会变得非常冗长,很难记住。幸运的是,Docker Compose 允许我们使用特定的键将这些写在 YAML 中,这些键映射到我们可以传递给各种 Docker 命令的选项。让我们用一个足够复杂的docker run命令来启动一个使用环境变量配置的 MySQL 容器,并将它转换成一个docker-compose.yml中的 YAML。下面是我们开始使用的命令:

$ docker run -d   --name mysql:5.7   -p 3306:3306   -e MYSQL_ROOT_PASSWORD=secret_password   -e MYSQL_DATABASE=linuxacademy   mysql

在设置了一些样板文件后,我们可以在一个docker-compose.yml文件中创建这个容器作为“服务”。这里是我们的开始: docker-compose.yml

version: "3"services:  mysql:    image: "mysql"    environment:      MYSQL_ROOT_PASSWORD: "secret_password"      MYSQL_DATABASE: "linuxacademy"    ports:      - "3306:3306"

用于docker-compose.yml文件的语法有几个不同的版本,但是我们应该总是使用最新的,在撰写本文时是 3.x。从那里,我们声明我们想要定义“服务”,这里的任何项目都将是 Docker Compose 为我们创建和运行的容器。在我们的mysql服务定义中,我们有一些键,可以将映射设置为非常接近手动使用docker run时使用的选项。值得注意的是,如果一个选项接受一个列表,并且值不包含等号(=,那么我们将使用 YAML 列表(以-开始),否则我们将使用 YAML 键/值对,就像我们在environment部分所做的那样。从我们创建docker-compose.yml文件的目录中,我们可以使用带有-d标志的docker-compose up在后台创建并运行我们的容器,以对容器进行后台管理:

$ docker-compose up -dCreating network "docker-compose-example_default" with the default driverCreating docker-compose-example_mysql_1 ... done

我的目录名为docker-compose-example,Docker Compose 将根据目录名和服务名创建一个惟一的容器名。在我的例子中,我得到了docker-compose-example_mysql_1。尾随的_1处理我们想要运行容器的多个副本的事件。

删除硬编码的环境变量

我们可以对我们的mysql服务做的一个改进就是不要硬编码环境变量。理想情况下,我们希望将我们的docker-compose.yml文件添加到源代码控制中,我们绝对不希望将我们的凭证提交到 git 中。幸运的是,Docker Compose 为我们传递现有的环境变量值提供了一个很好的方法。我们需要做的第一件事是从我们的docker-compose.yml文件中删除值,同时保留键: docker-compose.yml

version: "3"services:  mysql:  image: "mysql:5.7"    environment:      MYSQL_ROOT_PASSWORD:      MYSQL_DATABASE:    ports:      - "3306:3306"

为了测试这一点,我们想要删除使用docker-compose down创建的容器 Docker Compose:

$ docker-compose downStopping docker-compose-example_mysql_1 ... doneRemoving docker-compose-example_mysql_1 ... doneRemoving network docker-compose-example_default

接下来,我们将在运行docker-compose up时定义环境变量:

$ MYSQL_ROOT_PASSWORD=secret_password MYSQL_DATABASE=linuxacademy docker-compose up -dCreating network "docker-compose-example_default" with the default driverCreating docker-compose-example_mysql_1 ... done

我们不再在文件中设置这些值,但是如果我们检查容器和 grep 中的MYSQL_环境变量,我们可以看到这些值设置正确。*注意:*你可以使用docker-compose ps找到你的容器的名字。这是我所看到的:

$ docker inspect docker-compose-example_mysql_1 | grep MYSQL_                "MYSQL_ROOT_PASSWORD=secret_password",                "MYSQL_DATABASE=linuxacademy",                "MYSQL_MAJOR=5.7",                "MYSQL_VERSION=5.7.25-1debian9"

编排容器

知道如何使用 Docker Compose 创建一个容器让我们非常接近能够编排多个容器。我们将遵循相同的步骤,在与我们的mysql键相同的层创建另一个对象。在这个例子中,让我们创建一个 Ghost blog 容器,它将需要并连接到我们的mysql服务: docker-compose.yml

version: "3"services:  mysql:    image: "mysql:5.7"    environment:      MYSQL_ROOT_PASSWORD:      MYSQL_DATABASE:    ports:      - "3306:3306"  blog:    image: "ghost:2-alpine"    ports:      - "8080:2368"    environment:      DATABASE__CLIENT: mysql      DATABASE__CONNECTION__HOST: mysql      DATABASE__CONNECTION__USER: root      DATABASE__CONNECTION__DATABASE:      DATABASE__CONNECTION__PASSWORD:    depends_on:      - mysql

这里需要注意的是我们在blog服务中的depends_on键。通过指定这一点,我们告诉 Docker Composemysql服务需要在blog服务之前启动,因为blog服务需要它来运行。此外,当我们为博客配置数据库连接时,我们将数据库的“主机”指定为mysql。这看起来很奇怪,但是在 Docker Compose 为我们的容器创建的内部网络上,其他容器(即我们的blog容器)可以使用mysql的完全限定域名(FQDN)访问mysql容器。我们已经运行了mysql容器,但是我们仍然可以运行docker-compose up,它将运行我们的附加容器:

$ MYSQL_ROOT_PASSWORD=secret_password MYSQL_DATABASE=linuxacademy DATABASE__CONNECTION__PASSWORD=secret_password DATABASE__CONNECTION__DATABASE=linuxacademy docker-compose up -dPulling blog (ghost:2-alpine)...2-alpine: Pulling from library/ghost169185f82c45: Pull complete62154f231947: Pull completeacf10a8404b6: Pull complete111312b8db58: Pull complete5a8b3dd4622e: Pull complete77aff150715c: Pull complete46a1198e6d9b: Pull completed94cdfbec967: Pull complete0007942647d7: Pull completeRecreating docker-compose-example_mysql_1 ... doneCreating docker-compose-example_blog_1    ... done

现在,我们可以通过连接到端口8080上的 Docker 主机的 IP 地址来访问我们的博客。

创建卷

我们要看的最后一件事是如何通过为我们的数据库装载一个卷来改进我们为我们的博客存储数据的方式。这一改变将允许我们保留我们的数据,即使我们移除了mysql容器。Docker Compose 使这变得容易,因为它将卷和网络视为顶级对象,就像“服务”一样让我们创建一个名为db-data的卷,并将其装入我们的mysql容器: docker-compose.yml

version: "3"volumes:  db-data:    external: falseservices:  mysql:    image: "mysql:5.7"    environment:      MYSQL_ROOT_PASSWORD:      MYSQL_DATABASE:    ports:      - "3306:3306"    volumes:      - "db-data:/var/lib/mysql"  blog:    image: "ghost:2-alpine"    ports:      - "8080:2368"    environment:      DATABASE__CLIENT: mysql      DATABASE__CONNECTION__HOST: mysql      DATABASE__CONNECTION__USER: root      DATABASE__CONNECTION__DATABASE:      DATABASE__CONNECTION__PASSWORD:    depends_on:      - mysql

这对我们来说非常有用,它会为我们创造销量。external: false设置告诉 Docker Compose 我们没有在 Docker Compose 的“外部”创建卷。为了让我们的mysql服务使用它,我们需要创建一个新的容器。一个简单的方法是运行docker-compose down:

$ docker-compose downStopping docker-compose-example_blog_1  ... doneStopping docker-compose-example_mysql_1 ... doneRemoving docker-compose-example_blog_1  ... doneRemoving docker-compose-example_mysql_1 ... doneRemoving network docker-compose-example_default

现在,我们可以重新创建我们的容器,以便将数据写入卷中。

$ MYSQL_ROOT_PASSWORD=secret_password MYSQL_DATABASE=linuxacademy DATABASE__CONNECTION__PASSWORD=secret_password DATABASE__CONNECTION__DATABASE=linuxacademy docker-compose up -dCreating network "docker-compose-example_default" with the default driverCreating docker-compose-example_mysql_1 ... doneCreating docker-compose-example_blog_1  ... done

从总体上深入挖掘 Docker

Docker Compose 非常棒,尤其是作为开始使用 Docker 和使用更复杂的系统如 Docker Swarm 或 Kubernetes 之间的权宜之计。如果你认为你已经准备好迈出下一步,或者你只是想了解更多,我会鼓励你去看看这些课程:附加资源:

Salt 入门

原文:https://acloudguru.com/blog/engineering/getting-started-with-salt

任何对 DevOps 稍有兴趣的人可能都熟悉配置管理和各种可用于服务器大规模配置和编排的选项:Puppet、Chef、Ansible,当然还有 Salt。Salt 本身是一个基于 Python 的配置管理平台,它利用高速数据总线允许用户管理他们的基础设施。Salt 有两种风格:SaltStack Enterprise,它提供了一个管理 Salt 的图形界面 Salt Open,它从某些竞争对手中脱颖而出,因为它不限制您管理多少个爪牙。在本文中,我们将使用 Salt Open 来快速了解 Salt 的核心特性和功能。如果您正在考虑在未来的项目中使用 Salt,或者只是好奇 Salt 与其他“基础设施即代码”选项相比如何,那么这篇文章就是为您准备的。

启动测试环境

在这个演示中,我们将使用流浪者虚拟盒子来设置一个基本的 Salt 环境。如果你不熟悉流浪者,看看这篇文章开始吧!此外,请确保为 Virtual Box 安装了来宾工具。导航到要存储 Salt 环境的目录。我们将使用 SaltStack 员工 David Boucha 提供的演示流浪环境,该环境位于 GitHub 库的中。然后,克隆 Git repo:

$ git clone https://github.com/UtahDave/salt-vagrant-demo.git

进入提供的目录,然后启动流浪环境:

$ cd salt-vagrant-demo$ vagrant up

请注意,这可能需要几分钟的时间来调配流浪者环境。我们的环境有三台 Ubuntu 16.04 机器:一台 Salt Master(“Master”)和两台 guest(“minion 1”和“minion2”)。登录到主服务器:

$ vagrant ssh master

我们现在准备运行我们的第一个命令!

使用 Salt 进行编排

Salt 的主要功能之一是它可以用于编排——这意味着在多台计算机上运行一个命令,而不必登录每台计算机。Salt 通过使用执行模块来实现这一点。Salt】有一个很大的预制执行模块列表,但是你也可以使用 Python 自己制作。因为我们只是在试用 Salt,所以我们将使用一些预制的,看看它们是如何工作的。首先,让我们通过测试来看看命令结构,以确保我们的爪牙做出响应:

$ sudo salt '*' test.pingminion2:    Trueminion1:    True

正如我们所看到的,minion1 和 minion2 都报告了值“true”这意味着我们的服务器工作正常,并连接到我们的主服务器。但是,在我们进一步深入之前,让我们分解一下刚刚运行的命令: Salt breakdown

  • sudo当然是给用户授予超级用户权限的 Linux 程序。
  • salt是主服务器上使用的 Salt 平台的主要命令。这个命令用于在我们所有的服务器上并行运行执行模块和状态(下面讨论)。
  • '*'的目标。目标是*,在那里*我们可以运行我们的命令。我们可以通过 minion 名称、服务器事实(如操作系统)或正则表达式来确定目标。在我们的示例命令中,我们使用正则表达式“all”来定位我们的每一台服务器。
  • test.ping是执行模块本身。在这种情况下,它确保我们的服务器能够 ping ,或者回复我们的主服务器。执行模块也可以带参数,这些参数会出现在模块名之后,但是我们在这个例子中没有使用任何参数。

现在,让我们试试另一个。假设我们想在我们的 minion1 服务器上只安装 Apache 。我们将使用pkg.install模块:

$ sudo salt minion1 pkg.install apache2

注意,我们必须已经知道包的名字,在 Ubuntu 上是 apache2 。但是我们并不总是想要运行命令来更新一个插件。相反,我们经常想要描述某件事情的结束状态,并让我们添加的任何服务器使用这个蓝图来达到期望的状态。为此,我们需要盐。

使用盐状态

首先,让我们进入/srv/salt目录:

$ cd /srv/salt

如果我们看一看,我们可以看到已经有一个文件和目录在那里!

$ lscommon  top.sls

top.sls文件是我们想要在什么服务器上运行什么状态的映射。让我们来看看这里提供的一个:

$ cat top.slsbase:  '*':    - common

base是我们的主要环境,而'*'行——很像我们的执行模块示例——意味着这个行下面列出的所有内容都被添加到所有服务器。在这种情况下,将添加common州。但是什么是“共同”状态呢?进入common目录,列出可用文件:

$ cd common$ lsinit.sls  packages.sls

这里我们有两个以.sls结尾的文件;.sls表示它是一个状态文件。在这种情况下,init.sls文件是允许状态通过它们的目录名运行的文件(记住,在我们的top.sls文件中,我们称之为“公共”状态,这是我们整个目录的名称)。该文件列出了我们希望包含在状态中的任何附加文件。这个特定的init.sls文件调用packages.sls文件,后者安装 htop、strace 和 vim:

$ cat packages.slscommon_packages:  pkg.installed:    - pkgs:      - htop      - strace      - vim

正如我们所看到的,这个状态文件是用 YAML 语言编写的,这是 Salt 的默认配置语言。因此,让我们创建自己的状态文件。移回/srv/salt/目录,然后创建一个users目录,并移入这个新目录:

$ cd ..$ mkdir users$ cd users

让我们创建一个名为fox.sls的用户。使用您喜欢的文本编辑器,打开该文件并添加以下信息:

fox:  user.present:    - fullname: Fox Mulder    - home: /home/fox/    - shell: /bin/zsh/

但这意味着什么呢?让我们一行一行地看一下:

  • fox::这是参考 ID ,意思是这个州的名字。稍后,当我们将这个文件添加到我们的用户的init.sls中时,我们将通过调用它“fox”来添加它;此外,由于这是 YAML 的姓名键,所以以冒号结尾。
  • 这是我们的状态模块,这是一个预先配置好的状态,可以供 Salt 使用。在这个例子中,我们确保我们的用户(fox)在场。
  • - fullname: Fox Mulder:这里我们有了user.present状态的第一个参数。在这种情况下,我们确保用户的全名是“Fox Mulder”
  • - home: /home/fox:另一个参数,这个参数定义了我们用户的主目录。
  • 最后一个参数,为我们的用户定义默认的 shell。

保存并退出文件。接下来,添加第二个文件init.sls,并添加以下内容来调用我们的fox状态:

include:  - users.fox

注意前缀users.。保存并退出。我们现在可以使用这些状态将狐狸用户添加到我们的爪牙中!我们可以通过两种方式做到这一点。首先,让我们使用salt命令将其手动添加到 minion1:

$ sudo salt minion1 state.apply users

或者,我们可以将我们的用户状态添加到top.sls文件中,然后运行一个high state——这意味着,Salt 将基于我们在top.sls文件中提供的映射运行我们的所有状态。回到/srv/salt目录,打开top.sls,添加- users:

base:  '*':    - common    - users

将更改应用到所有服务器:

$ sudo salt '*' state.apply

就是这样!你现在已经接触到盐了!您可以继续进一步试验,或者使用exit命令退出主服务器。要完全停止您的环境,运行vagrant halt

Amazon Aurora 无服务器数据 API 入门

原文:https://acloudguru.com/blog/engineering/getting-started-with-the-amazon-aurora-serverless-data-api

在本文的截屏视频中,我们将介绍使用 Data API 创建 Aurora 无服务器数据库的三种方法。我们还将介绍连接到支持数据 API 的 Aurora 无服务器数据库的四种方法。

让我们快速回顾一下 Amazon Aurora 提供了什么,为什么是无服务器数据库,并回答,什么是数据 API,为什么我应该关心?

关于亚马逊极光

Amazon Aurora 是一个为云构建的 MySQL 和 PostgreSQL 兼容的关系数据库T1,它结合了传统企业数据库的性能和可用性以及开源数据库的简单性和成本效益。

为什么亚马逊极光没有服务器? 亚马逊 Aurora 无服务器是为亚马逊 Aurora (MySQL 兼容版)提供的按需、自动扩展配置。数据库将自动启动、关闭,并根据您的应用需求增加或减少容量。对于不频繁、间歇性或不可预测的工作负载,这是一个简单、经济高效的选择。

什么是亚马逊 Aurora 无服务器数据 API? Data API 是 Aurora 无服务器数据库之上的新托管 API 层,允许您直接连接 MySQL 或 PostgreSQL 数据库。它还允许您通过 HTTP 从任何应用程序执行 SQL 语句,而无需使用 MySQL 驱动程序、插件或管理连接池或 VPC。

可以将数据 API 看作是与关系数据交互的完全托管的 API。当 Data API 连接到您的无服务器集群时,您还可以继承数据库的自动伸缩、可用性和备份,以及在不使用时暂停数据库。

这是这篇文章的视频版本。尽情享受吧!


使用数据 API 创建 Aurora 无服务器数据库的三种方法:

我个人最喜欢的是选项 2 CloudFormation for deployment,因为您可以部署可预测的资源(与手动创建相比,不会遗漏任何步骤),并且可以在 CloudFormation 模板中添加额外的 AWS 服务和权限。

选项#1:亚马逊 RDS 控制台— 手动 RDS 控制台是一种快速部署资源的方式,按照以下说明只需几分钟即可完成:

创建新的 Aurora 无服务器集群:

  1. 启动亚马逊 RDS 控制台。
  2. 选择亚马逊极光引擎。
  3. 选择兼容 MySQL 5.6 的(无服务器的唯一选项),然后选择下一步
  4. 选择无服务器作为容量类型,并提供集群名称和主凭据,然后选择下一步。
  5. 保留所有默认值,选择创建数据库。

Screencast for creating an Aurora Serverless Cluster via the RDS Console

启用数据 API(针对现有的 Aurora 无服务器集群): 我们将通过 RDS 管理控制台为新创建的 Aurora 无服务器集群手动启用数据 API。希望这是暂时的,直到我们可以使用 EnableHTTPEndpointAPI 参数通过 CloudFormation 模板启用数据 API。同时…

  1. 启动 RDS 管理控制台
  2. 选择您的集群(即使它显示数据库)
  3. 选择右上角的修改按钮
  4. 选择网络&安全部分下的数据 API
  5. 选择继续按钮
  6. 在修改计划下选择立即应用
  7. 选择“修改集群单选按钮

选项#2:云形成— 自动化 云形成是以自动化方式部署一致环境的最佳方式。该解决方案包括基于 GitHub repo 中提供的 CloudFormation 模板创建 CloudFormation 堆栈。

该模板包含了为部署 Aurora 无服务器数据库而定义的所有参数,只需点击几下鼠标。除了创建无服务器数据库之外,该模板还创建了一个 AWS Lambda 函数(在 Node.js 8.10 中编写),以使用新的 AWS RDSDataService API 访问启用了数据 API 的数据库。稍后,当我们在下面的解决方案 3 中连接到一个启用了数据 API 的数据库时,会有更多关于 Lambda 函数的内容。

CloudFormation 模板将提供以下资源:

  • 极光无服务器(MySQL) 集群
  • 极光无服务器(MySQL) 数据库
  • AWS Lambda 函数,用于使用 AWS RDSDataService API 通过数据 API 连接到您的数据库。
  • IAM 策略用于 RDSDataService API 的 Lambda 执行,CloudWatch 日志,从 AWS Secrets 只读获取数据库主凭证。

开始使用 CloudFormation 按照本 GitHub repo 中概述的两(2)个步骤在您的 AWS 帐户中部署资源。

第一步是通过 CloudFormation 堆栈部署资源,第二步是为创建的 Aurora 无服务器数据库启用数据 API。

选项#3: AWS CLI 或 SDK — 脚本化 AWS CLI 或 AWS SDK 可用于创建您的资源,只需几行代码。下面是创建新的 Aurora 无服务器集群的完整 AWS CLI 语句:

一旦创建了 Aurora 无服务器集群,请按照上一节中的步骤 2 : 启用数据 API ,现在您就有了一个启用了数据 API 的 Aurora 无服务器数据库。


使用数据 API 连接到数据库的四种方法

解决方案#1:数据查询(通过 RDS 控制台)

  1. 启动亚马逊 RDS 管理控制台
  2. 选择查询编辑器。
  3. 在 Connect to Database 窗口中,选择您的集群,提供您的主用户、主口令和数据库名称(可选)。
  4. 选择连接到数据库

注意:当您第一次提供集群凭证时,服务会自动为您创建一个 AWS 密码,之后每次通过查询编辑器访问该集群时,服务都会使用该 AWS 密码来获取该集群的主用户凭证。

一旦进入查询编辑器,选择清除按钮并输入:

use MarketPlace;
select * from Customers;

选择运行

如果您有一个包含数据的客户表,结果如下:

SQL statement in RDS Console — Query Editor

提示:当您需要验证表的内容或者只是执行一些快速的 SQL 语句时,查询编辑器是一个很好的工具。

解决方案#2: AWS CLI 使用您自己的集群 arn、机密 arn、数据库名称和您选择的 SQS 选择语句修改提供的 AWS CLI 脚本。

解决方案#3: AWS Lambda 函数 一旦您部署了一个启用了 Aurora 无服务器数据 API 的数据库,您就可以使用 RDSDataService API,通过一个简单的 AWS Lambda 函数轻松连接并执行任何 SQL 语句。

这个函数不需要在亚马逊 VPC 中,也不需要任何 MySQL 驱动程序或担心连接池。只需将 SQL 语句作为 HTTP 请求,Aurora Serverless 会处理剩下的事情!

开始使用 Lambda 函数通过数据 API 进行连接:

您可以使用上面的 deploy 选项# 2—cloud formation来提供一个数据库、一个 Lambda 函数,并填写环境变量来开始,或者…您可以复制这段代码并直接部署到 Lambda

如果您手动这样做,您将需要填充 Lambda 环境变量以匹配您的 Aurora 无服务器环境,如集群 Arn、DB name 和 AWS Secrets arn。

下面是针对启用了 Aurora 无服务器数据 API 的数据库执行 SQL 语句的完整代码。同样,确保提供环境变量,然后传入如下内容:

{ "sqlStatement": "SELECT * FROM <YOUR-TABLE-NAME>" }

Lambda 函数将使用从 AWS Secrets 中提取的主凭证连接到您的数据库,并返回一个 JSON 响应。就这么简单!

解决方案#4: AWS AppSync 通过 AWS AppSync 构建 GraphQL API 时,您现在可以直接访问启用了无服务器数据 API 的数据库作为数据源,并且……app sync 将根据现有的数据库表设计为您生成一个 GraphQL 模式!

对于这个解决方案,我们将使用 AWS Amplify CLI 的新的add-graphql-data source插件,该插件自动获取您的无服务器数据库表并创建/更新 GraphQL 模式,生成适当的变化、查询和订阅,并将您的数据库设置为现有 GraphQL API 的 graph QL 数据源。是的,请吧。

在我们使用插件之前,我们希望确保我们的 Aurora 无服务器数据库至少有一个表。如果数据库不存在,让我们现在通过使用 RDS 控制台中的 RDS 查询编辑器来创建它们,然后我们将切换到 Amplify CLI+add-graph QL-data source插件。

在这里,我们将使用 RDS 查询编辑器来创建一个数据库和示例表。如果您在前面的步骤中已经有了数据库和表格,请转到下面的[放大 CLI —安装 CLI]部分。

  • 启动亚马逊 RDS 管理控制台
  • 选择查询编辑器
  • 连接到数据库窗口中,选择您的集群,提供您的主用户、主密码和数据库名称(可选)。
  • 选择连接数据库。

在查询编辑器窗口中,运行以下命令:

如果您还没有创建数据库“市场”,请创建它。

CREATE DATABASE MarketPlace;

创建新的客户表。

USE MarketPlace;
CREATE TABLE Customers (
  id int(11) NOT NULL PRIMARY KEY,
  name varchar(50) NOT NULL,
  phone varchar(50) NOT NULL,
  email varchar(50) NOT NULL
);

现在我们有了一个数据库和一个 Customers 表,我们现在可以使用 add-graphql-datasource 插件来生成一个 graphql 模式,将数据库添加为 datasource,并基于[Customers]表添加变异、查询和订阅。

下面是 add-graphql-datasource 插件的工作方式:

Amplify CLI —安装 CLI 如果你以前没有安装过 AWS Amplify CLI,这里有一个快捷方式。如果您安装了 AWS CLI,Amplify CLI 将利用这些凭证,因此不需要 amplify configure

$ npm install -g @aws-amplify/cli
$ amplify configure

放大 CLI — Init 在你的 iOS 项目文件夹的根目录下启动 Mac 终端。现在,我们将使用下面的 Amplify 命令初始化我们的 AWS 后端项目。

$ amplify init

将指导您完成设置项目的过程。

放大 CLI —添加 API

$ amplify add api

放大 CLI —添加 GraphQL 数据源

$ amplify api add-graphql-datasource

现在,让我们使用 AppSync 控制台中的查询工具在 Customers 表中创建一个新客户。

AppSync Queries — in action

然后,我们可以在 RDS 控制台的查询编辑器中查询 Customers 表,以进行仔细检查。

Amazon RDS Query Editor — Aurora Serverless Data API SQL Statement

现在我们已经有了模式、突变、查询、订阅,以及作为 GraphQL API 数据源的无服务器 Aurora 数据库,我们可以开始使用带有生成代码的移动或 web 客户端来与这些结构化数据进行交互了!

SQL query select 调用可以通过 RDS Data API 返回多少行和数据是有限制的(1000 行或 1MB 的数据)。使用 RDS 数据 API 的另一种方法是使用独立的 MySQL Python 客户端 PyMySQL,它为您提供了建立连接、查询和在 MySQL db(在我们的例子中是无服务器 RDS DB)上获得大量操作的灵活性。尝试我们的动手实验室,使用 Python 和 PyMySQL 集成 Aurora 和 Lambda 函数。

结论

Data API 允许任何开发人员通过对数据库的更多控制、更少的管理、没有驱动程序或连接池来利用数据的结构化集合,并且以 HTTP 请求的形式执行 SQL 语句是一个游戏规则改变者。


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


弹性堆栈入门

原文:https://acloudguru.com/blog/engineering/getting-started-with-the-elastic-stack

在让初学者更容易入门方面,弹性堆栈在几年内已经取得了长足的进步。由于每个弹性堆栈服务都有合理的缺省值,建立一个工作堆栈并使用它已经大大简化了。让我们通过创建一个基本的单节点弹性堆栈并加载示例数据、可视化和仪表板来演示这一点。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


弹性搜索

首先,让我们安装 Elasticsearch。我将把我的弹性堆栈部署到我们的云操场上的 64 位 CentOS 8 主机,因此我将下载并安装 x86_6.rpm 包:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.3-x86_64.rpm
sudo rpm --install elasticsearch-7.16.3-x86_64.rpm

你可以从 Elastic 下载 x86_64 或 aarch 系统的其他 Linux、MacOS 或 Windows 发行版。

现在,由于我们将部署一个单节点集群,我们可以在没有任何配置的情况下启动 Elasticsearch:

sudo systemctl start elasticsearch

我们可以用curl localhost:9200检查 Elasticsearch startup 以获得一些基本的集群信息:

{
  "name" : "9d995fe8ce1c.mylabserver.com",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "AoP-d-faTdCJYgHHBscm7g",
  "version" : {
    "number" : "7.16.3",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "4e6e4eab2297e949ec994e688dad46290d018022",
    "build_date" : "2022-01-06T23:43:02.825887787Z",
    "build_snapshot" : false,
    "lucene_version" : "8.10.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Kibana

随着 Elasticsearch 的启动和运行,让我们部署并连接 Kibana。在安装 Elasticsearch 的同一个节点上,我将下载并安装 x86_64.rpm 包:

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.16.3-x86_64.rpm
sudo rpm --install kibana-7.16.3-x86_64.rpm

就像 Elasticsearch 一样,你可以从 Elastic 下载适用于 x86_64 或 aarch 系统的其他 Linux、MacOS 或 Windows 发行版的 Kibana。

现在,因为我将它部署到一个云服务器,为了从我本地机器的 web 浏览器访问 Kibana,我需要在/etc/kibana/kibana.yml文件中做两个小的配置更改。首先,因为 ACG 的 Cloud Playground 没有对公众开放 Kibana 的默认端口5601,所以我将把server.port参数设置为8080。其次,我将把server.host参数设置为0.0.0.0,这样就可以从任何主机地址访问 Kibana。您的配置应该如下所示:

# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 8080

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "0.0.0.0" 

保存了这些 Kibana 配置更改后,我们需要打开本地防火墙中的端口8080并启动 Kibana:

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
sudo systemctl start kibana

现在,我们可以在本地 web 浏览器中导航到服务器的公共 IP 地址和端口8080(例如:http://public_ip_here:8080)。

抽样资料

在 Kibana 主页上,您可以选择“尝试样本数据”来加载电子商务、航班和网络日志样本数据集的数据、可视化和仪表板。

从那里,您可以查看示例数据仪表板,并开始使用过滤器和查询来询问数据问题。

一旦你有了感觉,你可以从 CSV、TSV、ND-JSON 或日志文件上传你自己的样本数据,然后创建一些你自己的可视化!

了解更多关于弹性堆栈的信息

想了解更多关于弹性堆栈及其其他惊人的功能?查看我们的弹性堆栈要点弹性搜索深度潜水课程。想要更进一步并获得认证吗?查看我们的弹性认证工程师弹性认证分析师预备课程。我们所有的弹性内容都加载了实践演示,您可以通过使用云操场和基于场景的实践实验室来了解这些演示。

关注 Twitter脸书订阅 YouTube 上的云专家,或者加入我们的 Discord 社区的讨论,跟上所有的科技技能。

Git 定义和术语备忘单

原文:https://acloudguru.com/blog/engineering/git-terms-explained

Git 是一个笼罩在术语和行话中的工具,对于新用户,或者那些了解 Git 基础知识但希望成为 Git 大师的人来说,这常常令人不快。虽然没有什么可以取代在命令行和其他地方使用 Git,但有时我们只需要对工具背后的术语做一点解释。

Git 条款

分支

从主工作项目中分离出来的存储库版本。分支可以是一个新版本的存储库,实验性的变更,或者是存储库的个人分支,供用户更改和测试变更。

Git Checkout

git checkout命令用于切换存储库中的分支。git checkout testing-el会带你去 testing-el 分部,而git checkout master会把你送回 master。在分支之间切换时,请小心您的暂存文件和提交。

摘樱桃

当在 Git 中挑选一个提交时,您会选择一个旧的提交,并在一个定义的位置重新运行它。Git 复制原始提交的更改,然后将它们添加到当前位置。

克隆

克隆是存储库的副本或复制存储库的操作。当将一个存储库克隆到另一个分支时,这个新分支就变成了一个远程跟踪分支,它可以向上游与它的原始分支对话(通过推、拉和取)。

获取

通过执行 Git 提取,您将下载并复制该分支的文件到您的工作站。可以一次获取多个分支,并且可以在运行命令时根据需要重命名分支。

叉子

创建存储库的副本。

HEAD 是一个引用变量,用于表示您正在工作的存储库的最新提交。当您添加新提交时,HEAD 将成为新的提交。

索引

Git 的工作区或暂存区。已更改、添加和删除的文件将存放在索引中,直到您准备好提交这些文件。要查看 Git 索引中设置了什么,请在存储库中运行git status。绿色文件已暂存并准备提交,而红色文件尚未添加到下一次提交的暂存中。

主人

所有存储库的主要分支。所有提交和接受的变更都应该在主分支上。您可以直接从主分支工作,或者创建其他分支。

合并

从一个分支中提取变更,并将它们添加到另一个(传统上是主)分支中。在被项目维护者合并之前,这些提交通常首先通过 pull request 请求。

起源

存储库主要版本的常规名称。Git 还使用origin作为系统别名,向主分支推送数据和从主分支获取数据。例如,git push origin master在远程运行时,会将更改推送到主存储库数据库的主分支。

拉/拉请求

如果有人在一个项目的一个单独的分支上更改了代码,并希望对其进行审查以添加到主分支中,那么这个人可以提交一个拉请求。Pull 请求要求 repo 维护人员检查所做的提交,然后,如果可以接受,合并上游的更改。将变更添加到主分支时会发生拉取。

用对当前分支的提交更新远程分支。您实际上是将您的更改“推”到遥控器上。

Rebase

当对 git 提交进行重新基准化时,您可以拆分提交、移动它、压缩它(如果不需要的话),或者有效地合并两个相互分离的分支。

远程

原始分支的副本。当您克隆一个分支时,这个新分支是一个远程分支,或者说克隆。远程设备可以与原始分支以及存储库的其他远程设备进行对话,从而使工作分支之间的通信更加容易。

储存库(“回购”)

在许多方面,您可以将 Git 存储库想象成一个存储项目所需的所有文件、文件夹和内容的目录。它实际上是项目的对象数据库,存储从文件本身到这些文件的版本、提交、删除等等的所有内容。存储库不受用户限制,可以共享和复制(参见:fork)。

贮藏

在使用 Git 时,您可能需要对文件进行多次更改,但是您可能不希望所有更改都在一次提交中完成。如果您想要暂停您正在处理的变更,以便处理另一个问题或改进,您可以“隐藏”您的变更,实质上是将它们从准备区域中清除,直到这些变更被再次调用。您一次只能保存一组更改。要隐藏你的集结地,使用git stash [files];要检索隐藏的文件,运行git stash pop。你也可以用git stash drop清除隐藏的文件。

标签

标签用于定义项目的 Git 历史的哪个部分是最重要的。这通常用于记录项目的点发布。标签可以添加到您正在处理的提交中,也可以在需要时在事后添加。

逆流而上

虽然 Git 项目不一定有默认的“上游”或“下游”,但是上游可以被认为是您推动 Git 变更的地方——这通常是项目起源中的主分支

想要更多的食物吗?看看这些:

GKE 图像流加速容器启动

原文:https://acloudguru.com/blog/engineering/gke-ludicrous-speed-gke-image-streaming-speeds-up-container-starts

Google Kubernetes 引擎现在可以比以前更快地启动容器了!

谷歌称这项功能为“T0”图像流,但它与你乘坐内胎顺流而下时拍摄照片没有任何关系。更确切地说,这完全是关于容器映像如何从工件注册中心及时地传输到 GKE,因为需要它的各种数据。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


对于一个很小的容器图像来说,这真的没有什么区别。少量的数据被一次发送出去,GKE 像往常一样运行容器。但是随着容器的增长(这在真实的世界中肯定会发生),这个特性开始发挥作用。

正如谷歌所写:

“图像流的工作方式是使用复杂的网络挂载将容器数据层挂载到 containerd 中,并通过网络、内存和磁盘上的多个缓存层为其提供支持。一旦我们准备好映像流装载,您的容器将在几秒钟内从映像提取状态转换到运行状态(无论容器大小如何);这有效地将应用程序引导与容器映像中所需数据的数据传输并行化。因此,您可以期待看到更快的容器启动时间和更快的自动伸缩。

谁不想这样呢,对吧?尤其是因为他们让我们放心,“就你的容器化应用而言,图像流是完全透明的。”

现在,唯一的问题是——如果你密切关注的话,你可能已经发现了——GKE 图像流依赖于谷歌的工件注册产品。如果您仍在使用他们较旧的容器注册中心,那么这可能是您进行迁移所需的推动力。

这个月谷歌还有什么新消息?请观看以下视频,了解 Prometheus 的托管服务、云日志记录上下文跟踪、现已正式发布的一系列服务(包括云域和顶点管道——一种新的无服务器 MLOps 解决方案),以及 Redis 更新的 Memorystore!

通过在 上追随一位云宗师【推特】【脸书】上订阅一位云宗师 进行每周更新,并在 上加入对话 。您也可以查看我们本期的 免费课程 **

GNOME 41 Linux 桌面;亲自参加的红帽活动又回来了

原文:https://acloudguru.com/blog/engineering/gnome-41-linux-desktop-plus-in-person-red-hat-events-are-back

在这篇文章中,我们将报道本月来自 Linux 的所有最新消息,包括对 GNOME 41 的深入研究、Fedora Linux 35 测试版、对 Ubuntu 14.04 和 16.04 的扩展支持、谷歌 Android“上游优先”内核方法、OpenSSH 8.8、Red Hat Summit: Connect 以及网飞将游戏添加到其订阅服务中。

让我们直接跳进来吧!

GNOME 41 桌面环境已经发布

GNOME 41 桌面环境已经发布了,增加了许多新特性。改进包括一个新的软件应用程序,并支持使用 Nautilus 文件压缩创建加密的 zip 存档。它还包括一个新的连接应用程序,现在可以显示平铺的连接,从而可以轻松地在不同的远程会话之间切换。我喜欢这个新特性,因为在一个应用程序中管理这些连接要容易得多。

GNOME 41 桌面也有一个新的图形界面用于新的连接。此外,状态菜单中还有新的电源配置和选项,包括一项令人惊叹的改进,让用户知道应用程序何时请求更改电源配置,因为它会影响整体系统性能。

他们还包括一个新的多任务面板和控制面板中的蜂窝部分。多任务面板允许您调整热点和活动屏幕大小选项,蜂窝部分允许轻松配置调制解调器和移动连接。

日历也有变化,允许文件处理,现在可以将它用作默认的日历应用程序。计算器应用程序也进行了彻底的检查,现在有了更多的颜色和查看计算器模式的能力。

总的来说,我们最喜欢的桌面外壳已经做了很多改进,现在增加了更多的颜色和更好的图标。你可以从 gnome.org 下载,亲自测试一下。

想了解更多关于云安全的信息吗?查看本月的免费 ACG 课程了解安全为重点的云学习自助餐。只需创建一个免费账户并开始行动。不需要信用卡!


红帽峰会:联系现场(和虚拟)活动


第三波红帽峰会发布会已经揭晓!20 人参加的红帽峰会:Connect 会议已安排在 10 月、11 月和 12 月举行,将在 20 个不同的主要城市举行。

地点包括波士顿、纽约、奥斯汀、芝加哥、罗利、休斯顿和旧金山,仅举几例。这些联系会议提供了亲自探索动手实验、培训、演示和交流机会的机会。你还可以参加专家咨询会议。

在 Connect 会议上,您可能想要查看的一个令人兴奋的实验室是权威的 Red Hat Enterprise Linux 8 动手实验室,它将帮助您快速了解新的 RHEL 8 内容。

还有一个关于“使用 Red Hat Insights 和 Red Hat Enterprise Linux 评估和解决大规模安全问题”的会议,如果您没有听说过 Insights,它是一个在大规模环境中从高层次识别配置偏差、安全漏洞和关键补丁的有价值的工具,是任何系统管理员或工程师都应该拥有的工具。

Red Hat Summit 是了解、运行和测试 Red Hat 最新软件的绝佳机会。。。同时,您还可以联系您最喜欢的支持团队,提出问题并获得技术配置方面的说明。

如果您有 Red Hat 支持代表,您还可以参加一对一的会议。

与会者将被要求出示全部新冠肺炎疫苗接种证明,并在现场佩戴口罩。如果你愿意,或者如果你不在美国,你仍然可以点播访问红帽峰会 2021 虚拟体验。您可以在redhat.com/summit找到更多关于日期和地点的信息并进行登记。

Fedora Linux 35 Beta 发布供公众测试

Fedora Linux 35 Beta 已经发布进行公开测试。它基于 Linux 5.14 内核,包含 GNOME 41 桌面环境的发布候选版本。如果您想测试这个测试版,请查看许多可用的映像类型,包括服务器映像、桌面映像、基于云的映像和 Linux 容器映像。这个版本包括 firewalld 1.0.0、LLVM 13、GNU 工具链更新、Python 3.10 和对 TLS 上 DNS 的支持。

加速您在云计算领域的职业发展


从 ACG 开始,通过围绕 AWS、Azure、Google Cloud、Linux 等的实践学习转变您的职业生涯。

扩展了对 Ubuntu 14.04 和 16.04 LTS 版的支持


Ubuntu 长期支持版本 14.04 和 16.04 现在有扩展支持维护,这需要有效的 Ubuntu Advantage 订阅。这些版本已经分别在 2019 年和 2021 年寿终正寝,但它们仍在许多企业级业务中大量生产。这种延长支持维护使这些版本跟上了新的 10 年支持期。在ubuntu.com了解更多信息。

OpenSSH 8.8 已经发布

OpenSSH 8.8 已经发布,有了重大更新。默认情况下,它现在禁止使用 RSA-SHA 或 SHA-1 哈希数字签名。这确保了更安全的密码,但是如果您的应用程序依赖于 SHA-1,并且您计划升级到 OpenSSH 的最新版本,您可能希望进一步了解此更新。对使用 SHA-256 和 SHA-512 散列的 RSA 签名的支持保持不变

谷歌 Android 转向“上游优先”的新内核特性

谷歌宣布一个新的“上游优先”的新内核更新方法。

一向以使用下游补丁著称的 Android,现在将把内核补丁推向主线 Linux 内核上游。

Android 的 Linux 内核在到达 Android 手机之前被广泛地分叉,错误修复要花很长时间才能完成。Android.com 的文档显示“这些修改可能是广泛的,以至于在一个设备上运行的多达 50%的代码是树外代码(不是来自上游的 Linux 或 AOSP 通用内核)。”这导致在最初的内核发布和手机发货之间花费了大量的时间,有时发货的手机内核已经有两年了。

这种新的“上游优先”方法对 Android 和客户来说都很棒,因为它确保了新发布的设备中包含新功能和新漏洞修复

Linux 游戏:夜校工作室加入网飞

Linux 游戏新闻,夜校工作室,创造者或 Oxenfree,已被网飞收购。第一轮游戏将是专注于移动的游戏,但此次收购表明,更大的游戏——非移动或 VR 游戏——也可能会出现。

提升您的 Linux 知识水平

这就是本月的 Linux 新闻。想要跟上 Linux 和云的所有事物?在 YouTube 上订阅一位云专家的每周更新和各种精彩内容。你也可以在脸书上喜欢我们,在推特上关注我们,或者在不和谐上加入对话!

直到下一次,希望您的源代码保持开放,您的代码可以编译。继续牛逼吧,云大师们!

谷歌云甲是做什么的?

原文:https://acloudguru.com/blog/engineering/google-cloud-armor

Web 应用程序提供了一个购物、游戏、流式内容、理财等等的地方。组织保护其最重要和最有利可图的应用程序的机密性、完整性和可用性至关重要

谷歌的回答:谷歌云甲。

什么是谷歌云甲?

鉴于这些 web 应用程序的安全风险,谷歌让其云客户能够使用谷歌云盔甲服务来保护他们的应用程序。这种安全服务与云负载平衡相集成,以保护您的后端服务和应用免受分布式拒绝服务(DDoS)流量的影响,这些流量可能会危及这些资产的可用性。GCP 装甲利用谷歌的全球威胁情报馈送和机器学习来识别针对您的谷歌云平台(GCP)资源的 DDoS 流量,并阻止恶意流量。

谷歌云甲是做什么的?

Google Cloud Armor 整合了一个 web 应用防火墙(WAF)来保护 web 应用免受 OWASP 十大安全风险列表中列出的许多安全风险的影响。GCP 的客户可以利用 GCP 装甲的 WAF 功能,使用预先配置的 WAF 规则来阻止 web 应用攻击。客户还能够定制 WAF 规则,并根据 IP 来源、HTTP 请求头和其他属性定义过滤流量的条件。

最常见的 web 应用程序安全风险是什么?

非营利组织开放 web 应用程序安全项目(OWASP)列出了互联网上一些最臭名昭著的 Web 应用程序安全风险。该列表包括跨站点脚本(XSS)攻击和 SQL 注入(SQLi)攻击,它们可以读取存储在 SQL 数据库中的机密数据。

在 XSS 攻击中,对手可能会在 web 应用程序中注入恶意代码,或者危害客户端的浏览器。此外,我们不要忘记 DDoS 攻击,这种攻击试图通过用大量流量淹没应用程序来关闭 web 应用程序。


从 GCP 开始,不知道什么认证适合你?

查看这篇文章,它介绍了所有最新的 GCP 云认证,它们涵盖了哪些内容,以及你如何利用它们来推进你的职业生涯。


谷歌云甲是免费的吗?

Google Cloud Armor 有两个定价等级:标准和管理保护增强版。

对于标准用户,GCP 装甲是一种按月或按请求付费的服务。WAF 请求是每百万个请求 0.75 美元,WAF 安全策略是每个策略每月 5 美元,WAF 规则是每个规则每月 1 美元。虽然这一层没有时间承诺和数据处理费用,但它不提供任何受保护的资源。

对于托管保护增强版用户,GCP 装甲是一种年度订阅服务,每月起价 3000 美元。订阅中包含的受保护资源超过 100 个,每个资源每月需额外支付 30 美元。虽然所有 WAF 请求、安全政策和规则都包含在此订阅中,但它还收取额外的数据处理费。


刚到 GCP,想了解如何保护谷歌云中的资源和应用程序?

登录您的 ACG 账户,观看我们的谷歌云安全介绍课程。本课程将介绍谷歌云盔甲、云防火墙、云身份以及其他保护您的 GCP 资源的基本原则。

谷歌云发布新的 GCP 开发者备忘单

原文:https://acloudguru.com/blog/engineering/google-cloud-drops-new-gcp-developer-cheat-sheet

对于谷歌云平台来说,这是一个重要的月份,包括新的云部署和证书管理器产品,Bigtable 的自动扩展,EU 的有保证的工作负载,新一代的云功能,以及更新的谷歌云开发人员备忘单和 GCP 架构图表工具!让我们开始吧!

想要本月所有视频形式的谷歌云新闻吗?看看我们这个月在 GCP 的最新一集。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


2022 版谷歌云开发者备忘单

谷歌开发者关系团队一直在努力工作,他们对谷歌云开发者备忘单进行了大规模更新。如果你参加过我的谷歌云培训,那么你可能已经熟悉这个神奇的工具了。如果你没有,那么今天是你的幸运日!

因为这东西太牛逼了!

备忘单也被称为“四个字以内的谷歌云产品”,这是它的魅力之一。这些明智选择的词汇让你对某个特定的 GCP 产品的功能有一个很好的感觉——实际上,是每个产品的功能,因为它很全面!

可打印的海报版本仍然是我最喜欢的,但新的互动版本的一个关键好处是,每个产品卡都将你直接链接到文档,所以如果你需要的不仅仅是四个词,你可以深入了解。列表视图(可在顶部选择)与海报有着同样舒适的一览式感觉。

我们不仅对这个非常有价值的工具进行了大规模的更新,看起来我们在未来也会得到更快的更新!Priyanka Vergadia 定期发布关于谷歌云的精彩内容,因为她现在已经接管了这个工具的维护工作,它的未来看起来一片光明!

但是等等,还有呢!

他们也刚刚发布了一个新的GCP 建筑制图工具!就其本身而言,这似乎并不令人兴奋。但是酷在集成中!

首先,图表的组件与备忘单相连接,以帮助挑选和理解它们。接下来,您可以从参考架构库中引导您的图!不仅如此,这些架构示例中的一些已经设置好了,因此您可以非常容易地将它们部署到您的项目中,并进行试验!

不错吧。我以为你会喜欢的。这里有一大堆其他 GCP 小吃供你欣赏。

用于 Spark GA 的 Dataproc 无服务器;在预览中触发 BigQuery

如果您正在使用 Apache Spark 从您的数据中榨取价值,我敢肯定这不是因为您真的喜欢管理这些 Spark 集群,对吗?好吧,你会很高兴听到谷歌刚刚发布了他们的data proc Spark无服务器产品,供大众使用!现在你可以让 Google 管理集群和调整基础设施,你可以专注于编码。

作为奖励,现在还有一个通过 BigQuery 的 Spark 的私人预览,这使得更容易获得 Spark-y 的优点,就在你的数据附近。

Bigtable 的自动缩放现在正式发布

现在,说到管理集群,Bigtable 也得到了提升。Bigtable的自动缩放现已全面推出。当您的系统不需要所有容量时,为过度配置的 Bigtable 集群付费是没有意义的,因此这是一个受欢迎的变化,可以更好地将您的成本与您的实际使用相匹配。

尽管谷歌的博客文章中使用了不少于六次相当有趣的词“日间”,但我相信如果你的工作量恰好是“夜间的”,你也可以轻松节省他们提到的 40%。

新的计算优化 AMD EPYC 虚拟机

好的……这个公告是关于使用第三代 AMD EPYC 米兰处理器的新的计算优化 C2D 实例家族。您可以用多达 112 个 vCPUs 和 896 GB 的内存来增强这些功能。当然,即使这些是计算优化的 CPU,您仍然可以像往常一样,在计算引擎中选择最合适的处理器与内存的比率。

面向欧盟的有保证的工作负载现已正式上市

如果你对它不熟悉,保证工作负载是谷歌对亚马逊的 GovCloud 的回应——但谷歌不是一个满足合规性的独立云区域,而是一个工作负载系统,以满足世界上该地区任何 GCP 地区的合规性。现在,谷歌为欧盟提供的保证工作负载正式上市。

虽然这包括数据驻留、数据加密和谷歌人员,但它们仍处于与云外部密钥管理器集成的主权控制的公共预览中,该管理器允许您将数据加密密钥保存在 GCP 之外。

云功能第二代公开预览版

如果你已经关注这个系列有一段时间了——或者,即使你没有——那么你可能知道我喜欢所有无服务器的东西!如果你也是,那么你会很高兴听到谷歌刚刚发布了他们的第二代云功能!

现在,由于这个新版本是基于云运行的,这就模糊了无服务器计算选项之间的界限。因此,我们仍然拥有与第一版云功能相同的按使用付费计算,但现在我们也可以同时处理多个请求/事件,就像 Cloud Run 一样!

当然,在您打开它之前,请确保您的代码能够处理并发请求!但是,如果您的事件处理不总是限制 CPU,这可以为您节省一大笔钱。此外,第二代产品还能让您:

  • 在更长的时间和更强的实例上运行您的函数
  • 引脚实例减少冷启动
  • 在多个版本之间分割流量

这些新的云功能太棒了!

公开预览版中全新的完全托管证书管理器

现在,众所周知,所有的网站最好都使用 HTTPS。我的意思是,不仅正常的 HTTP 连接会在 Chrome 地址栏中被标记为“不安全”,而且不安全的网站也会在谷歌搜索中被深埋。因此,这是一个好消息,谷歌现在有一个新的无服务器证书管理器产品在公开预览

Certificate Manager 让任何人都可以非常轻松地在面向其 GCP 工作负载的外部 HTTPS 负载平衡器上获取和使用 TLS 证书。你每个月可以免费使用 100 个证书,之后就是按证书付费了。

因为这些由谷歌的基础设施管理,你的客户可以快速与谷歌的边缘节点协商安全连接。超低延迟!哦,这个产品还支持通配符证书。很狂野,是吧?好吧,我知道那个笑话很糟糕。对不起

云部署现已正式上市,可持续交付至 GKE

另一个新产品是云部署,现在也正式发布!正如谷歌在公告中指出的,“Kubernetes 持续交付的运营成本可能非常高。”嗯,Cloud Deploy 旨在通过这种受管且固执己见的持续交付服务为 GKE 消除一些痛苦。

如果你使用 GKE,那么你可能会发现除了第一个免费的外,每个月额外的 15 美元是值得的。Cloud Deploy 构建于 Skaffold 之上,既包括与 GCP 管理的轻松集成,也包括许多内置的最佳实践。

即将举办的活动:数据云峰会和云计算未来

最后,我想让你知道一些即将到来的事件。接下来的 4 月 6 日是数据云峰会。这将是一场关于“人工智能、机器学习、分析、数据库等”的在线活动

更好的是,我们现在已经有了下一个Google Cloud’22的日期!Cloud Next 是谷歌的年度会议,挤满了所有最令人兴奋的 GCP 公告,所以请确保在 10 月 11 日至 13 日举行。如果你像我一样抱着一线希望,希望这可能会成为一场面对面的活动,那么一定要预留一些额外的时间来往返旧金山。祈祷吧,我希望能在那里见到你!

关注谷歌云的一切

在 YouTube 上订阅一位云专家的每周新闻和更新。你也可以在脸书上喜欢我们,在推特上关注我们,或者在不和谐上加入对话!

保持安全,照顾好你周围的人,继续保持敬畏,云大师们!

谷歌云推出云数字领袖认证

原文:https://acloudguru.com/blog/engineering/google-cloud-introduces-cloud-digital-leader-certification

谷歌云世界的大新闻是看起来像一个小认证的形式。谷歌公布了一项新的认证——云数字领袖认证。

Azure 有 AZ-900 微软 Azure Fundamentals ,AWS 有认证云从业者(CCP) ,现在 Google Cloud 有云数字领袖,目前正在测试中。测试考试的注册已经关闭,但考试的一般注册将于 2021 年 6 月开放。


“这一基础级别的认证可能是谷歌有史以来将人们带入 GCP 生态系统的最重要的事情。”

– Mattias Andersson


这是 GCP 第一个基础级别的证书。它是“工作角色不可知的”,不需要谷歌云的实际操作经验,也没有参加考试的先决条件——可以远程参加。

云数字领导者认证取代了云工程师助理认证,成为为 GCP 提供的最初级证书。它建议至少有六个月的谷歌云建设经验。


获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回答,以确定哪些概念会让人犯错。抓住这个云指南获取最痛苦的云术语的简洁定义。


为什么基础级认证很重要?

如果你想知道哪一个谷歌云认证最适合你,你可能会想为什么这个初级认证很重要。

正如 ACG 的 Mattias Andersson 所说:“这个基础级认证可能是谷歌有史以来将人们带入 GCP 生态系统的最重要的事情。”

为什么?很少有人使用这样的初级证书来展示他们的技能。相反,新人和非技术人员将它们作为学习的指南。这些初学者友好的、不那么可怕的认证是那些云新手的完美起点,并帮助人们构建理解云如何工作的框架。

但是如果你是技术型的,为什么要在乎这个认证呢?

回到 Mattias:“想象一下,如果你工作中的每个人——每个人都真正理解云的基础知识。你可以花更少的时间和精力来重新解释同样的事情,并纠正基于技术如何工作的假设的误解。能够说‘同一种语言’让团队理解技术,并就技术进行明智的交流。”

什么是云数字领导者?

谷歌表示,云数字领导者可以“阐明谷歌云核心产品和服务的能力,以及它们如何让组织受益。云数字领导者还可以描述常见的业务用例,以及云解决方案如何支持企业。”

在云数字领导者考试指南中,谷歌指出,这个人需要理解一些关键的权衡,包括“成本与责任之间”和“比较云服务时管理水平与灵活性之间”的权衡。该考试还涉及到谷歌和用户之间管理谷歌云安全和系统构建的其他方面的共同责任

想要了解谷歌云的基础知识吗?查看我们免费的谷歌云概念课程或我们更深入的谷歌云平台速成班


获得超过认证的

加入云专家并获得课程、动手实验、测验和学习路径,这些将带你一步一步地从新手成为你所选择的云领域的专家。获得 7 天免费试用或查看我们的免费课程

谷歌云宣布 Firestore Key Visualizer

原文:https://acloudguru.com/blog/engineering/google-cloud-rolls-out-new-firestore-key-visualizer-partner-program-changes

这个月 GCP 有什么新鲜事?我们有一些新的用户界面来导航控制台,Firestore 的一个关键可视化工具,新的警报选项,即将推出的安全运营增强功能,以及谷歌合作伙伴计划的一些重大变化,无论您是否是合作伙伴,这些变化都非常重要。

继续完整的纲要!


加速你的职业生涯

无论你是新手还是认证专家,云专家都能让你轻松(也很棒)地提升自己的职业生涯。查看 ACG 的免费课程现在就开始免费试用。


GCP 控制台中新的“所有产品”页面

鉴于谷歌云平台有一百种不同的产品(毫不夸张!)有时候,费力地把它们全部看完才能找到你需要的东西可能是一件痛苦的事情——尤其是在那个小小的附加菜单中。

因此,谷歌刚刚推出了一个新的“所有产品”页面,使探索产品变得更加容易,包括每个产品的简短和较长的描述。

自己去看看,或者在这里获得更多信息

使用关键可视化工具了解 firestorm 性能

另一个我认为你会看到好处的工具是谷歌新的 Firestore 关键可视化工具。

Firestore 是一个非常棒的无服务器 NoSQL 数据库,但是如果你以有问题的方式构造你的密钥,它仍然会有问题。

Key Visualizer 旨在通过图形化地绘制出您的键用法来帮助您识别此类问题。报告中的亮点值得关注。另外,甚至如果你发现你所有的请求都已经均匀地分布在你的键盘上,你将有一个耀眼的图形添加到你的下一个演示或状态更新中。

点击了解更多

云监控的发布/订阅、Webhook 和闲置通知现已正式发布

您已经可以让云监控通过电子邮件、短信和移动应用程序通知您警报,但现在您可以将 Pub/Sub、Webhook 和 Slack 通知添加到该列表中,因为它们刚刚变得普遍可用。此外,寻呼机工作通知目前还在测试阶段。

当然,这些都是很好的选择!但是由于 webhooks 是如此的可扩展,你现在可以挂接你可能需要的任何东西,即使它不在这个列表中。世界是你警觉的牡蛎。

点击获取全部详情

谷歌收购 simplify

SIEM 代表安全信息和事件管理,SOAR 代表安全协调、自动化和响应。这个月,谷歌收购了一家名为 Siemplify 的公司,这是一家 SOAR 提供商。

现在,细节仍然有点单薄,但我认为可以肯定的是,谷歌将把他们新购买的产品集成到他们现有的安全产品中——很可能是 Chronicle,也可能是他们的云安全指挥中心 SCC。无论如何,这只是一个提醒。

谷歌推动云合作伙伴生态系统

我们这个月的重点是关于谷歌将如何有目的地完善他们强大的合作伙伴计划。他们会加倍投入双倍的资金,并大幅降低市场利润率。宏伟,嗯?

好的。所有的头韵都用够了,让我们更深入地探讨细节。

这份声明最具体的部分是,谷歌正在大幅降低他们在 GCP 市场的佣金:从 20%一直降到 3%。

这意味着市场可以成为利用合作伙伴提供的解决方案的更有效的方式。像 MongoDB、Cassandra、Redis、Elasticsearch、Jenkins、GitLab、Redmine、NginX 这样的例子不胜枚举。

因此,如果你是使用市场的顾客,这意味着你向谷歌支付的费用会少很多。如果你是在市场上提供解决方案的合作伙伴,这意味着你会吸引更多的客户,也许会为你自己赚更多的钱!**

别担心:由于这些解决方案通常仍在 GCP 运行,谷歌仍将设法盈利,不会倒闭。

完整的公告提供了更多关于合作伙伴的信息——所以你可能想通读全文,如果那是你的话。但亮点包括新的专业服务、销售线索挖掘和销售线索共享计划,以及针对行业特定解决方案、云迁移和经销商的财务优势。除此之外,谷歌还投入巨资改善其整个合作伙伴生态系统。

在 2022 年实现云计算

随着 2022 年的到来,你有没有想过如何改善自己的状况?

无论您是想在 2022 年开始您的云职业生涯,还是想提高技能或带领整个组织完成云转型,我们都能满足您的需求。

开始免费试用,体验我们提供的所有培训——或者注册一个(不需要信用卡)免费计划,让你每月轮流参加一套免费课程

我希望你平安无事,一切顺利!照顾好你身边的人,继续保持牛逼,云大师!

想跟上万物云?在推特上关注 ACG脸书在 YouTube 上订阅云专家的每周 AWS 更新,并在 Discord 上加入对话。

我们想听听你的大师故事

原文:https://acloudguru.com/blog/news/guru-stories

在 ACG,我们全心全意地相信学习技术技能可以帮助人们找到更好的职业——和更好的生活。对我们来说,最大的乐趣之一是听到大师们谈论云学习对他们的生活意味着什么。这就是我们推出#GuruStories 的原因。

你怎么会在这里?下一步是什么?分享你的经历,让和你一样(或者根本不喜欢你)的人看到学习新技能潜在的改变生活的力量。

您的故事鼓舞了其他云学习者,也愉快地提醒了我们为什么要在 ACG 做这些事情。

来自云端的故事

以 guru Veliswa 的故事为例,她是一个积极进取的人,努力成为了一名云工程师。“一位云计算大师改变了我的生活,”她说。“我能够学习该认证的事实为我打开了大门……今天,我可以称自己为云工程师,而三年前,我从来没有想过会发生这样的事情。”

当像韦利斯瓦这样的人踏上云学习之旅,回来讲述这个故事时,你要带着 ACG 团队一起上路。更好的是,你可以向那些刚刚起步的人展示云学习可以带他们去哪里。

或者考虑一下 Tom 的故事,他是一名美国海军退伍军人,找到了第二份职业,即云运营经理。有一段时间,他在科技行业之外努力寻找工作。但一位云计算专家帮助他锁定了三项认证和一份新工作。“我走出门外,工资比以前涨了一倍,”他说。“我把这直接归功于一位云计算大师为我开启的学习和机会。”

和我们一起的标签

像这样的商店激发了我们新的标签#GuruStories。#大师们将把所有这些精彩的故事汇集在一起,帮助其他大师(或有抱负的大师)分享胜利并一起庆祝。我们在这里是为了#GuruStories,从任何由于生活变化的环境而开始他们的旅程,转换职业,试图获得梦想的工作,或由他们的工作赞助的抛光技能,到多年来一直带我们一起旅行的专家。

成就不论大小,我们都想听。无论云学习改变了你的生活、你的职业,还是给了你一个不错的加薪——或者如果你只是为自己获得了一个新证书或通过了一门课程而感到自豪——我们都希望听到你的声音,大师们!

所以制造点噪音吧。我们想听听你的故事,向你学习,想办法帮你实现所有的目标,并与你和整个 ACG 家庭一起庆祝。保持警惕,开始在推特推特脸书LinkedIn 上用#权威人士来标记我们。


无论您是完全的新手还是经验丰富的技术人员,我们的 explain-it-like-I-five 方法、动手工具和引人入胜的讲师都将帮助您学习新的云技能,并在此过程中获得一些乐趣。

入门>


学习 AWS 安全基础知识的动手实验室

原文:https://acloudguru.com/blog/engineering/hands-on-labs-for-learning-aws-security-essentials

这篇文章重点介绍了动手实验,这些实验将帮助你获得建立 AWS 安全技能的实际经验。

把你的手放在一起。从打响指和拍手,到假装滑动拇指的动作让孩子兴奋不已,手确实派上了用场。手也是学习云技能的最佳途径,比如 AWS security

在这篇博文中,我们将分享五个 ACG 动手实验室,它们非常适合希望通过所有云专家都需要知道的一些基本知识来提升其 AWS 安全技能的 AWS 学徒和从业者。

这些引导式实验将让您在安全的云环境中完成真实目标的同时,也能轻松上手。

这五个动手实验大约需要三个小时,旨在教您如何应用 AWS 身份和访问管理,以及其他几个 AWS 服务,以解决现实世界中的应用和服务安全管理问题。

准备好了吗?让我们开始学习吧!


查看我们的其他动手实验播放列表

你还要果酱吗?查看 瑞恩的云播放列表:学习 AWS 要领的动手实验室
全押在 Azure 上?调到 Lars 的云播放列表:Azure 基础知识动手实验
你打倒 GCP 了?点击播放我们的 动手实验播放列表,学习 GCP 要领


AWS 安全要素播放列表

技能等级:修炼者
5 个实验室| 3 个小时

建议的音乐配对

注意:要开始下面的动手实验,您需要一个 ACG 帐户。没有户口?不要烦恼!开始免费试用。或者注册一个免费帐户,开始学习本月的一批免费课程,包括我们的 AWS 安全基础课程和其他 AWS-一些 AWS 内容,如 Amazon DynamoDB Deep Dive如何正确保护一个 S3 桶


保护您的 AWS 环境这个免费的点播式网络研讨会中,您将了解如何从零开始保护复杂的 AWS 环境,并了解如何审计和保护 AWS 帐户。


1。AWS 身份与访问管理(IAM)简介

时长 : 45 分钟

目标:

  • 将用户添加到适当的组中
  • 使用 IAM 登录链接以用户身份登录

概述 : AWS 身份和访问管理(IAM)允许 AWS 客户管理其帐户和 AWS 内可用 APIs 服务的用户访问和权限。IAM 可以管理用户和安全凭证,并允许用户访问 AWS 资源。

这个动手实验中,您将了解 IAM 的基础。我们将重点讨论用户和组管理,以及如何使用 IAM 管理的策略分配对特定资源的访问。我们将学习如何找到登录 URL,AWS 用户可以在那里登录到他们的帐户,并从现实世界的用例角度对此进行探索。

已经是 ACG 会员了?试试这个实验室这里


2。 使用组和策略管理 AWS IAM 用户权限

持续时间 : 30 分钟

目标:

  • 创建客户管理的策略
  • 创建通过客户管理的策略控制的组
  • 将用户分配到一个组

概述:在这个动手实验中,我们做了一点角色扮演。你是一名安全工程师,为一家新成立的公司工作,该公司开设了一家网上书店,出售稀有和古董书籍。创始人需要您的帮助,为她的开发团队设置适当的访问权限。为了提供访问并确保适当的安全措施到位,您将使用 AWS 身份&访问管理(IAM)。您将使用策略对用户进行分组并为开发人员组分配权限。

ACG 已经是会员了?在这里开始这个实验室


3。 在 AWS 中创建和配置基本 VPC 组件

持续时间 : 30 分钟

目标:

  • 创造一个 VPC
  • 创建互联网网关
  • 编辑主路由表
  • 创建网络访问控制列表(NACL)并关联它。
  • 创建两个公共子网

概述 : AWS 网络由许多不同的组件组成。理解这些组件之间的关系是理解 AWS 整体功能和能力的重要部分。在这个动手实验中,您将创建一个 VPC,其中包含一个互联网网关和跨多个可用性区域的子网。

签约进 ACG?在这里启动这个实验室


看点:领导需要了解哪些关于云安全的知识
你的业务在云端安全吗?答案很大程度上取决于你。观看 Mark Nunnikhoven 的免费点播网络研讨会,他将解决云安全的关键问题。


4。 AWS 安全精要——网络分段实验室

持续时间 : 90 分钟

目标:

  • 配置安全组
  • 配置网络访问控制列表(NACLs)

概述:在这个动手实验中,您将使用安全组和网络访问控制列表对网络进行分段,以便只有必要的流量可用。您将获得使用安全组和网络访问控制列表来保护多层应用程序的不同层的经验。

ACG 会员?封锁这个实验室这里


5。 AWS 安全要点——VPC 端点和保护 S3

持续时间 : 60 分钟

目标:

  • 保护好 S3 桶
  • SSH 到应用服务器 1
  • 创建 VPC 端点

概述 : AWS S3 和 DynamoDB 是出色的托管服务。(有人甚至说 S3 是有史以来最伟大的云服务。)这些服务使您可以专注于重要的事情,而 AWS 则专注于后端流程。不幸的是,因为这些服务是由 AWS 管理的,它们需要流量离开您的受保护的 VPC 才能被访问。输入 VPC 端点!

VPC 端点允许您在 VPC 内创建端点,以保持 VPC 资源和这些 AWS 服务之间的专用链路上的流量。使用您自己的 VPC·CIDR 系列产品私下访问 DynamoDB 和 S3,对于维护一个安全的环境,抵御黑客、数据窃贼和其他不受欢迎的人是至关重要的。

这个动手实验中,您将配置一个 VPC 端点并利用加密来确保您的数据安全。

登录您的 ACG 帐户?在这里动手


学习 AWS 安全性的建议后续步骤

  • 一旦你把这些实验归结为一门科学,你就可以把难度提高一个档次。使用我们新的挑战模式选项,可以进行上述许多实验。

  • 不确定下一步去哪里?查看我们的 AWS 安全学习路径,了解在您从新手到专家的过程中需要学习什么来不断提高您的 AWS 安全技能。

与安全相关的资源


锁定您的 AWS 安全技能

学得更快。动作快点。从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。

学习 GCP 基础知识的动手实验播放列表

原文:https://acloudguru.com/blog/engineering/hands-on-labs-playlist-for-learning-gcp-essentials

这篇文章重点介绍了一些动手实验,这些实验将帮助你获得谷歌云平台(GCP)的真实体验。这些实验室将为您提供一些基本 GCP 概念几项关键服务的实际操作。**

你得把它交给汉兹。从抓拍到偷别人的鼻子,到引人注目地指出一名被指控的罪犯今天在法庭上,这些功能手指夹具真的很方便。他们对于学习谷歌云平台(或 GCP)也是必不可少的。

为什么?因为亲身体验云对于理解云至关重要。这就是为什么一位云计算专家提供了一个庞大的动手实验室库。这些引导式练习让您在安全的云环境中完成真实世界的目标时变得轻松。

在这篇博文中,我们将分享 ACG 动手实验室,这些实验室非常适合希望学习 GCP 基础知识的谷歌云新手。

你还要果酱吗?查看 瑞安的云播放列表:学习 AWS 基础知识的动手实验室 。全押在 Azure 身上?收听 Lars 的云播放列表:Azure 基础知识实践实验室

建议的音乐配对

注意:要开始下面的动手实验,您需要有一个 ACG 帐户。没有户口?开始免费试用。你也可以注册一个免费账户,开始学习本月的免费课程,包括一小时的谷歌云概念课程,这是一个适合 GCP 新人的快速入门课程。


Complete guide to the Cloud and Dictionary

获取谷歌云痛苦字典
说云不一定要硬。我们分析了数以百万计的回答,以确定哪些概念会让人犯错。抓住这个云指南获取最痛苦的 GCP 术语的简洁定义。


1。使用计算引擎 Windows 实例

时长:45 分钟

描述:计算引擎虚拟机实例可以利用各种引导磁盘,谷歌云提供 50 多个磁盘映像可供选择。云专家必须擅长构建各种操作系统。在这个动手实验中,您将体验如何创建基于 Windows 的计算引擎虚拟机实例,设置 IIS 服务器,并实时推送您的第一个网页以确认服务器的运行。

已经是 ACG 会员了?试试这个实验室这里

步骤:

  • 创建计算引擎虚拟机实例。
  • 设置 Windows 密码。
  • 启动 RDP 窗口。
  • 安装 IIS 并测试您的页面。

2. 设置云存储生命周期规则

时长:30 分钟

描述:在云存储桶中保存一个对象非常便宜。但不是免费的。成本因所选的存储类别而异。某些对象首先需要更高的可用性,需要具有最高可用性(和成本)的存储类别。这些对象最终可能会被移动到可用性较低/价格较低的存储类别,甚至被删除。通过建立和实现生命周期规则,可以自动管理这些对象。在这个动手实验中,我们将从控制台和命令行为 Google 云存储桶设置各种生命周期规则。

有 ACG 账户吗?在这里开始这个实验

步骤:

  • 创建一个云存储桶。
  • 定义生命周期规则。
  • 从命令行获取生命周期规则。
  • 用 JSON 文件设置生命周期规则。

3. 管理谷歌云 SQL 实例

时长:60 分钟

描述:使用云 SQL 时,您需要管理多个实例:创建、克隆、启动、停止、重启和删除它们。本次动手实验将为您提供执行这些任务的经验,以便您熟悉处理云 SQL 实例所需的步骤。

ACG 会员?在此获得动手权利

步骤:

  • 创建一个实例。
  • 创建一个数据库。
  • 克隆实例。
  • 停止、启动和重新启动实例。
  • 删除实例。

看点:解决“无经验”的云招聘问题
需要经验才能得到工作,但需要工作才能得到经验。这是一个多云的第 22 条军规!观看免费点播的网络研讨会,了解帮助数十人获得第一份云计算工作的 ACG 挑战赛。


4。在谷歌云外壳中构建自定义网络

时长:45 分钟

描述:自定义网络允许自定义子网和防火墙规则,这意味着您可以完全控制对资源的访问。在本次动手实验中,您将使用 Google Cloud Shell 创建一个云 VPC 网络,该网络包含两个子网、允许 SSH 进入的防火墙规则以及连接到子网的计算引擎虚拟机实例。一旦建立了网络和资源,您将通过 SSH 终端测试网络的连通性。

ACG 会员?现在就开始这个实验。

步骤:

  • 激活云壳。
  • 创建自定义网络和子网。
  • 定义防火墙规则。
  • 启动虚拟机实例并通过 SSH 进行测试。

学习 GCP 基础知识的推荐后续步骤

新来 ACG 吗?您可以获得 7 天免费试用,并立即开始学习。或者注册一个免费的 ACG 账户,通过我们的免费云课程的轮换阵容来学习。

当你完成这些动手实验后,你可能想要验证你的 GCP 知识,并成为一名谷歌认证助理云工程师。想知道认证和有什么关系,哪个谷歌云认证最适合你?跳过这里了解所有细节。简而言之:我们的 GCP ACE 课程将帮助你学习 GCP 的基础知识,并培养你通过 GCP ACE 考试所需的实践技能。

从那里,你可以探索我们的 GCP 云培训库,并继续前往一些云领域的高薪认证和工作。而且——最重要的是——保持敬畏,云大师们!


准备好提升您的云技能了吗?免费体验 ACG。云专家的边做边学方法将帮助你掌握云技术,并在职业生涯中取得进步。

库伯内特八岁生日快乐!

原文:https://acloudguru.com/blog/engineering/happy-8th-birthday-kubernetes

2022 年 6 月 7 日,标志着 Kubernetes 首次发布八周年。在这段时间里,它不仅成为了广泛使用的开源工具,而且成为了容器编排软件的行业领导者。让我们庆祝 Kubernetes 取得的进步!


加速您的职业生涯

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


Kubernetes 是从哪里来的?

Kubernetes 最初是由工程师 Joe Beda、Brendan Burns 和 Craig McLuckie 在谷歌创建的。在早期,Google 已经投资了容器,并开发了一系列容器集群管理器。这最终导致了博格系统及其继任者欧米茄。然后开始下一个迭代的工作,一个被称为项目七的软件。这是受到从博格和欧米茄获得的知识的启发。

七号工程最终变成了 Kubernetes。Kubernetes 利用 Borg 和 Omega 背后的功能和思想,并使用最新的技术重新实现它们,创建了一个通用的容器管理集群解决方案,任何人都可以使用。它不仅仅是为谷歌系统设计的,而且是开源的。

这个新工具的成功立竿见影。三年之内,Kubernetes 建立了一个庞大而繁荣的开源社区,拥有众多的代码贡献者、用户和亲自参与的活动。

2022 年的 Kubernetes

虽然它很快受到欢迎,但今天可以被描述为 Kubernetes“成功”的时代。在其八岁生日之际,Kubernetes 正经历着采用和使用指标的逐年爆炸式增长。

2021 年云本地计算基金会的年度调查宣称,Kubernetes 已经跨越了“采用鸿沟”,96%的受访公司正在使用或评估它。去年,27%的开发者实际上使用了 Kubernetes,比 2020 年增加了 67%。

VMware 的Kubernetes 2022 年状态调查发现,采用率正在进一步上升,更多的公司正在使用 Kubernetes 集群来实现他们的目标。今天,Kubernetes 已经赢得了被称为主流技术的权利。

随着越来越多的公司采用 Kubernetes,它现在是管理和编排容器领域的领导者。而且它的增长似乎没有放缓。如果 Kubernetes 已经进入主流,它很可能会留在那里,并增长。

Kubernetes 的下一步是什么?

目前的趋势似乎表明,Kubernetes 的采用只会增加。开发仍在继续,我们会在每个新版本中看到新的特性和改进。

云中的 Kubernetes

Kubernetes 逐渐成为各种技术的基础设施支柱。它是为“云原生”而构建的,在云的世界里,我当然如鱼得水。它的大部分采用了托管的基于云的产品形式,如亚马逊弹性库本内特服务(亚马逊 EKS)、 Azure 库本内特服务 (Azure AKS)和谷歌库本内特引擎 (GKE)。

在未来,“云中的 Kubernetes”似乎有可能继续增长。在某些方面,Kubernetes 正在成为云中容器的标准。

多云部署

另一个值得一提的趋势是多云部署。使用多云的组织通常通过 Kubernetes 来实现,利用各种云供应商的 Kubernetes 产品。如上所述,Kubernetes 也正在成为在云中运行工作负载的标准化 API。

Kubernetes 将继续成熟

除了 Kubernetes 的广泛采用之外,就 Kubernetes 使用的成熟度而言,公司似乎也在增长。越来越多的技术被 Kubernetes 采用,以满足更成熟的需求,如可观察性和监控。这是一个迹象,表明公司正在对 Kubernetes 进行长期投资,他们的 Kubernetes 系统越来越强大。随着整个生态系统的成熟和发展,Kubernetes 的未来看起来非常光明。

Kubernetes 的未来会怎样?

最初是一个小型的,尽管很受欢迎的开源项目,现在已经发展成为一个主流的,行业领先的工具。多年来,人们一直猜测库本尼斯会留在这里,似乎他们是对的。

Kubernetes 的未来看起来确实很光明,它可能会继续在云世界中保持越来越大的影响力,帮助许多公司快速创新并实现他们的梦想。为未来的八年干杯!

想了解更多关于 Kubernetes 的信息?

我有一堆课程可以让你在 Kubernetes 开始学习并获得认证。

Want to learn more about Kubernetes?

I’ve got a bunch of courses designed to get you started and certified in Kubernetes.

生日快乐,谷歌!技术服务 24 岁

原文:https://acloudguru.com/blog/engineering/happy-birthday-google-tech-service-turns-24

2022 年 9 月 27 日标志着谷歌已经存在了 24 年,你有可能会以这样或那样的方式与谷歌的生态系统互动。即使你致力于通过强大的搜索引擎使用 Jeeves,或者不使用 Gmail,你在网上做的事情也有可能在幕后架构中利用谷歌云平台。让我们庆祝谷歌已经走了多远!


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、GCP 等地的课程和实际动手实验室改变你的职业生涯。


谷歌云平台从何而来?

该公司于 1998 年由拉里·佩奇和谢尔盖·布林正式创立,以销售搜索引擎。但是仅仅在 10 年后,GCP 推出了一款名为 App Engine 的产品。谷歌指出App Engine的目标是“让一个新的网络应用容易上手,然后当这个应用获得巨大流量并拥有数百万用户时,让它容易扩展。”

从那时起,谷歌云平台已经扩展到包括许多其他主要服务。这包括用于计算和托管、存储和数据库、网络、大数据和机器学习的那些。

一个非常简短的时间表

让我们来看看自那以后每年的一些主要发布和更新,在一个非常简短(但绝不全面)的列表中:

2009 年: App Engine 获得对 Java 编程语言的支持

2010 年: 云存储发布(因为人们需要一个地方来存放他们的东西)。

2011: 随着发布云 SQL ,GCP 开始涉足关系数据库。

2012 年:谷歌作为开源项目公开发布了他们的围棋编程语言的稳定版本。

2013: 计算引擎结束预览正式发布。

2014: 开源容器管理器 Kubernetes 发布!云数据流,一个云原生数据处理的解决方案,也在宣布

2015: 你收到消息了吗?云 Pub/Sub 进入公测。

2016: Bigtable、Cloud Shell、Cloud SQL、Datastore 都变得普遍可用。

**2017:**Cloud Spanner——高可用的全球 SQL 数据库——进入 beta

2018: 谷歌 Kubernetes 引擎 (GKE)开始全面上市,同时推出一系列功能,支持更广泛的企业应用。

2019: 谷歌无服务器计算堆栈的最新成员云运行宣布

2020 年:为了缓解向远程工作的转变,谷歌推出了谷歌工作空间

2021 年:一切都是为了可持续发展!谷歌宣布了一个雄心勃勃的目标,到 2030 年实现无碳排放。


后 COVID DevOps:加速未来 COVID 如何影响甚至加速了 DevOps 最佳实践?观看 DevOps 领导者的免费点播网络研讨会,我们将探索后 COVID 时代的 DevOps。


2022 年及以后的谷歌

每个人的可持续未来

谷歌表明他们确实致力于一个可持续的未来,宣布了新的工具来衡量和减少 2022 年的环境影响。他们还表示,他们正在与“各个行业的客户和组织合作,为组织面临的独特气候变化挑战开发新的解决方案。”可持续发展显然是公司未来的一个主要关注点,我们很高兴看到这一点!

创新不会停止

谷歌多年来一直是创新的领导者,在未来几年肯定还会继续。那么未来他们还会给我们什么呢?更多的多云解决方案?元宇宙疯狂?我们可能无法预测未来,但回顾 24 年的成就,我们当然可以看到谷歌是一个值得关注的空间。


想了解更多关于谷歌云平台的信息?

我们的Google Certified Cloud Digital Leader课程是理解 Google 云平台如何工作的良好开端。注册参加免费的课程,以及其他优秀的认证课程,并立即获得云快乐

还是不够?让自己了解最新的谷歌云新闻和公告!查看我们的每月新闻系列 GCP 本月,或加入我们的不和与其他 GCP 学习者交谈。

嘿,云计算高管:停止排挤你的网络团队

原文:https://acloudguru.com/blog/business/hey-cloud-execs-stop-sidelining-your-network-team

一份新报告揭示了导致云团队和传统网络基础设施团队之间裂痕的四个关键问题。

潜在的成功差距阻碍了许多组织实现其云投资的全部好处。事实上,Enterprise Management Associates 和 BlueCat 的最新研究显示,大约 72%的企业难以获得全部好处,这让他们想知道在云采用之旅中哪里出了问题。

云采用的一个基本因素成功往往隐藏在 IT 高管的眼皮底下:弥合传统网络基础设施团队和云团队之间的鸿沟。不支持这些团队之间的协作,往好了说,会导致失去机会,往坏了说,会导致严重的组织范围的问题。

事实上,在 3 月对 212 名网络和云专业人士进行调查后,研究发现这些团队之间的功能失调产生了惊人的后果。仅在过去一年:

  • 73%接受调查的组织面临安全或合规性问题,如监管罚款或数据泄露
  • 89%的企业面临 IT 运营挑战,例如应用程序部署延迟和用户体验不佳
  • 82%遭遇业务问题,如客户流失和收入损失。

如果团队之间没有适当的协作,构建敏捷、高性能、可靠和安全的混合云和多云架构就无从谈起。

那么,IT 主管如何打破孤岛并缩小差距呢?通常,只有几个关键问题在起作用。一旦确定了这些,采取必要的措施来缓解功能障碍就变得容易多了。


看点:网络专业人士在云中的角色
一个项目早期的 DNS 或 IP 地址错误会导致数年的痛苦。你如何防止网络噩梦?观看这个免费点播的网络研讨会,云网络专家将讨论如何尊重(并授权)云中的网络团队。


问题 1:你没有把两个团队都带入关系中。

根据这项研究,在云计算方面取得成功的组织中,认为领导层在支持他们之间的协作方面取得了成功的组织的比例是其他组织的两倍。支持协作意味着帮助这些团队围绕互利的目标保持一致。这似乎很难做到,因为高达 41%的云采用不是由集中领导推动的,而是由分散的团队(如开发人员、非技术领导和单个业务部门)推动的。

口头上支持合作是不够的。IT 管理人员需要亲自参与到各个层面的沟通中去,而不是把它留给中层管理人员,他们通常会对机械的做事方式产生抵触情绪。解决方案:IT 高管应该注意将自己纳入发展关系的过程中,否则可能会暴露生态系统中的缺口。

问题 2:你正在排挤你的网络团队。

考虑一下:在企业云项目早期犯下的 DNS 或 IP 寻址设计错误可能需要长达五年的时间才能恢复。研究发现,88%的受访者认为网络团队应该了解云设计并提供意见,云的成功也与这一回答相关。

不幸的是,研究还表明,网络团队更有可能被排除在关于云的对话之外。将网络专家及其丰富的机构知识和对基本原则的理解排除在云之外,会阻止每个人看到并纠正云采用工作中出现的全部问题,直到为时已晚。

解决方案:IT 高管应该强调带上网络团队的好处。受访者列举了安全性、合规性、网络(特别是 DNS 和 IP 空间管理)等领域的优势。

问题 3:您没有统一关键职能,如安全性、合规性和 DDI。

大多数企业现在完全统一了安全性和 DNS 管理,几乎一半的企业跨内部和云网络统一了合规性管理。这是有原因的。如果没有一种简化的方法来处理这些核心服务,就有可能出现全面的流程断裂。

统一 IP 地址空间管理对地址尤为重要。虽然这很难做好,但在这项研究中,几乎所有不成功的企业都倾向于保持 IP 空间管理孤岛,这意味着不这样做肯定是一个糟糕的战略。为团队配备集中核心服务所需的流程和工具至关重要。例如,BlueCat 帮助企业统一管理他们的 DNS、DHCP 和 IP 不动产,这有助于直接解决损害混合云战略的一些挑战。(当然还有很多其他的例子。)成功的云采纳者认为他们的工具集非常适合管理云中的网络挑战的可能性是其他人的两倍。

解决方案:IT 领导需要确保关键功能是统一的,而不是孤立的。

问题 4:你不能确保你的团队拥有适当的技能和知识。

总的来说,有两个重要的培训重点:了解个体云提供商的网络特性,以及围绕网络安全概念拓展知识。云团队通常对网络了解有限,网络团队也不了解云团队使用的最新工具和解决方案,因此两个团队都必须了解对方的技能。

他们还应该能够访问其他筒仓中的同行所使用的技术和工具。这不仅可以防止敌意,还可以让整个套件具有可见性,并确保您不会落下网络团队,从而获得云采用计划的全部价值。


需要准确了解整个组织的云计算能力吗?从云培训需求分析开始,找出技能差距。云计算专家 IT 培训项目帮助您的团队为进一步的云计算成功做好准备。


解决方案:在整个组织中形成对不同团队的职能和对更广泛使命的价值的高度理解。

向云迁移是一项严肃的投资,需要云和网络团队的共同参与,并理解采用新技术通常包括协作和构建现有技术。这很少是一个弃旧迎新的过程。要做好这件事并使投资最大化,只需要付出额外的努力和理解。

Dana Iskoldski 是蓝猫公司的高级企业沟通经理。自 2018 年以来,她一直在发展该组织的媒体关系、影响者关系、社交媒体和内容计划。达纳住在加拿大多伦多。她毕业于滑铁卢大学,志愿担任 TEDxToronto 的公关和沟通负责人,经常有人提醒她对网球场知之甚少。

谷歌云平台的历史

原文:https://acloudguru.com/blog/engineering/history-google-cloud-platform

亚马逊在 2006 年推出了云计算服务。两年后,谷歌凭借自己的云服务加入了这场游戏。2008 年 4 月,谷歌宣布了应用引擎的预览版,这是一个开发者工具,允许用户在谷歌基础设施上运行他们的网络应用。App Engine 的目标是:

“让一个新的 web 应用程序易于上手,然后在该应用程序获得大量流量并拥有数百万用户时,让它易于扩展。”

为了获得反馈并对该预览版进行改进,App Engine 以先到先得的方式向 10,000 名开发者开放。开发人员可以在以下参数内运行应用程序:500 MB 的存储空间,每天 2 亿兆周期的 CPU,每天 10 GB 的带宽。

最后,在 2011 年 11 月,谷歌将 App Engine 从预览模式中撤出,并将其称为正式的、完全受支持的谷歌产品。在第一个产品发布 10 年后,谷歌在谷歌云平台下增加了更多的服务。它已经成为全球顶尖的公共云供应商之一。Snapchat、Airbnb、Zillow、彭博和 PayPal 等知名公司都使用谷歌云平台提供的服务。但是,为什么谷歌云平台是如此受欢迎的公共云供应商?

  • 安全性:谷歌的安全模式更进一步,提供可扩展的基础设施和创新能力,帮助您的组织保持安全和合规。
  • 支持:每一位 GCP 客户都免费获得基本支持。如果您需要额外的帮助,您可以升级到高级支持包,以便更好地联系支持工程师。
  • 名声:是谷歌。说够了。
  • 灵活性:谷歌云的首席技术官 Brian Stevens 说,“我们正在进入一个以开放和互操作性为标志的未来”,而谷歌正处于最前沿。
  • 分析:数据是谷歌所做一切的背后。

Kubernetes 已经被部署在一些最大的云计算项目中。开始学习谷歌 Kubernetes 引擎( GKE )的完整基础知识,成为一名专家!


想了解更多关于谷歌云平台的信息?

没有应用的教育只是娱乐。用你需要的动手操作的谷歌云培训来武装自己,让自己变得更好、更快、更聪明。通过这些新的谷歌云课程和动手实验室开始培训吧!

Google Cloud 认证助理云工程师

Google Kubernetes 引擎深潜

谷歌云安全要领


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


容器技术的历史

原文:https://acloudguru.com/blog/engineering/history-of-container-technology

作为“成为新的没关系”系列的一部分,我这周做了很多关于容器的研究。我的目标是为任何人奠定基础,无论其技术背景如何,都能够开始使用和学习容器——无论是 LXC、Docker 还是下一个大型容器技术。

就我个人而言,我通过故事学习得最好,为了应对新的事物,我必须在头脑中发展故事;我不仅想了解我们在学习过程中的位置,还想了解我们是如何到达这里的。所以我开始拼凑容器技术的历史,我发现要完全理解它,我们需要追溯到比你想象的更远的地方。我们需要回到 20 世纪 60 年代虚拟化的早期。

虚拟化的发展

在 60 年代,电脑是一种稀有商品。光是租一个月就要花费 1000 多美元,这让许多企业望尘莫及。从这个角度来看,1960 年的 1000 美元与 2018 年的 8385 美元具有相同的购买力。

他们说需要是发明之母,计算机的历史也不例外。最早的计算机通常专用于可能需要几天甚至几周才能运行的特定任务,这就是为什么在 20 世纪 60 年代和 70 年代,我们看到了虚拟化的发展。许多用户同时共享计算机资源的需求推动了这一发展。

随着集中式计算机的诞生,我们开始看到我们现在称之为虚拟化的最初迹象。

在整个 20 世纪 60 年代的 T2,多个计算机终端被连接到一个主机上,这使得计算可以在一个中心位置完成。集中的计算机使得从一个地方控制所有的处理成为可能,所以如果一个终端坏了,用户可以简单地去另一个终端,在那里登录,仍然可以访问他们所有的文件。 然而,这确实有一些弊端。例如,如果用户使中央计算机崩溃,系统将对所有人关闭。诸如此类的问题表明,计算机不仅需要能够区分个体,还需要能够区分系统进程。

1979 中,随着chroot(更改根)命令的开发,我们朝着创建共享但隔离的环境又迈进了一步。chroot命令使得改变正在运行的进程及其所有子进程的根目录成为可能。这使得将系统进程隔离到它们自己独立的文件系统中成为可能,这样测试就可以在不影响全局系统环境的情况下进行。1982 年 3 月,比尔·乔伊在第 7 版 Unix 中添加了chroot命令。

为了理解容器,我们可以稍微向前跳到 20 世纪 90 年代,当时计算机安全和网络研究员 Bill Cheswick 正致力于理解一个黑客如果被允许访问他的系统会如何利用他们的时间。对于不熟悉 cracker 这个词的人来说,它是用来指出于恶意原因闯入计算机系统的人。现在你可能在想,“等等……那不是黑客吗?”但是在安全世界里,单词 黑客 通常被用来定义识别安全漏洞以便修复而不是利用它们的人。虽然这种差异可能需要自己的博客帖子,但现在,我将使用术语cracker,因为这是切斯维克在他的论文《与伯弗德共度的一个晚上,一个 Cracker 被引诱、忍受和研究》中使用的术语在这项研究中,Cheswick 建立了一个环境,允许他分析破解者的击键,以便跟踪破解者并学习他们的技术。他的解决方案是使用一个chrooted环境并对其进行修改。他的研究成果就是我们现在所知的 Linux jail命令。

2000 年3 月 4 日,FreeBSD 在其操作系统中引入了jail命令。尽管它类似于chroot命令,但它也包含了额外的进程沙箱特性,用于隔离文件系统、用户、网络等。FreeBSD jail让我们能够分配 IP 地址,配置定制软件安装,并对每个监狱进行修改。这并不是没有问题,因为监狱里的应用程序在功能上是有限的。

2004 上,我们看到了 Solaris containers 的发布,它通过使用 Solaris Zones 创建了完整的应用程序环境。使用区域,您可以为应用程序提供完整的用户、进程和文件系统空间,以及对系统硬件的访问。但是,应用程序只能看到自己区域内的内容。2006 年月,谷歌的工程师宣布他们推出了用于隔离和限制进程资源使用的进程容器。在 2007 年,这些流程容器被重命名为 控制组 (cgroups)以避免与 容器 混淆。

I n 2008 ,cgroups 被合并到 Linux 内核 2.6.24 中,这导致了我们现在所知的 LXC 项目的创建。LXC 代表Linux****Ccontainers,通过允许多个隔离的 Linux 环境(容器)在共享的 Linux 内核上运行,提供操作系统级别的虚拟化。每个容器都有自己的进程和网络空间。

2013 中,谷歌通过开源他们的容器栈再次改变了容器,成为一个名为 让我来为你包含那个 (LMCTFY)的项目。使用 LMCTFY,应用程序可以被编写成容器感知的,因此,可以被编程来创建和管理它们自己的子容器。2015 年,当谷歌决定将 LMCTFY 背后的核心概念贡献给 Docker 项目lib container时,LMCTFY 的工作就停止了。

Docker 的崛起 Docker 于 2013 年作为开源项目发布。Docker 提供了打包容器的能力,这样它们就可以从一个环境转移到另一个环境。Docker 最初依赖于 LXC 技术,但在 2014 年,LXC 被 libcontainer 取代,这使得容器能够与 Linux 名称空间、libcontainer 控制组、功能、AppArmor 安全配置文件、网络接口和防火墙规则一起工作。Docker 通过包括全球和本地容器注册中心、restful API 和 CLI 客户机继续为社区做出贡献。后来,Docker 实现了一个名为 Docker Swarm 的容器集群管理系统。


如何更好地监控您的码头集装箱?Prometheus 能够轻松展示各种系统和基础设施的指标。使用 Prometheus 进行码头集装箱监控。


虽然我们可以通过深入 Docker Swarm、Kubernetes 和 Apache Mesos 来进入容器集群管理,但对于新系列,Docker 将是我们的停留点。

多做实验,少花时间学习云

原文:https://acloudguru.com/blog/business/how-acg-helps-businesses-experiment-more-spend-less-learning-cloud

围绕云计算提升员工技能的最佳方式是让他们接触云技术。但是让您的员工访问真实环境和服务器远非易事。

  • 提供培训环境需要 IT 时间和资源。
  • 对于学习者来说,错误配置和资源闲置带来的意外账单是常有的事。
  • 用户在生产过程中有可能会损坏某些东西。

对于学习和开发团队来说,他们希望让用户能够亲自动手,而不需要经历无数的麻烦,也不需要为从 IT 到法律的每个人制造麻烦,ACG 商业版提供了可以简化这一过程的实际操作的学习工具。

ACG 的实践学习工具允许组织在花费更少的情况下进行实验和创新。少了多少?有趣的是你会问…


查看“云技能发展:在线、教师指导还是混合?”了解如何为你的组织选择正确的技能培养方法。


ACG 实践学习的投资回报率

在云沙盒环境之外的云中进行实验的成本是多少?可以很多。

科技恐怖故事比比皆是,一夜之间导致 1500 美元的账单或者得到 3700 美元的惊喜账单。你甚至会听说有人因为几个月的测试而被收取 6 万美元的费用。这是一个昂贵的“哎呀。”

幸运的是,这些失误是如此常见,以至于(通常)云提供商客户支持部门会定期为首次违规者提供一次机会。但是当你谈论数十或数百人在云中闲逛时,风险会变得更加严重。


了解云技能如何产生实际回报

查看云技能投资回报报告并查看对近 100 家公司的 20 个维度的分析,确定对云技能和云成熟度的承诺的影响。


惊喜账单并不总是五位数。但是,与任何在安全的云沙箱之外学习过云的人交谈,你肯定会听到很多关于 30 美元或 100 美元钞票的故事。你会开始认为它们是云学习通道的某种仪式。

为了这篇文章,让我们假设你的学生只是暂时忘记关闭资源,被 30 美元的账单击中。

以下是随着您增加课程和实践活动的数量,可以实现的一些实际成本节约。

ACG 成本比较

| 接受培训的个人 | 10 | 30 | 100 | 1,000 |
| 动手实验室+云操场会议 | 50 | 150 | 500 | 5,000 |
| 一生的积蓄 | $1,500 | $4,500 | $15,000 | $150,000 |

In addition to these savings, ACG subscription includes full year access to ACG content, Hands-on Labs, Cloud Sandboxes and Practice Exams.

实践技能发展是一项明智的投资

要学习云计算,您的员工需要亲身体验云计算。ACG 让你的团队可以访问真正的 AWS、微软 Azure 和谷歌云环境,在那里他们可以磨练技能,而不会给你的环境带来风险或意外成本。

  • Cloud Playground 允许用户与我们的课程一起云,测试驾驶技术,尝试新事物,甚至打破东西-所有这些都没有意外的成本或风险。

  • 动手实验是基于目标的实践场景,从快速掌握新技能的 15 分钟实验到构建整个应用程序的深入探索。

但好处远不止节省成本。有了云专家,您的员工可以随时随地获得学习者需要的引人入胜的实践内容。我们还提供工具来帮助企业管理、衡量和扩展技能发展。

准备好开始了吗?查看我们的 ACG 商业计划,看看哪一个适合您的组织。

在 ACG 提高各级云技术技能和职业发展

原文:https://acloudguru.com/blog/news/how-acg-is-making-tech-careers-more-accessible

可访问性是我们所做一切的核心。我们希望任何人都可以使用云,特别是那些从来不认为 IT 职业对他们来说是真正可能的人。

为了实现这一目标,我们自豪地提供自然融入日常生活的课程——在家、在学校、在工作中——让各种背景的人能够以不同的方式思考,以不同的方式工作,并建设一个更光明的未来。

与此同时,我们不断问自己:我们能做得更多吗?我们如何确保每个人都有机会成为云专家?有很多不同的方式来回答这个问题,但今天,我很兴奋地谈论一个。

这个月,我们采取了另一项措施,为科技职业带来平等的机会。我们宣布大学生现在有资格享受高达 47%的个人年度订阅我们的课程、动手实验室和云沙盒服务的优惠,为他们提供学习最受欢迎的云架构所需的资源。

缩小云技术技能差距

成千上万的学生即将进入竞争激烈的后 COVID 就业市场,这将一个关键群体置于一个非常艰难的境地。我们不可能忽视即将到来的毕业生将在塑造企业在云计算中的运营和创新方式方面发挥的重要作用。同样,他们也有能力改变科技行业的面貌。

通过让即将到来的毕业生更容易接受技术教育,我们的目标是实现公平竞争,并最大限度地增加学生数量——来自所有背景和学科——以填补日益增长的技术技能缺口。

公司非常需要了解云并在云环境中有实践经验的人。云技能开发在大部分高校都比较难,我们想填补这个空白。不仅如此:我们希望让学生成为终身学习者,并帮助他们每个人在未来的角色中产生有意义的直接影响。

我们知道,学生不是唯一需要更好地接受技术教育的群体。这只是我们将为技术领域中历史上代表性不足的群体提供的许多项目中的第一个,包括妇女和退伍军人。

面向所有技能水平的顶级云学习课程

我们很兴奋能够启动这些项目。要查看您是否有资格享受学生折扣点击此处。像往常一样,我们会让你知道最新的消息。

我如何找到时间学习?成功学习的 5 个关键

原文:https://acloudguru.com/blog/engineering/how-do-i-find-time-to-study

所以你开始学习新的东西,因为你想提升自己和你的职业生涯!我为你感到骄傲。这是一个极好的目标,我相信你能做到!

但是如果你像我和大多数其他人一样,你可能也在努力寻找生活中学习的空间。有时候,光是熬过一天就够难的了,没有足够的时间和精力剩下来学习。别担心,这个问题有解决办法。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


所有的学习都是前进

首先,确保你明白学习不是一个全有或全无的过程!任何少量的学习都会推动你前进。让我们来分解小步骤如何推进大目标。

1.找到小分钟

我的第一个建议是积极利用“小分钟”——当你没有 100%专注于其他事情时,你生活中的那些微小的时间。不要把你的学习仅仅局限在几个小时的特殊活动中。相反,创造机会进行点滴学习,然后尽可能多地抓住这些机会。

小分钟无处不在:在杂货店排队时;在你上下班途中;洗澡;在你休息的时候;希望孩子们能尽快上车;入睡;在牙医的候诊室里;或者当你的大脑没有被占用的时候。首先,试着记录下这种情况在你一天中发生的频率,这样你就可以珍惜你拥有的时间。

2.填满每一分钟

一旦你观察到生活中有了这些额外的空间,你就需要在这几分钟里找些适合的事情来做。例如,培训视频可能是你学习计划中非常重要的一部分,但不是在你开车的时候!然而,如果你同样的视频,你仍然能学到东西,那会怎么样呢?我打赌你可以,如果你以前已经看过了,你只是需要一个评论。你甚至可以通过想象幻灯片上的图表来测试自己。

当我在某个地方排队时,我发现在我的手机上调出文档真的很有价值,比如某项服务的常见问题页面,或者一篇链接自我看过的视频课的文章。即使只是读几个句子,也能让你的大脑以某种方式思考这个话题,当你回到这个话题时,它能让你学得更深。

睡着了怎么办?有些人确实在听着录音入睡时有所收获,导致一些报道称课程作者已经开始讲述学习者的梦了!但是,如果你只是利用这段时间来好奇和想象一些技术,然后你昏昏欲睡的好奇想法可能会导致你坐下来更长时间的超负荷学习。

3.混淆你的学习

改变你的学习习惯来反映你在你的小时间里(和大时间里)在做什么!)很重要,因为当你学习的时候,你需要把它混合起来!学习科学告诉我们,我们人类这样学习更有效。甚至思考看起来不相关的事情也能帮助我们的大脑发展新的连接路径。这些路径组成了心智模型,它不仅是我们学习的基础,也是我们长期决策的基础。

我的观点是,除了你想学的特定的东西之外,考虑不同的东西不是在“浪费”时间。我们成功的最大障碍——学习和其他——往往是我们的盲点,这种开明的探索通常可以揭示和解决这些问题。

4.把你的学习分开

在你的集中学习时段之间有一些时间确实有助于你的大脑处理信息。事实上,更好的方法是将你的学习分成更小的、分离的片段。如果你对这是如何运作的感到好奇,可以看看维基百科上关于分布式实践连续位置效应感知学习的文章。

试图把你的学习塞进更少的集中时间会导致更坏的学习习惯。给你的大脑时间和空间去“思考事情”是非常重要的。当然,如果你有一个七小时的课程,而不是一天一个小时,你会学到更多——但是如果你把这七个小时分散到一周,你会学得更好!当然,做任何对你的时间表有效的事情。但是,如果你的学习时间很短,也不要难过。

5.继续前进

最后,我会告诉你,你应该每天尽你所能学点东西。这会让你比你意识到的更进一步。当你最终回头看的时候,你会感激你已经设法往你的大脑里塞了多少东西。

Windows 11 相对于 Linux 表现如何?

原文:https://acloudguru.com/blog/engineering/how-does-windows-11-perform-vs-linux

本月 Linux 有什么新进展?我们有很多新闻要谈,包括 Ubuntu 的一些大发布,Windows 11 与 Linux 性能基准测试,Linux 中游戏的一些好消息,以及一个很酷的基于 Linux 的 Raspberry Pi 项目。请继续阅读了解更多信息!


加速您在云计算领域的职业发展

从 ACG 开始,通过围绕 AWS、Azure、Google Cloud、Linux 等的实践学习转变您的职业生涯。


Ubuntu 21.10 (Impish Indri 发布)

Ubuntu 21.10 (Impish Indri) 已经发布。最新版本的 Ubuntu 带来了令人兴奋的新软件,如 Gnome 版本 40 和基于 5.13 的内核。它还以最新的火狐 93 版为特色。

Gnome 40 中有一些小的视觉差异,比如 dock 被移到了屏幕底部,windows 上的圆角。

还有一个活动概述,显示您的工作区水平组织。多工作空间已经存在了几十年,但 Canonical 正在对它进行新的转变。因为它们是水平的,你可以用一个热键来控制它们,这使得你可以很容易地在工作空间之间切换。这对于软件开发人员很有帮助,例如,当 IDE 在另一个屏幕上时,他们保持调试屏幕。当您需要组织您的工作区以匹配您的流程时,它对媒体制作也很有帮助。

Wayland 是 Ubuntu 的默认显示服务器,它也有一些变化。它现在为 NVIDIA 用户提供了高级支持,这意味着在 Linux 上玩游戏的人可以获得更高的性能和好处。

对于那些将 Ubuntu 放在 Raspberry Pi 上的人来说,还有一些额外的社区支持,Ubuntu Impish Indri 现在将支持 Sense Hat,这是一种用于物联网开发的流行设备。它支持许多传感器,并有一个 LED 矩阵。


查看本月免费的 ACG 课程,体验云学习。只需创建一个免费账户并开始行动。不需要信用卡!


5 个 Linux 发行版显示出相对于 Windows 11 相当大的领先优势

Windows 11 已经发布,被认为是稳定的。Phoronix 运行了一些测试,看看它与一些 Linux 发行版相比如何。当谈到 Windows 11 和 Linux 的性能时,谁会赢?

事实证明,五个 Linux 发行版远远超过了 Windows 11。

他们进行了测试,发现我们刚刚提到的 Ubuntu 21.10 以及 Ubuntu 20.04.3、Arch Linux、Fedora 和 Clear Linux 在测试中的表现都优于 Linux 11。Clear Linux 是英特尔构建的一个考虑到性能的发行版,它相对于 Windows 11 获得了最大的收益。

这些收益主要集中在 CPU、GPU 和内存上。

当你在 Linux 上玩游戏时,这种性能很重要,但在你的机器上工作时更重要——比如编译、渲染视频或处理 AI/ML 项目。这种额外的性能意味着您可以节省宝贵的时间。

现在,当 Phoronix 对 Windows 10 进行同样的测试时,差距没有那么大。这意味着您可以使用 Windows 或 Linux,没有太大的区别。但相对于 Windows 11,它表明使用 Linux 将是一个显著的变化。

随着性能的提高,我们可以看到更多的人迁移到 Linux 来完成需要更好的 CPU 和内存速度的任务。

值得注意的是,Windows 11 是全新的,所以我们可以预计他们将提高性能,缩小差距。如果他们不这样做,我们可能会继续看到更多向 Linux 桌面的迁移。

Redcore Linux 版本

Redcore Linux 是一个你可能没有听说过的发行版。该组织发布了版本 2102 北极星,这主要是一个错误修复版本,但显示出巨大的潜力。

为什么?因为 Redcore Linux 是基于 Gentoo 的,侧重于性能和低资源使用率。然而,Gentoo 通常必须手工编译,并且需要大量的配置。Redcore 为您完成了大部分工作。这是一个类似 Gentoo 的滚动发布系统。

这意味着你可以持续获得最新版本的软件包。你不会为了一个新版本的操作系统等上半年到一年。这是一个权衡:如果你想使用最新版本的软件包,它可能会牺牲稳定性。

KDE 等离子 5.24 桌面环境引入对指纹读取器的支持

KDE,Linux 最流行的桌面环境之一,最近发布了一个指纹认证功能。这意味着用户可以在其机器上使用指纹认证,并注册和取消注册指纹以进行访问。对于那些想进一步保护他们的 Linux 机器的人来说,这是一个好消息。

你现在就可以下载 Ubuntu Linux 22.04 LTS(海哲明水母)日常版本

我们谈到了 Ubuntu 21.02 Impish Indri release,这是 Canonical 的 Ubuntu 稳定版本。你现在可以下载下一个版本,这是在测试中。Ubuntu 22.04,海哲明水母,现在可以下载了。

如果你想测试将于明年发布的 Ubuntu 的最新版本,那就去看看吧。它将以 Gnome 42 为特色,Gnome 42 从初级操作系统中获得了一些提示。有一个全系统的黑暗风格偏好和日夜调度选项。有新的电源配置文件可帮助节省笔记本电脑的电池。它有一个带热角的新多任务面板,可以帮助您以快速、高效的方式浏览桌面。

NVIDIA 495.44 稳定的驱动器是为 Linux,增加了 GBM API 支持

NVIDIA 495.44 稳定驱动程序面向 Linux 发布。对于游戏玩家和使用 GPU 进行视频渲染、人工智能和 ML 等工作的人来说,这是一个好消息。

您可以从硬件中挤出更好的性能和附加功能。它有更好的 Wayland 体验,会更流畅,他们还修复了一些 X 服务器的 bug。

该驱动程序现在与 GBM API 一起工作,这允许开发人员利用硬件来获得更流畅的体验。

这整个办公室都是覆盆子汁

树莓派是一种让你的办公室成为智能办公室的低成本方式,Monterail 正是这么做的。

他们用 Raspberry Pis 构建了一个网络来控制照明、会议室占用、办公室门的安全等等。他们甚至在厨房里安装了变色 LED 灯——全部由运行 Linux 的 Raspberry Pis 控制。激动人心!

愿您的源代码保持开放,您的代码可以编译。继续牛逼吧,云大师们!

在 YouTube 上订阅一位云大师的每周云新闻,在脸书上喜欢我们,在推特上关注我们,在不和谐上加入对话。


如何建造自动驾驶机器人赛车

原文:https://acloudguru.com/blog/engineering/how-i-built-an-autonomous-car-to-drive-awareness-for-women-who-code

“当你戴上头盔时,你是女人还是男人并不重要……重要的是你的能力、你的智慧和你的决心。”
—米尔卡·达诺,职业赛车手

在最近的 AWS re:Invent 会议期间,我有机会在我们的展厅展位上展示威瑞森的云工程成果,并分享我对我们如何在 AWS 上开发和部署大规模解决方案的见解。

作为会议体验的一部分,我们在 A Cloud Guru 的朋友邀请我参加 Robocar 集会,这是一个为期两天的黑客马拉松,专注于深度学习、物联网和人工智能,以制造和比赛 1/16 比例的自动驾驶汽车。

在两天的时间里,我作为唯一的女性参与者与来自 Capital One TechAnne-Jeanette 合作——定制并训练一辆比例模型自动驾驶汽车,以参加 re:Invent 赛道上的计时赛。

经过几天 12 个小时的黑客攻击,我们制造了一辆具有竞争力的无人驾驶模型赛车,提高了对编码女性和 AWS“我们动力技术”多样性项目的认识。

让你的机器人汽车启动并运行的步骤

“驴车”是大多数新手使用的初始套件模型——它大约需要 200 美元,需要几个小时才能组装好。Donkey 是支持自动驾驶汽车的 Python 库的名字。

为什么叫驴?
驴是最早驯化的驮畜之一,它们的倔强是出了名的,而且它们是安全的。在汽车能够从城市的一边行驶到另一边之前,我们会推迟用某个天体来命名它。

第一步:制造汽车

你将需要建立汽车底盘,然后配备树莓皮和相机。在 donkeycar 网站上可以找到零件清单和说明——你可以打印零件,也可以选择购买。

制造一辆汽车——驴车——安装摄像头有点棘手,M2 螺丝可以拧进塑料里,但有点难。我—docs.donkeycar.com

步骤 2:设置软件环境

首先,你需要在你选择的主机操作系统上安装 64 位版本的 gitminiconda Python 3.6

wroscoe/驴子—驴子—自动驾驶汽车—github.com

  • 首先,您需要 git 将 repo 和 cd 克隆到根文件夹中。
git clone https://github.com/wroscoe/donkey
cd donkey
  • 接下来,启动 Anaconda 管理系统。
conda env create -f envs/mac.yml
source activate donkey
  • 下面的pip命令用于安装 Python 包。在这种情况下,我们将使用它来安装 TensorFlow 一个由谷歌创建的开源机器学习库,用于分析从我们汽车的摄像头收集的图像和数据。
pip install https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.3.0-py3-none-any.whl
  • 我们还将使用pip来安装剩余的包。
pip install -e .
  • 最后,你需要创建汽车的数据路径。
donkey createcar — path ~/d2

恭喜你!设置完成。

步骤 3:配置树莓 Pi

在第一步中,您将树莓派和摄像头连接到汽车底盘上。此时,您的 robocar 应该已经完全组装好了。

在“ssh”到我们的 pi 之前,我们需要将 SD 卡制作成启动盘,这样它可以帮助启动 pi。对于简单版本,您可以安装 Etcher 或 Noobs——它们都提供了用于写入 SD 卡的图形界面实用程序。

对于像我这样喜欢命令行的开发人员,打开终端窗口并键入:

diskutil list
  • 找到你的 SD 卡的分区——它可能叫做disk4
  • 用您的 SD 卡磁盘名称替换
diskutil unmountDisk /dev/<name of disk>

现在我们需要下载 donkeycar 团队创建的方便的磁盘映像。当前的版本是 22,但是我建议查看 donkeycar 站点上的文档以获得最新版本。

  • 接下来,将下载映像安装到 SD 卡上。这可能需要一些时间,请耐心等待。
sudo dd bs=1m if=<image/path/image.img> of=/dev/rdisk<disk# from diskutil> conv=sync
  • 如果您的映像放在下载文件夹中,并且您的 SD 卡是 disk4,则命令应该是:
sudo dd bs=1m if=~/Downloads/donkey_v22/donkey_v22.img of=/dev/rdisk4 conv=sync

ProTip

可以喝酒,可以自主驾驶!

步骤 4:将您的 pi 连接到 wifi

为了将从 Raspberry Pi 收集的驾驶数据传输到您的本地主机上进行培训,我们需要确保这些设备在同一个 wifi 网络上。

要设置 wifi,需要在启动分区中安装一个文件,其中包含启动时连接网络所用的配置参数。

  • 确保您的 SD 卡仍处于连接状态。
  • 在您的 SD 上,应该有一个/boot/目录。
  • 在 boot 里面,会有一个 wpa_supplicant.conf 文件。
  • 打开您最喜欢的文本编辑器并添加您的网络设置。
  • 我们在黑客马拉松中使用了下面的代码。确保添加您的网络名称和网络密码,并保留引号!
country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
 ssid=”<your network name>”
 psk=”<your password>”
}
  • 现在你可以把 SD 卡取出来插在你的树莓 Pi 上了。如果网络上只有一个树莓派,可以尝试用ping raspberrypi.local找到它的 ip 地址
  • 在 robocar 拉力赛黑客马拉松上,这不是我们团队的最佳选择。我们必须将 pi 连接到外部监视器来找到它的 ip 地址。
  • 如果您需要这样做,您在 donkeycar 映像文件版本 22 上的用户名和密码将是:
Username: pi
Password: asdfasdf
  • 登录后,输入ifconfig wlan0查看 ip 地址信息。
  • 一旦你有了你的 Raspberry Pi 的 IP 地址,我们现在就可以 ssh 到我们的 Pi。耶!
ssh pi@<your_pi_ip_address>

步骤 5:配置 pi

一旦您登录到您的 Raspberry Pi,您就可以使用提供的模板,使用 donkey CLI 创建您的汽车了。

donkey createcar — template donkey2 — path ~/d2
  • 将目录更改为您刚才指定的路径——在本例中是/d2/
cd ~/d2
  • 最后,启动您的 web 服务器!
python manage.py drive
  • 如果成功,服务器将在<your car’s IP’s address>:8887运行,其中 8887 是我们的端口号。
  • 为了让驾驶更容易,我们用手机连接到网络服务器。只要确保你的手机和你的树莓派连接在同一个 wifi 网络上。

步骤 6:获取数据并训练模型

恭喜你。robocar 现已安装完毕,您可以开始为您的汽车记录一些驾驶数据了——数据越多越好!一定要慢行;出于训练的目的,你想把最好的模型推到汽车上。

记录的数据由一个 JPEG 图像和一个相应的带有转向和油门信息的 JSON 文件组成。一旦您收集了数据,您将把数据传输到您的主机操作系统,以使用 TensorFlow 创建一个模型。

  • 从你的覆盆子里复制数据。
rsync -r pi@<your_pi_ip_address>:~/d2/data/ ~/d2/data/
python ~/d2/manage.py train — model ~/d2/models/myPilotName
  • 完成后,将新的试点文件推送到您的车上。
rsync -r ~/d2/models/ pi@<your_ip_address>:~/d2/models/
  • 进入您的 pi,用闪亮的新 pilot 文件启动您的服务器。
python manage.py drive — model ~/d2/models/myPilotName
  • 连接到您的 web 服务器,并通过从下拉列表中选择“本地角度”来开始使用试点文件。这将允许你控制速度和飞行员控制转向。

最后一步:庆祝!

恭喜你。你现在有了一辆自动驾驶汽车——尽管可能还不是很连贯。每次尝试后收集的数据越多,模型和自动驾驶就越好。

对于更强大的模型训练,您可以使用部署为 Docker 容器的深度学习虚拟机在 AWS 上训练您的模型——这是一种训练更高性能模型的更高级方法。

如果你去了 AWS re:Invent 并参加了机器人汽车拉力赛 hackathon——你还会从沃纳·威格尔那里得到这个令人敬畏的奖品!

我们支持科技

在 Robocar Rally hackathon 的一个挤满了 100 多名工程师的房间里,Anne-Jeanette 和我是仅有的两位女性开发人员。我很感激我们有机会代表编写代码的女性,这要感谢一位云专家以及她们与 AWS We Power Tech 的合作——谢谢!

在参加了黑客马拉松和会议之后,前进的道路看起来非常清晰。那些在技术领域代表性不足的人需要更多像 Robocar 拉力赛这样的机会——获得培训、会议和黑客马拉松的机会,这些机会提供了克服职业进入和发展障碍所需的高级技能。

We Power Tech ——一位云专家正在与 AWS We Power Tech 合作,希望看到一个各种肤色、性别、信仰、起源的技术未来…——info . A Cloud . Guru

AWS re:invent 大会是一个与众多引领云计算未来的女性联系、交流和学习的绝佳机会。我很幸运能在像威瑞森这样的公司工作,领导们积极支持技术的多样性和包容性——看到这么多其他公司加入对话令人鼓舞。

一起,#WePowerTech!


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


投资技能发展如何帮助阻止人才流失

原文:https://acloudguru.com/blog/business/how-investing-in-skills-development-helps-halt-brain-drain

他们说“没有人是不可替代的。”但是“他们”经常忽略的是替换人是多么具有挑战性。

尤其是好人。

而且尤其是说到云人才。

就业市场可能处于一个不可预测的地方——如果你最近试图喝杯咖啡,你可能会注意到这一点——但有一点是不变的:对云技能的需求。


从持续学习中获得持续价值
持续学习的文化如何帮助你实现商业目标?在这个免费点播的网络研讨会中了解更多信息。


云技能仍然是热门商品

根据 LinkedIn 的数据,从历史上看,云技能已经连续多年成为最受欢迎的硬技能之一。

今年,LinkedIn 报告称这一趋势仍在继续:“随着公司寻求保持其竞争优势,并通过创新建立成功记录,技术技能现在在全球范围内非常受欢迎。”

这给雇主们制造了一场完美风暴。

人们正以创纪录的速度离职,不仅仅是咖啡师和蓝领工人。美国劳工统计局(U.S. Bureau of Labor Statistics)报告称,美国人连续第四个月辞职,人数创下纪录——7 月份有近 400 万人辞职。

当然,问题是当员工离开时,你不只是失去了他们的技能。你还会失去大量的机构知识和一种潜在的重要公司文化。

鉴于对顶级云人才的持续需求和竞争(63%的 IT 领导者报告比大脚怪更难找到合格的工程师)和辞职人数,最大限度地减少人才流失应该是任何依靠人才完成工作的组织的首要任务。(阅读:所有人。)

你如何阻止人才流失?

你会猜“向你的人扔钱吗?”这可能没什么坏处(除非你真的砸钱给他们——那可能会有点伤害他们),但这可能不是你认为的快速解决方案。

即使像 AWS、谷歌和微软这样的高薪技术领导者给云工程师提供的丰厚薪水也不足以阻止人才跳槽。

当最近关于微软如何抓住 AWS 高管的新闻传出时,传言称 AWS 正在努力解决一些严重的云人才流失问题,这将给公司的新首席执行官带来问题(在安迪·杰西从 AWS 首席执行官转到亚马逊首席执行官之后)。

因此,如果堆积如山的现金和在最大的科技公司工作的影响力都不能解决你的人才流失问题,还有什么能解决呢?以其他方式投资你的才能。

投资于技能发展有助于留住员工

根据云学习报告的状态,超过 90%的员工更有可能与通过技能发展投资其职业生涯的雇主长期合作。

正如格伦·洛皮斯本周在《福布斯》谈论“伟大的辞职”时所说的那样:“人们想要超越你的期望。他们想要应对挑战。他们想鞭策自己,学习新的东西。他们比以往更加自由地离开一份没有空间做这些事情的工作。”

所以你帮助你的员工学习新的东西,你让了解你的组织的员工拥有一套闪亮的新技能?听起来像是双赢。

调查显示。。。80%的云领导者表示发现提升现有人才的技能比雇佣新技能更容易。

云培训有着实实在在的投资回报,投资于云培训计划的组织报告称,其投资回报率可达 2 倍至 6 倍。

在分析我们课程的使用情况时,我们发现,在使用 A Cloud Guru 平台的前 3 个月内完成至少一门课程的员工在公司的时间往往比没有完成的员工长 20%左右。


The ROI Report: How the Cloud Helps You Grow

云 ROI:云技能如何产生实际回报 我们分析了近 100 家公司,以确定对云成熟度承诺的影响。在本指南中,看看企业投资云技能和技术能获得多少价值。


建立学习计划,提高保留率

围绕云技能发展构建学习计划没有通用的方法。

  • 一些公司可能会给员工提供 20%的时间,允许他们利用一周的一部分时间学习新技能。
  • 其他人可能会告诉他们只要你觉得有时间就去做。
  • 一些公司甚至用奖金、额外休假和一些老套的公开表扬来激励员工完成培训。

承包公司 ManTech 发起了一项内部认证挑战,员工完成一项认证将获得现金奖励。在第一次认证挑战中——100 天 100 个证书——man tech 支付了 260,000 美元的高级认证奖金,员工获得了 312 个认证。

当然,证书不是一切。但它们是员工技能水平的良好晴雨表,也是希望扩大云基础架构团队的雇主准备就绪的良好指标。员工将始终能够通过他们的认证来展示他们的专业技能。

在学习计划中获得的新技能提高了员工在当前职位上的表现。但它们也提供了晋升的机会,进一步提高了员工的满意度和忠诚度。

寻找更多关于如何留住云人才和阻止人才流失的见解?看看 ACG 的报告 阻止云端人才外流


利用 ACG 转变您的才能(和您的业务

将您现有的劳动力转化为您需要的劳动力。与 ACG 一起为企业云创造持续创新的文化。借助世界上最全面、最实用的 AWS、Azure 和 Google Cloud learning library 提升 10 或 10,000 人的技能。

教育行业如何使用云技术?

原文:https://acloudguru.com/blog/business/how-is-the-education-industry-using-cloud-technologies

教育技术已经从老式计算机实验室的日子里走了很长的路,那时的计算机实验室有点阵打印机和 DOS 驱动的台式机运行着俄勒冈小道。没有铅笔,没有书,现在是 iPads 和 Chromebooks。(或者类似的。)

作为一个预算紧张、变革阻力巨大的行业,教育行业如何利用云计算?

云计算在教育领域是如何使用的?


云计算在教育领域的发展

教育部门如何应对 2020 年的挑战

可能感觉时间在 2020 年慢了下来。但是,在各个行业和部门,这一年促使许多组织在数字化转型方面加快步伐。教育不是期望。

但是有了这么多的遗留系统和流程,教育创新可能会像开学第一天的暑假一样遥不可及。幸运的是,新冠肺炎在教育领域面临的许多挑战都可以通过云解决。

无论是在 K-12 和小学,高等教育,还是教育技术,云计算都可以改变教育-对于教育工作者,学生和那些支持他们的人。因此,听说以教育为重点的云计算预计今年将达到 250 亿美元的市场价值,这可能就不足为奇了。

那么云以及云解决方案对于当今教育行业的价值是什么呢?教育机构如何适应这些方法并获得云计算的真正好处?

以下是各种教育机构利用云优势的一些方式。


获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


云计算在教育方面有什么好处

一、教育机构为什么要投资云?

从最基本的层面来说,教育云的优势在于以最小的成本获得最大的收益。“结果”可能因您期望的结果而异,但可能包括成本节约、安全性、灵活性、IT 简化等。

以下是云计算在高等教育、K-12 和小学以及教育技术领域的一些巨大优势。

1.获得灵活性

面向教育行业的云解决方案为该行业的组织提供了立即响应变化的灵活性,例如(只是作为一个完全随机的例子)突然从现场学习转向远程学习。

  • 有了云,组织可以根据需要增加或减少资源而无需进行设置内部硬件所需的耗时、昂贵且(有时)令人痛苦的官僚规划。

  • 需要使用尖端硬件来完成繁重的研究工作?云让你只需点击几下鼠标就能获得你需要的技术工具,而且你只需为你使用的东西付费。

  • 云还提供了自动增加技术能力的灵活性,以应对需求激增。对于内部部署的硬件,突然的、意想不到的访问服务器的人群会导致一切停止。但是云可以自动扩展处理需求——或者根据你的标准进行调整。

2.降低成本和复杂性

云为组织提供了灵活性,这是预算意识强、需求不断变化、预算不断缩减和需求不断膨胀的组织的理想选择。(听着耳熟?)当你只需要为你所使用的东西付费时,你可以在需要的时候使用工具,在不需要的时候不用付费。把它想象成订购一辆 Lyft 而不是购买一辆汽车。

  • 传统的 IT 纵向扩展方法既昂贵又缓慢。这需要规划,需要前期成本的硬件,以及 It 专家来设置硬件并保持其运行。有了云,大部分工作都由你的云提供商处理(例如,Amazon Web Services 或 Microsoft Azure)。

  • 加拿大的亨伯学院通过投资云计算,每年节省了 50 万美元,并改善了他们的 IT 服务台服务。

  • 这里需要注意的是,如果没有正确规划和执行云迁移所需的技术人员,云支出可能会失控。这就是建立云技能的关键所在。如果做得草率,迁移到云本质上并不是省钱之举。(为了把事情简化一点,让我们回到上面的例子:如果你一天要进行多次长途旅行,乘坐 Lyft 会比拥有一辆汽车更贵。)然而,云允许组织从资本支出转向运营支出模式 —或者从大额前期投资转向较小的、可预测的月度投资。

  • 维护技术是一项全职工作。云简化了 IT,解放了教育 IT 员工,让他们专注于组织目标 —而不是繁琐的硬件和软件维护。

3.确保可靠性、安全性和合规性

主要的公共云提供商运行着世界一流的尖端设施网络。他们为教育行业的数千家组织提供服务,这意味着他们最有可能满足您可能有的任何可靠性、安全性或合规性要求。

  • 将敏感的学生或财务数据保存在云中而不是硬盘上可以防止设备被盗或放错位置时数据被泄露

  • 云提供商能够保持低延迟,并提供近乎无与伦比的数据备份和灾难恢复

  • 与那些可能被拼凑在一起的定制解决方案相反,云提供商可以确保学生、家长、教师和教职员工可以在几乎任何地方的任何设备上轻松访问您的工具(显然是通过互联网连接)。


自动化 AWS 成本优化
AWS 为您的企业提供了前所未有的价值,但经济高效地使用它可能是一项挑战。在这个免费点播的网络研讨会中,您将了解 AWS 成本优化工具和策略的概况。


云计算在高等教育中是如何使用的

创新方法允许组织将挑战转化为改进的机会。这在高等教育中是如何运作的?

威德纳大学客户成功项目主任 John Kitchen 总结得很好:“本学年高等教育正面临一个前所未有的局面。。。现在是学术 IT 领导者考虑云迁移的财务和运营优势的时候了,云迁移可以帮助机构保持在线并蓬勃发展。

高等教育如何受益于云计算?

  • 实施新的平台和工具
    云为高等教育机构提供了通过新的数字平台工具发展更深层次联系的能力,并为教育工作者、学生和高等教育 IT 人员简化了技术。

  • 提高生产力和弹性
    多伦多大学,投资微软云解决方案帮助提高了应对不可预见挑战的能力。

    “在过去的几年里,多伦多大学对我们的基础设施进行了重大改进,这将有助于我们度过充满挑战的时期,其中最重要的是迁移到在疫情这样的活动中可扩展的云服务,”多伦多大学首席信息官 Bo Wandschneider 说

  • 通过现收现付模式降低成本
    云带来的简化带来了一些财务收益。迁移到云可以帮助高等教育机构更明智地花费他们的技术投资,弥补通常通过从停车到餐饮的一切带来的资金减少。这也让教育机构能够更容易地开设纯在线课程,以吸引那些可能还没有准备好或没有能力重返校园的学生。

  • 借助高性能计算推进研究
    云提供商可以提供处理复杂科学工作负载所需的高性能计算机。凭借存储(和共享)数 Pb 数据的能力,云使得与全球其他人共享结果和协作变得更加容易。

  • 利用机器学习和人工智能 获取更多数据可以让高等教育机构在教育中使用人工智能(A.I .)和机器学习的力量。这可以允许诸如个性化学习的学习和内容分析、使学习更有效的主动学习和实验设计,或者认知心理学研究的数据挖掘。

  • 从大数据和预测分析中获得答案
    在教育中利用机器学习可以让你从数据中获得答案。云工具可以帮助学术 IT 创建和运行有利于高等教育机构的解决方案,包括针对学生成功预测模型的教育数据挖掘和分析,这些分析可以提供关于学生保留率和参与度等问题的见解。

  • 启动完全远程教学
    对于高等教育来说,完全远程教学可以包括完全虚拟的课程,这些课程(可能)以更低廉的价格提供给学生,减少学校资源的消耗。这些课程可以根据非传统的学生时间表按需提供。例如,参见德克萨斯大学奥斯丁分校的计算机科学在线硕士项目。该大学能够削减费用和管理费用,同时提供灵活性来吸引学生,并有可能吸引那些可能还不急于回到面对面学习环境的学生。它还让学生选择以 10,000 美元的价格获得相对较低的高级学位。

  • 建立虚拟计算机实验室
    通过创建虚拟校园计算机实验室支持在线远程学习。其中包括集中管理的桌面和应用程序,这些桌面和应用程序是安全的,可以通过任何计算机的网络浏览器进行访问。这使组织能够按需扩展,而无需购买和设置硬件或 IT 基础架构。

  • 创建基于云的联系中心
    快速建立基于云的联系中心,从 IT 服务台到经济援助,为学生、家长、教职员工和员工提供入站和出站支持。

  • 以更经济的方式访问最新工具
    对于高等教育领域的学生和教师来说,从快速过时的实体书和软件转向基于云的工具具有多种优势,包括跨多种设备访问工具,并提供更经济的访问选项。
    像 Adobe Creative Cloud 这样的工具可以作为订阅模式获得,让学生在课程期间支付几个月的费用——或者,就像 Autodesk 的情况一样,一些工具可能是免费的。

  • 提高 IT 管理的效率 迁移到云有助于缓解繁重流程所需的更高水平的 IT 资源,例如建立适当的结构来处理课程注册期间的巨大流量高峰。此外,将主要的管理服务迁移到云中,可以使 IT 组织专注于更高价值的活动。

    为了确保您获得云迁移的最大收益和投资回报,请确保 IT 员工具备将传统 IT 系统和云解决方案相结合所需的专业知识。

  • 用 DevOps 方法推动创新 虽然高等教育传统上可能反对变革,但组织向 DevOps 哲学的转变对提高创新速度大有裨益。 DevOps 将软件开发和 IT 运营结合在一起,通过 PowerShellPuppet 等工具实现 CI/CD现场可靠性工程自动化,减少从想法到实施所需的时间。


The ROI Report: How the Cloud Helps You Grow

云 ROI:云技能如何产生实际回报我们分析了来自近 100 家公司的信息,以确定承诺对云成熟度的影响。在这份指南中,看看企业投资云技能和技术能获得多少价值。


云计算在 K-12 和小学是如何使用的?

云为 K-12 和小学及学区带来了广泛的好处,这些好处在远程和混合学习环境的新常态中更加明显。

  • 80%的学校教育技术领导者报告称使用云来提高效率,从 2017 年到今年,教育领域的云市场以预计超过 26%的 CAGR 速度增长。

老师知道怎么教。学校和地区 IT 团队只需投资为他们提供工具,让他们能够掌握这些技能,并让他们在远程或混合环境中工作。

K-12 和小学如何受益于云?

  • 减少开支 波特兰公立学校高级技术总监 Travis Paakki 在该学区的企业资源规划(ERP)安装即将结束时上任。他没有投资更多内部硬件,而是转向了 AWS。他说:“我们要么花 50 万美元购买新硬件,要么用其中的一小部分来试用 AWS。该学区在四个月内完成了全面迁移。“现在我们的年成本是替换成本的三分之一。我们现在增加了容量和灾难恢复,这些都是我们在本地数据中心无法获得的。”

  • 在不影响学习的情况下提高成本效益
    在西雅图之外,普亚勒普学区能够快速适应 2020 年所需的变化,得益于对微软基于云的解决方案的投资。

    马克·维特尔,教育技术的执行董事,普亚勒普正在“尽可能多地使用微软的堆栈。成本效益来自于充分利用我们支付的一切。无论是服务器、应用程序、单点登录,还是我们使用 Intune 所做的一切——将它们作为一个全面的包整合在一起,使我们变得非常经济高效……我们向云、Azure Active Directory 和 Intune 的转型通过有效地使用整个堆栈,增加了学习机会,同时降低了成本。教育工作者可以在教室中获得他们需要的应用,同时从一个中心位置平衡安全性和策略管理。”

  • 确保数据安全性和合规性
    与公共云供应商合作可以更轻松地满足合规性需求,如《家庭教育权利和隐私法案》(FERPA)。合规很麻烦,但云可以帮助让它变得更简单。

  • 改善协作
    从与忙碌的家长进行虚拟同步到课后学生交流,云提供了各种各样的实时协作工具。

  • 交付云桌面以支持远程工作
    借助桌面即服务解决方案,IT 可以在几分钟内配置桌面,并在几分钟内纵向扩展以覆盖数千名用户。

  • 简化 IT 运营
    云为学校和学区免去了日常基础设施管理的烦恼。管理艰巨的基于内部硬件和软件的解决方案可能会成为过去。了解了目标、工具和云迁移的基础 IT 人员可以开始将服务器迁移到云——无论是迁移到微软 Azure 还是迁移到亚马逊网络服务(AWS)

    作为云如何让学术 IT 变得更容易的另一个例子,参见夏洛特-梅克伦堡学校系统。通过使用谷歌管理控制台,学校系统能够更容易地实施安全的互联网浏览。

  • 确保数据得到备份 在各行各业中,最终用户从未因其正确备份和保护重要数据的能力而闻名。云将球(或者,在这种情况下,数据)从他们手中拿走,放入一个在线虚拟仓库,可以跨设备访问并轻松共享以进行协作。

  • 以更优惠的价格获得最好的工具 订购云工具通常比购买老式软件许可证要便宜。这些工具还可以在多种设备上访问,为学生、教师和员工提供了更大的灵活性。


StateOfCloudLearning

看点:云的状态 没人能预测未来,但我们还是请了一组非常聪明的云专家来试试。Jassy 升任亚马逊 CEO 对 AWS 来说意味着什么?今年是多云之年吗?我们生动的小组在这个免费点播的网络研讨会中对未来一年进行了评估。


云计算在 ed tech 中是如何使用的?

教育技术公司如何从云计算中受益?这都是关于数字化转型的——这是营销人员喜欢的时髦词汇(技术人员也喜欢翻白眼)。

超越宏大但有时模糊的承诺,数字化转型在现实世界的教育技术用例中是什么样的?参见教育出版和评估服务公司 Pearson 向 AWS 的转移。该公司将数据库管理从内部 IT 人员的肩上转移到了云上,并且在一年内削减了 500 万美元的成本

企业战略集团高级分析师 Terri McClure 在接受 EdTech 杂志采访时表示:“以智能方式实现云计算并考虑数据保护和管理的组织将获得巨大成功。以下是教育技术公司通过云计算获得巨大成功的几种方式。

教育技术公司如何从云计算中受益?

  • 提高业务连续性
    云基础设施为教育科技公司提供了教育行业所需的高可用性和弹性。在发生导致基础设施停机的“灾难”时,云提供商提供快速故障转移,备份环境处于备用状态,可以快速扩展。

  • 将 IT 重心转移到战略目标
    回到 Pearon 的 AWS 成功故事:“过去担任数据库管理员的人现在几乎不接触数据库,”基础设施和运营副总裁伊恩·怀特说。“他们正在做更高价值的工作,并且乐在其中。”

    通过将任务从 IT 人才手中拿走,这些任务可以通过各种云工具轻松实现自动化或处理,您的技术奇才可以专注于能够带来更多战略优势的待办事项。


您的团队是否需要一份 IT 职业发展计划?或者,是否需要另一种途径来实现职业发展目标?谈到云学习,没有放之四海而皆准的解决方案。无论您的需求如何,ACG 定制学习路径总有一条适合您的路径。


  • 从机器学习和人工智能教育中获得可操作的见解 Classcraft 创建引人入胜的课堂解决方案,利用技术将学习游戏化。通过将数据库和分析基础设施迁移到谷歌云,这家教育技术公司能够访问人工智能(AI)服务数据分析功能,以生成突出趋势的报告,并为教师提供改善环境的建议。Classcraft 首席技术官夏羽·古伊梅特说:“我们每个月都会捕捉到大约 1000 万个与学校文化和学生表现相关的新数据点。“我们以前的基础架构无法扩展以支持所有这些数据的快速分析。借助 BigQuery 和其他谷歌云工具,我们可以快速向教育工作者提供有价值的见解。”

  • 推动创新
    云帮助教育科技公司以超乎想象的速度从概念到测试和发布。想想 2020 年突然转向在线学习。为了在 2020 年需求的巨大转变中继续为教育工作者和学生提供服务,教育 SaaS 提供商 Blackboard 利用 AWS 在一个周末将其平台 Blackboard Collaborate 扩展到其正常用户群的 50 倍。这一举措有助于他们继续为教育工作者和学生提供完善的在线学习体验,包括实践活动和协作,就像在普通教室中看到的那样。Blackboard 首席战略、投资组合和营销官 Kathy Vieira 表示:“随着时间的推移,我们只是继续利用这种[AWS]合作关系来加快我们的创新步伐,并阻止我们创造已经存在的东西。

  • 随需求扩展(和缩减)
    将应用程序改造为微服务,从而实现云带来的可扩展性。这意味着您的教育技术公司可以在高峰使用时段按需提供容量,并在流量下降时缩减容量。而且由于云提供了一种现收现付的模式,整个过程更加划算。

    考虑一下 Abre.io ,这是一家教育技术公司,为管理学生信息和学习管理所需的工具以及将学生与社区项目联系起来提供平台。“我们必须扩展我们的基础设施,以满足多个校区的需求,同时确保快速响应时间,”Abre.io 的产品副总裁兼联合创始人 Chris Rose 说。Abre.io 首席执行官詹姆斯·斯托弗(James Stoffer)表示:“我们增长了很多,但对我们的预算没有产生线性影响。由于谷歌云中的自动扩展等功能,我们也没有遇到任何正常运行时间和延迟方面的问题。”

  • 保护敏感数据的安全,满足法规合规性 云提供商让数据加密变得轻松,无论数据是在传输中还是处于静止状态。这有助于确保只有授权用户才能访问敏感数据。借助基于云的治理支持功能,云可以帮助组织加强合规性工作,同时降低实施这些工作的成本和难度。


云培训可以让教育 it 人员、教师和学生受益

教育机构发现了利用云培训项目的重要性。像云专家这样的技能发展平台不能用来提高教育 IT 人员的技能,以提供更智能、更强大的数字解决方案。但是它们也可以用来教育教师和学生。

  • 在迈阿密戴德学院(Miami Dade College ),它不仅提高了教学人员的技能,还提供了经济实惠的实践工具来培训学生,并为学生提供了一种获得云认证的方式,他们可以将云认证带到工作场所,以提高市场竞争力。云计算和网络安全教员 Diego Tibaquirá博士要求学生完成云计算大师课程,作为他们成绩的一部分,以增加他们获得认证的机会。“我们希望学生获得分数,通过课程,获得学位,并获得证书,因为这将使他们在进入现实世界时更具就业能力,”蒂巴奎拉博士说。“这确保了这不仅仅是另一门课;这是他们可以写进简历的东西。”

  • 在圣母大学,学生们正在成为广泛的 AWS 领域的专家,对关键的建筑概念有着坚实的理解。约什·冯·绍姆伯格(Josh von Schaumburg)是圣母大学门多萨商业和客户解决方案学院 Trek10 的兼职助理教授,他说:“他们从云专家那里学到的技能在课堂上通过真实世界的使用案例和例子得到了强化。这些都是他们在求职面试时可以谈论的技能。”


在云中接受教育。

掌握现代技术技能,获得认证,提升您的教育事业。无论你是新手还是经验丰富的专业人士,你都可以通过和 ACG 一起学习。

在冷启动之前,AWS Lambda 会将您的闲置功能保留多长时间?

原文:https://acloudguru.com/blog/engineering/how-long-does-aws-lambda-keep-your-idle-functions-around-before-a-cold-start

AWS Lambda 通常会在 45-60 分钟的不活动状态后终止功能,尽管空闲功能有时会提前终止,以释放其他客户所需的资源。

在最近的一次实验中,我比较了使用不同语言、内存分配和部署包大小的 AWS Lambda 的冷启动时间。

AWS Lambda 函数在长时间未使用后被调用,导致调用延迟增加时,发生冷启动。

一个有趣的观察结果是,功能在 5 分钟不活动后不再循环——这使得冷启动远没有那么糟糕。

了解语言、内存和封装大小如何影响 AWS Lambda 的冷启动。比较使用不同语言、内存分配和部署规模的 AWS Lambda 的冷启动时间。

λ超时实验

在实验过程中,我的一些功能直到 30 分钟的空闲时间后才经历冷启动。更长时间的不活动是亚马逊在幕后悄悄改变的——这是一个好消息。然而,这一变化促使我提出了几个后续问题:

  1. 触发冷启动的新的不活动期是什么?
  2. 内存分配会影响冷启动前的空闲时间吗?

为了满足我的好奇心,我设计了一个实验和假设。该实验旨在帮助我们了解 AWS Lambda 平台的实现细节。

由于 AWS 可以——并且将会——在不事先通知的情况下更改这些实现细节,所以您不应该用这些结果来构建您的应用程序!

假设 1

在回收相关资源之前,Lambda 允许你的函数保持空闲的时间是有上限的

这应该是必然的 AWS 永远保留闲置的功能是没有任何意义的。闲置功能占用的资源可用于帮助其他 AWS 客户扩大规模以满足他们的需求。对 AWS 来说,最重要的是,一个不活跃的功能不是支付账单。

假设 2

空闲超时不是常数

从开发人员的角度来看,冷启动前持续公布一段空闲时间更好,例如,功能总是在 X 分钟不活动后终止。

但是,AWS 很可能会改变超时时间,以优化更高的利用率。这使他们能够在其物理服务器群中保持更均匀的性能水平。例如,如果某个地区的资源争用程度较高,AWS 缩短冷启动时间并终止功能以释放资源是有意义的。

假设 3

不活动的上限因内存分配而异

具有 1536 MB 内存分配的空闲函数比具有 128 MB 内存的空闲函数浪费更多的资源。AWS 提前终止内存分配较高的空闲函数是有意义的。

尝试寻找不活动的上限

为了找到不活动的上限,我们首先需要创建一个 Lambda 函数作为system-under-test来报告它何时经历了冷启动。

然后,我们将需要一种机制来逐渐增加调用之间的间隔,直到我们到达一个地方,在那里每次调用都保证是冷启动——上界*。当间隔 X 分钟调用后观察到十(10)次连续冷启动时,确定上限值。*

为了回答假设 3——内存的影响——我们还将使用不同的内存分配来复制system-under-test函数。

这个实验是一个耗时的过程,它需要纪律和一定程度的时间精度。我只想说,我不会用手来做这件事!

设置实验的阶跃函数

我的第一个方法是使用一个 CloudWatch 调度来触发system-under-test函数,并让该函数根据它是否经历了冷启动来动态调整调度。

这种方法惨败。每当system-under-test更新时间表时,它立即触发,而不是等待新指定的时间间隔。

相反,我向阶跃函数寻求帮助。

AWS 步骤函数 允许您创建一个状态机,您可以在其中调用函数、等待指定的时间、执行并行任务、重试、捕捉错误等等。

下面是用来进行这个实验的状态机。可视化工作流描述了 FindIdleTimeout 状态将如何调用system-under-test函数。根据它的输出,它要么完成实验,要么在递归之前等待。

Visual workflow of AWS Lambda idle timeout.

AWS Step Functions Visual Workflow

wait状态允许你使用数据驱动等待的秒数——更多细节参见文档中的SecondsPath参数。wait状态允许我用这样的输入启动状态机:

{ 
    “target”: “when-will-i-coldstart-dev-system-under-test-128”, 
    “interval”: 600, 
    “coldstarts”: 0 
}
  • 然后输入作为调用事件传递给另一个find-idle-timeout函数。
  • 该函数将调用target——它是system-under-test函数的一个变体,具有不同的内存分配
  • 如果system-under-test功能没有报告冷启动,它将增加间隔。
  • 最后,find-idle-timeout函数将为步骤函数的执行返回一条新数据
{ 
    “target”: “when-will-i-coldstart-dev-system-under-test-128”, 
    “interval”: 660, 
    “coldstarts”: 0 
}
  • 此时,wait状态将使用interval值,并在切换回FindIdleTimeout状态之前等待660秒。
  • 然后它将再次调用find-idle-timeout函数——使用之前的输出作为输入。
"Wait": {
    "Type": "Wait",
    "SecondsPath": "$.interval",
    "Next": "FindIdleTimeout"
},

有了这个设置,我可以开始多次执行——每次执行一个内存设置。使用 Steps Functions 仪表板,您可以观察状态机的活动执行。

The Steps Functions Dashboard

一路上,我对正在发生的事情有了充分的了解,所有这些都来自舒适的步骤功能管理控制台。

The Step Functions management console to view the current state of the machine.

The Step Functions Console

使用阶跃函数控制台,您还可以看到状态机的输入和当前输出。

Execution details of inputs.

Execution Details: Input

第一次调用目标函数时,保证是冷启动。在这里,您可以看到当前冷启动计数为一(1)。

Execution details of outputs.

Execution Details: Output

使用阶跃函数控制台,您还可以看到状态转换何时发生,以及每次转换时的相关输入和输出。

The Step Functions Console showing the state transitions  and the relevant inputs and outputs at each transition.

State Transitions

结果!

从数据来看,很明显 AWS Lambda 在整点左右关闭了空闲功能。有趣的是,1536 MB 内存的功能提前 10 多分钟 *终止。**这一发现支持假设 3——*内存分配较高的空闲函数会被较早终止。

The data showing AWS Lambda idle timeouts.

为了帮助分析结果,我收集了所有冷启动的空闲时间间隔的数据,并将它们分成 5 分钟的类别。

该表显示了在每个功能达到其上限空闲时间之前发生的冷启动次数

This table shows the number of cold starts that occurred before each function reached its upper bound Lambda idle time.****Bar graph of coldstarts before reaching upper bound in minutes.

从这个图表中,您可以看到超过 60%的冷启动发生在 45 分钟之后——在功能达到其不活动上限之前。

尽管数据严重缺乏,但收集的少量数据仍然让我们观察到一些高水平的趋势:

  • 超过 60%的冷启动发生在不活动 45 分钟之后——达到上限之前
  • 具有 1536 MB 内存的函数在达到上限之前经历的冷启动次数明显更少
  • 值得注意的是,与其他函数相比,1536 MB 的函数也有一个较低的上限(48 分钟)

数据似乎清楚地支持假设 2——空闲超时不是一个常数。我们没有办法找出这些冷启动背后的原因,或者 45 分钟障碍是否有意义。

结论

AWS Lambda 通常会在 45-60 分钟不活动后终止功能,尽管有时空闲功能可以提前终止,以释放其他客户所需的资源。

我希望你觉得这个实验很有趣——它只是为了好玩和满足好奇心——仅此而已!请不要在假设这些结果有效的基础上构建应用程序,或者假设它们在可预见的未来仍然有效。实验的源代码。

虽然我回答了几个问题,但这个实验的结果也值得进一步研究。例如,与其他函数相比,1536 MB 函数表现出非常不同的行为。这是个特例,还是 1024 MB 以上内存的函数都有这些特质?

我很想知道。也许以后我会写一篇这个实验的后续。(用于命令)等待下面发表的消息😉


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


感谢阅读!如果你喜欢你所读的,点击下面的❤按钮,以便其他人可以找到它。可以 在 Twitter 上关注我

我需要多少认证才能获得云工作?

原文:https://acloudguru.com/blog/engineering/how-many-certifications-do-i-need-to-get-a-cloud-job

所以你想找一份云工程师的工作?

我明白了。云工程师赚六位数。他们致力于改变世界的问题。他们拥有迅速扩大的职业选择

而且,与其他一些高薪职业不同,如果你了解自己的专长,不需要昂贵的大学文凭也能被雇佣。谁不想在云中工作?

当然,事情没那么简单。云计算技能很受欢迎,报酬也很高,因为它们在就业市场上很稀缺。通常最难的云工作是你的第一份;没有专业经验很难展示技能。

在过去的几个月里,我一直在通过 #CloudGuruChallenge 帮助数百名云计算新手获得认证、面试和聘用。我收到的最常见的问题之一是:在申请工作之前我应该获得多少认证

“多少证书”是个错误的问题

让我们花一分钟时间真正了解证书。我还没见过一个招聘经理相信 IT 证书能保证技术能力。(老实说,你不会想为相信这一点的人工作。)毕竟,证书只是一张纸——而且前提是你要打印出 PDF 文件。它不会神奇地给你在现实世界中获得成功所需的经验。

cartoon applicant with certification in-hand

然而,云认证对我的工程职业生涯很有帮助,我鼓励每个希望在行业中立足的人都这么做。证书是强大的工具,只要你明白它们是什么和不好用。

云证书什么时候有帮助?

证书给你一个全面的知识库。你可能没有传统的计算机科学学位。但是如果你通过了 AWS 认证解决方案架构师助理认证,你将会接触到行业专业人士使用的核心 AWS 服务和架构模式。你不必担心你在工作准备中错过了大的话题。证书把所有这些都放在一个地方。非常方便。从这个意义上说,你是否参加 cert 考试几乎无关紧要!仅仅研究材料就能给你真正的价值。

证书帮你获得面试机会。当招聘人员通读你的简历时,云认证的确会脱颖而出。它表明你对这个领域是认真的,并且有一些外部验证——特别是如果你缺少一个传统的证书,比如计算机科学的大学学位。证书不会让你得到工作,但它可能会让你有机会参加面试。

对于一个非常特殊的工作类型,证书是一个很大的优势。像咨询商店和 MSP 这样的专业服务公司是云认证人员的最大雇主之一(也是云专家的一些最大客户!)这是因为证书在咨询行业非常有价值:

  • 认证计数有助于咨询公司与 AWS 和微软等云提供商保持重要的合作关系。拥有 certs 的人越多,合作层级越高,收益越大。
  • 证书有助于将专业知识传达给顾问的客户。如果我要聘请外部顾问,我希望看到资格证书!
  • 某些类型的咨询项目需要它们(例如,AWS 只允许认证解决方案架构师专业人员正式进行 AWS 良好架构评审)。

大型咨询公司对经过云认证的专业人士有着无尽的需求…当然,假设你真的知道证书上说你知道什么!因此,通过获得认证,你真正打开了你的工作选择。


这是一个古老的问题。没有工作就无法获得经验。没有经验谁会雇佣你?谜题!观看这一免费点播的网络研讨会,该研讨会就云计算职业发展进行了小组讨论,包括我们的云计算大师挑战赛的见解,该挑战赛帮助数十人获得了他们的第一份云计算工作。


但是说真的,申请云工作要考多少 certs?

虽然从某种意义上来说,证书越多越好(我从来没有对拥有全部 12 个 AWS 证书的人印象深刻——无论从哪个角度来看,这都是一个令人印象深刻的成就),但你确实需要专注于培养其他技能。否则,你就有可能看起来像是只懂理论而没有实际能力。

drawing of The Cert Spectrum

如果您是全新的云用户,我建议您采取以下步骤:

1.挑一朵云

将你的精力集中在熟悉一个云提供商上,而不是在你没有专业经验的多种云上深耕细作。我建议从两大市场领导者之一的 AWS T1 或 T2 Azure T3 开始。

2。获得初级助理技术认证

我说的不是 AWS 认证的云从业者或者 Azure 的 AZ-900;这些入门证书很棒,但它们不会传达一个工程角色的技术信息。我建议你先获得 AWS 解决方案架构师助理微软 Azure 管理员认证,然后进入本指南的下一步同时继续追求你感兴趣的云计算领域的专业认证

3.建立一个文件夹,亲自动手掌握基础知识

云是一长串 IT 范例中最新的一个。尽管需求量很大,但“云”本身并不是一项技能。招聘经理会希望看到你在几个基础领域有知识。

我建议建立 2-3 个作品集项目,展示你对以下关键技能的掌握,然后将它们发布在 GitHub 上:

代码

你必须能够编写基本的脚本。我推荐学习作为编程语言的Python——它被全世界的云团队所使用。你不需要成为算法和数据结构方面的摇滚明星,但你应该知道如何操作数据对象并与云服务交互。尝试这个免费#CloudGuruChallenge 的 Python 组合项目,展示真实世界的技能。

联网

你将被期望对互联网如何工作有扎实的了解。 DNS 、TCP/IP 和证书——这些协议将统治你在云中的生活,在云中,一切都是由通过网络相互通信的服务组成的。一位云专家有一些很棒的动手实验来帮助你感受这里。

Linux 操作系统

Linux 在云中就像在老派的系统管理员工作中一样重要。知道如何导航 Linux 文件系统使用 Vim 和终端命令,以及一点关于容器化。我们的 LFCS 课程旨在匹配 Linux 基金会详述的领域、技能、知识和能力。

4.应用,同时继续学习

在这一点上,我会说继续前进,并开始申请协理级云支持和工程角色。在这个过程中,你应该继续提高你的技能,通过学习专业或专业水平的认证,如我上面提到的 AWS 解决方案架构师专业证书。如果你还没考上也没关系;招聘经理喜欢看到你有上进心,不断自学。

这个阶段开始面试可能会感觉不舒服,可能会遇到一些前期的拒绝。但是这些面试暴露出的弱点将帮助你保持一个简短的反馈循环,回去完善那些关键的编码、Linux 和网络技能。

另外,现在你已经完成了基础学习过程,你会对你想专攻的领域和原因有更好的认识。你可以在采访中分享这些信息——以及你从作品集项目中收集到的战争故事。

drawing of The Cloud Skill Stack

过渡到您的第一份云工作需要大量工作吗?很有可能。你可以期待在厨房的餐桌上度过一些深夜,并花一些时间在 StackOverflow 上沮丧的兔子洞。但是在这里工作几个月将会带来丰厚的回报。

因为如果你聪明地学习,并按照我给你展示的方式建立你的技能库,你就不必发送成千上万的简历,也不必奇怪为什么没有人给你回电话,不管你有多少证书。证书和实践构建经验的正确结合将脱颖而出,这是在云计算中取得成功的最快方式。

Forrest Brazeal 是 AWS 无服务器英雄,也是 AWS 认证解决方案架构师专家。

心智模型:如何记住重要的事情

原文:https://acloudguru.com/blog/engineering/how-mental-models-help-remembering

人们在学习技术时最常见的一个问题是被大量的信息淹没。更糟糕的是,这种斗争经常会持续到工作面试(和工作)。我要教你如何解决这个问题。

这篇文章向你展示了如何释放你的超能力,并且比你想象的更快更省力地学习大量的技术。让我们从一个教我们记忆如何工作的练习开始。

记忆是如何工作的?

首先,试着记住这些数字序列。

第一个序列是 1 2 3 4 5 6 7 8 9。

第二个是 6 2 8 3 1 8 5 3 0

第三个是 0 7 7 0 6 5 0 8 4

最后一个是 9999999999

好的…现在,试着记住每秒 299,792,458 米是真空中的光速。每秒 340 米是海平面的声速。每秒 11 米是一只空载燕子的飞行速度。当然是欧洲的。

不行也没关系!这个练习的第二部分只是把四个九位数的序列从你的短期工作记忆中推出来。不要倒回去——你现在还记得那四个数字吗?

你很可能还记得第一个数字是 1 2 3 4 5 6 7 8 9。你可能还记得最后一个数字是 9999999999。对吗?但是你可能忘记了第二个数字是 6 2 8 3 1 8 5 3 0,第三个是 0 7 7 0 5 6 0 8 4。

这是为什么呢?

嗯,这是因为当你看到第一个和最后一个数字序列时,你的大脑解析、理解并改变了它们的基本原理。你的大脑没有记住这些数字,它记住了它所理解的内容。对于第一个序列,它记住了,“这些是从 1 到 9 的数字。”对于最后一个,它记得,“那是九个九。”

但是它不能立即理解其他两个序列。实际上,第三个数字在我第二次打印的时候是错的。原序列为 0 7 7 0 6 5 0 8 4。不是 5 6。你注意到数字被调换了吗?

你没注意到也没关系!—大多数人不会。然而,如果我在第一个序列中调换了数字,你肯定会注意到。你的大脑会锁定那个错误,因为你知道如何计算!

如果你好奇的话,第二个序列是 Tau——是圆周率的两倍——第三个是代表 M A T 的十进制 ASCII 数字——我名字的前三个字母。这些并不像“1 到 9”或“9 个 9”那么简单,但是现在你知道这些模式是什么了,你也许可以告诉我,甚至是下周!当然,你可能需要通过查找τ或π,或使用 ASCII 转换器,将你确实记得的东西(即你理解的东西)转化为实际的数字,但你的大脑现在有了可以抓住的东西。

这是关键。因为在现实世界中,我们不需要记忆数字或其他信息。相反,我们需要对技术有足够的了解,以便在可能重要的时候查找并仔细检查细节。而且,要明确的是,记住的数字在任何技术职位面试中都不应该有影响——要么面试官试图评估你的工作潜力,要么这几乎肯定不是你想做的工作。

所以当人们问我,“我怎么能记住所有这些?”我说,“你没有。”你记得你所理解的。因此,请专注于此。

当然,我做这个练习的原因是为了帮助你们理解这一点,而不仅仅是听我说。这意味着你可能也会记得。让我们看看这如何应用到你的学习中。说你应该理解事物是很容易的,但我想通过教你心智模型来帮助你的大脑做到这一点。

什么是心智模型?

心理模型是现实的简化表示,你的大脑用它来预测事件或得出结论。基本上,它是你的大脑通过将新信息组织成层次结构来理解事物时所构建的。它包括识别模式,是大脑的一种数据压缩。这就是让你记住第一个练习中的两个简单序列的原因——知道如何计数是一个心智模型,能够识别重复的模式是所有心智模型的基础。

当你用逻辑代替记忆时,那是基于一种心智模式。例如,你不记得 123456 是一个比 987 大的数字,但是你知道 123456 比 987 大。这里有一段来自女王大学计算学院的 David Skillicorn 教授的话:“任何人都可以通过结构化信息来学得更快。这是另一种常见的权衡——投入其中会感到满足,但花一些时间来组织可以提高效率,即使短期内感觉不那么满足。”

更重要的是,心智模型不只是让学习更快;它们实际上也让学习变得更容易。正如我们所看到的,我们的人类大脑在记忆相关概念方面比不相关的细节要好得多。当我们试图挤进太多细节时,我们经常会发现自己无意中挤出了其他细节。

但是有了心智模型,你建立的越多,提炼的越多,学习更多信息就越容易。心智模型不仅帮助你学得更快更容易,而且你学到的东西对你来说更有价值。因此,尽管效率越高越好,但你学习的更高效率无疑是最重要的收益!

生活中有趣的问题是权衡取舍,你经常会面临你不知道所有细节的情况。为了能够有效地工作,你需要能够 1)预测可能的行为,2)确定你的假设,然后 3)通过调查和测试来验证你的理论。一个强大的心智模型是你完成这些步骤的关键基础(如果这看起来像科学,那是因为它就是科学!我母校的计算科学项目是在应用科学学院。)

我的意思是,无论你是有意还是下意识地构建它们,心智模型都是技术成功的硬性要求。没有他们,你不可能成功。

建立心智模型

要建立一个心智模型,关键是**不要再问“我怎么才能记住这个?”开始问,“这些信息如何融入或改变我的思维模式?”**这包括两个部分。

一些信息将简单地“适应”我们已经有的心智模型。新的信息与我们之前看到的相似,所以它加强了我们现有的心理模型。这类信息通常让人感到平静、安慰和鼓舞信心。

但是其他一些信息并不合适,因为它不知何故与我们已经建立的心智模型相冲突。这种“相互冲突”的信息可能会让人感到混乱或困惑,但它实际上是最重要的学习类型。

这就是我们需要做的,学习科学家称之为“双循环学习”在这种类型的学习中,你不是仅仅使用信息来做出新的决定,而是用它来完善你的心智模型。下面是克瑞斯·阿吉里斯的书《T2 教聪明人如何学习》中的一个例子,维基百科用它来解释双循环学习:

“[一个]当室内温度降到华氏 69 度以下时自动打开暖气的恒温器就是一个单回路学习的好例子。一个自动调温器会问,“为什么我要调到 69 华氏度?“然后探索其他温度是否可能更经济地达到加热房间的目的,这将是一种双循环学习。”

为了更有效地学习,我们应该学习什么是东西,以及如何将我们对它的理解应用到现实世界中。这通常意味着我们应该积极地寻找那些导致我们重新思考我们的心智模式的事情。尽管困惑可能感觉不好,但这有点像增强肌肉力量:如果我们感觉不到任何疼痛,我们可能没有取得多少真正的进步。

当我们在混乱中重塑我们的心智模式,使之更好地组织我们已经看到的所有信息时,我们也会将更多尚未看到的信息转化为平静和令人欣慰的信息。这就像我们的心理模型刚刚变平——叮!—凭借其增强的实力,可以更轻松地应对未来的情况。

心智模型示例:杜威十进制系统

假设你需要把所有的书整理到书架上,假设你有很多书。你还需要记住每本书的位置。

你从一个非常简单的系统开始:混沌。你只要把书放在合适的地方。但这并不能帮助你记住他们的位置。所以你决定按收到的日期来订购。这意味着你也可以根据你对其他书的记忆在书架上跳来跳去,但这仍然很难,因为你有太多的书了。

你试着按出版日期来组织。但这实际上让事情变得更糟。它们不是将图书系列组合在一起,而是分散交错在整个书架上。接下来,你试试作者的名字,但是有些名字太通俗了。姓更好,但你并不总是确定作者的名字,因为记住主题比记住作者更容易。

但是然后,你回想你的学生时代,你记得排架用的 Dewe y 十进制,编目用的国际标准书号 ing 。它咔哒一声。杜威十进制系统允许你根据主题对书籍进行分类,这样更容易记忆。当然,你必须用数字来代替主语,但是一旦你理解了它是如何工作的,它就是一个更加直观的系统。在这一长串数字的下面是一个描述,它实际上更符合你所拥有的书籍的心理模型。

这是你的“啊哈!”瞬间。现在,你看到这种方法有多强大了。从那时起,添加新书或查找它们就变得简单多了,只需确定数量,然后去该书应该在的特定书架。你再也不需要对所有的书进行大规模的重组了。

那么,你知道每本书在哪里吗?是啊!但是你还没有记住每本书在哪里,因为那并不重要。

一个非常成熟的组织系统是一个根本不需要太多改变的系统——这也是你想要的心智模型,因为它代表了专长

心理模型进展

当你开始学习一些东西时,每一条新的信息都是新的,并且很有可能与你的思维模式相冲突。这可能会让人感到有点沮丧,但不要因此而沮丧!随着你的心智模式的改善——随着它的成熟——它需要的改变会越来越少。

你会发现自己吸收新信息的速度要快得多。通过把你学到的东西组织到你的心智模型中,你会想,“好的,这个放在这里,那个放在那里。”高速学习会让你感觉很有收获。

当然,专业知识也有专业价值!

最后的想法

从所有这些中学到的一个重要的东西是,你必须小心不要迷失在你的学习中。进步不是用你消耗了多少学习材料来衡量的,而是用你的心智模型支持信息的能力来衡量的。所以,如果你没有真正理解或者没有集中注意力,就不要“继续努力”去学你想学的东西。如果你没有不断地将信息整合到你的思维模式中,那么你就没有有效地学习,也没有取得任何真正的进步。充其量,你只是想记住一些东西。这有点像从远处朝书架扔书。看起来好像这些书离它们应该去的地方更近了,但实际上,你只是弄了一大堆乱七八糟的东西要清理。

另一方面,即使是很短的几分钟,也能在你的学习中积累很大的进步。所以尽量让学习成为一种持续的习惯。它可能感觉“缓慢而稳定”,但这可能正是“赢得比赛”的原因。

所以,当谈到记住那些重要的事情时,你的心智模型有多成熟是衡量你学习进度的最佳方式。建立心智模型是你走向专业知识之旅中最慢也是最重要的一部分。

如果你觉得这篇文章有用,我强烈推荐你看看我的文章:我如何找到时间学习?成功学习的 5 个关键。

我有多少代码?DevSecOps 故事

原文:https://acloudguru.com/blog/engineering/how-much-code-do-i-have-a-devsecops-story

by Darwin Sanoy
博客 | 推特|LinkedIn|git lab

开发警察的时代即将来临

作为 GitLab 解决方案架构师,我与许多客户一起考虑他们对 DevSecOps 的前瞻性计划。随着新的威胁和漏洞不断被发现,每个人都理所当然地关注代码安全性。不幸的是,计算中的坏人有一个非常敏捷的发布周期。

我看到所有类型的组织都在努力改进他们的 DevSecOps 游戏。由于 DevSecOps 完全是关于 App Sec 程序中可以自动化的部分,所以这种转变的很大一部分是评估什么工具选择是最相关和最划算的。

在许多情况下,这意味着将扫描工具的使用从早期采用者推进到所有代码都被扫描的程度。

我鼓励客户制定一个 DevSecOps 成熟度和 TCO 计划,该计划预测他们对成熟 DevSecOps 的总成本。出于多种原因,同时规划成熟度和总体拥有成本至关重要。令人惊讶的是,许多组织还没有计划好“成熟的 DevSecOps”对他们来说意味着什么——他们已经抓了一些工具,并开始进行一些扫描。对 DevSecOps 的无计划的有机方法的总拥有成本可能导致非常不均衡和不断上升的成本,以及在知道整个操作何时对公司和手边的代码库来说是“成熟的”时缺乏远见。

预测成熟开发团队的安全扫描成本

作为评估的一部分,许可的安全扫描工具有各种各样的许可模式。许多流行的扫描工具按扫描的代码量收费。

以下是一些流行的基于音量的模型:

  • 扫描的代码行
  • 扫描的兆字节代码
  • 扫描的应用程序数量

有些可能根据对相同代码的每次扫描的累计来收费,有些可能根据“受管理的唯一代码行/MB”来收费,因此重复扫描相同代码不会产生成本。

组织可能需要预测这一成本的几个关键转折点:

  • 评估使用基于卷的工具提升开发成本的真实成本
  • 考虑到代码库的增长,尝试为 DevSecOps 做预算
  • 当比较各种扫描工具选择的总拥有成本时
  • 在评估整合安全工具的真实成本或节约时
  • 当考虑扫描处于“仅安全修复”状态的代码的频率时
  • 当大型代码库被继承时——比如在公司收购期间

请注意,上面的列表意味着对代码进行计数可能是一项持续的需求。

在所有这些情况下,一个核心挑战是获得扫描工具用来确定欠什么的代码库指标,而不必在所有存储库上配置他们的工具。

如果您参与了一个比较扫描工具的项目,那么拥有统计数据和在不产生设置每个正在考虑的工具的成本的情况下获得统计数据更为重要。

数数能有多难?

我们中的绝大多数人在记事之前就被教会了数数。那么,用一个快速脚本将几行或几兆字节的源代码加起来会有多难呢?

如果您的存储库中只有源代码(没有二进制文件和非代码文件),并且如果您只打算扫描代码的默认分支,这可能相当简单。

但是,如果您需要消除二进制文件或任何其他文件类型(例如,markdown),这可能会变得很有挑战性。此外,如果您不打算扫描 monorepo 中的所有内容,这可能很难管理。

作为第一步,我们将使用 Git 命令来消除二进制文件和其他非代码文件。您可以使用扩展名排除列表来指明不是代码文件的文件。

之后,我们将看看如何使用专门计算代码行的实用程序,包括消除空白和注释。

无论您使用什么来计算代码,Git 命令优化不仅将签出文件的范围扩大到代码文件,而且使扫描大型存储库和大量存储库的速度更快、成本更低。

通过排除优化计数“带蓝色的东西”

想象你正从城市公寓搬到一个新家。你的家庭用品被装在一个集装箱里,随时可以运走。就在这时,你收到新居所在地政府的通知,通知你新居民必须为他们的一些物品缴税。这个地方有点奇怪,他们只是想让你在任何有蓝色的物品上每磅支付 5 便士。(不,美国新泽西州没有这个要求,但这是一个合理的猜测。)

对于称重过程,你需要将箱子搬回你的公寓,打开它们,找到蓝色的物品,称重,并跟踪总重量。

幸运的是,你已经能够从工作中借用一套高速机器人,你可以给他们关于选择和处理物品的具体指示。不幸的是,他们没有配备秤,所以你必须做称重和计数。

有两种方法可以让机器人优化你的任务:

  1. 让他们把箱子带到公寓,只打开含有蓝色的东西,以便称重。
  2. 让他们在卡车上找到盒子里的蓝色东西,只把这些东西带到公寓。

事实证明,我们有这两个选项和一些更新的 Git 功能。

两次我们取一个尺寸,时间命中

我们将要讨论的优化可以节省磁盘空间和时间。如果您计划在许多存储库上运行它,那么这两者都会显著地影响这个过程。磁盘空间可能会溢出,或者需要对一次可以处理多少个存储库进行繁琐的管理,以避免溢出。如果你在一个付费的 CI 系统上运行,那么运行时间长度就等于实际花费。

在使用 Git 存储库时,有两种可能的情况,您可能会因为二进制内容或其他不需要的文件而受到大小和时间的影响:

  1. 当从远程接收 git 历史数据(Git 克隆或获取)时,默认情况下,传输所有存储库历史的所有分支的所有文件。
  2. 当将 Git 文件解包(git checkout)到工作目录中时,提取目标分支的所有文件。

下面的一些 Git 优化命令关注的是根本不要从服务器复制数据,而其他一些命令关注的是不要提取假定存在于传输数据中的数据。

在下面的例子中,我们将假设这个克隆明确地用于计数的目的,并将在之后被丢弃。为了使它也能用于构建活动,需要额外的 Git 命令来将克隆重新配置为更可用的状态。

让 Git 做繁重的工作

Git 将在克隆期间选择要转移的历史,并选择要检出的内容。结果应该只是我们默认分支上的当前代码。这使得总大小估计或按文件扩展名的大小估计变得更加容易,因为我们只有想要计数的文件。

优化测试

对于我们的示例代码,我们将使用存储库 www-gitlab-com,因为它包含许多 web 图形文件形式的二进制文件和重要的 Git 历史,并且它是公开可用的。选择较大的文件可以更容易地根据文件大小判断命令是否正确执行。

以下是判断命令是否正确执行的方法:

常规尺寸 优化尺寸 www-gitlab-com .git folder
4.2 GB 111 MB git 克隆时间(无检验)
21 分钟 46 秒 www-gitlab-com 文件(除。git 文件夹)
2.7 GB 260 MB git checkout time
27 秒 19 秒 检出的对象
15546 4467 计算代码行数
207925 206658* 部分克隆到部分拯救

*Note: sparse-checkout reduces the ruby file count and therefore the lines count. I was not able to discover why before the publishing due date.

每次从远程 Git 服务请求 Git 克隆时,Git 服务都会准备一个包文件发送给客户机。部分克隆是许多公司和个人开发的一项新功能,它通过传递排除特定对象的指令来利用这一准备步骤。

如果后续的本地 Git 命令需要,最初被部分克隆排除的对象将被自动从远程设备中取出。因此,如果您进行部分克隆以防止二进制文件出现,但随后签出包含二进制文件的分支,则该二进制文件将在签出过程中被删除。排除过滤器规范不会在所有后续的本地 Git 命令上强制实施。这是一种自动行为,旨在防止部分克隆中断当前工作流。

下面的部分克隆从中筛选出所有文件。git 历史记录:

要使部分克隆工作,您必须安装 Git 2.22 或更高版本。

```bash
git clone --filter=blob:none --no-checkout https://gitlab.com/gitlab-com/www-gitlab-com.git

**浅层克隆优化更多**

### 对于代码计数,我们不需要完整的 git 历史记录,因此我们可以在克隆或获取时使用–depth 1 来减少。git 文件夹甚至更多,用于我们将要下载的文本文件。为此,我们将在 Git 命令中添加“深度 1 ”,如下所示:

**稀稀拉拉的结帐去营救剩下的人**

git clone --depth 1 --filter=blob:none --no-checkout https://gitlab.com/gitlab-com/www-gitlab-com.git

### Git 的稀疏签出特性是我们如何防止我们从历史中移除的不需要的文件在签出期间被动态地从原点拉出来。

稀疏签出允许使用与相同配置的文件。gitignore,它会在执行 checkout 命令时过滤哪些内容将被检出,哪些内容不会被检出。

我们需要启用稀疏检出,然后用非代码文件的文件规范配置稀疏检出文件。您可能想要完善一个非代码/二进制文件的主列表,您可以在所有存储库中重用该列表作为稀疏签出文件。还有一个聪明的方法来存储这个文件。git 并将其用于部分克隆和稀疏检验。对于该方法,请通读以下文档并扫描文件名。gitfilterspec": [GitLab 部分克隆](https://docs.gitlab.com/ee/topics/git/partial_clone.html#filter-by-file-path)。

这段代码将我们设置好,然后检查 master。

为了让稀疏校验正常工作,您必须至少拥有 Git 2.25。

git sparse-checkout init
echo -e '*.* \n!**/*.idx \n!**/*.mp4 \n!**/*.gif \n!**/*.pdf \n!**/*.png \n!**/*.jpg \n!**/*.jpeg \n!**/*.eps \n!**/*.md \n' > .git/info/sparse-checkout
git checkout master

**计算代码行数**

### 由于多种原因,计算代码行数具有挑战性,最值得注意的是代码中的注释不算一行。此外,有必要知道您使用什么语言,因为您的安全工具需要覆盖所有语言。

出于文档的目的,这里有一些通用的 shell 代码,用于计算所有文件的行数。但是,如果您将它与下面的计数实用程序的输出进行比较,您会发现这种方法有很大的误差,并且很可能需要专门针对文件类型。

即使对于我们最基本的代码计数版本,使用专门的代码计数实用程序也是有意义的。

 find . -type f -exec wc -l {} \; | awk '{ SUM += $0} END { print SUM }'

我对可用于这项任务的开源工具做了一个调查,最终选择了本·博伊特(Ben Boyte)r 的“[sloc cloc code](https://github.com/boyter/scc/)”——简称 scc。它在现代编码语言(Go)中得到积极维护。如果您有自定义需求,它还允许您扩展语言支持。下面是处理测试存储库后的输出示例:

语言

| 文件 | 线 | 空白 | 评论 | 密码 | 复杂性 | Ruby HTML |
| --- | --- | --- | --- | --- | --- | --- |
| 1179 | 119432 | 33420 | 948 | 85064 | 14177 | 挽救(saving 的简写) |
| 1077 | 18822 | 621 | 194 | 18007 | 3 | 低增生性急性髓细胞性白血病 |
| 782 | 39804 | 3648 | 204 | 35952 | 0 | 亚姆 |
| 723 | 116946 | 8626 | 2066 | 106254 | 0 | 厚颜无耻 |
| 324 | 52671 | 9090 | 3578 | 40003 | 88 | 红宝石 |
| 136 | 11068 | 2094 | 626 | 8345 | 486 | Java Script 语言 |
| 125 | 31952 | 3917 | 3739 | 24296 | 3437 | 超文本标记语言 |
| 12 | 1231 | 101 | 123 | 1007 | 0 | 视图(view) |
| 11 | 1519 | 79 | 0 | 1440 | 89 | 纯文本 |
| 4 | 7 | 2 | 0 | 5 | 0 | 半铸钢ˌ钢性铸铁(Cast Semi-Steel) |
| 3 | 926 | 155 | 四 | 767 | 0 | 壳 |
| 3 | 86 | 20 | 七 | 59 | 9 | JSON |
| 2 | 278 | 0 | 0 | 278 | 0 | 降价 |
| 2 | 65 | 15 | 0 | 50 | 0 | 战斗支援车 |
| 一 | 58 | 0 | 0 | 58 | 0 | 乳液 |
| 一 | 176 | 9 | 8 | 159 | 0 | 计算机编程语言 |
| 一 | 363 | 9 | 3 | 351 | 19 | 可扩展标记语言 |
| 一 | 12 | 0 | 0 | 12 | 0 | 吉蒂尔 |
| 1 | 36 | 9 | 5 | 22 | 0 | **总计** |
| **4388** | **395452** | **61815** | **11505** | **322132** | **18318** | 下面是获得上述输出的代码: |

Estimated Cost to Develop $11,615,312
Estimated Schedule Effort 38.958526 months
Estimated People Required 35.316937
Processed 41026462 bytes, 41.026 megabytes (SI)

scc 有许多选项,您可以在开源项目中或者通过使用–*-help*命令行选项来检查。

go get -u github.com/boyter/scc/
scc .

**计数码的 MB 数**

### 由于我们已经从文件层次结构中排除了所有非代码文件,我们可以通过以下代码大致了解 MBs:

上面的方法需要一个精确的排除标准,以确保除了代码文件之外什么都没有——这不是一个简单的任务,可能需要在每个存储库的基础上花费大量的精力。

cd www-gitlab-com
du -sh

由于这个挑战,我向 Ben Boyter 的 OSS 项目提出了一个请求,看看 scc 是否可以更新到计算 MBs,他能够将其工作到版本 2.13.0!谢谢你,本!据我所知,你现在只有几行代码计数器可以做到这一点!

根据请求,Ben 还花时间更新了 scc,以便它可以在一次计数运行后输出多种格式——因此,如果它还不够快,现在我们不必调用它两次或更多次来获得我们想要的输出格式。如果你一次分析一大堆存储库,这将使一切保持超快的速度。

scc 通过简单地将它处理的每个代码文件的文件字节相加来计算字节数,这与消除空格和注释的行计数略有不同。如果您查看上面的控制台输出捕获,您可以看到它给出了所有文件的摘要。在数据输出格式中——JSON、HTML 和 CSV——它将给出每种语言的字节数。我们下面的代码使用 w3m 将 html 文件转储到控制台,这样我们就可以获得控制台输出中的字节。

**对编译后的二进制文件进行字节计数**

### 一些漏洞工具会扫描编译好的二进制文件。下面的 shell oneliner 根据您提供的扩展名列表来计算文件大小。在示例中,*。jpg 和*。png 用于 www-gitlab-com repo 示例。删除扩展引用和括号会导致看到所有扩展的结果。在下面完成的脚本中,awk 用于格式化 CSV 和 HTML 数据格式。Find 有一个 not 运算符"!"可以在-iname 参数前使用它来创建排除列表。

**将所有这些整合在一起**

find . -type f \( -iname \*.jpg -o -iname \*.png \) |  egrep -o "\.[a-zA-Z0-9]+$" | sort -u | xargs -I '%' find . -type f -name "*%" -exec du -ch {} + -exec echo % \; | egrep "^\.[a-zA-Z0-9]+$|total$" | uniq | paste - -

### 下面的代码使用 Docker,这样您就可以轻松地在本地进行测试,并将其移植到基于容器的 CI 系统。

**注意:** scc 非常快(在这项任务中比 CLOC 快 3600%),对于各种输出格式运行多次并不像看起来那么昂贵。

**最终输出**

docker run -it golang:1.15rc1-alpine3.12 sh #golang on a distro with a proper package manager
apk update; apk add git w3m #need at least 2.25 of git, w3m to render html in console
go get -u github.com/boyter/scc/
git clone --depth 1 --filter=blob:none --no-checkout https://gitlab.com/gitlab-com/www-gitlab-com.git
cd www-gitlab-com
git config --local core.sparsecheckout true
echo -e '*.* \n!**/*.idx \n!**/*.mp4 \n!**/*.gif \n!**/*.pdf \n!**/*.png \n!**/*.jpg \n!**/*.jpeg \n!**/*.eps \n!**/*.md \n' > .git/info/sparse-checkout
git checkout master

#html for easy viewing as a CI artifact and json for data ingestion
time scc . --not-match .*md --format-multi "html:loc.html,json:loc.json"
w3m -dump loc.html

echo "Total Bytes of jpgs and pngs (emulating counting your binary code files) in csv:"
time find . -type f \( -iname \*.jpg -o -iname \*.png \) |  egrep -o "\.[a-zA-Z0-9]+$" | sort -u | xargs -I '%' find . -type f -name "*%" -exec du -c {} + -exec echo % \; | egrep "^\.[a-zA-Z0-9]+$|total$" | uniq | paste - - | awk 'BEGIN {print "Type,Bytes"}{print $1 "," $2*1024}' > binarysize.csv

echo "Total Bytes of jpgs and pngs (emulating counting your binary code files) in HTML:"
time find . -type f \( -iname \*.jpg -o -iname \*.png \) |  egrep -o "\.[a-zA-Z0-9]+$" | sort -u | xargs -I '%' find . -type f -name "*%" -exec du -c {} + -exec echo % \; | egrep "^\.[a-zA-Z0-9]+$|total$" | uniq | paste - - | awk 'BEGIN {print "<html lang=\"en\"><head><meta charset=\"utf-8\" /><title>binary bytes html output</title><style>table { border-collapse: collapse; }td, th { border: 1px solid #999; padding: 0.5rem; text-align: left;}</style></head><body><table id=\"binarybytes-table\" border=1><thead><tr><th>Language</th><th>Bytes</th></tr></thead><tbody>"}{print "<tr><th>" $1 "</th><th>" $2*1024 "</th></tr>"}END { print "</table></body></html>" }' > binarysize.html
w3m -dump binarysize.html

### 下面是上面输出的一个例子,包括代码的字节。

语言

| 文件 | 线 | 空白 | 评论 | 密码 | 复杂性 | 字节 | 挽救(saving 的简写) |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1077 | 18822 | 621 | 194 | 18007 | 3 | 19395861 | 低增生性急性髓细胞性白血病 |
| 762 | 39700 | 3635 | 204 | 35861 | 0 | 2087355 | 亚姆 |
| 723 | 116857 | 8622 | 2057 | 106178 | 0 | 5572000 | 厚颜无耻 |
| 324 | 52666 | 9089 | 3578 | 39999 | 88 | 1057903 | Ruby HTML |
| 179 | 6643 | 593 | 0 | 6050 | 625 | 391692 | 红宝石 |
| 136 | 11095 | 2097 | 627 | 8371 | 484 | 333413 | Java Script 语言 |
| 125 | 31952 | 3917 | 3739 | 24296 | 3447 | 3423974 | 超文本标记语言 |
| 12 | 1228 | 100 | 123 | 1005 | 0 | 73922 | 某视频剪辑软件 |
| 11 | 1519 | 79 | 0 | 1440 | 89 | 45610 | 纯文本 |
| 四 | 七 | 2 | 0 | 5 | 0 | 327 | 半铸钢ˌ钢性铸铁(Cast Semi-Steel) |
| 3 | 926 | 155 | 四 | 767 | 0 | 14658 | 壳 |
| 3 | 86 | 20 | 七 | 59 | 9 | 2174 | JSON |
| 2 | 278 | 0 | 0 | 278 | 0 | 7117 | 降价 |
| 2 | 65 | 15 | 0 | 50 | 0 | 4170 | 战斗支援车 |
| 一 | 58 | 0 | 0 | 58 | 0 | 15278 | 乳液 |
| 一 | 176 | 9 | 8 | 159 | 0 | 4309 | 计算机编程语言 |
| 一 | 363 | 9 | 3 | 351 | 19 | 13394 | 可扩展标记语言 |
| 一 | 12 | 0 | 0 | 12 | 0 | 391 | 吉蒂尔 |
| 1 | 36 | 9 | 5 | 22 | 0 | 538 | **总计** |
| **3368** | **282489** | **28972** | **10549** | **242968** | **4764** | **32444086** | **交叉校验结果** |

### 由于 scc 对较老但古老的 CLOC 有类似的语言支持,您可以像这样交叉检查较老的实用程序(假设您在上面的 Golang 容器上):

注意:虽然 CLOC 在计算代码方面做了一些改进,但在我对 www-gitlab-com 的测试中,花费的时间是它的 24 到 36 倍,结果也非常相似。

apk add cloc
time cloc .

**MissionImpossibleCode.io 现场编码改进此代码**

### 在[碟中谍现场编码](https://missionimpossiblecode.io/post/mission-impossible-live-coding/)的前一集中,我和我的同事 Jefferson Jones 能够让 scc 作为一个可重用的 GitLab CI CD 插件运行。在未来的一期中,我们将会让这变得更加灵活——通过允许一个存储库列表(而不是一次做一个)和一些代码在 GitLab 组层次结构中遍历所有项目。你可以在这里了解更多关于碟中谍现场编码事件[。](https://missionimpossiblecode.io/post/mission-impossible-live-coding/)

**最后一个“蓝色的东西”优化**

### 让我们回到你的公寓——那个有蓝色分类机器人的公寓。当你正在考虑如何完成计数任务时,其中一个机器人突然灵机一动(它可能有一些吸尘器的 DNA),并暗示公寓垃圾桶比你的公寓更靠近包装容器。因此,简单地扔掉所有“蓝色的东西”将会节省大量的时间、精力和税款。移情和怀旧算法,有人知道吗?

**用 GitLab 做数字**

### 了解工具和流程的总成本是当前状态和未来发展的关键。GitLab 有一些工具可以帮助这个部门。 [GitLab Secure](https://about.gitlab.com/stages-devops-lifecycle/secure/) 与第三方扫描器集成,可以直接向开发人员报告漏洞,这些开发人员在他们的下一个功能分支构建时会立即引入这些漏洞(将**向左硬移**)。如果 GitLab 附带的免费扫描仪足以满足您的扫描需求,那么它们没有任何基于使用的定价。因此,当一些工具整合成为可能时,您可能会节省一些钱。点击此处,了解更多关于 GitLab Secure [的详情。](https://about.gitlab.com/stages-devops-lifecycle/secure/)

Understanding the total cost of tooling and processes is key for the current state and future growth. GitLab has some tools that can help in this department. [GitLab Secure](https://about.gitlab.com/stages-devops-lifecycle/secure/) integrates with third-party scanners and can report vulnerabilities directly to the developers who introduced them immediately upon their next feature branch build (shifting **hard left**). If the free scanners that come with GitLab are sufficient for your scanning needs, they don’t have any usage-based pricing. So when some tool consolidation is possible, you can potentially save some money. Find more details on GitLab Secure [here](https://about.gitlab.com/stages-devops-lifecycle/secure/).

# 云工程师薪资- AWS、微软和谷歌

> 原文:<https://acloudguru.com/blog/engineering/how-much-do-aws-google-and-microsoft-pay-cloud-talent>

对云计算人才的巨大需求没有降温的迹象。但是,亚马逊、谷歌、微软和世界上一些顶尖的云计算公司给他们的工程师、架构师和各种各样的云计算专家支付的报酬是多少呢?(TL;博士?不错的收入。)

### 云计算仍然是最受欢迎的工作技能之一

LinkedIn 的数据显示,连续六年来,云计算一直是最受欢迎的硬工作技能之一。根据最近来自[的一份报告,这是最受欢迎的技能。所以毫不奇怪,围绕云计算的](https://www.indeed.com/career-advice/finding-a-job/in-demand-skills)[招聘信息](https://www.indeed.com/career/cloud-engineer/jobs)数量众多,报酬丰厚。

但是,如果在一些顶尖的云计算公司工作,云计算专家希望得到怎样的薪水呢?

* * *

## 加速您的职业发展

[从 ACG 开始](https://acloudguru.com/pricing)通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。

* * *

## 顶级云公司给他们的云工程师的报酬是多少?

*[商业内幕](https://www.businessinsider.com/cloud-salaries-revealed-what-amazon-microsoft-google-and-more-pay-2020-9)* (付费墙,ahoy!)深入研究了三大公共云公司(AWS、Azure 和 Google)以及 IBM、VMware、Citrix、Adobe、Accenture、Atlassian、摩根大通和 Chewy 等公司的薪酬。报告的工资是基于公司在雇佣外国员工时报告的工资或工资范围,让我们一窥幕后这些顶级雇主为顶级人才支付的价格。

*   在 AWS,云应用架构师的收入在 14 万美元到 15 万美元之间。

*   在微软,云解决方案架构师的收入可能在 89,149 美元到 183,116 美元之间。

*   在谷歌,报告中包括的最近与云相关的招聘都是销售工程师和项目经理,工资从 13.4 万美元到 17.4 万美元不等。

报告中的一些顶级薪酬和最高薪酬职位包括 IBM 的一名云原生架构师(279,600 美元)和摩根大通的一名人工智能平台高级云工程师(210,000 美元)。

报告中包括的其他一些职位和薪金包括:

*   思科的云工程师可以赚到 187,300 美元。
*   Citrix 的云运营工程师可以获得大约 15 万美元的收入。
*   VMware 的云开发人员可以带回家 202,982 美元。
*   联想的云开发工程师可以赚 163,645 美元。

## 云工程师平均工资多少?

这些数字与最近各种来源的工资报告非常一致。一份 2020 年全球知识报告发现,云计算专业人士的平均收入为 16 万美元。某些[云认证](https://acloudguru.com/blog/engineering/what-are-top-paying-cloud-certifications-for-2020)也可以帮助云工程师获得更高的薪水,包括[谷歌认证专业云架构师](https://acloudguru.com/course/google-certified-professional-cloud-architect)证书,该证书平均为云技术人才带来 175761 美元的薪水。

对于云薪酬的其他观点,[事实上](https://www.indeed.com/career/cloud-engineer/salaries)发现云工程师的平均薪酬为 120,370 美元,每年有 10,000 美元的现金奖金——这是基于对 4,000 多名员工的调查。根据 [Glassdoor](https://www.glassdoor.com/Salaries/cloud-engineer-salary-SRCH_KO0,14.htm) ,员工可以自我报告工资,在美国,云工程师的全国平均工资为 131,409 美元(基于 738 份回复)。

据 ZipRecruiter 报道,云架构师的平均年薪为 153,000 美元,最高可达 210,000 美元。

以上所有工资均以美元为单位。当然,薪水会因地域而异,所以你的里程数会因你的运营基地而异。当然,正如他们所说,金钱不是一切。(但是你*可以*用它买几乎任何东西,也就是某物。)

# 如何不被云专家 Azure 的 DDoS 攻击

> 原文:<https://acloudguru.com/blog/engineering/how-not-to-get-ddosed-with-azure>

本周蓝色世界发生了什么?本周,我为你带来了一些优秀的 Azure 更新,包括帮助你[避免 DDos 攻击的新 DDoS 功能](https://acloudguru.com/videos/azure-this-week/avoid-ddos-attacks),Azure 权限正式发布,以及 Azure Functions 4.0。没时间浪费了。我们开始吧!

## 借助全新的 Azure 防火墙管理器功能简化您的 DDoS 管理

分布式拒绝服务(DDoS)攻击是攻击互联网网站的最原始、最常见的方式之一。你让成千上万的机器同时攻击同一个站点,服务器资源耗尽,每个人都被“拒绝服务”

如果你愿意,这很容易做到,而且会非常有效。2018 年 2 月, [GitHub](https://acloudguru.com/blog/engineering/azure-devops-vs-github-comparing-microsofts-devops-twins) 成为 DDoS 攻击的目标,以每秒 1.269 亿的速率发送数据包!这相当于 1.3 TBps。由于 DDoS 防护措施,攻击只持续了 20 分钟。

说到防御 DDoS,本周 [Azure Firewall Manager](https://acloudguru.com/hands-on-labs/configure-application-level-rules-within-azure-firewall) 以虚拟网络 Azure DDoS 保护标准的形式获得了[新的](https://azure.microsoft.com/en-us/blog/streamline-your-ddos-management-with-new-azure-firewall-manager-capabilities/) DDoS 管理功能。

此功能提供了增强的缓解功能来防御 DDoS 攻击,并将自动保护虚拟网络中的所有公共 IP 地址。

这也适用于增强的网络安全监控屏幕,该屏幕已针对 Azure 防火墙管理器进行了更新。

这些功能现在已经在预览版中推出,你可以今天就试用它们。做一个冷静的系统管理员。别再做 DDoS 了。

* * *

*想了解更多关于云安全的信息吗?查看[本月的免费 ACG 课程](https://acloudguru.com/blog/news/whats-free-at-acg)了解安全为重点的云学习自助餐。只需[创建一个免费账户](https://acloudguru.com/pricing)并开始行动。不需要信用卡!*

* * *

## 使用 azure preview 管理您的数据,无论它位于何处

如果你没有听说过 [Azure 的权限](https://azure.microsoft.com/en-us/blog/govern-your-data-wherever-it-resides-with-azure-purview/),那就是 Azure 上的多云端数据管理和数据治理服务。

其理念是,无论您的数据是存储在 SQL Server 和 Oracle 这样的本地服务中,还是存储在亚马逊网络服务(AWS) S3 这样的不同云中,或者存储在 Salesforce 这样的 SaaS 应用程序中,都可以使用。然后,权限查看您的所有数据成分,提出一个美味的食谱,并烘烤一个美丽的治理和法规遵从性蛋糕。

您可以获得自动化的数据发现、敏感数据分类、对敏感数据在整个混合环境中的位置和移动的洞察,然后通过数据目录找到有价值的数据。

azure without 的自动化数据分类使用 200 多个预构建和定制的分类器来检测敏感数据类型,如商业术语、政府 id、姓名、位置数据等。这些不仅对业务流程有价值,而且对实现足够的治理以保护用户数据等也有价值。

权限现已不在公开发售范围内。美味的合规蛋糕…

通往更好职业的钥匙

* * *

## [从 ACG 开始](https://acloudguru.com/pricing)通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。

宣布 Azure Functions 4.0 公开预览版。NET 6 支持

* * *

## 几周前,Azure 新闻网透露了 Azure Functions 4.0 的预览版。作为 Azure 世界的无服务器宠儿, [Azure Functions](https://acloudguru.com/course/serverless-computing-with-azure-functions) 非常受欢迎,并继续为大量云应用提供动力。

可能促使您升级现有功能或试用版本 4 的主要特性是支持。NET 6.0,还有 node.js 14,Python 3.7,3.8 和 3.9,Java 8 和 11,PowerShell 7.0,还有你喜欢的自定义处理程序。点击[此处](https://techcommunity.microsoft.com/t5/apps-on-azure/announcing-azure-functions-4-0-public-preview-with-net-6-support/ba-p/2772098)获取快速入门指南,帮助您开始使用 4.0。还有一个计划中的重大改变的列表,这是你需要注意的。

继续吧。试试看。可能发生的最坏情况是什么…

跟上所有蓝色的事物

## 在我结束之前,我想提一下,Azure Security 入门课程这个月在 T2 是免费的。这个课程是 Azure security 的良好开端。要了解这一点,只需[创建一个免费账户](https://acloudguru.com/pricing)并立即开始学习。

想要跟上云的所有事物?在 YouTube 上订阅一位云专家的每周微软 Azure 新闻(以及其他云提供商的新闻)。你也可以在[脸书](https://www.facebook.com/acloudguru)上喜欢我们,在[推特](https://twitter.com/acloudguru)上关注我们,或者在[不和谐](http://discord.gg/acloudguru)上加入对话!

正如我们在云专家团队中所说的,每年的这个时候,我们都必须评估我们的内部数据治理,但我们已经没有任何东西了:“寻找,你就应该云”。继续牛逼吧,云大师们!

[**得到蔚蓝云痛苦辞典**](https://get.acloudguru.com/cloud-dictionary-of-pain)
说云不一定要辛苦。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个[云指南](https://get.acloudguru.com/cloud-dictionary-of-pain)获取 Azure 中一些最痛苦术语的简洁定义。

* * *

[![Complete guide to the Cloud and Dictionary ](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/93ebf63b88ab7fbd48705a01952ba688.png)](https://get.acloudguru.com/cloud-dictionary-of-pain)

[**Get the Azure Cloud Dictionary of Pain**](https://get.acloudguru.com/cloud-dictionary-of-pain)
Speaking cloud doesn’t have to be hard. We analyzed millions of responses to ID the top concepts that trip people up. Grab this [cloud guide](https://get.acloudguru.com/cloud-dictionary-of-pain) for succinct definitions of some of the most painful terms in Azure.

# 云如何帮助您成长

> 原文:<https://acloudguru.com/blog/business/how-the-cloud-helps-you-grow>

*对十几个行业的 90 多家上市和私营公司及其对云的承诺的样本分析* *展示了云技能的价值*

云计算让新一代创业公司脱颖而出,成长为世界上最有价值的公司。没有云计算,可能就不会有 Airbnb、优步或 Pinterest。然而,云并不仅仅是 2007 年或更晚开始的科技创业公司的专利。

数百家以传统的内部数据中心起家的公司正在将其运营转移到云上。他们能够以许多可测量(和不可测量)的方式认识到价值。这些可以表现为更低的运营成本、更快的运营节奏,或者在升级或采购新软件时总体上更少的麻烦。然而,衡量这一投资回报历来都很棘手。

在云专家那里,我们通过实践来学习。所以我们决定试一试。

* * *

[**云 ROI:云技能如何产生真实回报**](https://get.acloudguru.com/how-the-cloud-helps-you-grow)

下载完整的云投资回报报告,了解公司在云技能和技术上的投资获得了多少价值。

* * *

我们从 20 个维度对众多行业中的 90 多家上市公司和私营公司的样本集进行了评级,以确定他们向云的过渡和承诺。

这些衡量标准包括公开职位描述中对云技能的要求、特定于云的角色、公共评论和公告、案例研究、新闻、关键领导经验以及一些直接表明采用云的积极影响的财务指标。

从那时起,公司被置于云之旅的三个“生命阶段”:

*   **战术阶段:**该公司从基础设施或人才层面对云的采用进行了专项投资。
*   **战略阶段:**该公司对云做出了公开、公开的承诺,为收回投资带来了实实在在的后果(社会和财务)。
*   **转型阶段**:公司对云的过渡或永久使用是实质性的,有据可查,并有可衡量的结果。

为了确定采用云技术的真正影响,我们研究了公司每名员工产生的收入以及它们的市值如何随着时间的推移而变化。在我们深入研究之前,这里有一些重要的发现:

*   **每一家被调查的公司都要求与云相关的技能**。这些可能会实施到私有云,但我们调查的每家公司都在寻找至少 5 种独特的云技能。最重要的是…
*   每个公司都在寻找集装箱和 Kubernetes 专家!认真。我们审查的每个人都有一个公开的 rec,要求 Docker、Kubernetes 或 containers 方面的专业知识。
*   **并不是每个人都在招聘特定于云的职位**。对于许多更大、更老的公司来说,这些云技能要求被纳入更大团队的一部分。这并不一定意味着他们不关注云,只是该公司的组织方式是一种集成式运营。
*   超过一半的公司在工作描述中寻找 NoSQL 经验。像 DynamoDB 和 CosmosDB 这样的 NoSQL 数据库可以帮助您快速扩展应用程序——这显然是传统公司希望做的事情。
*   **不是每个人都是多云的(…还不是)。**超过一半的公司都有公开的工作需求,要求只在一个云平台上工作。(通常是 AWS)
*   大多数云公司雇佣经过云认证的专业人员。该分析中包括的几乎每家公司都有至少 24 名云认证团队成员。这些认证包括 Azure、Google Cloud 和 AWS——但还有许多其他认证领域的专家。
*   **大多数公司都在去那里的路上**。除了两家公司(我们未作判断)之外,其他所有公司都已公开宣布与云提供商合作,或已公开讨论了他们的混合云战略。

我们研究了两个关键指标:基于 2015 年至 2019 年年度业绩的每位员工平均收入的变化,以及 2016 年 1 月 1 日至 2020 年 1 月 1 日的市值变化。我们没有将 2020 年包括在我们的分析中,因为特殊情况通常会抑制许多行业的收入和市值的全面增长。

我们纳入了十几家明显转型的公司,作为“控制”组来帮助校准我们的评分等级。我们的总体尺寸包括:

*   **员工和工作**:有多少员工获得了认证,他们在工作描述中寻找的特定于云的技能的数量,以及副总裁或更高级管理人员的云专业知识水平。
*   **公开文档**:公司对其云转型的公开程度,包括推出的云专属产品数量、战略投资、案例研究、收购以及与云提供商的合作关系(包括 IBM、AWS、GCP、阿里云和微软 Azure)。
*   **云采用水平**:公司是否至少拥有混合云运营,是否建立了专门负责云工具和业务运营的团队和角色(例如云卓越中心或聘用首席云官)。
*   **财务表现**:在适用的情况下,如果在成本、运营利润方面有显著和有记录的改善,并且如果在收益电话会议和声明中经常提到云投资作为核心战略。

每个维度都对公司的云采用阶段的总体得分有影响,财务上可衡量的结果(如运营利润的提高)比软衡量指标(如赞助和技能要求)更重要。

说完这些,让我们来看看结果吧!

## 美元进,美元出

Net net,我们发现这些公司的总体平均每位员工收入随着他们的云之旅越走越远而提高。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/8f3490082c5ad4e004e7eec05bf9973e.png)

尽管可能存在差异,但从具体行业来看,这一趋势通常是一致的。然而,在我们的分析中,有一些行业在员工平均收入的变化上表现出相当大的差异,例如消费品和制造业。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/a9d1991e8eeec582d4b607b0c30c2766.png)

这可能意味着一些公司比其他公司更快地体验到云迁移的好处。零售公司(以及作为延伸的电子商务)可能会通过将大部分业务转移到云上来提高效率。然而,实物商品的制造商可能会看到早期投资的快速回报,并需要更长的时间才能看到其他行业的实质性投资回报。

在我们对交通运输和生命科学/生物化学公司的分析中,我们没有发现处于转型阶段的公司——这可能是由于它们受到高度监管的性质以及由此产生的惯性。对于生命科学公司来说,这可能表现为云技术的沉重实施成本(可能包括实施复杂的机器学习模型)。

尽管如此,这些选定的行业(我们在底部提供了行业选择的总分类)只是整体情况的一部分——作为一个整体,我们发现性能普遍提高。

## 滚雷

股票市场并不那么理性。这有点像梦幻足球遇到了经济,但对我们集体理智的影响要比萨昆·巴克利缺席这个赛季大得多。话虽如此,它仍然是衡量经济健康状况和特定公司健康状况的一个指标,通常是最受关注的指标之一。

在我们的分析中,我们观察了从 2016 年 1 月 4 日到 2020 年 1 月 7 日,公司在每个生命阶段的市值变化。这一时期是市场异常增长的时期,也是全面过渡到云成熟的时期。我们将此与 2016 年 1 月 4 日至 2020 年 1 月 7 日公司股价的中值涨幅进行了比较,以说明标准普尔 500 的极端头重脚轻性质(其中 [5 家公司现在占该指数的 18%](https://fortune.com/2020/02/11/s-and-p-500-stocks-microsoft-apple-amazon-google-facebook/) )。

我们发现,转型阶段和战略阶段的总体市值增长实际上相差不远,而转型阶段的公司比战术阶段的公司领先 15 个百分点以上。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/eed360cb1370affd81b0103ce486936c.png)

为了解开这一点,我们必须进入一点市场水晶球逻辑:你的市值通常是某个神奇的数字乘以你下一年的收入,再加上一些变化,这取决于事情有多好(和/或有多坏)。所述幻数因行业而异。

正如我们之前提到的,市场不一定表现得理性。但市场喜欢的一件事是增长——以及未来的潜力。

一家公司的股票价格和市值通常反映了其未来的盈利潜力。随着公司采用云技术,他们发现效率和增长的机会越来越多——许多公司今天就开始了这一过渡期。

## 溜之大吉

为了更好地说明这一点,我们来看看我们分析中最好的例子之一:Splunk。以下是展示 Splunk 如何达到转型阶段的一些关键信号(这是一个清单):

*   Splunk 成立于 2003 年,最初是一个搜索公司数据的内部解决方案。它拥有适用于 Windows 和其他平台的桌面应用——当时甚至还在与原始设备制造商合作!作为一个参考点(它的文字取消软件标志作为吉祥物)始于 1999 年,开启了云革命。
*   **Splunk 在 2012 年推出了 Splunk 云,开始向云进军。** Splunk 已经开始与亚马逊网络服务合作,并于 2016 年宣布了首次公开合作。Splunk 今年早些时候宣布了与谷歌云的合作,并且也在 Azure marketplace 上工作。(检查公共合作伙伴关系和特定于云的产品发布。)
*   **Splunk 高管层的多名成员拥有丰富的云产品经验。**此外,数百名 Splunk 工程师获得了云认证(在 AWS、Azure 或 Google Cloud 中), Splunk 有大量针对云特定角色的公开推荐,要求十多种云特定技能。(查看人才部分)
*   **它在 2019 年拿出了 11 亿美元的收购支票簿,收购了 signal FX——一个用于基础设施、微服务和应用程序的** **云监控平台。**它还投资了专注于云的初创公司,包括 Insight Engines 和 Aclima。(核对投资)。
*   Splunk 对其转型也相当公开。除了发布自己的思想领导力,Splunk 还接受了多个媒体采访,介绍其云转型(不包括其收益报告的内容)。
*   投资会有真正的回报。你可以看到,这体现在营业利润率和员工人均收入的提高,当然还有市值超过 200%的增长。

虽然 Splunk 已经进入转型阶段,但其云转型非常成功,远远超过了市值的典型增长。这是一个很好的例子,因为它是一个明显转型的公司,而且你在云上投资得越多,你就会看到越多的投资回报(在这种情况下是股东价值)。

## 云中派对

因此,正如我们所看到的,你把钱投入到云中,你通常会从中获利。每个公司和每个团队的回报都是不同的。在四年内,你每个员工的收入*可能不会*增加 25%。同样,这只是一组公司样本,并不包括许多不同行业的所有公司。

我们还可以看到,公司可能认识到在不同的时间表上将运营过渡到公共云(甚至混合云)的好处。例如,一家电子商务公司将其应用程序升级并转移到 IaaS 上,可能会在页面停止崩溃时看到即时回报,从而失去客户。与此同时,制造企业(尤其是老牌企业)可能会发现,他们不得不及早投资——或者他们只是在更早的阶段开始通过转移业务来实现价值。

虽然各行业之间存在一些差异,但在云运营投资方面,我们最终会看到一个净“阶梯”效应。信号可能因公司而异(而且,很明显,它们非常不同)——但总体而言,当你表现出明显的承诺时,你会看到非常真实的回报。

## 方法学

一位云专家评估了 90 多家标准普尔 500 上市公司,以评估不同行业的云成熟度。这些行业包括包装消费品、金融服务、制造、IT、零售、运输、媒体以及其他行业。在这项分析中,我们排除了标准普尔 500 的许多顶级公司,包括脸书、微软、苹果、谷歌和亚马逊。

具体来说,我们研究了 7 个类别共 20 个维度,我们认为这些维度定义了对云的承诺和投资。每个维度都有一个最高分,公司所处的阶段对应一个特定的分数等级。通过建立基线控制组(显然已经投资和部署了云技术)、审查公共数据和其他因素的混合来选择支架。

这些维度按重要性递增的顺序排列(因此信号更强,得分更高):

**云在开放或传统职位描述中的存在:**我们审查了开放和传统已关闭职位的简历,以了解具体的云技能、表明云专属角色的职位以及平台体验要求。我们还审查了这些工作、现有工作描述或员工工作描述是否表明在云专属产品团队工作。

**云专属产品发布会:**我们回顾了最近的产品发布会,以了解该公司是否专门针对云技术发布了新产品,而不是简单地将其堆栈迁移到云平台上。

**投资**:我们审查了所有记录在案的公司投资和收购,以确定他们是否投资了专注于云的公司。具体来说,我们寻找至少两个以云为重点的公司投资,以及多达 3 个以云为重点的公司收购(或高达 2.5 亿美元的收购价格)。

**云过渡状态**:最后,我们考察了该公司是否承诺与最多三家主要公共云提供商建立公共合作伙伴关系,以至少建立混合云。这些提供商包括阿里巴巴、亚马逊网络服务、微软 Azure、谷歌云平台、IBM 云或甲骨文公共云。

**公开演讲和思想领导力**:我们回顾了公开发表的关于公司云转型的评论材料。具体来说,我们调查了他们是否参加过会议,做过主题演讲,或者接受过关于他们的云战略的公共媒体采访。

**部署云卓越中心(CCoE)** :我们查看了工作描述、角色描述和其他公开发布的数据,以了解与云相关的卓越中心,如 CCoE、卓越数据中心等。

**财务状况**:我们查看了收益报告、SEC 文件和其他文件,以了解高管团队是否表示他们专注于云技术。我们还审查了任何可用的云开支,以及运营利润是否因云实施而有所提高。

在我们的分析中,我们的总体行业细分如下(一些公司涉及多个行业):

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/af8ad9a7093b638eae06110943a9a16c.png)

“其他”类别包括 F&B、媒体、酒店、物流、农业和其他,以及我们的控制组。

# Saga 模式如何使用 AWS Lambda 和阶跃函数管理故障

> 原文:<https://acloudguru.com/blog/engineering/how-the-saga-pattern-manages-failures-with-aws-lambda-and-step-functions>

在微服务领域,确保分布式事务之间的数据一致性非常重要。

在埃克托·加西亚-莫利纳 [1987 年的论文“*Sagas*](http://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf)*中,他描述了一种解决长时间运行的数据库事务中的系统故障的方法。*

*赫克托将传奇描述为一系列相关的小交易。在 Saga 中,协调者(在他们的例子中是数据库)确保所有涉及的事务都成功完成。否则,如果事务失败,协调器运行补偿事务来修改部分执行。*

*这种方法在[微服务的世界中越来越重要,因为应用逻辑](https://acloudguru.com/blog/engineering/evolution-of-business-logic-from-monoliths-through-microservices-to-functions)经常需要跨多个有界上下文进行事务处理——每个上下文都由自己的微服务封装,具有独立的数据库。*

*Caitie McCaffrey 最近分享了一个很棒的演示,总结了她在分布式系统中使用 Saga 模式的经验。*

 *在演示过程中,财经用下面一组关联交易的例子来说明这种模式。

Begin transaction
Start book hotel request
End book hotel request
Start book flight request
End book flight request
Start book car rental request
End book car rental request
End transaction


## 协调传奇故事

我们可以使用一个 Lambda 函数来建模每个动作——以及它们的补偿动作——并在 [AWS 步骤函数](https://acloudguru.com/blog/engineering/processing-an-arbitrary-number-of-jobs-with-aws-step-functions)中使用一个状态机作为整个事件的**协调器**。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/593670583f6001f8e1d506e044152c36.png)

Each action and compensating action are modelled as a Lambda function.

由于补偿动作也可能失败,我们需要能够重试它们直到成功——这意味着它们必须是**幂等的**。我们还将在系统出现故障时实现**向后恢复**。

下面是代表我们故事的状态机。每个操作——预订酒店、预订航班和预订租赁——都有一个补偿操作,并将按顺序执行。递归箭头表示补偿动作被重试,直到成功。

![The state machine that represents a saga pattern.](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/ba08758c5dfdb3fbb197bd947d1542cb.png)

每个 Lambda 函数都希望输入为以下形式:

{
"trip_id": "5c12d94a-ee6a-40d9-889b-1d49142248b7",
"depart": "London",
"depart_at": "2017-07-10T06:00:00.000Z",
"arrive": "Dublin",
"arrive_at": "2017-07-12T08:00:00.000Z",
"hotel": "holiday inn",
"check_in": "2017-07-10T12:00:00.000Z",
"check_out": "2017-07-12T14:00:00.000Z",
"rental": "Volvo",
"rental_from": "2017-07-10T00:00:00.000Z",
"rental_to": "2017-07-12T00:00:00.000Z"
}


每个函数内部都有一个针对不同 DynamoDB 表的简单的`PutItem`请求。相应的补偿函数将对相应的表执行一个`DeleteItem`来回滚`PutItem`动作。

状态机依次将相同的输入传递给每个动作(预订酒店→预订航班→预订租赁),并记录它们在特定路径的结果。这将避免覆盖将传递给下一个函数的输入`$`。

在这个简单的实现中,我们将对任何失败应用补偿操作——因此有了下面的`State.ALL`。在实践中,您应该考虑给某些错误类型一个[重试](http://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-errors.html#amazon-states-language-retrying-after-error) —例如,暂时性错误,如 DynamoDB 的供应吞吐量超出异常。

每个动作和补偿动作的输出和错误都存储在特定的路径中。这将避免覆盖其余动作的输入值`$`。

![The output and error from each action and compensating action are stored at a specific path.](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/b965613464a8a7eb1e955a23ed12e21d.png)

### 快乐之路流动

沿着这条快乐的道路,每个动作依次执行,状态机将成功完成。

![Saga path where each of the actions are performed in turn and the state machine will successfully complete.](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/f8eedb75187c63beed2d9b5b4a5a7bcc.png)

### 失败案例

当故障发生时,我们需要根据故障发生的位置依次采取相应的补偿措施。

在下面的例子中,如果失败发生在`BookFlight`,那么`CancelFlight`和`CancelHotel`都将被执行,以回滚到目前为止所执行的任何更改。

类似地,如果失败发生在`BookRental`,那么所有三个补偿动作——`CancelRental`、`CancelFlight`和`CancelHotel`——将按顺序执行,以回滚事务的所有状态改变。

每个补偿动作也有一个无限的重试循环!实际上,在提醒人为干预之前,重试次数应该有一个合理的上限。

![Showing each compensating action having an infinite retry loop.](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/255093ca78078d639c233d6779e8be4a.png)

如果你想用这个例子自己试验 Saga 模式,这里是这个演示的源代码。

我很想知道你对使用 Saga 模式和微服务架构的优缺点的看法…请在下面留言。*感谢阅读!*

* * *

## 获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。

* * **

# 如何使用 AWS Lambda 和云专家 S3 为您的网站添加文件上传功能

> 原文:<https://acloudguru.com/blog/engineering/how-to-add-file-upload-features-to-your-website-with-aws-lambda-and-s3>

*文件上传带来了一个可扩展性问题,使用无服务器很容易解决——而不会增加您的钱包负担*。

从浏览器上传文件的机制在互联网早期就已经存在了。在全服务器环境中,很容易使用 Django、Express 或任何其他流行的框架。这不是一个令人兴奋的话题——除非你经历了伸缩问题。

想象一下这个场景—您有一个上传文件的应用程序。一切都很好,直到网站突然流行起来。在纳税日之前的一个月,每小时的使用量增长到了 100Gb,而不是每月处理 1gb 的上传量。之后,使用量会在下一年再次下降。这正是我们要解决的问题。

大规模的文件上传会吞噬你的资源——网络带宽、CPU、存储。所有这些数据都是通过您的 web 服务器获取的,然后您必须对其进行扩展——如果您幸运的话,这意味着 AWS 中的自动扩展,但是如果您不在云中,您还必须应对物理网络瓶颈问题。

如果您的服务器在处理上传文件的过程中失败,您还可能面临一些困难的竞争条件。文件到达最终目的地了吗?处理的状态如何?当服务器过载时,很难重放失败的步骤或知道事务的状态。

幸运的是,这个特殊的问题被证明是无服务器的一个很好的用例——因为您可以完全消除伸缩性问题。对于需求不可预测的移动和 web 应用程序,您可以简单地允许应用程序将[文件直接上传到 S3](https://acloudguru.com/hands-on-labs/introduction-to-amazon-s3) 。这有一个额外的好处,即启用 https 端点进行上传,这对于在传输过程中保持文件内容的安全至关重要。

所有这些听起来都很棒——但是当服务器不再做身份验证和中间的跑腿工作时,这在实践中如何工作呢?

### S3 上传程序演示应用程序

我在 [AWS 无服务器应用程序库](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:526237104669:applications~Serverless-S3-Uploader)中设置了一个应用程序,您可以将其部署到自己的 AWS 帐户中。尝试安装应用程序并在文档中部署 Gist homepage,然后我们将介绍解决方案:

![Setting up an app in the AWS Application Repository that you can deploy to your AWS account.](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/10368b8e6e29eb595d871a1d9bc5f89f.png)

幕后发生的是一个两步过程——首先,网页调用一个 Lambda 函数来请求上传 URL,然后它将 JPG 文件直接上传到 S3:

![The behind the scenes two step process, first the web page calls a Lambda function to request the upload URL, and then it uploads the JPG file directly to S3.](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/ca0c82182fc8f73af180b37640f99670.png)

URL 是该过程的关键部分,它在授权传输的查询参数中包含一个密钥、签名和令牌。没有这些,传输将会失败。

*随意克隆 [Github repo。](https://github.com/jbesw/askjames-s3uploader)面向公众的演示应用程序会在 24 小时内删除所有文件,并启用节流功能以防止滥用,正如您所知。*

### 为什么要使用 Lambda 函数?

有可能[取消 Lambda 函数](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-authentication-HTTPPOST.html)并从客户端浏览器做所有事情——但是有许多好的理由来避免这种方法。除了向 web 页面添加更多的代码之外,Lambda 函数还允许您控制这个过程,避开任何潜在攻击者的窥探。

例如,如果您想先授权用户,也许只有付费用户可以上传,而免费试用版是只读的,该怎么办?或者您可能需要在流程中添加额外的挂钩来触发其他工作流、日志记录,或者在上传太多的情况下添加一个中断器。或者您可能不愿意在客户端代码中透露存储桶名称或其他信息。

请求签名 URL 的 Lambda 函数——演示应用程序的第一步——相当简单:

const uuidv4 = require('uuid/v4')
const AWS = require('aws-sdk')
AWS.config.update({ region: process.env.REGION || 'us-east-1' })
const s3 = new AWS.S3();
exports.handler = async (event) ⇒ {
return await getUploadURL()
}
const getUploadURL = async () ⇒ {
const actionId = uuidv4()
const s3Params = {
Bucket: '<< ENTER YOUR BUCKET NAME HERE >>',
Key: ${actionId}.jpg,
ContentType: 'image/jpeg',
ACL: 'public-read',
}
return new Promise((resolve, reject) ⇒ {
let uploadURL = s3.getSignedUrl('putObject', s3Params)
resolve({
"statusCode": 200,
"isBase64Encoded": false,
"headers": { "Access-Control-Allow-Origin": "*" },
"body": JSON.stringify({
"uploadURL": uploadURL,
"photoFilename": ${actionId}.jpg
})
})
})
})


尽管这个函数很简单,但是在请求签名的 URL 之前,可以很容易地在这个阶段添加各种逻辑。一旦函数就绪,接下来的事情就是设置 API Gateway 并创建一个 GET 方法来创建端点。或者,您可以使用[无服务器框架](https://serverless.com/)进行部署,并自动执行这一步骤。

### 构建前端

该项目基于一个[样板 Vue 模板](https://vuejs.org/v2/guide/),但是演示该功能的所有重要工作都发生在 s3uploader.vue 中。

![Step one is to request the upload URL and step two is to upload directly to S3\. ](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/da0bff34ec421f0c9b7180819b97de54.png)

s3uploader.vue

同样,这是最少的代码,没有错误处理或细节以保持示例的简单,但是您可以看到实现这一点所需的代码只有几行。如果你打开 Chrome 开发者控制台(按 F12),你可以在整个过程中看到 console.log 输出。

### 设置您的权限

最后,谈谈权限——当您请求签名的 URL 时,请求函数需要适当的 IAM 权限来请求和上传文件。

一些管理政策包括过于慷慨的 S3:*许可。这些功能在开发中工作而在生产中失败是很常见的,因为当提升到生产时,IAM 角色被切换到一组更窄的特权。函数使用的 IAM 角色必须能够写入桶中,否则无法工作。

### 回到可伸缩性

这一切之所以值得,是因为可伸缩性。如果您需要允许大量用户上传文件,这种方法可以减轻您的所有网络负担(用户直接上传到 S3 ),并且扩展是无缝和自动的。当没人使用你的功能时,你不用付费。

此外,由于用户和 S3 之间没有服务器中继,您可以消除另一个故障点。 [S3 以其“11 个 9”的耐用性而闻名](https://acloudguru.com/blog/engineering/brazeal-in-praise-of-s3-the-greatest-cloud-service-of-all-time),所以您也可以从文件几乎不可能消失这一事实中受益。

总的来说,考虑到无服务器实现的好处,在使用 AWS 基础设施时,这似乎是管理任何形式的文件上传的明显而简单的方法。

* * *

## 获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。

* * *

# 您的云迁移梦想团队需要的 6 个人

> 原文:<https://acloudguru.com/blog/engineering/how-to-assemble-your-cloud-migration-dream-team>

预计到 2020 年,超过 80%的企业工作负载将会出现在云中。如果你还没有完全从[迁移到云](https://acloudguru.com/blog/business/what-is-cloud-migration),你可能会感到尽快迁移的压力。但是不要[重复别人的错误](https://acloudguru.com/blog/business/4-common-mistakes-when-enterprises-go-cloud)通过即兴迁移。成功的云转型始于挑选一个拥有必要知识、技能和资源的团队,然后让他们担任正确的角色。

下面是你需要的六个人来建立你的组织自己的云迁移梦想团队。

#### 1.执行发起人

这是 X 教授对你的 x 战警——丹尼海洋对你的海洋 11。此人的姓名将附加到您的云迁移中。他们拥有它。他们负责 IT 组织的迁移策略和云流畅度。

这个人是成功转型的关键人物,所以要明智地选择。你的首席技术官或首席信息官是一个很好的起点。如果你是组织中的决策者,并且有能力(和时间)担当这个角色,这个人可能就是你。如果你有一个优秀的云新手候选人,一个 [AWS 认证的云从业者认证](https://acloudguru.com/blog/engineering/what-we-learned-sitting-aws-cloud-practitioner-exam)可以给他们提供他们需要领导的云速成班。

**他们是谁**

*   一位德高望重、平易近人的高管,其愿景是引领 IT 组织内的文化变革
*   至少对云及其优势有基本了解的 IT 或业务领导

**他们会做什么**

*   参加会议、接听电话,并在整个组织内支持云计算事业
*   制定战略,确定成功标准,组建迁移团队,[确定技能差距](https://acloudguru.com/blog/news/introducing-skills-assessment-for-cloud-teams),评估培训和招聘需求

#### 2.现场将军

这个人是阿波罗 13 号地面控制的活化身——一个不费吹灰之力完成任务并保持任务正常进行的专家。这是一名主管级别的 IT 专业人员,具有团队协作技能,负责项目管理和执行迁移策略。他们应该参与人员配备决策、建立合作关系、选择供应商和制定沟通计划。

**他们是谁**

*   具备业务和财务技能的云专家,对技术如何融入大公司战略有着深刻的理解
*   一位经验丰富的项目经理,能够为成本规避、运营弹性和员工生产力等领域提供关键绩效指标(KPI)

**他们会做什么**

*   激励迁移团队,建立友谊,并实施策略以避免过程中的疲劳
*   设计正确的流程并确保运营顺利进行,包括采用正确的工具、配置、计费和开发内部云计算最佳实践
*   充当空中交通控制,指导人们在问题造成延误之前解决问题,并保持项目在预算范围内

#### 3.解决方案架构师

这个修修补补的技术人员是你团队中的多那太罗。这是一名云工程师,负责设计和管理您组织的[云架构](https://acloudguru.com/blog/engineering/scalability-cloud-computing),包括前端平台、服务器、存储、内容交付和网络。

**他们是谁**

*   IT 专业人员和工程师,具有云及云迁移经验的团队成员,包括与您的云提供商一起设计或开发解决方案的认证

**他们会做什么**

*   与系统管理员以及安全性和法规遵从性贡献者并肩工作
*   拥抱创新,尝试-失败-学习-重复实验,同时精通基础设施设计最佳实践

#### 4.系统管理员

基础设施即服务(IaaS)极大地改变了系统管理员的角色。此人将确保您拥有所需的云资源,而不是管理硬件。

**他们是谁**

*   精通虚拟机和云网络以及 IaaS 和平台即服务(PaaS)开发和部署的 IT 专业人员
*   了解云基础知识、全面了解您的云提供商并认识到[错误管理云资源的陷阱](/blog/business/top-10-mistakes-companies-make-managing-aws-resources?_ga)的云从业者
*   精通 shell 脚本和高级编程语言,如 Perl、Python 和 Ruby

**他们会做什么**

*   负责管理和定制云资源,以满足您组织的要求

#### 5.云安全管理器

[云安全管理器](https://acloudguru.com/course/aws-certified-cloud-practitioner)负责在您的云环境中部署、配置和维护安全基线。此人还应该使用帐户、用户和组来设置和管理对云资源的访问。

**他们是谁**

*   获得云安全管理认证的云从业者,了解设计和维护安全云环境的职责分工
*   一名 IT 团队成员,擅长沟通,了解虚拟机和容器部署系统的潜在漏洞

**他们会做什么**

*   确保您的安全,并向您的工程团队解释云安全的工作原理、重要性以及安全协议

#### 6.合规专员

该角色与云安全经理密切合作,负责确保您的组织符合您所在行业的隐私和 GDPR 要求。

**他们是谁**

*   获得云安全管理认证的隐私专家,可以帮助内部团队制定尊重隐私的政策和流程

**他们会做什么**

*   使用云提供商提供的工具维护必要的合规性认证
*   与法律和安全团队合作,确保您组织的隐私计划符合并维护合规标准
*   评估新产品、功能和流程,确保它们符合法规遵从性指导原则

如果您有具备适当技能的适当团队,云迁移可以顺利、安全、经济高效且快速。如果你是一半以上的 IT 领导者中的一员,正在努力寻找必要的人来支持你的云计划,考虑一下 T2 企业培训。无论你的团队是在你需要他们的地方犹豫不决,还是完全在做其他事情,像亚马逊和摩根大通这样的公司都在[投资培训和再培训](https://acloudguru.com/blog/business/build-your-own-unicorns)团队,以更好地适应新的优先事项。

**还不是 ACG 商业会员?**

我们为您提供提升团队技能、建立云文化、为未来做好业务准备以及充分利用每份许可证所需的一切。

* * *

## 获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。

* * *

# 如何审计和保护 AWS 帐户

> 原文:<https://acloudguru.com/blog/engineering/how-to-audit-and-secure-an-aws-account>

据 Statista 称,数据泄露和暴露的凭据:这只是让网络安全专家夜不能寐的几个云安全问题。确实很可怕。这就是为什么对于任何重视自身持续存在的组织来说,投入时间对云环境进行适当的审计和保护仍然是重中之重。在本帖中,我们将讨论如何审计和保护 AWS 帐户

但是,当涉及到保护您的 AWS 帐户时,您应该从哪里开始呢?

我们可以从几个基本问题开始,我们将在这篇博文中回答这些问题:

*   我们如何审计 AWS 账户?

*   我们如何保护 AWS 帐户的安全?

*   我们的工具箱里有哪些 AWS 原生工具?

以下提示和见解由杰出的安全工程师唐·麦咭提供。唐是一位爱猫人士,是一位拥有 20 多年 IT 经验的资深[云架构师](https://acloudguru.com/blog/engineering/what-is-a-cloud-architect-and-how-do-you-become-one),也是 [Stedi](https://www.stedi.com/) 的云安全主管,Stedi 是一家 100%远程、完全无服务器的 B2B SaaS 提供商。

*本内容基于我们的* [*保护您的 AWS 环境*](https://get.acloudguru.com/securing-aws-environment-webinar?&ajs_aid=8b2cc73f-c0e0-442b-ba6d-0eb362250ebb) *ACG 网络研讨会。任何错误都是编辑的责任。*

保护 AWS 帐户的大部分工作都可以通过 AWS 原生工具来完成。

以下并不是一个完整的列表,但是这些是 Don 在 Stedi 的工作中发现的最有影响力的 AWS 原生工具。我们将在下面详细讨论其中的一些工具。

*   **账户和组织** —这提供了最强的[爆炸半径](https://acloudguru.com/blog/engineering/ransomware-and-aws-6-ways-to-reduce-your-blast-radius)来限制安全事件的影响。

*   **访问和身份管理(IAM)——**通过角色、策略和用户管理对服务和资源的访问

*   **日志记录—** Cloudtrail、S3 访问日志、流量日志、CloudWatch 日志

*   **基础设施和数据保护—** VPC、神盾局、WAF、网络防火墙、马西、KMS、证书管理器、机密管理器

*   **安全评估、事件响应、数据保护和威胁检测—** 警卫、检查员、Confi、侦探、工件、安全中心

* * *

[**12 AWS 配置规则每个账户都应该有**](https://acloudguru.com/blog/engineering/12-aws-config-rules-that-every-account-should-have)
在[这篇博文](https://acloudguru.com/blog/engineering/12-aws-config-rules-that-every-account-should-have)中,看到了 AWS 配置规则,应该被认为是任何账户的最低要求。

* * *

## **如何审计 AWS 账户**

当我们深入探讨如何审计和保护 AWS 帐户时,让我们从审计开始。通过审计 AWS 帐户,您可以查看 IAM 用户、角色、组和策略,并查看是否有任何用户或工具拥有过多的权限。

审计是至关重要的,因为你不能保护你没有跟踪的东西。审计是确保 AWS 帐户安全的最基本的工具之一,但是大部分安全工作都是做基本的事情。(但是,当然,基础的东西可能很难。)

在您的环境中,从第一天开始,以下内容都是可以访问的。

### **1。生成并维护一份完整的资产清单**

什么是资产?在 AWS 领域,资产是任何有标识符的东西。这可能是策略、角色和服务器。我们需要这些东西的清单。一旦我们有了一个列表,那么我们就可以开始弄清楚这些东西是做什么的,我们如何保护这些资源,以及它们是否有任何配置错误。

#### 如何创建资产库存

建立资产清单有不同的方法。您可以使用第三方工具或 CLI 脚本,但是有一种快速简单的方法:AWS Config。AWS Config 允许您记录和评估 AWS 资源的配置。

查看[这篇文章](https://acloudguru.com/blog/engineering/12-aws-config-rules-that-every-account-should-have)了解更多关于使用 AWS 配置创建资产清单的详细信息,以及 [12 个 AWS 配置规则,每个帐户都应该有](https://acloudguru.com/blog/engineering/12-aws-config-rules-that-every-account-should-have)。

### **2。安全 IAM**

作为审计的一部分,请看一下 IAM。IAM 经常被赋予过多的特权,所以我们希望确保我们有一个坚实的战略来解决这个问题。

#### 身份和访问管理(IAM)基础知识

与资源类似,用户和角色经常被授予过度特权。以下是你应该考虑的一些基本事项,作为最低限度的要求:

*   确保您配置了密码要求。
*   对所有用户实施 MFA 尤其是根帐户!
*   停止说话…停止使用根帐户。除了设置计费计划和更改自己的地址之外,它没有任何实际 IAM 用户或角色无法完成的有用功能。
*   使用访问分析器查找意外访问。您可能会看到有能力由外部实体承担的角色,这可能是您不希望看到的…尤其是如果是您不认识的客户。
*   尽可能限制 IAM 用户的使用。它们带来了额外的风险。
*   使用 AWS SSO 进行人工访问。并为人类建立特定的工作角色。它让开发者的生活变得更加容易。
*   根据工作角色而非人员授予用户访问权限。
*   禁用任何 90 天或更长时间未使用的角色。如果另一个 90 没人投诉,就删了。
*   利用开源/第三方工具进行 IAM 分析。

* * *

![aws iam errors](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/e66a98be16296610f6a293dee3114286.png)

[**了解如何修复 5 个常见的 AWS IAM 错误**](https://acloudguru.com/blog/engineering/fixing-5-common-aws-iam-errors)
AWS IAM 错误很常见。别担心!在[这篇博文](https://acloudguru.com/blog/engineering/fixing-5-common-aws-iam-errors)中,我们深入探讨了 5 种常见 AWS IAM 错误的原因和解决方法。

* * *

### **3。寻找公共资源**

一旦你有了资产清单,并在 IAM 上浏览了一遍,你就需要开始处理公共资源。

这些都是我们已经确定为公开的,因此是风险点。这些可以包括 S3、EBS 快照、SNS、数据库等等。

我们看到像 S3 错误配置这样的事情,但还有其他可能是公开的危险但被忽视的事情。例如,有时人们拍摄服务器的快照,并意外地将它们配置为公共的。我们需要检查这些东西!

公开可用的资源可能会导致数据泄露、数据丢失以及对帐户和服务的意外访问。(那些不好。)这就是为什么我们需要确定公开可用的资源。

非故意公开的常见资源包括:

*   S3 桶或物体
*   快照
*   社交网络话题
*   数据库
*   EC2 实例

“我要做一个非常不受欢迎的声明:没有任何好的理由,S3 水桶应该是公开的,”唐说。“从来没有人给过我一个好的理由。”

要查找公共资源,可以使用开源工具,第三方工具,或者 [AWS Config](https://acloudguru.com/blog/engineering/12-aws-config-rules-that-every-account-should-have) 。但是*你*必须去补救它们。

这里有一些你可以立即完成的快速简单的胜利。这些是唐最起码的要求:

*   在帐户级别启用 S3 公共访问阻止
*   打开警戒
*   使用 AWS 防火墙管理器将通用 IP 安全规则应用于所有 VPC
*   利用托管配置规则,但不要害怕编写自己的规则!

### **4。使用 AWS 组织**

#### 推荐的 AWS 组织结构

AWS 组织是一个最被低估的安全领域。这是您的安全工具箱中最强大的工具之一。

账户就是边界。你必须允许东西进出账户。你不能用 AWS 中的其他任何东西来说。即使有了 VPCs,您也必须采取额外的步骤来使它比开箱即用更加安全。默认情况下,除非您允许,否则没有任何东西可以进出帐户。

我们将这些用作我们技术体系中特定部分的服务帐户。每个团队或服务都有一个帐户。

*   **Root /管理帐户—托管组织**
    *   生产 OU、生产前 OU、构建 OU、开发 OU
        *   每个人对每项服务都有一个帐户
    *   运营 OU
        *   公司系统账户(账单、内部 IT 等。)
        *   DNS 帐户—将子域委派给其他帐户
    *   安全 OU
        *   安全帐户—所有安全工具(警卫、SIEM、配置等)的所有者。)
        *   日志记录帐户—安全部门使用的所有日志的真实来源
    *   暂停 OU
        *   这是我们保存关闭或未使用账户的地方
        *   有 SCP 来阻止采取任何行动

* * *

**[保护您的 AWS 环境](https://get.acloudguru.com/securing-aws-environment-webinar)** 在[这个免费的点播式网络研讨会](https://get.acloudguru.com/securing-aws-environment-webinar)中,您将了解如何从零开始保护复杂的 AWS 环境,并了解如何审计和保护 AWS 帐户。

* * *

### **5。确保审计日志已启用**

接下来,我们必须有审计日志。审核日志对于检测值得注意的事件至关重要,有助于您了解事件发生后的情况。

CloudTrail 基本上是 AWS 中大多数情况下发生的每个动作的自动日志。但是,根据您的工作负载,您也可以考虑其他服务,包括 VPC 流日志(如果您使用服务器)或 S3 访问日志(如果您公开使用存储桶)。

#### AWS 审计日志记录基础

*   确保启用了 CloudTrail 并在 S3 中存储日志。
    *   S3 存储桶应该具有高度受限的访问权限
    *   最佳做法是将所有日志存储在专用帐户中
    *   如果使用 AWS 组织,请打开全局 CloudTrail
*   其他值得注意的日志有 S3 访问日志、CloudWatch 日志、WAF 日志和 VPC 流日志
*   没有 SIEM 工具,日志几乎毫无用处。
*   只要有用,就只储存多头。

CloudTrail 很快就会变得昂贵,尤其是如果你在 S3 存储的话。你只需要保留你需要的东西。但是你需要它。如果您没有打开 CloudTrail,您就无法检测事件。

#### 如何通过 CLI 打开全局 CloudTrail

创建一个 S3 存储桶来存储日志,并确保该存储桶尽可能被锁定。然后,通过 CLI 启用全局 CloudTrail:

*   `aws organizations enable-all-features`
*   `aws organizations enable-aws-service-access --service-principal [cloudtrail.amazonaws.com](http://cloudtrail.amazonaws.com)`
*   `aws cloudtrail create-trail --name my-trail --s3-bucket-name my-bucket --is-organization-trail —is-multi-region-trail`

如果使用 SIEM,请配置 S3 存储桶和 SIEM 以使用日志。

* * *

## 锁定您的云安全技能

学得更快。动作快点。[从 ACG 开始](https://acloudguru.com/pricing)通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。

* * *

### **6。打开安全控制**

打开那些对齐的原生工具,如果适用的话,比如守卫职责和督察。

保持警惕总是好的,但是如果您正在运行 EC2 实例,并且您没有强大的漏洞管理程序,您可能希望打开 Inspector 来查找缺失的补丁和类似的东西。

### **7。如果没有数据流图和网络图,则构建它们**

我们想要所有东西的数据流图。如果你不知道一个开发者是如何使用系统的,你就不知道你能做什么。这可以帮助做出决定,如阻止 S3 公共访问。

### **8。挑一个标准**

安全不应该是你一路走来编造出来的。你不应该进入一个问题,只是决定实施一个规则。作为审核和保护您的 AWS 帐户的工作的一部分,您需要路标。这就是标准的作用。

唐推荐 NIST CSF/800-53、CIS 或 CCM。但是请记住:这些不应该是规则。你应该利用它们来为你的决策提供信息。

### **9。建立风险登记簿以跟踪调查结果**

风险本身必须被跟踪,就像资产一样。我们不想玩打地鼠。建立风险登记册可以确保我们不是在救火,而是在防火。

风险登记簿可以像电子表格一样简单,至少应跟踪以下内容:

| 身份证明 | 调查结果的专用标识符 |
| 优先 | 临界指示器 |
| 描述 | 风险有多大? |
| 可能性 | 这种情况发生概率 |
| 影响 | 事件的后果 |
| 响应类型 | 接受、转移、减轻、避免 |
| 响应描述 | 可以做些什么来解决或减轻风险? |
| 物主 | 谁负责? |
| 状态 | 此风险的当前状态 |

风险登记册应该推动补救问题和故事。

## **如何保护 AWS 账户的安全**

接下来,让我们以类似于 Don 在 Stedi 的方法来应用这些概念。

*   将基础架构用作所有部署的代码
*   打开默认 EBS 加密
*   在帐户级别启用 S3 公共访问阻止
*   EC2 实例需要 IMDSv2
*   使用 AWS 组织
*   利用服务控制策略
    *   执行“禁止”和“禁止”的规定
    *   保护关键资产
    *   保持光线
*   对 IAM 用户使用 AWS SSO
*   使用基于工作的角色
*   关键帐户访问警报

这是上面提到的一些事情以及如何在 CloudFormation 中实现它们的一个例子:

S3AccountPublicAccessBlock:
Type: "CommunityS3PublicAccessBlock"
Properties:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
EbsEncryptionDefaults:
Type: "CommunityOrganizationsEbsEncryptionDefaults"
Properties:
EnableEbsEncryptionByDefault: true
IMDSv2LaunchTemplate:
Type: AWSEC2LaunchTemplate
Properties:
LaunchTemplateName: IMDSV2
LaunchTemplateData:
MetadataOptions:
HttpEndpoint: enabled
HttpPutResponseHopLimit: 1
HttpTokens: required


### 服务控制策略(SCP)

服务控制策略(SCP)允许您对帐户应用限制性策略。这些可以在根级别或 OU 级别应用。根帐户不受 scp 的影响

#### 推荐的最低 scp:

*   拒绝根用户访问
*   要求使用 IMDSv2
*   拒绝创建 IAM 访问密钥的能力
*   拒绝离开组织的能力
*   拒绝扰乱守卫职责或阻止守卫职责失效能力
*   拒绝禁用 S3 公共访问阻止的能力
*   拒绝禁用 EBS 默认加密的能力
*   拒绝禁用 AWS 配置的能力

#### Optional SCPs:

*   禁用未使用的区域
*   需要资源上的标签
*   防止删除数据库、S3 存储桶或生产中的其他敏感项目

### 服务控制策略示例

下面的 SCP 示例阻止 root 帐户执行几乎所有操作。Don 建议将此应用于所有孩子帐户,并创建一个移除时触发的警报。

DenyRootUserSCP:
Type: OCORGServiceControlPolicy
Properties:
PolicyName: DenyRootUser
Description: Deny using the root account
PolicyDocument:
Version: "2012-10-17"
Statement:
- Sid: DenyRootUser
Effect: Deny
Action: ""
Resource: "
"
Condition:
StringLike:
"aws:PrincipalArn": "arn:aws:iam::*:root"


在 https://asecure.cloud/p/scp_package/可以找到一个很棒的 scp 列表

## 提高 AWS 环境的安全性

除了以上关于如何审计和保护 AWS 账户的步骤之外,一个组织可以做的最大的事情之一就是[通过授权给开发人员](https://acloudguru.com/blog/business/how-to-shift-aws-security-left-10-ways-to-empower-your-developers)来转移安全性。你可以在这里阅读更多关于 T2 的信息。

想了解有关保护您的云环境的更多信息吗?

ACG 为您提供了保护 [AWS](https://acloudguru.com/blog/engineering/what-is-amazon-web-services-aws) 、 [Azure](https://acloudguru.com/blog/engineering/what-is-microsoft-azure) 和 [GCP](https://acloudguru.com/blog/engineering/what-is-google-cloud-platform-gcp) 环境所需的基本要素。查看我们的[掌握 AWS 良好架构的框架](https://acloudguru.com/course/mastering-the-aws-well-architected-framework)课程。

或者,在八月份,查看以下免费课程,这些课程都是 [ACG 免费课程](https://acloudguru.com/blog/news/whats-free-at-acg)的一部分:

寻找更深入的安全培训?查看 ACG 的 [AWS 安全学习路径](https://acloudguru.com/learning-paths/aws-security')并提升你的技能,无论你是完全的新手还是安全专家。

* * *

![Forrest Brazeal AWS Serverless Hero, Sr. Manager at A Cloud Guru and Mark Nunnikhoven VP, Cloud Research at Trend Micro](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/f0d20211f44c56a8f4211964b4a574aa.png)

**[看点:领导需要了解哪些关于云安全的知识](https://go.acloudguru.com/Leaders-Cloud-Security-Webinar?ajs_aid=8b2cc73f-c0e0-442b-ba6d-0eb362250ebb)**
你的业务在云端安全吗?答案很大程度上取决于你。观看 Mark Nunnikhoven 的[免费点播网络研讨会](https://go.acloudguru.com/Leaders-Cloud-Security-Webinar),他将解决云安全的关键问题。

# 如何使用 s3cmd 将 Linux 备份到亚马逊 S3

原文:<https://acloudguru.com/blog/engineering/how-to-backup-linux-to-amazon-s3-using-s3cmd>

# 云计算职业常见问题:如何开始云计算职业

> 原文:<https://acloudguru.com/blog/engineering/how-to-begin-your-cloud-career>

*在本帖中,我们将回答希望开始或推进其云计算职业生涯的学习者的一些常见问题,并提供关于开始云计算之旅和让认证为您服务的实用技巧。*

现在是 2022 年,对许多人来说,这意味着从假期回来后,对你糟糕的工作充满了新的仇恨。为什么不下定决心在 2022 年提升(并热爱)你的职业生涯,学习一些受欢迎的云技能并[开始你的云职业生涯](https://acloudguru.com/blog/engineering/jump-start-your-cloud-career)?我们可以帮忙!

培训建筑师 Lars Klint、Scott Pletcher 和 Mattias Andersson 对此文有贡献。任何错误都很可能是编辑的失误。(抱歉!)

* * *

**加速您的云计算职业生涯**

云专家让你轻松(也很棒)提升你的云事业——即使你对技术完全陌生。查看 [ACG 目前的免费课程](https://acloudguru.com/blog/news/whats-free-at-acg)或[立即开始](https://acloudguru.com/pricing)免费试用。

* * *

## 你如何利用认证或云培训来找工作?

当谈到定位你从 ACG 或证书中学到的东西,以向未来的雇主推销自己时,你会想根据你申请的具体职位定制你的简历。

认证很重要,云认证有巨大的[价值。但是你必须正确使用它们。](https://acloudguru.com/blog/engineering/the-value-of-an-aws-certification)

不要只列出你的证书,用你的作品集来补充它们。证书是一个重要的筛选过滤器,但任何将证书付诸实践并创造了一个活的投资组合的候选人都将在竞争中拥有明显的优势。

查看 *[找云工作的最佳途径](https://acloudguru.com/blog/engineering/the-best-way-to-find-a-cloud-job)* 和 *[我需要多少认证才能得到云工作?](https://acloudguru.com/blog/engineering/how-many-certifications-do-i-need-to-get-a-cloud-job)* 深入探讨这个话题。

## 如何构建您的云工程产品组合?

我们定期举办的[云简历挑战赛](https://cloudresumechallenge.dev/)和 [#CloudGuruChallenges](https://acloudguru.com/blog/tag/cloudguruchallenge) 可以作为优秀的样本项目。将你在认证中学到的东西付诸实践,创造一个具体的成果。你不仅会展示你的技能,而且在这个过程中你会学到更多。

如果您正在寻找更小的项目进行尝试,请通过我们的[动手实验室](https://acloudguru.com/hands-on-labs)获得您的云计算。或者看看这篇关于 [10 个有趣的动手 AWS 项目](https://acloudguru.com/blog/engineering/10-fun-hands-on-projects-to-learn-aws)的帖子,你可以学到一些基本的云技能。

## 我如何知道从哪些认证开始?

当你刚刚开始的时候,你会觉得这就像是字母汤,围绕着证书的字母和级别让人摸不着头脑。为了帮助您克服最初的障碍,我们为三大云提供商准备了以下认证指南:

你要做的就是首先选择一朵云。这可以基于你正在工作(或申请)的公司和/或你的个人偏好。

## 云认证需要开发经验吗?

简单的回答是,不,云认证不需要开发经验。

如果你喜欢网络、存储和管理数据,你真的不需要很多开发经验。

然而,脚本知识加上健康的开发好奇心将大有帮助。但是,你不需要有大量的编程、编写应用程序或制作 web 和移动应用程序或后端服务的经验,就能在云上取得成功。

当谈到代码时,不要只是盲目地复制代码,花一些时间探索它的功能,并就 [Discord](https://discord.com/invite/acloudguru) 提出问题。

## 有没有免费的学习云技能的项目?

三大云提供商都提供免费的入门级服务。如果你使用 ACG 学习,我们的教师会尽可能使用你可以在自由层做的事情来创建项目。你也可以获得点数来测试非免费服务。

如果你在云专家平台上做动手实验或使用云操场环境,没有相关的成本。有沙盒——它们是测试事物的安全空间。您还可以利用各种无服务器服务,并使用 API 后端构建事件驱动的静态站点。您可能会产生的唯一费用是域名和 DNS 托管费用。

对于免费或低成本项目,[云简历挑战赛](https://cloudresumechallenge.dev/)和 [#CloudGuruChallenges](https://acloudguru.com/blog/tag/cloudguruchallenge) 是一个很好的起点。

你也可以注册 [ACG 的免费等级](https://acloudguru.com/pricing)(不需要信用卡)来获得免费云学习的轮流名单。这里是[这个月在 ACG](https://acloudguru.com/blog/news/whats-free-at-acg) 有什么免费的。

## 我可以在职业生涯中期过渡到云计算吗?

动手吧!你不会觉得自己太老或格格不入——因为你并不孤单。有很多人和你有同样的情况。针对初学者的正确的[培训](https://acloudguru.com/blog/engineering/whats-the-best-aws-training-for-beginners)将帮助您利用现有的行业经验,并进行类比,以帮助您有效地学习云。

对于职业生涯中期的变化,人们经常会有很多自我怀疑,担心转型的人没有必要的技术深度。总有可能你会发现自己暂时处于轻微的技术劣势,但是*不*拥有所有的技术深度和经验的优势之一是你没有太多的东西要忘记,这可能是一个严重的绊脚石。

我见过的阻碍人们成功的最大障碍之一是他们的固执和不愿意超越过去的工作方式,升级到现在工具不断发展的世界中的工作方式。所有技术的核心技能是你的学习能力。能够带着好奇心和开放的心态投入学习是一个真正的优势。

## 要成为一名云工程师,你需要了解 AWS、Azure 和 GCP 吗?

拉尔斯拿着这个。“嗯,我只知道一朵云——我承认!我是在 Azure 还是全新的时候开始的,所以我已经成为 Azure 人群中的一员 12 年了,我一直很开心。有很多机会。如果你有热情去学习一门以上的课程,那就一定要去学。但是,如果你更喜欢只学习一种云,那对我来说已经足够了。”

## 我从哪个云平台开始重要吗?

你想达到什么目的?这就是开始的心态。这就是我们谈论证书的原因——不是因为证书本身很重要,而是因为你之后能做什么很重要。例如,如果你在一个使用 Azure 的组织中工作,并且你想在那个组织中获得成功和晋升,很明显你应该学习 Azure。

你能从学习其他云技术中获益吗?当然可以。通常,当你学习多种云时,你会比第一种更好地学习每一种云,因为你能够解析出它们的相对优势和劣势。

查看[云提供商比较](https://acloud.guru/series/cloud-provider-comparisons)系列,了解每种云的优势。

## 是否有需要多云的角色?

Scott 说:“我认为有意采用多云化弊大于利,但是许多公司发现自己通过收购、合并,或者可能是分散的技术团队现在试图集中,处于这种情况下。如果你发现自己在这些公司中的一家工作,要知道如果你已经学习了一种云,学习下一种就不会那么困难了。”"

我们的[云比较](https://acloudguru.com/blog/tag/cloud-comparison)将带您了解每种云固有的不同术语。

我们还有一个[多云挑战](https://acloudguru.com/blog/engineering/cloudguruchallenge-multi-cloud-madness),Scott 要求学员使用至少三种不同的云构建一个图像识别应用。这个挑战是永恒的,所以试试吧(在 [Twitter](https://twitter.com/scottpletcher) 上点击 Scott,在 LinkedIn 上获得云计算能力的支持)。

## 我应该成为云架构师吗?

很多人都很好奇[如何成为云架构师](https://acloudguru.com/blog/engineering/what-is-a-cloud-architect-and-how-do-you-become-one)。为什么?因为云架构师被视为最终目标,是你在云中可以达到的最高境界,所以它变得非常受欢迎。现在,我们和任何人一样欣赏一个雄心勃勃的目标,但就云角色而言,不要总是假设云架构师总是专家级或 3 级认证,这就是你需要去的地方。这不一定是每个人的最佳角色。

例如,如果你真的对 DevOps 充满热情,你为什么要去尝试成为一名云架构师呢?

另一件事是,云架构师通常会随着十年左右的职业发展而成长为这个角色。因此,成为云架构师并不是仅仅通过认证就能实现的。虽然这些认证证明您了解云环境中的一系列技能,但并不意味着您拥有在现实世界中实施这些概念的实际经验。

增加你的技能是有价值的,但从根本上来说,你需要在现实世界中适合你需要执行的完整角色,而云架构师从来都不是一个入门级的角色。

理解系统是如何架构的对于几乎每个人来说都是一项非常重要和有价值的技能,这就是为什么我认为通过 [AWS 解决方案架构师助理认证](https://acloudguru.com/course/aws-certified-solutions-architect-associate-saa-c02)是如此重要,例如,只是为了在进入更窄范围的认证之前获得基本的理解水平。这就是 T 型技能的运用——广度和深度都是如此。

## 云支持工程师和云软件开发人员的日常生活是怎样的?

云支持工程师可以做很多事情:回答问题、以 DevOps 的身份解决问题、以软件管理生命周期类型的角色进行操作。

要了解更多关于成为云软件开发人员的信息,请查看我们的[所以你想成为云开发人员](https://www.youtube.com/watch?v=WH31UfwGkxk)视频。我们的整个 [*让你想成为……*系列](https://acloud.guru/series/so-you-want-to-be-a/view/101)将让你一窥许多关键的云角色。

## 一个只会用 C 和 C++编程的嵌入式软件工程师有可能转行到云吗?

是的,是的,是的!这可能并不意味着这个人正在为云编写 C 或 C++代码,但是具有软件开发和编程语言的背景确实可以翻译。

## 你需要网络技能来担当云中的角色吗?

网络是一件非常重要的事情,但是对于大多数云计算职业来说,你不需要成为 it 专家。

有些情况下,网络很重要,但在许多情况下,我们现在使用的服务对待网络的方式与过去大不相同。这意味着旧的网络风格并不总是与新的云原生架构相关。例如,使用 PaaS(平台即服务)环境不需要很多网络知识。

* * *

## 云职业资源

不确定从哪里开始?我们明白了。但是要知道*任何人*都可以学云。你能做到的!查看这些相关资源,获得灵感,制定计划,开始更棒的职业生涯。

* * *

没看到你的问题在这里得到回答?加入我们的 [Discord](https://discord.com/invite/acloudguru) ,在这里你可以询问所有技能水平的其他云学习者,或者在办公时间与我们的培训架构师团队一起工作。更多关于云的内容,请在[推特](https://twitter.com/acloudguru)上关注 ACG,在[上关注脸书](https://www.facebook.com/acloudguru)和[在 YouTube 上订阅一位云专家](https://www.youtube.com/c/AcloudGuru/?sub_confirmation=1)。

# 观察:如何构建云优先战略

> 原文:<https://acloudguru.com/blog/business/how-to-build-a-cloud-first-strategy>

预计到 2023 年,云支出将达到近 6000 亿美元。没什么好隐瞒的了。在这一点上,云领导人要么被淋湿,要么学会在雨中跳舞。

在本次网络研讨会中,云专家 Drew Firment 和德勤首席云战略官 David Linthicum 讨论了云领导者在制定云战略时犯的五个最大错误以及他们应该做些什么。

[![a video thumbnail for ACG's Building a Cloud First Strategy webinar](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/542d8ef2a03725bc52a482369bc370e3.png)](https://acloudguru.com/content/how-to-build-a-cloud-first-strategy-5-mistakes-to-avoid?cache=56325)

## 云第一领导者的定义是什么?

“云优先”领导者将云视为一项业务投资、创新催化剂和推动更大业务成果的方式。他们直接驶向风暴,而不是等待风暴来找他们。他们会活着讲述他们的故事。

在未来 10 年,我们将看到许多公司离开,因为他们的领导者从战术上看待云——一次采取一项行动,而没有考虑更大的图景——而不是从战略上规划如何利用云技术来实现业务成果。从战术角度考虑的领导者比从战略角度考虑云的领导者花费相同或更多的成本:

*   他们没有做太多的计划
*   他们犯了更多的错误
*   他们没有向利益相关者解释云技术的真正价值

现在,他们中的许多人感到失望,因为他们的云战略并没有实现他们所期望的投资回报。云可能是神秘的,但它不是奇迹。

云优先领导者将云技术作为真正的创新力量倍增器,推动其业务向前发展。然后,他们弄清楚它如何融入文化、运营模式和技能组合分析,从而成为他们组织中的转型支柱。

* * *

### 如何建立云第一团队

“云优先”领导者不仅仅是定义云战略。他们塑造了推动业务成果的文化和团队。。。或者不是。在这篇博文中了解更多关于[建立变革文化的信息。](https://acloudguru.com/blog/business/cloud-transformation-faqs-culture-teams-and-cloud-fluency-at-scale)

* * *

## 有意将多云添加到您的云优先战略中

领导者犯的最大错误之一是试图在短时间内做太多事情。我们已经到了这样一个阶段,领导者正在默认实施多云,而不是有意设计多云策略。为什么?最常见的原因是他们害怕供应商锁定。但这导致了企业没有准备好处理的复杂性问题。

要想在多云中取得成功,您必须有目的地将云提供商的优势与业务意图结合起来,同时注意管理成本和安全性增加的复杂性所需的抽象。如果您没有战略性地处理这个问题,或者不小心陷入其中,您将无法从您的多云环境中获得最大的好处。它甚至可能会让你付出代价。

在你直接跳入深水区之前,确保你知道如何游泳。从一片云开始,并精于此道。了解它的工作原理以及如何利用云原生特性。一旦您和您的团队对一家云提供商感到满意,那么就开始寻找其他同类最佳的解决方案来添加到您的云战略中。

* * *

### 你的多云云系统安全吗?

一旦你的多云系统就位,确保用这 4 个最佳实践来[保护它。](https://acloudguru.com/blog/engineering/4-key-steps-to-an-effective-multicloud-security-solution)

* * *

## 原生安全性是云优先战略的基础

几年来,安全一直是领导人关心的问题。现在,随着云使用的持续增长,情况变得更糟,而且还没有最低限度的可行标准。许多领导者希望其他组织帮助他们了解如何保护他们的云环境。他们会读到一篇关于任何其他企业如何创建了一个伟大的云安全系统的文章,复制它,并想知道为什么他们在第二周被攻破。

企业现在真正需要的是经济高效、可靠的全包式安全解决方案,他们可以依赖并默认使用。不过,唯一的办法是让开发人员能够将安全性直接构建到他们的应用程序中。这需要我们的思维发生转变,从在系统和数据周围筑起高墙,转变为从内部加强它们。谢天谢地,随着从 DevOps 到 DevSecOps 的转变,这已经开始了。

## 云优先战略针对投资回报进行了优化

在过去,我们给予开发者全权来构建云系统。我们告诉他们工作软件是目标,他们做到了。一些公司交付的解决方案每月运行成本高达 500 万美元。其他人提供了解决相同问题的解决方案,但运行成本仅为 50 万美元。它们产生相同的结果,但对业务的影响却截然不同。

“云优先”的领导者和开发人员会考虑他们解决方案的经济性。他们意识到他们现在构建的东西将在未来 15 到 20 年内使用,因此他们正在相应地优化他们的架构。这可能看起来像架构开发期间的战略监督,着眼于解决方案随时间推移的运营经济可行性。

FinOps 是实践中的另一个例子——工程、财务、技术和业务团队合作,以获得对其云系统的更多财务控制和可预测性。无论如何实现,这种云战略的目标是更接近百万分之一的 100%优化的配置。

* * *

**利用数据支持的洞察来指导您的云战略,并在快速变化的云世界中保持领先。[在这个点播网络研讨会中了解如何操作。](https://go.acloudguru.com/how-to-get-more-value-from-cloud-adoption-webinar)**

[![Screenshot of Getting More Value from Cloud webinar](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/6c2d03b07d9249459134faf992ef1c41.png)](https://go.acloudguru.com/how-to-get-more-value-from-cloud-adoption-webinar)

* * *

## 为您的云优先战略培养合适的云人才

“云优先”的领导者应该雇佣持续学习者。拥有名牌大学的工程学位或持有五项认证已经不够了。领导者无法通过雇佣来摆脱云技能缺口。相反,他们必须培养实施云战略的人才。做到这一点的唯一方法是雇佣有创造力、有学习和创新欲望的开发人员。

一旦人员到位,创建学习和发展计划就很容易了。借助[按需和自动学习系统](https://acloudguru.com/),领导者可以为他们的开发人员构建学习路径,并为完成任务创造激励或期望。甚至还有实验室和沙盒的实践机会,帮助入门级工程师获得构建云基础架构的实际经验,对您的业务几乎没有风险。这是一个双赢的局面。您可以缩小业务中的云技能差距,您的团队可以扩展他们的技能,他们的新知识可以让您的云系统更加高效和有效。

在 YouTube 上订阅一位云专家的每周云新闻。或者在[脸书](https://www.facebook.com/acloudguru)上关注我们,在 [Twitter](https://twitter.com/acloudguru) 上关注我们,并在 [Discord](http://discord.gg/acloudguru) 上加入对话,了解云的最新动态!

# 云支持:如何构建云流畅度计划

> 原文:<https://acloudguru.com/blog/business/how-to-build-a-cloud-fluency-program-for-everyone>

云已经在如何开发和交付 IT 应用程序以支持业务方面创造了一个范式转变。这种转变影响着组织中的每一个人,从 IT 到业务、销售、市场、财务和人力资源。从长远来看,认识到这种学习需求并开始有意识地构建[云流畅度](https://acloudguru.com/blog/engineering/why-central-cloud-teams-fail-and-how-to-save-yours)的组织是最成功的。这些组织有意地为培训传道者创造角色,以扩展他们的学习努力。

## **成功的云支持**计划的三个特征

**云技能需要自上而下的授权。**最成功的再培训计划是自上而下开始的。*培训应该在战略会议上占有一席之地*。最高管理层需要支持这一计划,指定预算,定义目标,并分配所有权。

**云技能需要自下而上的数据做支撑。**例如,AWS 采用已建立的机制来确定培训需求,是一种自下而上的方法来确定技能差距。这些数据,当与自上而下的命令结合在一起时,将产生一个强大的强制功能来推行再培训计划。

**云斯基林是为*大家*准备的。这里的关键词是*每个人*。组织中的每个角色都受到云如何帮助他们的业务实现目标的影响。学习的程度当然会有所不同。**

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/191c9f70be1f71f863d5e93b6c66bcb4.png)

***Clo******ud fluency spectrum**: shows how different personas within an organization, even non-IT roles, can benefit from cloud learning*

## **云支持和流畅度入门**

与任何成功的业务计划一样,建立一个持久和长期的云流畅计划始于一份清晰的、无术语的客观陈述:一份[1-2 页的文档](https://acloudguru.com/blog/business/business-letter)概述业务原因**为什么[云流畅计划](https://acloudguru.com/blog/business/cloud-transformation-faqs-culture-teams-and-cloud-fluency-at-scale)对您的组织很重要**,它对每个参与者的好处,以及 **[您将如何衡量成功](https://acloudguru.com/blog/engineering/measuring-cloud-success)** 。

* * *

### 准备好升级您公司的云了吗?

创建云创新文化,通过大规模实践学习加速云成功。使用最全面、最新的学习库对 10 或 10,000 人进行升级或再升级。

* * *

#### 回答大问题:“对我有什么好处?”

在构建 cloud fluency 的案例时,组织将不得不花费最多的时间来回答“它对我有什么好处”的问题,尤其是对于非技术角色。

许多企业组织的客户都要求提供符合云前提的功能(弹性、弹性、安全性、地理分布、创新和安全性)。因此,一个非技术人员,比如一个零售银行产品的销售人员,必须知道她所销售的基于云的产品的云前提。在回答“我有什么好处”这个问题时,了解是什么推动了您的企业进行这样的对话将是关键。一旦理解了这一点,向每个人讲述好处将是数据驱动的,衡量成功将是量化的。

确定人物角色。零售银行销售人员等角色是云流畅度计划的客户。它们需要被很好地表示和正确地定义。根据我的经验,角色涵盖了从 IT 员工(每一个可以想象的 IT 角色),到产品管理、业务线领导、销售主管等等。当整个组织了解 AWS 的价值主张时,它有助于创建技术战略和业务方向的一致信息。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/e4088a031df365546f6932bc3a676cef.png)

*Learning stack by area of focus*

**确定课程作业。**在此阶段,您最好与云提供商的培训和认证合作伙伴合作,对您的委托人进行需求分析。基于对你的人物角色的学习需求(角色、地域、任期)的分析,你需要准备满足他们需求的[学习路径](https://acloudguru.com/learning-paths)。

**分享目标。**从组织的最高层开始,分享目标,包括所涉及的角色——来自 CEO 办公室,或技术和业务领导的联合办公室。

#### **准备**

目标共享和学习分析完成后,您进入准备阶段。

**建立并报告指标**。一些组织选择通过[获得云认证的个人数量](https://go.acloudguru.com/cloudcheckr-case-study)来跟踪进展;其他人跟踪自我报告的使用新技能的例子。还有一些人跟踪在一段时间内组织中有多少新工作负载转移到了云,或者有多少新客户可以接触到。无论您选择何种方式来跟踪和分享成功的衡量标准,都要确保您解决的是与组织相关的业务问题。**在执行 cloud fluency 计划方面最为成功的组织将这些指标与其目标管理(MBO)和业务成果相结合**。

**确定培训冠军**。根据组织的规模、地理分布、角色分布和文化差异,确定一些**培训传道者**。这些拥护者有助于宣传 cloud fluency 计划的目标,并且是该计划的负责人,有助于促进该组织的发展。从您组织的各个阶层中选择备受尊敬、外向且在企业中有影响力的支持者(这并不意味着他们必须是资深的或终身的)。让您的传道者先睹为快,了解度量标准、培训将如何交付以及将包括什么,并给他们机会为未来的迭代/改进提供投入。例如,要了解 AWS 如何使用培训冠军,请访问此[页面](https://aws.amazon.com/developer/community/)。

传道者的核心职责包括但不限于:

*   **通过协作渠道,如[实践社区](https://en.wikipedia.org/wiki/Community_of_practice)、Confluence pages 和 Slack 渠道,在您的组织内建立宣传机制**。
*   **建立知识共享的物理机制**(如午餐和学习、[学习小组](https://help.acloud.guru/hc/en-us/articles/360000811535-How-Do-I-Manage-My-Study-Group-))、Q & A 和办公时间。这将是一个在内部和外部(如果允许的话)分享学习成果的机会。
*   **从培训参与者那里获得稳定的反馈**,告诉他们如何使培训更好,以及如何更好地传达“我有什么好处”。
*   **通过行业和云提供商宣传或开发者渠道与外部专家联系**以进一步学习,并在组织内分享。
*   如果允许的话,**创建外部聚会或用户组,以分享与您所在行业相关的可重复解决方案**,也可能是行业外的解决方案。

### **营造兴奋感**

随着基础工作的完成,现在是时候在 cloud fluency 计划启动之前开始交流学习模式和建立兴奋感了。该沟通需要传达给组织内的每个人,并应包含项目和目标的概述、培训模式、培训传道者的简历和项目时间表。

市政厅、广播视频、桌面广告、传单和桌面屏保只是可以用来传播信息的众多载体中的几个。计划在项目启动前一个季度进行这种广泛的交流。

### **执行**

**大张旗鼓地推出云流畅计划****。每一个小小的成就都应该被庆祝和认可。建立一个排行榜来分享进步。确定回答问题的办公时间。每一位领导(业务部门领导、副总裁、高级主管)都应该包括一份关于他们在组织内的职权范围的学习进度更新。这有助于创造一种良性竞争和积极强化的文化。**

****使用共享社区。**此时,培训传道者将已经建立了在组织内作为一个社区共享信息的机制和节奏。鼓励每个人分享他们的经验、问题和对学习的投入。**

**实施反馈机制。为员工建立反馈渠道,并确保你的拥护者鼓励使用该渠道。收集和重复来自你的选民的未经过滤的反馈。这将有助于随着时间的推移使课程更好,并引入新的和适合目的的课程。**

**Som Chatterjee 在 IT 专业服务和产品组织工作了超过 15 年。虽然他目前在 AWS 工作,但这篇文章代表他的个人观点,而不是 AWS 的官方指导。**

# 如何用 Amazon SageMaker 建立一个网飞风格的推荐引擎

> 原文:<https://acloudguru.com/blog/engineering/how-to-build-a-netflix-style-recommendation-engine-with-amazon-sagemaker>

你有没有想过网飞是怎么给你推荐电影的?作为一名技术人员,我一直很好奇。我知道机器学习是背后的原因,我想知道是否同样的方法可以在云大师上推荐课程。我对这个想法非常感兴趣,以至于把它作为一个# [CloudGuruChallenge](https://acloudguru.com/blog/engineering/cloudguruchallenge-machine-learning-on-aws) 。这是一个有趣的挑战,也是探索机器学习的一个很好的方式。为了深入了解 AWS 上用于机器学习项目的服务和平台,有[亚马逊机器学习课程](https://acloudguru.com/course/aws-certified-machine-learning-specialty)。请继续阅读,查看我的推荐引擎代码。

## 品味问题:亚马逊网络服务(AWS)上的机器学习

网飞会根据你的观看历史、其他有类似爱好的成员观看的内容以及电影的元数据(如流派、类别等)来提供推荐。这些相同的原则可以很容易地应用于课程推荐。我们跟踪课程的观看历史和元数据。唯一缺少的部分是一种简单的方法来比较学生,以确定他们是否有相似的品味。幸运的是,聚类,一种机器学习技术,可以用来将每个学生分类到特定的组中。

为了开始这个学习冒险,我和我的同事[朱莉·埃尔金斯](https://twitter.com/julieaelkins)合作,使用机器学习和[亚马逊 SageMaker](https://aws.amazon.com/sagemaker/) 来解决这个挑战。在这次冒险中,我们学到了很多东西,并制作了一个引擎的概念证明(POC ),该引擎使用机器学习向学生推荐课程!我们的 POC 会根据您观看和掌握的内容,以及您所分配的学习群中的其他人观看和掌握的内容,向您推荐标题。真的很酷!

## 课程推荐引擎的好处

为什么首先要考虑建立一个课程推荐引擎?当然是为了个人学习挑战!

随着个人成长和发展,一位云专家最近推出了与 Linux Academy 的新组合平台[,提供比以前多 250%的课程、470 多个测验和考试以及 1,500 多个实践实验室!您将如何浏览所有这些内容?支持机器学习的推荐引擎可能就是帮助你的工具。](https://acloudguru.com/blog/news/announcing-the-new-a-cloud-guru)

我们的总体希望是,支持机器学习的推荐引擎将提高课程的收视率和学生参与度,因为我们推荐的课程是根据您的兴趣和掌握程度专门定制的。

## 大局

如果你不熟悉 AWS 机器学习,它允许计算机研究数据,并找到可能隐藏的趋势和模式。

* * *

*提示:要了解更多关于机器学习的知识,请观看[这一集凯莎的《科尔纳》](https://youtu.be/NS77H80avLI)来了解速度。*

* * *

让这个解决方案起作用的关键是我们选择的机器学习技术,它允许我们像学生一样分组(或群集)。有几种机器学习技术(监督、非监督、强化、转移等。)以及可供选择的学习算法。我们根据可访问的数据点选择我们的技术,并根据我们预期的结果(即学生分组)选择学习算法。我们采用无监督学习作为我们的技术,因为我们的数据没有被标记,并且 [K-means](https://scikit-learn.org/stable/modules/clustering.html#k-means) 作为学习算法,因为我们需要根据相似性将我们的学生分组到特定数量(或 **k** 数量)的簇(或组)中。

我们选择的构建机器学习模型的工具是亚马逊 SageMaker。我们选择亚马逊 SageMaker 是因为它提供运行 [Jupyter 笔记本](https://jupyter.org/)的计算实例。幸运的是,SageMaker 设法创建了实例和所需的所有相关资源。我们使用笔记本实例来准备数据并运行聚类算法。

那么,它是如何工作的呢?K-means 学习算法接收学生在所选类别(如 AWS、Python、containers、DevOps、机器学习等)的课程上取得的进展。

然后,学习算法根据其识别的相似性将学生聚类(或分组)到学习组中。想象一下,每个学生通过一个神奇的漏斗进行评估。魔法漏斗决定了学生应该被放在哪个学习小组(或集群)里。

在机器学习算法评估了每个学生之后,我们就剩下了截然不同的群体。

展望未来,我们称这些集群为学习小组。课程推荐将基于学生的指定学习小组。

## 产生学习小组的步骤

让我们回顾一下创建学习小组的步骤。首先,我们获取数据,然后准备数据,最后,我们将数据输入机器学习算法,以产生分组。下面详细说说每一步。

### 我们的数据

机器学习项目最重要的部分是拥有可信的数据。在这个概念验证中,我们使用了员工数据。为云专家工作的一个很酷的好处是,我们可以免费访问我们创建的内容!我们总是在学习新的东西,所以我们有大量的数据输入到机器学习算法中!我们从两个数据文件开始:**课程. csv** 和**学生. csv** 。

*注意:我想强调的是,在这篇博文中,这个例子中提供的数据文件已经被匿名化并稍微简化了。*

#### 课程清单

[**Courses.csv**](https://github.com/linuxacademy/content-recommendation-engine/blob/master/data/courses.csv) 包含课程及其相关类别的列表。

#### 学生名单

[**Students.csv**](https://github.com/linuxacademy/content-recommendation-engine/blob/master/data/students.csv) 包含我们的员工已经观看的课程以及相关进度的列表。

### 数据准备

数据点提供了一个很好的起点。虽然我们有这些数据,但是这些文件对机器学习来说还不够好。我们需要处理和准备数据,以便学习算法可以轻松找到趋势和模式。SageMaker 足够灵活,允许我们这样做,所以我们推出了 SageMaker Jupyter 托管的笔记本实例,并开始编写 Python 代码。

为了处理数据,我们导入了必要的库。然后,我们将 **courses.csv** 导入到一个名为 pd 的 [Pandas DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html) 中,并显示前几行。

提示:Pandas 是一个 Python 数据分析库,它提供了一个表格数据结构,用于通过 DataFrame 操作数据。

Import the course data

courses_df = pd.read_csv('data/courses.csv')

#review first few records to verify import
courses_df.head()


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/03d1241357f556bbf329439070e080d9.png)

*Image 14: Initial records from courses.csv*

然后,我们检查数据中的空记录并删除它们。我们不希望学习算法从丢失数据的记录中学习,因为这可能导致算法找到不正确的模式。

#View records that are NaNcourses_df[courses_df.categories.isnull()]


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/e9e930e487f68445874c621e6051d800.png)

*Image 15: Rows with empty records*

courses_df.dropna(subset=['categories'], inplace=True)


接下来,我们将 **students.csv** 导入到 Pandas DataFrame 中,并通过打印前几行来验证数据。

students_df = pd.read_csv('data/students.csv')students_df.head()


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/d99a8b15d529f46c60138dd51cbd8e28.png)

*Image 16: Student watch data*

### 数据检查和可视化

在处理数据时,掌握领域知识非常重要,因为这有助于您轻松发现和解决问题。有许多方法可以探索和了解您的数据。我们决定使用[Matplotlib](https://matplotlib.org/)——一个基于 Python 的数据可视化库——和其他技术来更好地理解我们的数据,特别是寻找模式和异常值。

#### 数据分布

我们使用直方图来更好地理解数据集上**课程 id**和**学生 id**的分布。

plt.hist(students_df.courseId)


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/791d88ef0a82f3e9676473bfa3b90662.png)

*Image 17: Course Id histogram*

plt.hist(students_df.studentId)


#### ![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/b2a180d1059a5116ec523b8fd96254b3.png)

*图 18:学生 Id 直方图*

#### 学生水平分析

我们对课程的受欢迎程度很好奇,所以我们打印了观看课程#73 的学生。

students_df[students_df.courseId == 73]


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/278f7f9c2626efe4e69afc7962599bfc.png)

*图 19:课程 73 成绩*

接下来,我们想了解每个学生观看了哪些课程。我们建立了一个交叉列表,用来显示某组数据出现的频率。

pd.crosstab(students_df.studentId,students_df.courseId)


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/e81be685894ba95d0b6ef1bd8932b2f7.png)

*图 20:课程 73 成绩*

接下来,我们想了解哪些学生看了最多的内容。我们统计了学生 Id 在数据集中出现的次数。

students_df.groupby('studentId').size()


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/cf469b748e0d51bf8ba79cc66a324d45.png)

*图 21:按学生 Id 计数*

接下来,我们想了解学生层面的活动。例如,我们选择了 61 号学生来了解他们的手表历史。

students_df.loc[students_df['studentId'] == 61]


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/98e4b15a3905b97568392ae70d8d41da.png)

*图 22:学生活动*

#### 课程水平分析

接下来,我们想找出哪些课程最受欢迎。我们统计了 courseId 在数据集中出现的次数。

students_df.groupby('courseId').size()


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/db7cb2269e18bcc02572458122b1a95b.png)

*图 23:按 id 统计球场看球次数*

最后,我们想了解哪些学生观看了特定的课程。在这种情况下,我们选择了课程#5。

students_df.loc[students_df['courseId'] == 5]


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/cb4d55e57d64d02a538542b754523161.png)

*图 24:课程#5 的详细信息*

### 数据转换

现在我们对数据有了很好的理解,我们可以进入下一步,即转换数据供机器使用。不幸的是,机器学习算法无法在当前呈现的数据文件中找到趋势和模式。这两个文件是脱节的,需要合并成一个文件,显示所有学生和所有类别的类别观看时间。为了做到这一点,需要一点 Python 代码。

我们创建了一个函数来返回不同类别的列表。

def get_list_of_categories(courses):
category_list = []

for category in courses.categories.str.split('|'):
for name in category:
if name not in category_list: 
category_list.append(name.strip())

return category_list


我们还创建了一个函数,为每个类别创建一个唯一的列名。

def get_column_name_list(category_list):
column_name = []

for category in category_list:
column_name.append('avg_' + category.strip() + '_watch')

return column_name


然后,我们使用我们创建的带有附加逻辑的两个函数来计算所有学生和类别的观看时间。

#category watch time across ALL students across ALL categories
def get_all_category_watch_time(students, courses):
category_progress = pd.DataFrame(columns = ['studentId'])
category_list = get_list_of_categories(courses)
column_names = get_column_name_list(category_list)

#add studentId to list of columns
column_names.insert(0,'studentId')

for category in category_list:        
course_categories = courses[courses['categories'].str.contains(category)]

#determine the average watch time for the given category; retain the studentId
avg_watch_time_per_user = students[students['courseId'].isin(course_categories['courseId'])].loc[:, ['studentId', 'progress']].groupby(['studentId'])['progress'].mean().round(2).reset_index()

#merge the progress for the given catetgory with the prior categories
category_progress = category_progress.merge(avg_watch_time_per_user, on='studentId', how='outer')

category_progress.columns = column_names
return category_progress

Calculate the average rating all categories per user

category_watch_time_df = get_all_category_watch_time(students_df, courses_df)
category_watch_time_df


### ![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/79a608450a092e1c1fdf7f3d9b8c7e33.png)

*图 25:所有学生和类别的类别观看时间*

然后,我们分析了我们最喜欢的学生#61 的手表时间。

category_watch_time_df.loc[category_watch_time_df['studentId'] == 61]


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/05c9e1602ba176fcc888fba7d12c4d51.png)

*图 25:学生#61 的类别观看时间*

在查看数据时,我们注意到学生没有观看的课程的值为 NaN 因此,我们将 NaN 转换为 0 手表时间。机器听不懂 NaN,但它能听懂 0。

#replace NaN with 0
category_watch_time_df = category_watch_time_df.fillna(0)


然后我们删除了 studentId,因为它在聚类(或分组)过程中没有任何好处。

#remove student id from dataframe
category_watch_time_list = category_watch_time_df.drop(['studentId'], axis=1)


我们只剩下最终的训练数据。一台机器可以从中学习!

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/d451aacea02e2d9c8dabb3d2361db672.png)

*图 26:最终转换数据的摘录*

### 培养

现在我们已经有了机器学习算法可以学习的格式的数据,我们开始使用 K-means 学习算法的训练过程。我们选择 [Scikit-learn](https://scikit-learn.org/stable/) 是因为它对于初学者来说非常容易学习,并且它们的 K-means 实现对于我们的数据集来说简单而高效。

根据 K-means 的要求,我们将数据转换为列表。

Turn our dataset into a list

category_watch_time_list = category_watch_time_list.values
print(category_watch_time_list)


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/6b2d34caf1ee5e7458d44bd709583262.png)

*Image 27: Data as a list *

然后我们引入了 K-Means。

Import KMeans

from sklearn.cluster import KMeans


接下来,我们创建了 K-Means 的一个实例,并将算法设置为查找 20 个聚类(或组)。使用 K-means 时,结果可能会随着每次运行而变化。为了抵消变化的结果,我们将 random_state 设置为 0,这使得我们的结果是可重复的。

Create an instance of KMeans to find 20 clusters

km = KMeans(n_clusters=20, random_state=0)


然后,我们使用该实例对学生进行聚类,并将结果存储在预测中。预测将包含为每个学生分配的分类。

Use fit_predict to cluster the dataset

Returns a cluster prediction for each student / ie cluster labels

predictions = km.fit_predict(category_watch_time_list)


最后,我们打印了指定的集群。

print(predictions)


### ![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/237eeaa2780972efb839880756205136.png)

*图 28:分配的集群*

### 将学生 ID 映射到集群编号

现在我们有了集群,我们需要将这些集群映射回 studentId。首先,我们将 [NumPy](https://numpy.org/) 数组转换为 Dataframe。

cluster_df = pd.DataFrame(data=predictions)
cluster_df.columns = ['assigned_cluster']
cluster_df


然后,我们合并数据帧以确定分配的簇。我们还删除了不必要的列。

student_cluster_df = pd.DataFrame(columns = ['studentId', 'assigned_cluster'])
student_cluster_df = pd.concat([cluster_df, category_watch_time_df], axis=1)
student_cluster_df = student_cluster_df[student_cluster_df.columns[student_cluster_df.columns.isin(['studentId', 'assigned_cluster'])]]
student_cluster_df


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/a8be57a96c036ab5124ccfd393df4130.png)

*Image 29: Assigned clusters by studentId*

### 聚类分析

接下来,我们希望更多地了解机器学习算法定义的每个聚类。我们使用了多种方法来确定这一点。

首先,我们计算一个聚类在数据集中出现的次数。

#count the amount of times a cluster appears in the dataset
student_cluster_df.groupby('assigned_cluster').size()


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/223f61f3fd3e7795c77c65430f668363.png)

*Image 30: The most popular clusters*

#### 绘图簇

然后我们绘制了聚类图来观察可视化效果。

#plot the data
plt.scatter(category_watch_time_list[:,0],category_watch_time_list[:,1], c=km.labels_, cmap='rainbow')


#### ![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/377589c2821938d0cb97fdaf430522ed.png)

*图 31:聚类图*

#### 探索集群#6

然后我们选择了第 6 类,沿着已知的维度进一步探索和研究学生的特征。我们对第 6 组学生之间的共性感到好奇。

#What are the commonality between the students in cluster 6
#show students assigned to Cluster #6
student_cluster_df = student_cluster_df.loc[student_cluster_df['assigned_cluster'] == 5]

#Get only the student progress records that appear in cluster 6
cluster6_students_df = students[students['studentId'].isin(student_cluster_df['studentId'])]

#print students
cluster6_students_df


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/6ebd4dc0f3a2cfe2bf4ad0cc5a2f1e96.png)

*Image 32: Students assigned to cluster #6*

然后我们把那个集群的学生看的和掌握的课程都抽了出来。我们利用 90%以上的观察百分比来做出这一决定。

#convert progress percentage string to numeric data
cluster6_students_df['progress'] = cluster6_students_df['progress'].str.rstrip('%').astype('float') / 100.0

#limit to only courses that are above a 90% watch rate
cluster6_students_df = cluster6_students_df.loc[cluster6_students_df['progress'] > .90]

cluster6_students_df


#### ![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/dd3444ca6e9d5f4388ea89a525feca41.png)

*图 32:观看率超过 90%的球场*

#### 跨集群浏览类别

现在我们有了第 6 组学生观看和掌握的课程列表。接下来,我们通过获取学生观看的课程类别来研究集群中的类别。

#Get the course categories for courses watched (course Id) by students in cluster

cluster6_courses_watched_df = courses[courses['courseId'].isin(cluster6_students_df['courseId'])]

category_list = get_list_of_categories(cluster6_courses_watched_df)
print("The amount of categories for Cluster 6: ", len(category_list))
print("The categories in Cluster 6", category_list)


![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/89e64de78bbf1bbb0bdb2dc2c15451b7.png)

*Image 33: Course categories for cluster 6*

第 6 组的学生喜欢 AWS、认证、云、开发、无服务器、编程、数据库和人工智能课程。

现在,我们已经了解了用户被分配到哪个群以及与该群相关联的课程类别,我们可以在每个学生访问平台时根据他们被分配的群向他们推荐课程。例如,如果登录的学生是集群#6 的成员,那么我们向该学生推荐跨 AWS、认证、云、开发、无服务器、编程、数据库和 AI 的课程。该建议说明了他们所观看和掌握的内容,以及他们的集群成员所观看和掌握的内容。

### 代码示例

完整的代码和数据文件可以在 GitHub 的[内容推荐引擎](https://github.com/linuxacademy/content-recommendation-engine)中找到。

### 未来的增强

未来可以对 POC 课程推荐引擎进行多项增强:

*   该引擎不仅可以推荐课程,还可以推荐动手实验、项目、博客帖子、网络剧集等等。
*   目前,分组仅仅基于学生的进步;然而,学生对课程的评价也可以用来做出明智的决定。
*   聚类也可以在开始观察日期和最后观察日期被告知,以确定某人是否真正喜欢一门课程。例如,他们是在周末狂看一门课程,还是花了几个月才完成?这些信息对聚类很有用。
*   集群可以用来和你的同行组成学习小组。想象一下在未来的会议上能够见到您的集群成员?多酷啊。

## 下一步:了解机器学习的更多信息

你准备好开始机器学习了吗?探索 A Cloud Guru 库中的以下课程,了解更多关于机器学习的知识。

**[机器学习入门](https://acloud.guru/overview/intro-machine-learning)**
在你的第一个机器学习项目上感觉头大?纠结于所有的数学术语?ACG 的[机器学习简介](https://acloud.guru/overview/intro-machine-learning)将教你机器学习词汇和你需要快速掌握的技能。

**[AWS 认证机器学习专业 2020](https://acloud.guru/overview/aws-certified-machine-learning-specialty)** 通过 [AWS 认证机器学习专业](https://acloud.guru/overview/aws-certified-machine-learning-specialty)考试,并获得数据工程、数据分析、机器学习建模、模型评估和 AWS 部署的最佳实践。不需要数学博士学位!

**[绝对初学者的机器学习](https://acloud.guru/overview/machine-learning-for-absolute-beginners)** 不需要技术诀窍。这门 ACG 课程目前是免费的,它将为你提供理解[什么是机器学习](https://acloud.guru/overview/machine-learning-for-absolute-beginners)(什么不是)——以及它能为你的业务或职业带来什么的基础知识。

# 如何使用 Go 和 Azure 功能构建无服务器应用程序

> 原文:<https://acloudguru.com/blog/engineering/how-to-build-a-serverless-app-using-go-and-azure-functions>

随着 [Azure Functions 自定义处理程序](https://docs.microsoft.com/azure/azure-functions/functions-custom-handlers?WT.mc_id=data-10498-alvidela)的到来,现在没有什么可以阻止你在 Azure 上使用 Go 来实现无服务器功能了!下面是一个有趣的方法来尝试自定义处理程序。

Webhook 后端是 FaaS(功能即服务)平台的一个流行用例。它们可以用于许多用例,比如发送客户通知或用有趣的 gif 回复!使用无服务器函数,封装 webhook 功能并以 HTTP 端点的形式公开它是非常方便的。

在本教程中,你将学习如何使用 [Azure 函数](https://docs.microsoft.com/azure/azure-functions/functions-custom-handlers?WT.mc_id=data-9656-abhishgu)和 [Go](https://golang.org/) 实现一个 [Slack 应用](https://api.slack.com/start/overview#apps)作为无服务器后端。您可以扩展 Slack 平台,并通过实现自定义应用或工作流来集成服务,这些应用或工作流可以访问平台的所有范围,从而让您在 Slack 中构建强大的体验。

这是松弛时间的[图形的一个简单版本。最初的 Giphy Slack 应用程序通过响应多个 gif 来响应搜索请求。为了简单起见,本文中演示的函数应用程序只使用](https://get.slack.help/hc/en-us/articles/204714258-Giphy-for-Slack) [Giphy 随机 API](https://developers.giphy.com/docs/#operation--gifs-random-get) 返回一个搜索关键字对应的单个(随机)图像。这篇文章提供了一步一步的指导,让应用程序部署到 [Azure Functions](https://azure.microsoft.com/en-in/services/functions/?WT.mc_id=data-9656-abhishgu) ,并将其与您的 Slack workspace 集成。

在这篇文章中,你将:

*   获得 Azure 函数中自定义处理程序的概述
*   通过简短的代码演练了解幕后发生的事情
*   了解如何使用配置 Azure 功能和 Slack 设置解决方案
*   当然,在工作区运行你的 Slack 应用程序!

后端功能逻辑用 Go 编写(代码是 GitHub 上可用的[)。那些使用过 Azure 函数的人可能还记得,Go 是默认支持的语言处理程序中的*而不是*。这就是](https://github.com/abhirockzz/serverless-go-slack-app/)[海关处理员](https://docs.microsoft.com/azure/azure-functions/functions-custom-handlers?WT.mc_id=data-9656-abhishgu)来帮忙的地方!

简而言之,[自定义处理程序](https://docs.microsoft.com/azure/azure-functions/functions-custom-handlers)是一个轻量级 web 服务器,它从函数主机接收事件。在您最喜欢的运行时/语言中,您唯一需要实现的定制处理程序就是 HTTP 支持!这并不意味着定制处理程序仅限于 [HTTP 触发器](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=csharp&WT.mc_id=data-9656-abhishgu)。你可以通过扩展包自由使用[其他触发器以及输入和输出绑定](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings?tabs=csharp&WT.mc_id=data-9656-abhishgu)。

以下是自定义处理程序工作原理的概要:

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/5674fd7e08184329ae06779f66351d4e.png)

[https://docs.microsoft.com/en-us/azure/azure-functions/media/functions-custom-handlers/azure-functions-custom-handlers-overview.png](https://docs.microsoft.com/en-us/azure/azure-functions/media/functions-custom-handlers/azure-functions-custom-handlers-overview.png)

事件触发器(通过 HTTP、存储、事件中心等。)调用函数主机。定制处理程序与传统函数的不同之处在于,函数主机充当中间人:它向定制处理程序(函数)的 web 服务器发出请求有效负载,以及包含触发器、输入绑定数据和函数的其他元数据的*有效负载*。函数将响应返回给函数宿主,宿主将响应中的数据传递给函数的输出绑定进行处理。

在我们深入其他领域之前,通过探索代码来理解本质可能会有所帮助,顺便说一下,代码相对简单。

让我们看看应用程序是如何设置的。

├── cmd
│   └── main.go
├── funcy
│   └── function.json
├── go.mod
├── host.json
└── pkg
└── function
├── function.go
├── giphy.go
└── slack.go


`function.json`文件位于一个以函数名命名的文件夹中。([这是惯例](https://docs.microsoft.com/azure/azure-functions/functions-custom-handlers?WT.mc_id=data-9656-abhishgu#application-structure)。)

{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}


`host.json`通过指向能够处理 HTTP 事件的 web 服务器,告知函数主机向何处发送请求。注意`customHandler.description.defaultExecutablePath`,它定义了`go_funcy`是用于运行 web 服务器的可执行文件的名称。"`enableForwardingHttpRequest` ": true 确保原始 HTTP 数据不加任何修改地发送到自定义处理程序。

{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[1.*, 2.0.0)"
},
"customHandler": {
"description": {
"defaultExecutablePath": "go_funcy"
},
"enableForwardingHttpRequest": true
},
"logging": {
"logLevel": {
"default": "Trace"
}
}
}


`cmd`和`pkg`目录包含 Go 源代码。让我们在下一小节中探讨这个问题。

`cmd/main.go`设置并启动 HTTP 服务器。注意,`/api/funcy` 端点是函数主机向定制处理程序 HTTP 服务器发送请求的端点。

func main() {
port, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")
if !exists
http.HandleFunc("/api/funcy", function.Funcy)
log.Fatal(http.ListenAndServe(":"+port, nil))
}


所有的重活都在`function/function.go`完成。

第一部分是读取请求体(从 Slack 中)并通过基于 Slack 定义的[这个配方的签名验证过程来确保其完整性。](https://api.slack.com/docs/verifying-requests-from-slack#a_recipe_for_security)

signingSecret := os.Getenv("SLACK_SIGNING_SECRET")
apiKey := os.Getenv("GIPHY_API_KEY")

if signingSecret == "" || apiKey == "" {
http.Error(w, "Failed to process request. Please contact the admin", http.StatusUnauthorized)
return
}

slackTimestamp := r.Header.Get("X-Slack-Request-Timestamp")

b, err := ioutil.ReadAll(r.Body)
if err != nil {
http.Error(w, "Failed to process request", http.StatusBadRequest)
return
}
slackSigningBaseString := "v0:" + slackTimestamp + ":" + string(b)
slackSignature := r.Header.Get("X-Slack-Signature")

if !matchSignature(slackSignature, signingSecret, slackSigningBaseString) {
http.Error(w, "Function was not invoked by Slack", http.StatusForbidden)
return
}


一旦我们确认该函数确实通过 Slack 被调用,下一步就是提取(Slack)用户输入的搜索词。

vals, err := parse(b)
if err != nil {
http.Error(w, "Failed to process request", http.StatusBadRequest)
return
}
giphyTag := vals.Get("text")


通过调用 GIPHY REST API,使用搜索词查找 gif。

giphyResp, err := http.Get("http://api.giphy.com/v1/gifs/random?tag=" + giphyTag + "&api_key=" + apiKey)
if err != nil {
http.Error(w, "Failed to process request", http.StatusFailedDependency)
return
}

resp, err := ioutil.ReadAll(giphyResp.Body)
if err != nil {
http.Error(w, "Failed to process request", http.StatusInternalServerError)
return
}


解编由 GIPHY API 发回的响应,将其转换成 Slack 可以理解的形式,并返回它。就是这样!

var gr GiphyResponse
json.Unmarshal(resp, &gr)
title := gr.Data.Title
url := gr.Data.Images.Downsized.URL

slackResponse := SlackResponse{Text: slackResponseStaticText, Attachments: []Attachment{{Text: title, ImageURL: url}}}

w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(slackResponse)
fmt.Println("Sent response to Slack")


如果您对检查签名验证过程感兴趣,请检查`matchSignature`函数,并查看 slack.go、giphy.go(在`function`目录中),以了解所使用的 go 结构表示各个组件之间交换的信息(JSON)。为了保持这篇文章的简洁,这里没有包括这些内容。

好吧!到目前为止,我们已经介绍了很多理论和背景信息。是时候把事情做好了!在继续之前,请确保满足以下先决条件。

请记下您的 GIPHY API 密钥,因为您稍后会用到它

接下来的章节将引导你完成部署 Azure 功能和配置 Slash 命令的 Slack 的过程。

首先创建一个[资源组](https://docs.microsoft.com/azure/azure-resource-manager/management/manage-resource-groups-portal?WT.mc_id=data-9656-abhishgu)来托管解决方案的所有组件。

首先在 Azure 门户搜索**功能 App** ,点击**添加**。

输入所需的详细信息:您应该选择**自定义处理程序**作为**运行时堆栈**。

在**托管**部分,分别为**操作系统**和**计划类型**选择 **Linux** 和**消费(无服务器)**。

启用应用洞察(如果需要)。

查看最终设置并点击**创建**继续。

该过程完成后,还将创建以下资源和功能应用程序:

克隆 GitHub repo 并构建函数。

git clone https://github.com/abhirockzz/serverless-go-slack-app
cd e-go-slack-app

GOOS=linux go build -o go_funcy cmd/main.go


`GOOS=linux`用于构建一个`Linux`可执行文件,因为我们为我们的函数应用程序选择了一个`Linux O` S。

要进行部署,请使用 Azure Functions 核心工具 CLI。

func azure functionapp publish


部署完成后,复制该命令返回的函数 URL 您将在后续步骤中使用它。

本节将介绍在工作区中设置 Slack 应用程序(Slash 命令)所需执行的步骤:

*   创建一个 Slack 应用程序
*   创建斜线命令
*   将应用程序安装到您的工作区

登录到你的 [Slack 工作空间](https://slack.com/signin),并通过[创建一个新的 Slack 应用](https://api.slack.com/apps/new)开始。

点击*创建新命令*,用所需信息定义新的*斜线命令*。请注意,**请求 URL** 字段是您将输入函数的 HTTP 端点的字段,它只是您在上一节中部署函数后获得的 URL。完成后,点击**保存**完成。

创建完 Slash 命令后,转到应用程序的设置页面,在导航菜单中单击*基本信息*功能,选择*将应用程序安装到工作区*,然后单击*将应用程序安装到工作区*——这将把应用程序安装到 Slack 工作区,以测试应用程序并生成与 Slack API 交互所需的令牌。一旦你完成应用程序的安装,*应用程序凭证*就会出现在同一页面上。

记下您的应用程序**的签名密码**,因为您稍后会用到它。

…确保更新函数应用配置,以添加松弛签名密钥(`SLACK_SIGNING_SECRET`)和 Giphy API 密钥(`GIPHY_API_KEY` ) —它们将作为函数中的环境变量。

从您的松弛工作区,调用命令`/funcy <search term>`。(比如试试`/funcy dog`。)你应该拿回一个随机的 GIF 作为回报!

简单回顾一下正在发生的事情:当您在 Slack 中调用`/funcy` 命令时,它会调用该函数,然后该函数与 Giphy API 进行交互,最后将 GIF 返回给用户——假设一切顺利!

第一次调用后,您可能会从 Slack 中看到`timeout error`。这很可能是由于第一次调用`cold start`时,该函数需要几秒钟来引导。再加上 [Slack 期望在 3 秒内得到响应](https://api.slack.com/slash-commands#responding_basic_receipt)——因此出现了错误消息。

没什么好担心的。你需要做的就是再次尝试,一切都会好的!

清理:一旦完成,别忘了[删除资源组](https://docs.microsoft.com/azure/azure-resource-manager/management/delete-resource-group?tabs=azure-powershell&WT.mc_id=data-9656-abhishgu#delete-resource-group),这又会删除之前创建的所有资源(功能 app,App 服务计划等。)

现在,没有什么可以阻止你在 Azure 上使用 Go 实现无服务器功能!我希望这将是一种尝试定制处理程序的有趣方式。让我们知道你的想法。

#### 关于作者

Abhishek Gupta 是微软的高级开发人员。你可以在 [Twitter](https://twitter.com/abhi_tweeter?opt_id=oeu1596472260634r0.19676524222612213) 上关注他,在 [LinkedIn](https://in.linkedin.com/in/abhirockzz?opt_id=oeu1596472260634r0.19676524222612213) 上联系他,或者关注他的[博客](https://medium.com/@abhishek1987?opt_id=oeu1596472260634r0.19676524222612213)。

# 如何在 AWS 上构建无服务器联系表单

> 原文:<https://acloudguru.com/blog/engineering/how-to-build-a-serverless-contact-form-on-aws>

联系方式对所有网站来说都是至关重要的,无论大小。有许多服务可以将联系表单嵌入到您自己的网站中,但是本教程并不是要利用这些服务。相反,它是关于通过关注创建我们自己的联系表单架构的问题来学习少量的 Amazon Web 服务。在本指南结束时,我们将创建一个无服务器联系表单,并了解有关以下服务的更多信息:

*   API 网关
*   希腊字母的第 11 个
*   简单电子邮件服务

我们将创建一个 **API 网关** (APIGW) POST 端点,它将接受以下 JSON 请求体:`{“email”: <contact-email>,“subject”: <contact-subject>,“message”: <contact-message>}`这个端点将有一个 **Lambda** 函数,它将把请求体转换成电子邮件。该电子邮件请求将被发送到**简单电子邮件服务** (SES)进行交付。有了这些部分,我们就可以创建一个发送消息的联系表单。

## 配置简单电子邮件服务向我们发送电子邮件

在深入研究任何代码之前,我们需要配置简单的电子邮件服务(SES)。我们的 Lambda 函数将处理来自我们网站的消息,并通过 SES 发送电子邮件。SES 是一个发送和接收电子邮件的巧妙产品。它提供了高投递率、成本效益和非常可靠的电子邮件处理。在本帖中,我们将利用它来获取一条消息,并将其发送到我们自己的白名单电子邮件地址。对于我们正在创建的项目,我们可以在 ses 沙盒环境中做任何事情。沙盒环境有以下限制:

1.  只能向 SES 邮箱模拟器*或*发送电子邮件至您已验证的电子邮件地址或域。
2.  每天限发 200 封邮件。

如果您打算每天发送超过 200 封电子邮件,您将需要请求提高发送限额。一旦获得批准,该请求会将您从沙箱中移除。然而,对于这个项目,您在沙盒环境中会很好。要配置 SES 向您自己发送电子邮件,我们需要完成以下步骤:

1.  导航到 AWS 控制台中的简单电子邮件服务。
2.  点击**电子邮件地址**
3.  点击**验证新的电子邮件地址**
4.  输入您希望用于联系请求的电子邮件地址。
5.  点击**验证该电子邮件地址**
6.  检查您的电子邮件,查看主题为“亚马逊网络服务-电子邮件地址验证请求”的验证电子邮件
7.  单击电子邮件中的链接以确认您的电子邮件地址。

## 设置初始 Lambda 函数以响应 API 网关触发器

你的 SES 设置好了吗?您的电子邮件地址是经过验证的电子邮件地址,SES 可以向其发送电子邮件。那你已经取得了很大的进步。自 2014 年 11 月 Lambda 函数首次亮相以来,亚马逊网络服务已经简化了它们的创建。过去的情况是,为不同的 AWS 事件配置 Lambda 既繁琐又容易出错。如今,初始设置更加简化和用户友好。这对我们来说太棒了,但是要知道,我们将不得不做一些进一步的调整。但是首先,让我们设置初始 Lambda 并从 API 网关端点触发它。无服务器堆栈的主干是一个*事件*。事件启动计算资源的分配以完成某个操作。AWS 中的*触发器*是分配一个容器来执行 Lambda 函数中的代码的事件。在 AWS 中,Lambda 目前可以响应 17 种不同的事件。今天,我们通过 HTTP 端点利用 API 网关事件。可以把 HTTP 端点看作是 Lambda 函数的触发事件。该请求启动容器,并包含 Lambda 函数的输入事件。使用这个输入,我们可以在代码中处理消息。不如我们跳进去配置初始端点和 Lambda 函数:

1.  从 AWS 控制台导航到 Lambda。
2.  点击**创建功能**
3.  在蓝图输入中,输入“ *api*
4.  点击 NodeJs 6.10 中的蓝图“*微服务-http-端点*”。
5.  对于“API 名称”,点击**输入值**并输入“*联系人*
6.  对于“部署阶段”,保持默认的“*产品*”处于选中状态。
7.  对于“安全”,选择“*打开*
8.  点击**下一个**
9.  输入“ *ContactFormLambda* ”作为您的函数名。
10.  输入有意义的描述,如"*处理 APIGW 发布到/联系*
11.  运行时选择“ *Node.js 6.10* ”。
12.  现在,我们将在内联代码部分输入这个样板代码:
13.  在“Lambda 函数处理程序和角色”中,将处理程序留在“ *index.handler* ”。角色应为“*从模板创建新角色*”。对于角色名称,输入“ *ses-contact-form-lambda* ”。对于策略模板,选择“*简单微服务权限*”*注意:我们稍后将围绕这些方面进行更多配置。*
14.  点击**下一个**
15.  点击**创建功能**

通过完成此向导,我们将获得以下 AWS 资源:

*   代理 HTTP(S)请求的 API 网关端点。
*   API 网关端点触发的 Lambda 函数。
*   一个 IAM 角色" *ses-contact-form-lambda* "拥有 lambda 的基本执行策略。

还需要进一步的改进,但是我们现在已经有了无服务器联系流程所需的资源。

## 配置您的 IAM 角色以通过 SES 发送电子邮件

在开始编写 Lambda 函数之前,我们需要暂停一下,配置一下*ses-contact-form-Lambda*IAM 角色。目前,该角色不允许在 SES 中使用 sendEmail API。为了使它变得非常轻量级,我们将创建一个新的 IAM 策略,该策略只包含我们需要授予访问权限的 SES 上的 API。

1.  从 AWS 控制台导航到 IAM。
2.  点击**策略**
3.  点击**创建策略**
4.  选择“*创建您自己的策略*
5.  输入“*联系人-表单-发送-电子邮件-策略*”作为名称。
6.  按如下方式配置策略文档:
7.  点击**创建策略**

现在有了一个粒度策略,允许访问 ses:SendEmail API。将此策略附加到 *ses-contact-form-lambda* 角色:

1.  从 AWS 控制台导航到 IAM。
2.  点击**角色**
3.  在搜索中输入" *ses-contact-form-lambda* "
4.  点击*ses-联系人-表单-λ*角色。
5.  点击**附加保单**
6.  选择*联系人-表单-发送-邮件-政策*
7.  点击**附加策略**

随着 IAM 的这些变化,Lambda 函数现在可以访问 SES 的 SendEmail API。

## 从 Lambda 函数通过 SES 发送电子邮件

我们现在已经为您的无服务器联系流程完成了所有的基础架构部分。只需点击几个按钮,瞧,我们有了 API 网关、Lambda 函数和 IAM 角色。很圆滑,对吧?基础设施,在这一点上,还没有准备好黄金时间。我们一会儿就会这样做,但首先让我们添加通过 SES 从 Lambda 函数发送电子邮件的代码。我们的函数没有外部依赖性。因此,我们可以内联编辑代码。如果我们正在创建需要其他 NPM 模块的 Lambda 函数,我们将需要在 AWS 控制台之外进行开发。原因是当 zip 文件上传到 Lambda 时,必须包含 NPM 包。但这不是这个项目的重点。我们将内联编辑代码,因为我们没有外部依赖。

1.  从 AWS 控制台导航到 Lambda。
2.  点击 *ContactFormLambda* 功能。
3.  将以下代码输入行内编辑器:

在 56 行代码中,我们有获取 API 网关请求、解析电子邮件消息、然后利用 SES 向我们自己发送电子邮件所必需的代码。但是等等——这段代码到底做了什么?很高兴你问了。让我们分解有趣的部分,回顾一下正在发生的事情。从 Lambda 函数的顶部开始,声明了三个常量:有趣的是, *aws-sdk* 不是外部依赖。这个包在 Lambda 函数容器中是全局的,并且总是可用的。我们通过调用 AWS 来实例化一个 SES 客户端。SES() 。我们还申报了 sesConfirmedAddress 。这必须是您之前在设置 SES 时验证的电子邮件地址。函数 getEmailMessage 处理请求的主体。它解析来自 API 网关请求体的请求,并构建 sendEmail 请求。我们希望将电子邮件发送给自己,因此 ToAddresses 是我们之前验证的 ses 电子邮件。源必须是我们验证过的电子邮件,因为这也是发送的电子邮件。其余的我们从用户通过我们的 API 网关发送的 JSON 请求中获得。电子邮件的正文在消息属性中。电子邮件的主题在主题属性中。电子邮件的回复字段在用户传入的 email 属性中。这是我们函数的核心,主事件处理器。首先要做的是提取请求正文,因为它包含电子邮件、消息和电子邮件的主题。接下来,通过将请求传递给 getEmailMessage 函数来获取 sendEmailRequest 。有了请求,我们调用ses client . send email(params)API。我们追加了。promise() 方法告诉 SDK 我们想要一个承诺。 ***提示**:用 JavaScript 中的 aws-sdk,可以追加。promise()到任何 SDK 调用来获得一个承诺。*API 网关端点设置为 *LAMBDA_PROXY* 。这意味着 Lambda 函数必须构建并返回一个 HTTP 响应。对于我们的目的,返回 200 表示成功,500 表示错误就足够了。当 sendEmailPromise 解析成功时,返回 200。如果失败,邮件发送失败,所以返回 500。在这两种情况下,我们只改变*响应*的*状态码*并调用回调(空,响应)。您利用 LAMBDA 中的回调函数来表示成功或失败:*API Gateway 中的 LAMBDA_PROXY* 需要来自您的 Lambda 函数的 HTTP 响应。调用总是以回调(null,response) 结束。未能返回 HTTP 响应会导致 API Gateway 返回 502 错误网关。

## show time–测试您的端点的时间

您将 Lambda 函数代码更新为上面的代码。您已将 sesConfirmedAddress 设置为已验证的 SES 电子邮件。Lambda 的 IAM 角色可以访问简单电子邮件服务的 sendEmail API。我们剩下的就是测试看看它是否有效。正如一句老话所说,如果你没有测试过它,那么它是不起作用的。对于这个项目的目的,我说的是通过使用它和观察结果来验证它的工作。如果我们要构建一个完整的生产应用程序,我们应该在这里进行其他级别的测试。单元测试和集成测试是很好的补充。但是对于这个简单的联系流,让我们确保它从我们的 API 网关工作。

1.  从 AWS 控制台导航到 API 网关。
2.  点击*联系*API。
3.  点击“ */ContactFormLambda* ”资源下的任意。
4.  点击**测试**
5.  选择“过帐”作为方法。
6.  在请求正文中,输入以下内容:
7.  点击**测试**

在右边,我们将看到 API Gateway 调用 Lambda 函数的请求流。下面是我们在底层寻找的东西:

*   方法已完成,状态为:200 —太棒了,它成功了!检查你的电子邮件。
*   方法已完成,状态为:500 —该死,它坏了。该检查日志了。
*   方法已完成,状态为:502-配置错误。该检查日志了。

如果我们看到“可以出发”的标志,也就是 a 200,那么我们可以检查我们的电子邮件,确保它看起来像我们预期的那样。如果我们有别的东西,我们需要做一些调试。面对错误时首先要检查的是什么?日志。但是原木住在哪里呢?对于每个 Lambda 调用,都有一个关联的 **CloudWatch** 日志流。以下是找到它的方法:

1.  从 AWS 控制台导航到 CloudWatch。
2.  点击**日志**
3.  在“日志组名前缀”中输入“*/AWS/lambda/contact form lambda*
4.  点击“*/AWS/lambda/contact form lambda*

一旦我们点击进入日志组,我们将看到我们的 Lambda 函数的日志流。最上面的是最近的调用。任何 Lambda 函数调用中的错误都会记录在日志流中。在日志流中,我们可以查看错误。搜索日志记录语句,并查看给定调用使用了多少内存和时间。因此,如果我们得到了除了 200 响应代码之外的任何东西,请通过检查日志来开始调试。如果日志没有揭示任何信息,那么我们应该检查我们设置的其余部分。需要注意的事项:

*   出乎意料的错别字
*   没有将正确的 IAM 策略分配给正确的 IAM 角色
*   Lambda 函数配置错误–内存分配或时间分配不正确

## 启用 CORS 并发布您的 API

在您的功能 API 为狂野的西部做好准备之前,您还有一些最后的问题要解决。我们需要做的第一件事是在我们的 API 端点上启用*跨源资源共享(CORS)* 。这将授予端点对我们指定的域的访问权限。最后一件事是将我们的 API 发布到公共平台。首先,让我们打开该端点的 CORS:

1.  从 AWS 控制台导航到 API 网关。
2.  点击*联系*API。
3.  点击 *ContactFormLambda* 资源。
4.  点击**动作**
5.  选择*启用 CORS*
6.  在“*访问-控制-允许-来源*”中,输入您将从其呼叫该端点的网站的 URL。如果您不确定,请将其保留为' * ',这将允许任何域。
7.  点击**启用 CORS…**
8.  点击**是,替换现有值**

启用 CORS 后,剩下的唯一事情就是将端点发布到一个*阶段*(也就是一个环境)。

1.  从 AWS 控制台导航到 API 网关。
2.  点击*联系*API。
3.  点击 *ContactFormLambda* 资源。
4.  点击**动作**
5.  点击**部署 API**
6.  从部署阶段选择*产品*。
7.  点击**部署**

一旦部署,我们的 API 现在就存在于 *prod* 环境中。我们将会有一个类似于 https:// <的 URL。execute-api.us-west-2.amazonaws.com/prod/ContactFormLambda

## 综合

至此,我们有了一个功能性的无服务器联系流程。API 网关调用一个 Lambda 函数。该函数接收请求体,并通过简单的电子邮件服务发送出去。下一步是将您的这个新 API 集成到您选择的东西中。你可以从自己的网站或作品集页面开始。要集成它,创建一个表单,其字段与请求正文要求的字段相同——用户回复的电子邮件地址、主题和正文。在表单提交时,用 JavaScript 在请求体中添加一个快速 AJAX 请求,您就可以开始比赛了。**更新:**我们已经创建了一个后续指南,从我们离开这里的地方继续,并将服务集成到一个网页中。你可以在这里查看。

## 结论

AWS 周围有大量的信息。以至于在试图学习它时很容易迷失。学习任何东西的最好方法是开始使用它。通过在实际问题中使用 API Gateway、Lambda 和 SES,您已经了解了它们的概念。这是我第一次学习 AWS 的方式。作为一名认证的专业解决方案架构师,这是我至今仍在做的事情。如果你有任何问题,请随时联系我。如果你想通过创建更多这样的项目来了解 AWS,可以看看我即将出版的书,[如何在 Amazon Web Services 上托管、交付和保护静态网站](https://www.kylegalbraith.com/learn-aws/)。

* * *

通过在 [Twitter](https://twitter.com/kylegalbraith) 、 [LinkedIn](https://www.linkedin.com/in/kylegalbraith459/) 和 [Medium](https://medium.com/@kyle.galbraith) 上关注凯尔,跟上他正在进行的其他项目。

# 如何建立一个无服务器的网络爬虫

> 原文:<https://acloudguru.com/blog/engineering/how-to-build-a-serverless-web-crawler>

## 使用无服务器扩展现代的旧概念

最近,一个客户项目需要抓取一个大型媒体网站,以生成 URL 和网站资产的列表。鉴于网站的规模很大,使用传统的爬行方法会使 Lambda 函数超时——所以我们考虑将方法改为无服务器模型。

以下是我在这个项目中学到的关于设计无服务器功能的知识。

### 我们跑之前先爬吧

抓取一个网站有很多原因——抓取不同于抓取。在爬行一个站点时,我们登陆一个网页,通常是主页,搜索网页上的 URL,然后递归地浏览这些 URL。

抓取可能是爬行的原因——特别是如果您想要存储这些页面内容的副本,或者您可能只是出于索引页面的一些次要原因。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/51232ea8484c25bc6246699bf593bb51.png)

Traversing the tree of a typical website

爬行是有趣的部分,因为您可以快速生成大量的 URL 列表,或者通过实施一些规则来控制您收集的内容。例如,您可能只浏览具有相同域名的 URL,并删除查询参数以减少重复。

然后你必须考虑抓取的速度——你是一次处理一个 URL 还是同时浏览多个?如果你在 html 中发现混合用法,你如何看待 http 和 https?

对于 Node 用户来说,有一个优雅地称为[网站抓取器](https://www.npmjs.com/package/website-scraper)的包,它有大量的配置选项来处理这些问题,还有许多其他功能。

运行这个工具非常简单——你可以访问 [my github repo](https://github.com/jbesw/askJames-serverlessCrawler/blob/master/example.js) 获取完整的例子,但是这里有一些重要的部分:

const options = {
urls: myTargetSite,
directory: '/temp/',
prettifyUrls: true,
recursive: true,
filenameGenerator: 'bySiteStructure',
urlFilter: (url) ⇒ url.startsWith(myTargetSite),
onResourceSaved: (resource) ⇒ URLs.push(resource.url),
onResourceError: (resource, err) ⇒ console.error(${resource}: ${err}),
requestConcurrency: 10
}
const result = await crawl(options)
console.log('# of URLs:', URLs.length)


这个包主要是配置驱动的。我们指定一个目标网站,让它递归地搜索与 *urlFilter 匹配的 URL。*在本例中,过滤器被设置为包括同一域中的任何 URL,同时请求多达 10 个 URL。

当保存一个资源时,我们将 URL 推送到一个数组上,然后记录任何错误。在过程结束时,所有发现的资源都存储在数组*URL*中。完整的脚本中有更多的代码,但这些是最基本的。

这一切都很棒——但是当抓取一个超过 10,000 个 URL 的网站时,我们遇到了一些主要问题。它有效地作为一个原子作业运行,获取 URL,节省资源,并管理要浏览的 URL 的内部列表:

*   它可以运行几个小时,如果它失败了,没有办法从它停止的地方恢复。所有的状态都是内部管理的,如果出现问题就会丢失。
*   随着内部映射的增长,消耗的内存可能会很大,因此您必须确保所使用的实例分配有足够的 RAM。
*   对于大型站点,使用的临时磁盘空间可能高达数百 GB,因此您需要确保有足够的本地可用空间。

所有这些都不是 webscraper 包的错——纯粹是因为*一切都在大规模变化*。这个项目对于互联网上 99%的网站来说都是完美的,但是对于抓取纽约时报或者维基百科来说就不是了。

鉴于客户网站的规模,我们需要重新考虑这种方法,同时利用无服务器的优势。

### 无服务器 Crawler —版本 1.0

第一步是简单地将 webrawler 代码打包成一个 Lambda 函数,放在一个基本的“提升移位”中。这一尝试按预期运行——当站点探测不能及时完成时,在 15 分钟时超时。

在 15 分钟结束时,除了你可以从我们的日志文件的灰烬中收集到的信息之外,我们对进度没有什么概念。为了确保它的工作,我们必须确保网站的大小与功能运行的时间长短没有根本的关系。

在新版本中,该函数检索页面,找到与我们的过滤器匹配的 URL,将它们存储在某个地方,然后终止。当新的 URL 被存储时,这将启动相同的函数,并且该过程重新开始。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/a7c9b3ff9f3dba24ac4784fb09ce6dd3.png)

简而言之,我们将从代码中提取递归,并用我们的无服务器玩具盒复制它。如果我们将 URL 存储在 DynamoDB 中,我们可以在每次将 URL 写入数据库时使用流来触发爬虫:

我们构建了这个,所以整个过程是通过将主页 URL 作为记录写入 DynamoDB 来触发的。事情是这样的:

1.  将“https://mytestsite.com”写入 DynamoDB。
2.  该流导致 Lambda 以传入事件“https://mytestsite.com”开始。
3.  它获取页面,找到 20 个 URL 并在 DynamoDB 中保存为 20 条记录。
4.  20 个新记录的流导致多个 Lambdas 开始。每个加载一个页面,找到另外 20 个 URL 并将它们写入数据库。
5.  400 个新记录的流导致多个 lambda 启动,使我们正在爬行的网站崩溃,并且所有未完成的 lambda 都抛出错误。

好吧,那是哪里出了问题?

人们很容易忘记*Lambda 如何高效地为您扩展—* ,这可能会导致无意和自我诱导的拒绝服务(DOS)。

无论网站有多大,总有一个并发水平会使网络服务器不堪重负。我们需要对这种工作方式进行调整,以防止 Lambdas 尽职尽责地完成工作。我们需要使网络爬虫,嗯…爬行得更快。

### 无服务器网络爬虫 2.0-现在更慢!

我们之前的问题是由 Lambda 完成其工作引起的。如果许多记录同时写入 DynamoDB,这将激发更多的并发 Lambdas 来完成工作。

有时候你不想要这种行为——这就是其中之一。那么如何才能让它慢下来呢?一般来说,有几个策略可以帮助刹车:

*   在 Lambda 函数写入 DynamoDB 之间引入一个 [SQS 延迟队列](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html)——这增加了长达 15 分钟的可配置延迟。
*   将 Lambda 函数的并发设置从未保留的默认值(1000)更改为一个更小的值。将该值设置为 1 将阻止所有并发,并有效地导致串行接收。在我们的例子中,我们发现 10 是足够的。
*   更改批处理大小,这会影响每次调用从流中发送的记录数量。这里较低的数字会导致更多的并发调用,而如果同时添加许多记录,较大的数字会导致单个 Lambda 处理来自流的更多项。

在这三个层次之间,如果 DynamoDB 流中出现大量事件,我们现在有了合理的控制量来平滑处理速度。

### 给我看看代码!

首先,在你运行任何东西之前,确保你有一个自己拥有的或者有权限抓取的小网站——最好是一个有少量页面的开发网站。在没有明确许可的情况下抓取第三方网站通常会违反使用条款,你也不想违反 AWS 的可接受使用政策。

好了,我们来看看包里的[文件:](https://github.com/jbesw/askJames-serverlessCrawler)

*   **handler . js**:Lambda 的默认入口点,它将并发执行所有传入的事件——如果批处理大小是 5 个 URL,它将同时获取所有这些。这里的*等待承诺。all* 机制处理实现这一点的复杂性。
*   **processURL.js** :这将获取页面和发现的 URL,并将它们以 25 个项目为一组分批放入 DynamoDB。
*   **crawl.js** :实际的爬行工作在这里进行——它获取页面,然后使用 Cheerio 包发现 html 中的 URL。有一些逻辑来验证 URL 并消除重复。
*   **dynamodb.js** :它使用 batchWriteItem 一次上传 25 个项目到 dynamodb 表。
*   **test.js** :模拟 testEvent.json 中新项目事件的最小测试工具,如果运行 node test.js,它将启动 testEvent 中 URL 的整个过程:

要使用这段代码,您需要创建一个名为`**crawler**`的 DynamoDB 表。此时,当代码运行时,它将只对单个 URL 有效。

要使它在新的 URL 添加到 DynamoDB 时触发,您必须激活表上的流——转到“概述”选项卡,启用流并将流 ARN 复制到`**serverless.yaml**`文件中。

是的,这些都可以在回购中自动完成。由于 Lambda 和表格交互的递归性质,我不希望任何人下载代码,对 Amazon.com 运行它,并想知道为什么他们的 AWS 账单是天价。一旦你将 DynamoDB 流连接到 Lambda 函数,你将有一个递归的无服务器循环*,所以要非常小心*。

有一个有趣的地方不是很明显,但是有助于爬行过程。在我们的 DynamoDB 表中,URL 是主分区键,因此它必须是惟一的。当 batchWriteItem 试图将重复值写入表中时,由于重复项无法更新项,因此不会写入重复项,因此不会触发流事件。这很关键,因为在每次迭代中发现的许多 URL 已经出现在表中。

最终的整体流程如下所示:

### 无服务器网络爬虫 3.0

提供的代码只是外壳。对于我们客户的项目,我们还实现了更多的 webscraper 逻辑,每次调用 Lambda 时都为 S3 节省资源。我们还向 DynamoDB 表添加了其他属性,包括状态(例如“新”、“处理中”、“错误”)、时间戳以及使用 cron 作业跟踪失败页面的能力。

在无服务器环境中工作有许多有益的副作用:

*   在 S3 上存储对象,与在 EC2 实例上存储文件相比,没有大小限制。它适用于任何规模的网站。
*   每次调用所需的 RAM 数量不受爬网总大小的影响。每个 Lambda 函数只关心下载单个页面。
*   如果目标站点变得不可用,或者整个过程由于某种原因而暂停,您会知道爬行的状态,因为它存储在 DynamoDB 表中。我们从流程中提取递归状态,并将其放入数据库。
*   扩展功能是微不足道的。例如,将图像与 HTML 或 CSS 文件区别对待不会影响原始功能。

对我来说,这个项目最有趣的一点是意识到有多少不适合无服务器的长寿命流程可以利用相同的模式。

例如,有可能在这些应用程序中识别出一些迭代元素,这些元素可以被分解,这样就可以在 DynamoDB 中维护状态。无服务器的并发能力可以大大提高这些任务的性能,而潜在的成本要低得多。

# 如何清除清漆缓存的网址

原文:<https://acloudguru.com/blog/engineering/how-to-clear-varnish-cache>

# 如何使用 AWS Amplify Studio 创建全栈应用

> 原文:<https://acloudguru.com/blog/engineering/how-to-create-a-full-stack-app-with-aws-amplify-studio>

使用新的 [AWS Amplify Studio](https://acloudguru.com/blog/engineering/aws-just-dropped-a-game-changer-for-startups-small-business) ,您可以在几分钟内将 Figma 中的设计变成像素级完美的云连接 React 组件。在本教程中,我将带您从头开始学习如何使用 Studio 创建博客应用程序。

* * *

## 加速您的职业发展

[从 ACG 开始](https://acloudguru.com/pricing)通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。

* * *

## 创建应用后端

首先,我们需要为我们的应用程序创建一个后端。你可以前往 [Amplify 沙盒](https://sandbox.amplifyapp.com/)开始。

从这里开始,选择用“反应”建立一个“空白”。

然后点击“开始”。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/f0c382fce945c1d209e3be1b8e4dafc3.png)

Build a “Blank” with “React”

在数据建模页面上,我们将创建一个包含“标题”、“作者”、“图像”和“内容”字段的 Post 模型。

我将把“图像”类型改为“AWSUrl”。

然后点击“部署到 AWS”。

请注意,您可以在没有 AWS 帐户的情况下,通过单击“下一步:在您的应用程序中本地测试”来在您的应用程序中本地测试数据。为了简洁起见,我将跳过该选项。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/7de1ff8e6d95185aa63635495d4eb216.png)

Post model with fields filled out

登录您的 AWS 帐户或创建一个新帐户来部署您的应用程序。然后为您的应用程序选择 AWS 区域和名称。

部署需要几分钟时间,但是之后您的数据模型将会在云中运行。在引擎盖下,Amplify 使用 AWS AppSync 和 Amazon DynamoDB 来构建这个数据模型。

一旦你的应用程序部署,点击“启动工作室”。

然后是“管理 app 内容”。

你可以填写一个表格来创建一些博客文章。您还可以使用种子数据功能来自动生成一些初始数据。

我将单击“自动生成种子数据”,然后创建 10 行数据。我将添加一些约束,这样我的作者是一个“全名”,我的标题是 5 到 12 个单词长,我的帖子是 3 到 10 个段落,我的图像将有一个 URL 长度。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/6b254fddb2a81bd4c0270c730d236ab1.png)

Seed data constraints

你可能想把图片的网址换成真正的图片。我推荐使用 [Unsplash](https://unsplash.com/) 来找到它们。从图片中选择图像 URL,然后在数据模型的`image`字段中使用该链接。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/ee06ffbf2c73a7ec0499de1c7d5c1172.png)

Use an image from Unsplash in your data model

## 用户界面

好了,现在我们有了一个应用后端,让我们考虑一下我们的用户界面。

使用 Amplify Studio,您可以从 UI 设计工具 Figma 导入组件。(请注意,UI 库功能目前处于预览模式,我们希望听到您在使用它时的任何反馈。)

Amplify 有一个与 Amplify UI 库相对应的 [starter UI 文件](https://www.figma.com/community/file/1047600760128127424)可以使用。继续复制 UI 文件,然后您可以对组件进行任何您想要的样式更改。切换到“我的组件”选项卡进行更改。我将在`SocialA`组件上加粗日期和作者姓名。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/296270dcc67fe13155af5eddccf13157.png)

Bolded text on SocialA card

然后,我将转到`UI Library (Preview)`选项卡,然后单击“开始”。

粘贴到你的 Figma 文件的链接,然后点击“继续”。

![](https://github.com/OpenDocCN/geekdoc-devops-zh/raw/master/acloudguru-blog/img/098d00f2de0029cea17d0041d22c606d.png)

Sync your Figma file

然后,您将能够在 Studio 中查看您的 UI 组件!我将单击“Accept all”从 Figma 导入我的所有组件。

## 将数据链接到 UI 组件

现在我们有了数据和 UI 组件,让我们把两者连接起来!

我将在 Studio 中选择`SocialA`组件,然后单击`Configure`。

然后添加一个组件属性。我称它为`post`,然后将`type`设置为`Post`。

然后,我将选择我想要更新的组件部分,并选择我想要将它链接到的数据。首先,我将选择卡片上的标题,然后选择`label`属性并将其设置为`post.title`。

我将段落设置为`post.content`,图像设置为`post.image`,日期设置为`post.createdAt`,名称设置为`post.author`。你可以点击“混洗预览数据”来查看不同的数据插入到您的组件!

## 创建收藏

我们不是一次只呈现一篇博文,而是要呈现一个列表。

让我们创建一个博客帖子集。在右上角点击“创建收藏”,然后为您的收藏选择一个名称。我将我的命名为“后收集”。

然后,您可以更改收藏的对齐方式。我会保留我的一个列表,但在每张卡之间添加 4px。请注意,并不是我所有的帖子都有图片,因为我保留了原始的种子数据!

您还可以通过点击数据集旁边的“查看/编辑”来修改显示哪些数据。然后您可以排序或过滤您的数据,以便只显示您想要显示的记录!在现实世界的博客中,您可能想要草稿和已发布的帖子——您可以使用它来仅显示已发布的帖子!

## 添加到您的应用程序

现在我们需要将它添加到我们的应用程序中!首先,创建一个 React 应用程序:

npx create-react-app amplify-studio-blog
cd amplify-studio-blog


然后,在 Amplify Studio 页面的右上角,点击“本地设置说明”链接。会有一个带你 app ID 的`amplify pull`命令。

继续运行该命令。你会在浏览器中得到一个弹出窗口,在提示时登录到 Studio,或者按“接受”。然后回答 CLI 中的问题,您应该能够接受大多数问题的默认值。

然后,安装 Amplify React 组件和放大器库:

npm install @aws-amplify/ui-react aws-amplify


在文本编辑器中打开项目。您会注意到生成了`/amplify`目录以及`/src/models`和`/src/ui-components`。`ui-components`拥有你所有的 React 代码!你可以看看这些文件,它们是真实的,人类可读的代码。

让我们的应用程序呈现我们的博客文章。首先,通过将以下代码添加到您的`index.js`文件,将您的前端连接到您的 Amplify 应用程序。

import config from './aws-exports'
import Amplify from 'aws-amplify'

Amplify.configure(config)


然后,清除 App.js 组件。首先,添加 Amplify CSS 文件。然后导入`AmplifyProvider`组件和您的`PostCollection`:

import '@aws-amplify/ui-react/styles.css'
import from '@aws-amplify/ui-react'

import PostCollection from './ui-components/PostCollection'


`AmplifyProvider`将把放大样式传递给它的所有子组件。

然后,使用`AmplifyProvider`组件,和您的`PostCollection`!

function App() {
return (



)
}

export default App


你的文章应该呈现在页面上。请注意,默认情况下,Amplify UI 不会加载字体,所以您可以将它添加到您的`index.css`中,以使字体正常工作。

@import url('https://fonts.googleapis.com/css2?family=Inter:slnt,wght@-10..0,100..900&display=swap');


您可以将道具传递给组件,以便对其进行修改。例如,如果您想在集合中添加分页,可以执行以下操作:

```

现在,每页将显示 5 个项目!你可以在这里阅读所有选项

您可能还想覆盖发送到其中一个子组件的道具,您也可以这样做!如果您打开组件文件,例如src/ui-components/PostCollection.jsx,您会注意到每个组件都有一个getOverrideProps。每一个都传递了两个参数,overrides和一个密钥。您可以使用该键来覆盖单个组件的属性。让我们把每张SocialA卡片上的“阅读更多”链接变成一个可以链接到文章的a标签。

我将首先查看PostCollection中的SocialA组件实例。我去拿它的超驰钥匙。

<PostCollection overrides={{
    "Collection.SocialA[0]": {

    }
}}/>

我们想要一个SocialA组件的子组件,所以我们现在打开它。会有一个Text组件在文件底部呈现“Read more”。

我们将创建第二个覆盖对象,然后将我们想要传递的属性传递给组件。例如,as标签使其成为一个链接和一个href。为了完全实现这一点,您需要使用 React 的路由库。

<PostCollection overrides={{
  "Collection.SocialA[0]": {
    overrides: {
      "Flex.Flex[1].Text[0]": {
        "as": 'a',
        "href": "https://console.aws.amazon.com"
      }
    }
  }
}}/>

这里有更多关于 Amplify 中覆盖的信息。

添加身份验证

现在,让我们向我们的应用程序添加一个身份验证流。回到 Amplify Studio,点击“设置”下的“认证”。

我将使用这里的默认值,然后进行部署。您可以配置不同的机制、密码设置和属性!

一旦部署了身份验证,重新运行amplify pull命令将您的更改加载到您的本地应用程序中。

然后,我们将使用withAuthenticator高阶组件向我们的应用程序添加 auth。

添加导入:

import { AmplifyProvider, withAuthenticator } from '@aws-amplify/ui-react'

然后,将您的应用程序导出包装在组件中:

export default withAuthenticator(App)

如果你打开你的应用程序,你将有一个完整的登录和注册流程!您可以在此了解关于认证组件的更多信息。

主题化你的用户界面

您可能希望向您的 UI 添加一个主题,以便向您的 UI 组件添加品牌颜色或其他自定义。

您可以使用 Amplify Figma 主题编辑器来更改 Figma 组件的调色板。您还可以通过 CSS、设计令牌或 JavaScript 对象在代码中使用 UI 组件主题化

更新组件

您可能希望在某个时候更改组件的设计。在这种情况下,您可以在 Figma 中更改它们,然后在 Studio UI 库中单击“与 Figma 同步”。您将能够预览您的更改,然后运行amplify pull以便在您的本地应用程序中获得设计更改!

结论

除了 Amplify Studio,还可以添加 Amplify 前端托管Amplify CLI 生成的资源比如函数或者预测等等。查看文档继续学习!

前往 Amplify Sandbox 创建自己的应用程序。我很想看看你做的东西。如果你有任何反馈,欢迎给我加入我们的不和谐,或者在 GitHub 上留言

关于作者

阿里教人编码。她喜欢 Python,JavaScript,喜欢谈论编程。她从 es6 课之前就开始写 React 了。她领导 AWS Amplify 的开发者宣传。

如何在 Azure 中创建站点到站点的 VPN 网关

原文:https://acloudguru.com/blog/engineering/how-to-create-a-site-to-site-vpn-gateway-in-azure

谈到微软 Azure 认证考试,新模式强调工作角色。例如,参加 AZ-700:设计和实施微软 Azure 网络解决方案考试将使你获得微软认证:Azure 网络工程师助理认证。所以这意味着 cert 验证了实现和配置以网络为中心的 Azure 服务的技能。

在这篇文章中,我将向您展示如何建立一个站点到站点(S2S) VPN 网关,然后使用它来连接 Azure 网络和本地网络,以创建一个混合环境。这是我在一个云专家和 Pluralsight 上的 AZ-700 微软 Azure 网络工程师助理课程(和我的合著者 Matt Ulassien 一起)中更详细介绍的内容。请加入我们的学习,获得更多关于 Azure 网络技术的知识!


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


AZ-700 考试有多难?

在我们开始之前,我想给你简要介绍一下 AZ-700 考试的内容。

AZ-700 考试中的域如下(最近一次由微软在 2021 年 11 月 23 日更新):

  • 设计、实施和管理混合网络(10–15%)
    • 创建 VPN 来连接我们的内部和 Azure 环境
  • 设计和实施核心网络基础设施(20–25%)
    • 示例:在 Azure 中为我们的资源创建虚拟网络
  • 设计和实施路由(25–30%)
    • 示例:引导所有流量通过防火墙
  • 保护和监控网络(15–20%)
    • 示例:使用 Azure 防火墙保护网络,使用网络观察器排除网络故障
  • 设计和实现对 Azure 服务的私有访问(10–15%)
    • 示例:使用私有端点在我们的 Azure 虚拟网络中为非 Azure 服务提供端点

那么 AZ-700 考试难吗?嗯,没有什么是容易的,但所有这些领域都涵盖在我们的证书准备课程。所以我们支持你。

在 Azure 中创建站点到站点(S2S) VPN 网关

现在,我们已经了解了官方 AZ-700 考试中涵盖的域,让我们浏览一下在我们的 Azure 虚拟网络 (VNet)和混合环境的本地网络之间设置 S2S VPN 的步骤。

1.让我们的鸭子排成一行

首先,我们需要完成以下先决条件:

  1. 拥有一个 Azure 订阅(我推荐使用我们的 Azure 云沙箱来模拟这个组件)。\
  2. 有一个兼容的 VPN 设备(提示:你可以使用两个 VNets,一个作为 Azure 网络,另一个模拟你的本地网络——我会在课程演示中介绍这一点。)
  3. 为您的 VPN 设备提供一个公共 IP(最好是静态分配)
  4. 了解您想要连接到 Azure 的私有 IP 空间,并确保本地和 Azure 之间没有 IP 重叠。

2.创建我们的 S2S VPN 设置

接下来,我们可以按照以下步骤开始创建我们的 S2S VPN 设置:

  1. 登录 Azure 门户。(这永远是第一步!)
  2. 获取我们 Azure VNet 的区域和私有 IP 空间。(如果虚拟网络不存在,请使用默认设置创建虚拟网络。)
    1. 示例地区:美国东部
    2. 示例 IP 空间:10.0.0.0/16
  3. 使用以下内容和默认配置选项创建一个 VNet 网关:
    1. 示例地区:美国东部(这必须与 VNet 地区相匹配。)
    2. 网关类型:VPN
    3. VPN 类型:基于路由
    4. SKU: VpnGw2
    5. 第二代
    6. 虚拟网络:InsertYourVNetName
    7. 网关子网地址范围:10.0.255.0/27(建议网关子网使用/27 CIDR)
      1. VNet 网关将使用网关子网在 Azure 端连接我们的 S2S。
    8. 公共 IP 地址:新建
    9. 公共 IP 地址名称:InsertYourPublicIPName
  4. 创建本地网络网关。(这代表本地 VPN 设备。)
    1. IP 地址:YourOnPremVPNPublicIP
    2. 地址空间:YourOnPremisePrivateIPRange
    3. 地区:美国东部(这必须与地区匹配。)
  5. 从 VNet 网关资源创建 VPN 连接。
    1. 连接类型:站点到站点
    2. 选择本地网络网关和虚拟网络网关
    3. 指定预共享密钥
    4. IKE 协议:选择 IKEv2
  6. 配置本地 VPN 设备。

这将取决于你的 VPN 设备。(我建议看看微软现有的配置脚本是否适合你的需求。)


why should i get azure

想了解更多关于 Azure 认证的信息?
查看我们的 Azure 认证和学习路径。


3.检查我们的连接

现在,我们已经创建了从 Azure 到本地的 S2S VPN,我们可以通过从 Azure 门户检查我们的连接状态来确认这一点,方法是导航到我们的 VNet 网关,并在其连接刀片下查看我们的连接状态是否为“已连接”。

好吧,这看起来很简单!开玩笑!在 Azure 中没有什么是容易的——也不应该是容易的,因为这些是有价值的技能,可以转化为技术领域的高薪职位。

如果你想了解更多关于如何使用 Azure 连接我们的本地网络,或者甚至只是使用 Azure 网络技术,请确保查看我们的 AZ-700 课程,并使用它来准备 AZ-700 考试,以便你可以在就业市场中验证你的技能。感谢你和我一起发表这篇博文,现在继续做一个令人敬畏的大师吧!

如何用 Azure 函数和 MongoDB 创建 CRUD 应用程序

原文:https://acloudguru.com/blog/engineering/how-to-create-crud-applications-with-azure-functions-and-mongodb

在本文中,我们将学习如何使用 Azure 函数创建一个与 MongoDB 和 Node.js 集成的 CRUD 应用程序

你可以在一堆编程语言中用 Azure 函数开发无服务器应用:【c#】JavaScriptF #JavaPowerShellPythonTypeScript然而,在这篇文章中,我们将关注 JavaScript。我们开始吧!

Azure Functions 核心工具 将允许我们从终端或命令提示符在我们的机器上本地开发和测试功能。以下是我用来解决这一挑战的程序和软件包的链接:

下面假设机器上安装了 Node.js 的 X 版本。

npm install -g azure-functions-core-tools
brew tap azure/functions
brew install azure-functions-core-tools 
  • 带 APT 的 Linux(Ubuntu/Debian)
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg 

有关如何正确安装 Azure Functions 核心工具的更多信息,请访问此处的链接。

要验证 Azure Functions Core Tools 是否已正确安装在您的计算机上,请在终端上检查 func 命令:

> func

如果按照下面的 GIF 发生,那是因为软件包安装成功了!

太好了。现在我们可以创建自己的函数了。为此,在您的机器上创建一个本地文件夹—让我们开始吧!

2.开始创建您的新应用程序

现在我们已经安装了这个包,让我们创建一个新的应用程序。为此,只需按照下面的 GIF 步骤即可。

注意,当我们打开 Visual Studio 代码时,需要点击出现在右下角的**YES**按钮来启用项目中的一些重要文件。

3.创建 MongoDB 连接

现在让我们对新创建的项目进行一些必要的更改。这样,我们将在我们的项目中本地安装 MongoDB。输入命令:

npm install mongodb

当我们在项目中安装 MongoDB 时,注意到在**package.json**文件中有变化。该文件将如下所示:

{
  "name": "crud-serverless-mongodb",
  "version": "1.0.0",
  "description": "Challenge-4 25 days of serverless",
  "scripts": {
    "test": "echo \"No tests yet...\""
  },
  "author": "",
  "dependencies": {
    "mongodb": "^3.3.2"
  }
} 

现在让我们创建一个名为**shared**的文件夹,并在其中创建一个文件:**mongo.js**。现在,项目结构如下图所示:

/**
 * Arquivo: mongo.js
 * Data: 01/25/2021
 * Descrição: file responsible for handling the database connection locally
 * Author: Glaucia Lemos – (Twitter: @glaucia_lemos86)
 */

const { MongoClient } = require("mongodb");

const config = {
  url: "mongodb://localhost:27017/crud-serverless-mongodb",
  dbName: "crud-serverless-mongodb"
};

async function createConnection() {
  const connection = await MongoClient.connect(config.url, {
    useNewUrlParser: true
  });
  const db = connection.db(config.dbName);
  return {
    connection,
    db
  };
}

module.exports = createConnection; 

在这里,我们正在创建到 MongoDB 的本地连接!

让我们也改变一下**local.settings.json**文件。这个文件负责“存储”所有我们不希望在提交到 GitHub 时暴露的密钥。注意这个文件在**.gitignore** 的文件列表中。

打开**local.settings.json**文件并进行一些更改:

  • 文件:local.settings.json
{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "AzureWebJobsStorage": "{AzureWebJobsStorage}"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  }
} 

在上面的代码中可以看到,我们已经启用了CORS。因为没有它,我们无法执行 CRUD 操作!如果你想对 CORS 有更多的了解,我推荐你阅读这里的

太好了!第一步已经完成了。现在让我们在 Azure 函数中创建我们的 CRUD!


成年人的 NoSQL:dynamo db 单表建模 w/里克·霍利汉 DynamoDB 可以作为传统关系数据库的可伸缩、经济高效的替代品。。。如果正确使用的话!在这个免费的点播网络研讨会中,AWS 的高级实践经理、单表 DynamoDB 设计的发明者里克·霍利汉展示了他在 DynamoDB 中建模复杂数据访问模式的技巧。


4.功能-“创建菜肴”

要创建新函数,只需键入以下命令:

func new

当你输入这个命令时,它会给你几个 Azure Functions 提供给我们的模板选项。让我们选择 HttpTrigger 模板。

请注意,创建了一个 CreateDish 文件夹和两个文件:

  • function.json :这里我们将定义路由和端点方法。
  • index.json :这里我们将开发端点逻辑。

让我们开始改变这些文件。从 function.json 开始

  • 文件:CreateDish/function.json
{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": ["post"],
      "route": "dishes"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ]
} 

现在让我们更改 index.js 文件:

  • 文件:CreateDish/index.js
/**
 * File: CreateDish/index.js
 * Description: file responsible for creating a new 'Dish'
 * Date: 01/25/2021
 * Author: Glaucia Lemos (Twitter: @glaucia_lemos86)
 */

const createMongoClient = require('../shared/mongo');

module.exports = async function (context, req) {
  const dish= req.body || {}

  if (dish) {
    context.res = {
      status: 400,
      body: 'Dish data is required! '
    }
  }

  const { db, connection } = await createMongoClient()

  const Dishes = db.collection('dishes')

  try {
    const dishes = await Dishes.insert(dish)
    connection.close()

    context.res = {
      status: 201,
      body: dishes.ops[0]
    }
  } catch (error) {
    context.res = {
      status: 500,
      body: 'Error creating a new Dish'
    }
  }
} 

这里我们定义了Post路线,并为:**Create a New Dish**开发了逻辑。

让我们运行这个端点!要运行,只需键入命令:

func host start

它将列出我们创建的端点!看下面的 GIF

它为我们列出了以下端点:**[POST]** http://localhost:7071/API/disks

5.功能-“获取所有菜肴”

这和我们上面做的是一样的。让我们用命令创建一个新函数: func new ,包含函数名为getall disks并更改文件: function.jsonindex.js

  • getall disks/function . JSON
{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": ["get"],
      "route": "dishes"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ]
} 
/**
 * File: GetAllDishes/index.js
 * Description: file responsible for list all 'Dishes'
 * Data: 01/25/2021
 * Author: Glaucia Lemos (Twitter: @glaucia_lemos86)
 */

const createMongoClient = require('../shared/mongo')

module.exports = async context => {
  const { db, connection } = await createMongoClient()

  const Dishes = db.collection('dishes')
  const res = await Dishes.find({})
  const body = await res.toArray()

  connection.close()

  context.res = {
    status: 200,
    body
  }
} 

6.函数-“GetDishById”

现在已经很清楚用 Azure 函数创建 CRUD 有多简单了,我将开始加速创建过程,并告诉您**function.json****index.js**文件中发生了什么变化:

  • GetDishById/function . JSON
 {
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": ["get"],
      "route": "dishes/{id}"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ]
} 
// @ts-nocheck
/**
 * File: GetDishById/index.js
 * Description: file responsible for get a 'Dish' by Id
 * Data: 01/25/2021
 * Author: Glaucia Lemos (@glaucia_lemos86)
 */

const { ObjectID } = require('mongodb')
const createMongoClient = require('../shared/mongo')

module.exports = async function (context, req) {
  const { id } = req.params

  if (!id) {
    context.res = {
      status: 400,
      body: 'Please enter the correct Dish Id number!'
    }

    return
  }

  const { db, connection } = await createMongoClient()

  const Dishes = db.collection('dishes')

  try {
    const body = await Dishes.findOne({ _id: ObjectID(id) })

    connection.close()
    context.res = {
      status: 200,
      body
    }
  } catch (error) {
    context.res = {
      status: 500,
      body: 'Error listing Dish by Id.'
    }
  }
} 

7.函数-“UpdateDishById”

  • UpdateDishById/function . JSON
{
  "bindings": [{
          "authLevel": "anonymous",
          "type": "httpTrigger",
          "direction": "in",
          "name": "req",
          "methods": ["put"],
          "route": "dishes/{id}"
      },
      {
          "type": "http",
          "direction": "out",
          "name": "res"
      }
  ]
} 
// @ts-nocheck
/**
 * File: UpdateDishById/index.js
 * Description: file responsible for update a 'Dish' by Id
 * Data: 01/25/2021
 * Author: Glaucia Lemos (@glaucia_lemos86)
 */

const { ObjectID } = require('mongodb')
const createMongoClient = require('../shared/mongo')

module.exports = async function (context, req) {
  const { id } = req.params
  const dish = req.body || {}

  if (!id || !dish) {
    context.res = {
      status: 400,
      body: 'Fields are required'
    }

    return
  }

  const { db, connection } = await createMongoClient()
  const Dishes = db.collection('dishes')

  try {
    const dishes = await Dishes.findOneAndUpdate(
      { _id: ObjectID(id) },
      { $set: dish }
    )

    connection.close()

    context.res = {
      status: 200,
      body: dishes
    }
  } catch (error) {
    context.res = {
      status: 500,
      body: 'Error updating a Dish'
    }
  }
} 

8.函数-'DeleteDishById '

在' DeleteBishById 代码上方:

  • DeleteDishById/function . JSON
{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": ["delete"],
      "route": "dishes/{id}"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ]
} 
// @ts-nocheck
/**
 * File: DeleteDishById/index.js
 * Description: file responsible for delete a 'Dish' by Id
 * Data: 01/25/2021
 * Author: Glaucia Lemos (Twitter: @glaucia_lemos86)
 */

const { ObjectID } = require('mongodb')
const createMongoClient = require('../shared/mongo')

module.exports = async function (context, req) {
  const { id } = req.params

  if (!id) {
    context.res = {
      status: 400,
      body: 'The fields are required!'
    }

    return
  }

  const { db, connection } = await createMongoClient()

  const Dishes = db.collection('dishes')

  try {
    await Dishes.findOneAndDelete({ _id: ObjectID(id) })
    connection.close()
    context.res = {
      status: 204,
      body: 'Dish deleted successfully!'
    }
  } catch (error) {
    context.res = {
      status: 500,
      body: 'Error Deleting Dish' + id
    }
  }
} 

我们的食物准备好了!让我们测试所有端点!要测试,打开 Postman,可以下载Postman——这里 并包含 json 请求。请参见下面的示例:

{
  "name": "Amanda",
  "dish": "garlicky green beans",
  "vegetarian": true,
  "vegan": false,
  "allergens": "nuts (almonds)"
} 
  • 新建一道菜:【POST】http://localhost:7071/API/disks/
  • 列出所有菜品:【GET】http://localhost:7071/API/disks/
  • 按 Id 列出菜品:【GET】http://localhost:7071/API/disks/
  • 按 Id 更新菜:【PUT】http://localhost:7071/API/disks/
  • 按 Id 删除菜:【删除】http://localhost:7071/API/disks/

了解有关 Azure 基础知识的更多信息

如果你想了解更多关于 Azure 函数的知识,微软提供免费课程和电子书来帮助你了解更多关于无服务器和 Azure 函数的知识:

而如果你想了解更多其他科技新闻,Azure 和 JavaScript / Node。Js,一定要在 Twitter 上关注我!

如何使用结构化日志更快地调试

原文:https://acloudguru.com/blog/engineering/how-to-debug-faster-with-structured-logging

日志一直是开发人员调试应用程序的工具,从简单的“print("Here ")”`到使用更正式的库,如 log4j 和日志模块。虽然这种“非结构化日志记录”对于单独的开发人员阅读日志来查明问题是有效的,但在执行更深入的分析或构建关于应用程序使用情况的报告时,这种类型的“非结构化日志记录”无法扩展。


加速您的云计算职业生涯

云专家让你轻松(也很棒)提升你的云事业——即使你对技术完全陌生。查看 ACG 目前的免费课程立即开始免费试用。


在最近关于构建无服务器应用程序的 Twitter 空间中,讨论了结构化日志的概念,作为一种扩展日志工作的方式,并提供了一种一致的方式来使用日志。

什么是结构化日志

结构化日志记录是一种以一致的格式记录信息的方法,允许将日志视为数据而非文本。结构化日志通常用 JSON 表示,这使得开发人员能够高效地存储、检索和分析日志。

支持更快调试的一些主要优势包括…

  • **更好的搜索—**通过利用 JSON 格式,我们可以在字段上创建查询,而不必依赖原始文本的脆弱正则表达式模式
  • 更好的集成–通过使用一致的 JSON 格式,应用程序可以轻松地为仪表板或分析等下游任务获取数据。
  • **更好的可读性—**通过利用一致的格式,日志的使用者(如系统管理员)可以比阅读原始文本文件更有效地解析数据。

在这篇文章中,我将通过一个简单的 AWS Lambda 函数演示 Python 中的一个例子,强调非结构化和结构化日志记录之间的区别。

非结构化日志示例

在本例中,我们将只使用默认的 print 语句。简单地说“这里”可以让我们知道代码在函数中的什么地方被执行。

虽然简单,但在查看日志事件时,它允许快速的人类可读调试过程。在 AWS Lambda 的上下文中,我们可以使用 AWS CloudWatch 日志组来轻松验证我们的代码运行。

虽然对于简单用例的单独调试来说很棒,但是简单地打印文本并不能传达更深入的分析或有效的搜索方式所需的上下文。例如,可以从某个地区的客户那里查找日志,或者在特定页面上执行某个操作。必须进行文本匹配或正则表达式来查找日志中的数据,这对于细致入微的搜索来说并不理想。

日志模块也遇到了与标准打印语句相同的问题。

数据仍然是文本格式,即使它提供了日志级别等附加信息,日志消息仍然被视为文本而不是数据。

结构化测井示例

为了将日志视为数据,我们必须创建一个能够将日志表示为数据的结构。有一些包,如 Python JSON Logger 提供了将日志转换成 JSON 的机制,但是您也可以创建一个类来封装您的数据。

现在,当我们在 Cloudwatch 中查看数据时,我们会得到一个漂亮的 JSON,其中包含我们想要的任何字段。

由于数据是 JSON 格式,允许我们使用 Cloudwatch Log Insights 使用自定义字段对数据进行查询,因此我们决定不进行任何额外的配置。

更多利用 Cloudwatch 日志的例子,请查看 AWS 计算博客

当我们移植日志时,我们还获得了一种易于使用的 JSON 格式,可以在其他应用程序中使用。

与其他日志示例中的原始文本相比,在结构化示例中,日志消息现在可以作为 JSON 对象使用。

如您所见,结构化日志记录并不是必须以某种方式实现的“硬性要求”。它只是一个框架,使您能够将日志视为数据,从而为您、您的团队和组织提供更健壮的调试方法。

在 Twitter 上关注 Banjo,点击 ,@banjtheman ,@AWSDevelopers 了解更多关于云计算和 AWS 的有用提示和技巧。

关于作者

Banjo 是 AWS 的一名高级开发人员,他在那里帮助开发人员对使用 AWS 感到兴奋。Banjo 热衷于将数据操作化,并围绕利用数据启动了一个播客、一个 meetup 和开源项目。当没有建造下一个大东西时,Banjo 喜欢通过玩视频游戏特别是 JRPGs 和探索他周围发生的事件来放松。

如何使用 Amplify 控制台部署自定义域

原文:https://acloudguru.com/blog/engineering/how-to-deploy-a-custom-domain-with-the-amplify-console

什么是 Amplify 控制台?

Amplify 控制台通过持续的基于 Git 的部署为全栈无服务器 web 应用提供托管。连接 Github repo,单击 deploy,应用程序就部署到一个活动的 URL 上了。

内置的原子部署通过确保 web 应用仅在整个部署完成时更新,消除了维护窗口。

如果您正在启动一个带有 Amplify 后端的项目,控制台还会为您提供部署和维护 Amplify 项目的选项。

添加自定义域

部署应用程序后,下一步是将应用程序部署到通过 GoDaddy 或 Google Domains 等域名注册商购买的自定义域名。

当您最初使用 Amplify 控制台部署 web 应用程序时,它托管在如下位置:

https://branch-name.d1m7bkiki6tdw1.amplifyapp.com

当您使用自定义域时,用户将能够轻松访问您的应用程序,该应用程序由一个虚拟 URL 托管,如下所示:

https://www.myawesomedomain.com

让我们来学习如何做到这一点!

在 Amplify 控制台中启动应用程序

如果您已经在 Amplify 控制台中启动了一个应用程序,您可以跳过这一步,直接进入下一步—添加自定域。

还有现成的盖茨比博客可以快速上手。只需点击这里,然后跳到下一步添加自定义域。

要部署 GitHub 帐户中已有的应用程序,让我们在 Amplify 控制台中启动一个新的应用程序。第一步是将您的浏览器指向[https://console.aws.amazon.com/amplify](https://console.aws.amazon.com/amplify)并点击部署部分下的开始

接下来,连接您想要启动的 Git 存储库并选择分支,然后点击 Next 。接受默认的构建设置,然后点击保存并部署

现在您的应用程序已经启动,我们可以继续在自定义域中设置它了。

添加自定义域

在 AWS 仪表板中,转到 53 号公路并点击托管区域。选择创建托管区域。从那里,输入你的域名&点击创建

ProTip :一定要按原样输入你的域名,不带 www。例如myawesomedomain.com

现在,在 Route53 dashboard 中,您应该有 4 个域名服务器。

在你的托管账户(GoDaddy,谷歌域名等..),在您正在使用的域的 DNS 设置中设定这些自定名称服务器。

Choose your nameserver type in Route53 dashboard.

这些域名服务器应该看起来像 ns-1355.awsdns-41.org、ns-1625.awsdns-11.co.uk 等……

接下来,在 Amplify 控制台中,点击左侧菜单中的域管理。接下来,点击添加域名按钮。

在这里,下拉菜单应该显示您在 AWS Route 53 中的域名。选择本域&点击配置域

这应该会将应用程序部署到您的域中(这将需要 5-20 分钟)。最后一件事是设置重定向。点击重写&重定向

确保域的重定向如下所示(即,将 https://websitename 重定向到 https://www.websitename):

Set up rewrites and redirects on Amplify Console.

就是这样!一旦 DNS 开始传播,您应该会看到您的域名位于您在上述步骤中设置的 URL 上。


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


我的名字是 纳德达比特 。我是亚马逊网络服务的一名开发人员,负责类似于AWS app syncAWS Amplify的项目。我专门从事跨平台&云应用开发。

如何用 GitHub Codespaces 开发无服务器应用

原文:https://acloudguru.com/blog/engineering/how-to-develop-serverless-apps-with-github-codespaces

GitHub Codespaces 是一个在线开发环境,运行在 GitHub 上,使用 Visual Studio 代码。我们可以用它 100%在云端开发。所以我想看看它能否运行一个混合了 Azure 功能Azure 静态 Web 应用 的项目。

本项目教程将向您展示如何为 GitHub 代码空间准备好 Azure Functions & Static Web App 项目。您将了解如何自定义 Visual Studio 代码启动目标以自动测试您的应用程序,以及如何配置您的项目,以便在您在云端开发时自动安装 Visual Studio 代码扩展。

该项目由一个静态 Web 应用程序和一个图像上传表单组成。图像被直接上传到 Azure Blob 存储器,但是为了工作,它需要接收一个 SAS 密钥来对 Blob 容器执行匿名认证。这意味着我们有一个无服务器的后端生成 SAS 密钥,我们的前端可以通过 API 调用检索这些密钥。

你可以在 GitHub 上访问这个项目的代码

要完成本教程,您需要一个 Azure 帐户。可以免费报名。注册后,您需要创建一个 Azure 存储帐户

我们希望有一个可以在代码空间中运行的开发环境,并且能够支持所有开箱即用的服务,所以让我们列出我们需要的东西:

  1. 我们的项目运行在 nodejs 上,所以我们需要安装这个依赖项。
  2. 对于 Azure Functions,我们需要安装 Azure Functions 核心工具,并在本地测试它们。
  3. 对于“@azure/storage-blob”依赖,我们需要一个运行的“webpack ”,每当我们做一些更改时,它会自动重建我们项目的 JavaScript。
  4. 对于静态 Web 应用程序,我们希望 Visual Studio 代码的 Live Server 扩展可以让我们在本地预览我们的网站。
  5. 设置项目所需的环境变量。

让我们看看如何解决这些问题。

为代码空间准备项目

在幕后,Codespaces 运行 docker 容器,我们的依赖项将安装在那里。幸运的是,Codespaces 有一整套现成的容器,我们可以开箱即用。去克隆 GitHub 上的/Microsoft/vs code-dev-containersrepo。在“containers”文件夹中,我们有“azure-functions-node ”,它已经包含了 nodejs 依赖项和 Azure Functions 核心工具依赖项。因此,第 1 点和第 2 点将被覆盖。

要为我们的项目启用该容器,我们需要将“. devcontainer”文件夹从“azure-functions-node”文件夹复制到我们项目的根文件夹中。在该目录中有“Dockerfile”和“devcontainer.json”文件,用于配置我们的代码空间。一旦它被添加,提交给 git 并推送到 GitHub。

要设置“webpack ”,我们将把这些行添加到“package.json”文件中,以确保依赖项安装在代码空间容器中:

json
"devDependencies": {
  "webpack": "^4.44.1",
  "webpack-cli": "^3.3.12"
}

然后在“脚本”下,我们将添加一个自定义脚本来执行名为“构建”的“webpack ”:

json
"scripts": {
    "start": "func start",
    "test": "echo \"No tests yet...\"",
    "build": "webpack --mode=development"
  },

然后我们需要告诉 VSCode 如何开始我们的项目。通常,当我们点击“F5”时,VSCode 会启动 Azure Functions 核心工具,但在这种情况下,我们也需要它来运行 webpack 构建。让我们编辑. vscode/tasks.json 文件,在其中添加几个任务。

json
{
  "type": "shell",
  "label": "npm run webpack",
  "command": "npm run build",
  "dependsOn": "npm install"
},

此任务将运行我们的 webpack build 命令,同时依赖于“npm install ”,因此我们确保也运行一个。然后,我们需要编辑“主机启动”任务,这将启动“Azure 功能核心工具”。让我们让它依赖于我们的 webpack 任务:

json
{
  "type": "func",
  "command": "host start",
  "problemMatcher": "$func-watch",
  "isBackground": true,
  "dependsOn": "npm run webpack"
},

注意,任务相关性是使用任务“标签”作为标识符来指定的。

我们赢了五分之三。现在是时候解决服务器直播的问题了。默认情况下,我们需要安装 Live Server 扩展。为此,让我们打开. devcontainer/devcontainer.json 配置文件,并编辑` extensions '条目,以包含 Live Server 扩展的 id,(既然我们在这里,让我们添加静态 Web Apps 扩展):

json
"extensions": [
	"ms-azuretools.vscode-azurefunctions",
"ms-azuretools.vscode-azurestaticwebapps",
	"dbaeumer.vscode-eslint",
	"ritwickdey.liveserver"
],

Live Server 会让我们在 http://localhost:5500 下预览或者静态的 Web App。在代码空间中,任何指向本地主机的 URL 都将被端口转发并重定向到重写的 URL。为了与 Live Server 一起工作,我们需要告诉 Codespaces 转发“5500”端口。在“. devcontainer/devcontainer.json”文件中,我们需要修改“forwardPorts”条目以包含该端口:

json
"forwardPorts": [ 7071, 5500 ],

一旦我们进入代码空间,我们将处理第 5 步。

创建您的第一个代码空间

我们在前面的步骤中做了所有的更改,现在是时候将您的项目推送到 GitHub 了。一旦完成,进入 GitHub 代码空间并点击“创建你的第一个代码空间”。

然后选择代码空间的项目,以及 git 分支,并单击 create codespace:

一旦代码空间启动并运行,我们就可以进行最后的第五步,即告诉 Azure Functions Core Tools 如何连接到我们的存储帐户。为此,在项目的根目录下创建一个名为“local.settings.json”的文件。为此,您可以重命名 repo 已提供的“local.settings.sample.json”文件,并将其命名为“local.settings.json”。在这里,我们可以编辑“AzureWebJobsStorage”密钥,以包含从 Azure Portal 获得的存储帐户的连接字符串。您可以从运行在代码空间上的 Visual Studio 代码内部完成所有这些工作!这有多酷多 meta?!

它看起来应该是这样的,但是带有您的实际连接字符串:

json
{
    "IsEncrypted": false,
    "Values": {
      "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=youraccountname;AccountKey=<SecretAccountKey>;EndpointSuffix=core.windows.net",
      "FUNCTIONS_WORKER_RUNTIME": "node"
    }
  }

一旦完成,就该运行项目了。按“F1 ”,然后键入“用 Live Server 打开”以启动 Live Server 实例,这将让我们预览项目的静态 Web 应用程序端。完成后,按“F5”启动我们项目的 Azure 功能部分:

在 Azure Functions 启动我们的后端之后,我们可以继续在浏览器中查看它。在 Visual Studio 代码侧面板中选择“代码空间”选项卡,以访问转发端口及其各自的 URL:

点击“转发端口”下的“端口:5500”。如果一切顺利,您应该会看到类似这样的内容:

静态 Web 应用程序运行在我们的代码空间上,由 Live Server 提供服务,它联系了我们的无服务器应用程序,该应用程序为它提供了 SAS 密钥,允许我们将文件上传到 Azure Web Storage。

结论

通过这 5 个步骤,我们可以拥有一个使用 Azure 静态 Web 应用程序和 Azure 函数的项目,准备好使用 GitHub Codespaces 开箱即用。

GitHub Codespaces 是一个很棒的工具,它让我们在云中拥有一个工作开发环境,而不需要安装任何东西。这将有助于我们简化开发,并在开发过程中与其他开发人员共享我们的应用,使协作变得更加容易。可能性是无限的。就我而言,我对所有在线编程教育感到兴奋,这将由 Codespaces 实现。

后续步骤

关于作者

阿尔瓦罗·维德拉是微软的一名开发者拥护者,他组织了 DuraznoConf。他是 RabbitMQ in Action 的合著者,并为计算机器协会撰写文章。你可以在推特上找到他的名字是 @old_sound

如何加入 DevRel

原文:https://acloudguru.com/blog/engineering/how-to-get-into-devrel

你喜欢在奶牛回家之前建立关系和传播技术吗?DevRel 可能是你的东西!我们深入了解您需要哪些技能以及如何开始。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


你能带给 DevRel 的技能

1.建立关系

强有力的建立关系的技巧是这个领域的全部。我们在这里不只是谈论对外交流,除了跟踪你的输出,你还需要跟踪它的影响。写一定数量的博客文章或获得一定数量的点击率不一定比花时间在社区中建立联系更好。

2.沟通

能够以书面和面对面的方式表达自己是很重要的。根据你所在的团队,你可能会有其他人来帮助你编辑你的博客帖子或视频,或者你可能会自己做所有的事情。你也可能用完全不同的语气和焦点来写技术文档。你是内容专家,所以你需要能够用正确的声音将信息传达给正确的受众。

3.灵活性

你需要能够让你的信息在公司、团队和不同层次的许多不同的人之间产生共鸣。在 DevRel 中令人兴奋但有时令人沮丧的事情是,它仍然是一个新的领域。这意味着你会花一些时间来教育公司里的人关于你的角色(在某种程度上,也是定义它)。

4.提问!

要在 DevRel 中工作,你需要该领域的广泛知识,你不会跨越所有的细节。你将不得不跳进你不了解的产品或服务的领域,所以你能提出问题是很重要的。在你职业生涯的某个阶段,你有一种倾向,觉得你应该避免那种你不理解某些事情的感觉。在 DevRel 中,如果你在需要信息的时候不能询问信息,你就会陷入困境。


看点:解决“没有经验”的云招聘问题
没有工作是得不到经验的。但是谁会雇佣没有经验的你呢?谜题!观看这一免费的点播网络研讨会,进行关于云计算职业发展的小组讨论,并获得您的第一份云计算工作。


那么,在 DevRel 中我能做些什么来开始呢?

人们开始使用 DevRel 最常见的方式是利用你的开发者背景,专注于在社区中建立你的声誉;将焦点放在开发者关系中的“关系”上。这里有几个步骤,你可以开始。

1.向你钦佩的人伸出援手

开始对话。开始建立这些关系。这可能是你的同事,也可能是你通过社交媒体认识的人——无论是哪种你觉得最舒服的方式。当你想进入任何领域时,建立关系网都是很重要的一步,但是尤其是适用于 DevRel 吗?

2.分享你的激情

许多发现自己在 DevRel 的工程师只是通过分享他们的激情开始工作的。他们开始谈论他们真正热爱的一项技术、一种范式或一种方法,激情就从他们身上迸发出来。他们开始写关于它的文章。他们制作了 YouTube 视频。他们围绕它建立社区。这自然会让他们进入一个职业生涯,继续谈论这个话题。

找到你喜欢的东西,全身心地投入到学习中去,并想办法与你的社区分享这些学习成果。

3.拿到手

在许多职业生涯中,如果没有该职位的工作经验,获得第一份工作可能会很棘手。不过,使用 DevRel,很容易指出你维护得非常好的 GitHub 项目、你多年来培育的本地社区,甚至是你以前创建的博客或视频系列。

拿到手,你就有东西给招聘经理看,说:“我有合适的工作经验!”


从这些 10 个有趣的动手项目开始构建你的云计算技能,学习 AWS


如果我不是开发人员,可以搬进 DevRel 吗?

这种情况时有发生,但绝对更罕见。诀窍是给自己找一个能让你在日常生活中有足够时间获得所需经验的角色,这些经验可以融入到你的工作中。

“我上一个团队里有个人。Pluralsight 的开发人员关系总监艾莎·布莱克(Aisha Blake)说:“全新的,从未做过开发人员,直接从新兵训练营来到这个团队。“作为他的角色和职责的一部分,他积极参与并致力于这个开源项目,而这个项目是由团队中一个更资深的成员维护的。

“他们会每周就这个项目一起结对。他还在学习 Ruby,但他也在学习如何与观众沟通。制作一部电视剧的最好方法是什么?如何确保你的内容是可访问的?这种活动将把他们和更多的人联系在一起。”


准备好提升你的 AWS 技能了吗?无论你是刚刚起步还是经验丰富的云专家,云专家的边做边学方法都将帮助你掌握云技术并在职业生涯中取得进步。


了解更多信息

有很多很棒的资源可以找到关于 DevRel 的更多信息。玛丽·塞恩瓦尔和 T2·萨姆·朱利安的时事通讯可以让你深入了解如何支持和促进社区发展,如何写作,如何建立人际网络。艾莎最好的建议是,看看你崇拜的人,看看他们在做什么。查看他们正在与谁互动,并查看他们正在共享的内容。继续学习,继续做,继续分享,继续牛逼!

借助 Puppet ,摆脱配置漂移的困扰

原文:https://acloudguru.com/blog/engineering/how-to-get-rid-of-configuration-drift-with-puppet

不幸的是,在您的环境中有同事说不要碰的服务器是很常见的。这些脆弱、陈旧的机器只会通过票证和断电提醒你它们的存在。

这些是漂移服务器(这也将是一个乐队令人敬畏的名字)。使用像 Puppet 这样的配置管理工具将这些错误的服务器恢复到正常状态是对您最有利的。

什么是配置漂移?

配置漂移是指机器被调整和更改到不再匹配原始状态的程度。

像这样难以控制的系统需要花费时间和精力来管理和排除故障。让它们回到正常工作的稳定状态需要不断检查并确保它们配置正确,就像制造厂的质量控制人员一样。

如何用 Puppet 修复配置漂移

Puppet 可以通过将配置(文件、注册表、软件等等)转换成易读、易懂,而且最重要的是可执行的代码来帮助您解决配置漂移问题。下面是怎么做的!


Cloud Adventure

云迁移:角色扮演游戏 云迁移活动需要策略和知识——有点像龙与地下城&的游戏。加入这一独特的角色扮演练习,让专家通过真实的云迁移场景进行游戏。


1.从信息收集开始

第一步是尽可能找到关于该机器配置的所有信息。

您找到的任何文档都会有所帮助,但是很有可能自服务器部署后就没有更新过。毕竟,上一次有人在修复服务器故障后检查文档更新是什么时候?这变成了事后的想法,这也是为什么代码为的基础设施不仅是部署的更好方式,而且是跟踪您的变更和配置的更好方式。

请确保您还检查了票务系统,以了解有关该服务器的事件和更改。最重要的是,看一下系统,确保它匹配。环境中发生了许多未记录的变化,最好是识别出那些潜在的“陷阱”


使用 Puppet 却不想自己编写模块?

尝试使用 Puppet Forge 的动手实验室,这是一个由 PuppetLabs 托管的在线存储库,存储在 Puppet 基础设施中使用的公共模块。


2.构建一个副本

一旦确定了所有的配置,就该将这些知识转化为代码,并构建一台与原始机器完全一样的机器(没有奇怪的问题)。

从最基本的选项开始,逐步深入到更复杂、更具体的细节。您可能会注意到,并非所有的配置都是工作状态所必需的,这是很自然的。绷带被放在伤口上,你在建造一个新的身体。(弗兰肯斯坦会骄傲的。)

如果这不是您第一次使用 Puppet,那么您可能已经有了一套可以参考和重用的基本配置,而不是重新发明轮子。如果没有,恭喜你!你现在也在为你所有的未来构建创建它们。回收是节省时间和制定标准的关键。说到标准,这让我们进入下一步。

3.试图标准化

大多数容易出问题的构建往往不会经常被触及,这意味着过时的软件需要升级。

将配置转化为基础设施的代码可以让你的部门有一个特殊的交换筹码。特别是更新、升级和更改系统软件和操作系统以符合稳定性和安全性标准的能力。您需要部署的软件越少,环境就越容易管理和修复。

想想看,如果一个机械师只需要和一个制造商和一种型号的汽车打交道,他们的工作会有多容易。管理基础架构也是如此!只要确保你的新标准版本仍然与应用程序或平台一起工作。


Complete guide to the Cloud and Dictionary

获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


4.测试,测试,部署

因为您的代码将成为管理和重新部署服务器的事实标准,所以请确保它能够工作!保持对每个版本的测试,并确保系统在部署后立即工作,无需额外的配置。如果没有,找出原因并修改代码。

当该说的都说了,该做的都做了,并且您准备好实现时,您将不得不决定是将您的代码应用到现有的系统中,还是用一个新的系统来替换它。不管怎样,高兴吧!。。。把旧系统踢到路边。

5.重复使用你创造的东西

现在,您的机器已经重新联机,不会再给您带来任何麻烦,是时候用另一台机器重新开始了。

这不可能是唯一需要修理的机器。像以前一样,从信息收集开始,然后继续下一步。将您所编写的代码应用到您企业的其他系统中。

控制失控的服务器对您部门的底线和您的心理健康非常重要。使用 Puppet,您会慢慢地发现自己有了更好的基础设施,需要解决的问题更少,并且有更多的时间从被动转变为主动。


做一个木偶大师

准备好成为傀儡大师了吗?(假设你不是想成为一名口技表演者或组建一支重金属乐队,那你来对地方了!)在 ACG 对初学者友好的木偶入门课程中学习木偶如何工作以及何时使用它。

如何使用微软 Azure 入门人工智能

原文:https://acloudguru.com/blog/engineering/how-to-get-started-with-ai-using-microsoft-azure

你是否曾经想要创建自己的人工智能解决方案来进行预测或正确检测图像中的对象?你有没有想过“我怎么入门 AI?”在这篇文章中,我们将讨论如何以及从哪里开始学习人工智能的基础知识,以及如何在 Microsoft Azure 上充分利用人工智能。


蔚蓝你的事业成功

从 ACG 开始通过微软 Azure、AWS、谷歌云等领域的课程和实际动手实验室改变你的职业生涯。


人工智能(AI)如今变得越来越普遍。从自动驾驶汽车和家庭自动化到会走路、会说话的机器人!好吧,最后一个没说太多,但是我们快到了!(与此同时,至少我们已经掌握了如何让机器人变得令人毛骨悚然。)

准备好了解更多关于如何与 AI 相处以及 Azure 如何帮助您开始学习之旅的信息了吗?让我们开始吧!

什么是人工智能?

人工智能(或 AI)是使用软件或计算机系统来复制人类的行为或动作,如语音识别或视觉感知。

举个常见的例子,想想语音助手——比如 Siri、Cortana 或者 Alexa。它们像人类一样“听到”声音并做出反应。自动驾驶汽车和下棋的计算机是人工智能的其他例子。

我如何开始学习人工智能?

学习一项新技术总是令人生畏的。有这么多地方可以开始,通常主题会非常复杂——特别是如果你来自非技术背景。

不幸的是,人工智能也不例外。。。

但是等等!好消息是,微软已经认识到这一挑战,并推出了人工智能基础认证(众多 Azure 认证之一),旨在给你投身人工智能的信心。

更好的消息是,我们在一个名为 AI-900:微软认证 Azure 人工智能基础的云专家那里开设了一门课程,旨在带你从对人工智能一无所知到通过 AI-900 认证!

学 AI 需要有技术背景吗?

不要!即使你来自非技术背景,我们的 AI-900:微软认证 Azure AI 基础课程也不需要任何编码技能。我们从基础开始,逐步提高,直到你准备好通过人工智能基础考试。


Complete guide to the Cloud and Dictionary

得到蔚蓝云痛苦辞典
说云不一定要辛苦。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取 Azure 中一些最痛苦术语的简洁定义。


充分利用 Azure 上的人工智能的 3 个技巧

现在我们知道了从哪里开始,让我们来看看在 Azure 上最大限度利用 AI 的三种方式。

1。阅读文档并探索人工智能演示

你会看到“阅读文档”在云专家那里出现了很多次。这并不是最激动人心的任务,但是阅读文档是使用云计算的重要组成部分。

在人工智能的背景下,你应该看看你正在使用的任何服务的文档。

例如,如果你正在使用 Azure Face,请确保查看它提供的文档和功能。(右此处。)

当你开始的时候,只看概述或者快速启动是一个好的开始。

一旦你对这项服务更加熟悉,并且想要构建一些东西,那么参考部分和操作指南就会变得非常有用。

此外,一定要看看微软的 AI 演示。这些将让您了解服务是如何工作的,并且可以在不需要自己进行任何编码或设置的情况下使用。

2。使用 Azure 上的机器学习工具

机器学习是大多数人工智能服务或功能的基础。因此,我们想要很好地理解它是如何工作的,并利用 Azure 提供的工具是有意义的。

首先是 Azure 自动化机器学习,如果你刚刚开始,这是很好的,因为它将帮助你自动化大部分过程,并给你一个工作模型,你可以部署和使用它来开始进行预测!

我们的第二个选择是 Azure 机器学习设计师。当您想进一步设计自己的管道并调整各个方面以获得性能更好的模型时,这是非常好的。

3。亲身体验各种服务

最后,你要确保你获得了各种人工智能服务的实践经验。这些选项从我上面提到的机器学习选项到 Azure Custom Vision、Azure Face 等等。

通过动手实践,你将能够更快地了解人工智能是如何工作的,并且你将处于一个很好的位置来制定你自己的人工智能解决方案!

增加你的人工智能智商

现在是开始使用人工智能的最佳时机——而且从未如此简单!在我们的 AI-900 课程和您将在网上找到的工具和资源之间,您将能够为人工智能的未来奠定坚实的基础,并获得进入人工智能世界的起点。在你知道它之前,你将会建立你自己的人工智能解决方案来接管世界!(注:请不要创造一个 AI 解决方案来接管世界。)

想要跟上所有事物的蔚蓝和云?在 YouTube 上订阅一位云专家的每周微软 Azure 新闻(以及其他云提供商的新闻)。你也可以在脸书上喜欢我们,在推特上关注我们,或者在 Discord 上加入对话。

如何在云专家 GCP 上开始使用基础设施即代码(IaC)

原文:https://acloudguru.com/blog/engineering/how-to-get-started-with-infrastructure-as-code-iac-on-gcp

想知道如何在谷歌云平台(GCP)上开始使用基础设施即代码(IaC)吗?好吧,如果你对 GCP 有所了解,但对 IaC 了解不多,那么我有一个故事给你!聚集起来,大师们,来听一个关于 IaC、GCP、一个叫做谷歌部署管理器的工具和一个叫罗伊的人的故事。

从前…

从前,有一个叫罗伊·g·比夫的人。他是 Virtucon 公司的新实习生。他的第一个任务是熟悉 Google Cloud Deployment Manager。他在办公桌前坐下来,在那里他找到了下面的架构图。

“嗯,”罗伊想。尽管罗伊熟悉谷歌云平台的基础知识,但他之前从未使用过部署管理器。

他决定做一些严肃的研究(也就是快速的谷歌搜索)来挖掘一些关于谷歌云部署管理器的信息。Roy 了解到,Deployment Manager 是一个 GCP 工具,用于将基础架构定义为可重用模板的代码。

Roy 对图表有了更多的了解,他决定应该使用云外壳向部署管理器 API 提交一个配置文件。然后,部署管理器将使用计算引擎 API 来请求所需的资源,即使用默认 VPC 网络的 VM 实例。

罗伊匆匆写了一份清单,以确保他把所有的事情都安排妥当。


设置多台服务器?我们都知道在几台服务器上连续运行命令是乏味且容易出错的。查看我们的动手实验室,学习使用引导脚本在谷歌计算引擎中自动完成新服务器的基本设置。


Google 云部署管理器清单

  • 启用了部署管理器和计算引擎 API 的 Google 云项目
  • 定义资源和项目信息的配置文件
  • 将配置文件发送到部署管理器 API 的能力

让我们看看 Roy 是如何完成这三项任务的。


对 Amazon Web Services 上的基础设施代码感兴趣?
查看AWS 上的 IaC 指南


部署管理器配置文件

Roy 继续阅读关于使用云部署管理器的文档。在早期的项目启动同步中,Roy 获得了一个启用了正确 API 的 GCP 项目。

他的下一步是学习更多关于用于以代码形式设计基础设施的配置文件。他了解到配置文件描述了要在 Google 云平台上创建或配置的资源。每个资源都有三个在 YAML 文件或 Python 模板中定义的组件**。YAML 文件必须包括资源部分。**

资源 定义
名称:第一虚拟机 资源名称
类型 : compute.v1.instance 我们想要创建的资源类型
属性: 此资源类型的参数

Roy 知道,在代码文件的资源部分,他需要添加一个关于要创建的资源的名称、类型和属性。这不是很难编码,也很容易记住。

如果 Roy 想创建一个不同的资源,比如说一个 VPC 网络,他会将类型改为 compute.v1.network 并使用与网络资源相关的属性。Roy 收藏了下面的站点,它提供了一个所有支持的资源类型的列表。

突击测验

下面是一个配置文件的摘录。关注一下 my-first-vm 实例的属性,您能确定属性中的每个主要参数定义了什么吗?

在思考上述问题时,Roy 注意到有四个不同的参数用于 compute.v1.instance 类型,它们是:

  • zone: 指定将在 Google Cloud 中创建资源的区域
  • machineType: 指定机器大小——考虑实例的内存和 RAM
  • disks: 指定要使用的磁盘类型,如果是引导磁盘,则指定要安装的操作系统映像
  • **网络接口:**指定 VPC 网络,需要外部 IP 地址

罗伊还注意到了文件上的凹痕图案。Roy 记得配置文件是用 YAML 结构编写的,它使用缩进来分隔资源、参数(属性)和值。

对配置文件有了很好的理解后,Roy 接下来需要将文件传递给部署管理器 API。根据图表,要使用的工具是 Google Cloud Shell

在幕后,Roy 用 Google 项目细节更新了示例配置文件。

谷歌云外壳

Roy 之前在准备 Google Certified Associate Cloud Engineer 考试期间使用了 Cloud Shell,因此他记得 Cloud Shell 是一个基于网络的终端,连接到一个预装了工具的容器化实例,以便与 Google 云平台进行交互。

云壳预装了 Google SDK。Roy 决定将配置文件提交给部署管理器 API,并使用 Google Cloud Shell gcloud 命令行工具。

设置配置文件

罗伊连接到谷歌云控制台,并在他的网络浏览器中启动了云壳连接。进入终端后,Roy 验证他是否在正确的项目中,并在活动的配置文件中设置区域。

接下来,罗伊推出了云编辑器,一个有用的基于云的 IDE 工具。在编辑器中,Roy 在一个已知的位置创建了一个名为roys.yaml的新文件。(文件的扩展名需要是 YAML 格式。)

Roy 然后将在该网页上找到的示例配置文件复制并粘贴到编辑器中。Roy 记得他需要将标记为“ My_Project 的部分更改为他的项目名称。(这个完成的比较早,不过是个例子让你知道 Roy 改了什么。)

也许您还想更改虚拟机名称或用于部署的网络?使用此链接下载或复制 roys.yaml 文件,以便在您的 Cloud Shell 实例中跟进。

使用 gcloud 部署配置文件

完成后,Roy 就可以部署文件了。Roy 使用命令行界面切换到保存 roys.yaml 配置文件的目录。

Roy 使用下面的命令通过 Cloud Shell 向部署管理器 API 提交资源请求。

gcloud deployment-manager deployments create roys-test --config roys.yaml

  • gcloud 是谷歌 SDK 工具
  • 部署管理器是资源
  • 部署是我们需要的服务
  • 为了创建一个名为 roys-test 的部署
  • 使用配置文件命名为**<roys . YAML>**

部署经理

单击 submit 后,Roy 观察了部署管理器进度指示器。15 秒钟后,他收到了一条返回消息,表明操作已经成功完成。

Cloud Deployment Manager 非常出色地让您知道文件中是否有任何错误,以及如何修复它们,所以不要担心:如果您遇到错误,请列出更改列表并重试。

在 Roy 的案例中,一切都按计划进行,他使用 gcloud compute instances list 命令查看新部署的详细信息。(部署是使用部署管理器部署的资源的名称。)

删除资源以降低成本

在故事的这一点上,Roy 打破了第四堵墙,并提醒我们在结束时删除 Google Cloud 测试资源。(我们不希望你拿个账单,怪这个故事。)所以要像罗伊一样。不要忘记使用这个命令删除项目中的资源——如果您更改了它,用您的部署名称替换 roys-test.yaml

gcloud deployment-manager deployments delete roys-test

通过完成上面的步骤,你(或者更确切地说,Roy)应该在 Google Cloud 上的项目中创建了一个 VM。从此每个人都过着幸福的生活。

掌握将基础设施作为代码进行管理

像所有技能一样,将基础设施作为代码来管理需要实践。谷歌有一个很好的关于使用部署管理器的演练。但是你可以亲自去学习如何在谷歌云平台上以代码形式管理你的基础设施,这是一门名副其实的云大师课程在 GCP 用部署管理器以代码形式管理基础设施。

培养技能,成为现实世界中的专业云架构师。Google Certified Professional Cloud Architect课程旨在高效教授专业云架构师认证所需的技能,即使用 Google Cloud 技术设计、开发和管理动态解决方案,以推动业务目标。看看您是否具备通过当今最具挑战性和最受欢迎的云计算认证的条件。

Explore using Google Cloud Deployment Manager as your tool of choice for orchestrating infrastructure needs on GCP in this course from A Cloud Guru.

如何在云职业生涯游戏中获得金牌

原文:https://acloudguru.com/blog/engineering/how-to-go-for-gold-in-the-cloud-career-game

对云人才的需求非常大,这导致了超高的薪水、丰厚的津贴和面向未来的职业道路。但是这到底是什么意思呢?

雇主们竞相寻找拥有云计算技能的员工

LinkedIn 连续多年将云计算列为最受欢迎的硬技能之一,并给出了以下 2021 年的 T2 评估,称雇主越来越多地寻求和投资围绕 T4 AWS(或亚马逊网络服务)的技能。

“现在,全球各地都非常需要技术技能,因为公司希望保持竞争优势,并通过创新创造成功的记录。今年,领英顶级公司的员工在 AWS (增长 42%)、 Python (增长 25%)和机器学习(增长 23%)方面增长了技能——所有这些技能都在推动几乎每个行业的创新

雇主寻找的不仅仅是 AWS 技能。对微软 Azure 技能的需求也在上升,尤其是在企业组织中——95%的财富 500 强公司都在使用微软的云。谷歌云 (GCP)技能也很抢手,GCP 认证经常高居薪酬最高的云认证榜首。

随着无数公司寻求云人才,投资云技能可以帮助员工在当前的组织中晋升或获得新的工作(今天大约有 120,000 人列在实际上是上)。

云工程师的平均工资为 117,000 美元

听起来不错,是吗?但是让我们谈谈报酬。跳槽可能会让人觉得是一项艰巨的任务。值得你付出努力吗?

事实上报道目前美国云工程师的平均基本工资是 117,360 美元(外加 10,000 美元的年度奖金)。

不算太寒酸。当然,你的里程数可能会因地点而异(或者在日益增长的远程优先的工作世界中可能不会如此),但简而言之:如果你正在寻求加薪和更多机会,投资发展你的云技能可能是明智之举。

但是你从哪里开始呢?


Top Paying Cloud Certifications and Jobs

看点:解决“无经验”的云招聘问题
需要经验才能得到工作,但需要工作才能得到经验。这是一个多云的第 22 条军规!观看免费点播的网络研讨会,了解帮助数十人获得第一份云计算工作的 ACG 挑战赛。


预备,预备,云!

无论你是一个完全的技术新人,希望开始你的云职业生涯,还是有一些经验并希望掌握新技能,云大师的实践学习方法都可以让你走上职业成功之路。有了 ACG 的支持,您可以获得专家指导和实践,让您的云事业有一个良好的开端。

考虑一下云大师学员 Thad McMullen 的职业生涯。Thad 在 3 个月内工资翻了一番,从一份服务台工作转到了云计算职业。

凭借 400 多门课程和 1,800 多个动手实验室,您可以微调您的云培训方案,以满足您的确切需求。今天就开始为你梦想的工作进行培训。95%的 ACG 用户表示我们的工具和内容直接帮助了他们的职业生涯。

现在是开始云计算生涯的最佳时机。

在您的云计算职业生涯中坚持到底

说到云技术,游戏规则总是在变。幸运的是,有一个云计算专家,很容易保持领先。

为了帮助您抢占先机,请查看我们的当前促销和交易以获得 ACG 会员的最优惠价格。或者注册一个免费账户,查看我们目前的免费云培训阵容

后续步骤

一旦 ACG 站在你这边,你应该从哪里开始呢?

  • 查看 ACG 的学习路径,通过云学习内容绘制一条最适合你理想职业的路径。

  • 查看官方的 ACG 不和谐服务器。在这里,您可以提问、与朋友一起学习、赢取奖品,并在您的云之旅中寻求支持。

  • 云技术一直在变化。与云趋势保持同步,通过 ACG 的原创系列了解云的最新动态,包括:

面向云学习者的相关资源


在您的云计算职业生涯中获得金牌

立即加入游戏。开始掌握推动你职业发展的技能。

如何用亚马逊 S3 托管静态 HTML 网站

原文:https://acloudguru.com/blog/engineering/how-to-host-static-web-sites-with-amazon-s3

如何使用 AWS 实现持续优化

原文:https://acloudguru.com/blog/engineering/how-to-implement-continuous-optimization-with-aws

随着组织的快速成长和发展,持续优化(CO)的实施非常重要。有很多方法可以做到这一点,但在实践中执行起来可能会很棘手。持续优化有四个阶段:可见性感知管理和实际优化。让我们深入了解如何使用 AWS 来实现这一点。

能见度

这个阶段主要是收集数据。这包括监控您现有的架构、工作负载和资源。这可能需要使用 CloudWatch、Security Hub、QuickSight 和 Cost Explorer 等服务。您还可以利用 S3 透镜等服务功能,更深入地了解您的铲斗使用情况。

CloudWatch 可以用来监控你的资源使用情况。查看每个资源的使用情况。使用量有随机峰值吗?资源使用是否有一个时间表?你看到太多未被充分利用的资源了吗?这是你注意到所有这些问题的阶段。

(不熟悉 CloudWatch?查看这个动手实验

AWS 安全中心从其他几个安全服务收集信息,如 AWS 防火墙管理器、Amazon GuardDuty、Amazon Inspector 和 AWS Config。当您想要查看环境的安全状况时,这是您的首选服务。寻找任何需要解决的问题。AWS Security Hub 为每个调查结果分配低、中或高状态,以帮助您确定这些调查结果的优先级。

在优化的这一部分,你应该看看你的发现,并在头脑中得到一个好的游戏计划。计划解决这些发现,并找出所有需要纠正这些发现的人。我写了一篇关于安全中心的更深入的文章,你可以看看。

亚马逊 QuickSight 是一项商业智能服务。使用它来可视化您的环境和资源中的所有数据,包括来自亚马逊 S3、亚马逊红移和亚马逊雅典娜等服务的数据。它可以用来可视化从成本到使用的一切。亚马逊 QuickSight 也有一些非常惊人的功能,如可共享的仪表盘。您可以创建一个仪表板,并提供一个可以共享和嵌入的 URL,以防您想要在应用程序中实现它。

Amazon QuickSight Q 允许您对您的数据提出自然语言问题,并以可视化方式接收您的答案。Amazon QuickSight 分页报告可以帮助您创建、安排和共享报告以及数据导出。在优化的这一阶段,使用 Amazon QuickSight 将您的数据整合在一起,并通过仪表板可视化。使用仪表板帮助将信息传递给合适的人。更多详情,请阅读我们的 QuickSight explainer 文章

AWS Cost Explorer 是一款云财务管理服务。使用它来可视化、理解、预测和管理您的成本和使用情况。AWS Cost Explorer 可用于按服务、帐户、指定时间和节约计划或预订生成成本报告。报告也可以定制和共享。

尽可能细化这些报告,并确保您收集的信息与需要包含的内容相匹配。与最需要查看报告的合适人群保持一致。我做了一个关于 AWS 成本优化的深度课程,你可以查看一下,其中包括八个动手实验。)

意识

现在,我们已经看到了我们现有的架构、工作负载和资源的现状,我们准备传播意识。把我们收集的所有信息交给决策者。您还可以记录正在使用的托管服务的数量。这将帮助你更容易处理下一步。

这也是我们拜访老朋友信任的顾问的时候。值得信赖的顾问可以帮助我们了解架构在哪些方面不符合最佳实践。它从其他服务中收集信息以产生其发现。这些发现跨越几个类别:成本优化、性能、安全性、容错和服务限制。这些调查结果还按建议的行动、建议的调查和排除项目的检查进行优先排序。将这些发现传递给正确的团队。

管理

我们的下一步是采取行动。所有这些未充分利用的资源都需要削减。应该清除快照。应该释放未使用的弹性 IP。需要实施使用计划。应该为您的实例设置自动缩放。有几个像 Amazon RDS 这样的服务会自动缩放,因为它是一个托管服务。尽可能利用托管服务将有助于您提前控制成本,并从长远来看节省您的团队工作。

在此阶段,需要修补安全漏洞,这可能包括实施新服务或使用 AWS Systems Manager Patch Manager 更新实例。这还包括更新您的 AMIs,以确保随着您的发展,使用这些 AMIs 的任何实例都不会带来安全风险。从安全中心和值得信赖的顾问那里获得这些发现,并加以纠正。

如果没有预算警报,那就设置它,并设置它来提醒合适的人。控制您的云预算对于量化组织如何从总体上使用云中获益非常重要。

最佳化

这是我们的“最后”阶段。您已经纠正了所有问题,现在您正在微调现有的架构、工作负载和资源。通过使用 AWS Compute Optimizer 之类的服务来尽可能地收紧,或者在最初的可视化中获得更多的粒度。

虽然这是最后一个阶段,但这并不意味着你已经完成了。一点也不。优化的想法是一个持续的过程。尽可能经常地保持监测、观察、分享、纠正和重新开始。随着您的组织的发展壮大,您的架构也在发展壮大。引用伟大的沃纳的话,“进化或死亡。”

使用事件驱动架构实现可以轻松发展和增长的架构。这将有助于你更顺利地推进优化过程,而不会碰壁。

非常感谢你今天和我一起,大师们。记住:深呼吸,小步走,一如既往,保持牛逼!


从这些 10 个有趣的动手项目开始构建你的云计算技能,学习 AWS


受控故障的混沌工程

原文:https://acloudguru.com/blog/engineering/how-to-improve-your-systems-by-injecting-controlled-failure-with-chaos-engineering

混沌工程是关于将受控中断引入分布式系统,仔细研究行为,识别薄弱区域,并通过自动化提高弹性。

通过自动消防演习使您的系统防火。

随着微服务架构的发展,分布式系统变得越来越复杂,并且随着开发速度的增加,变得更加不可预测。

分布式系统可能有不同的服务,这些服务在隔离状态下运行良好,但是与其他系统组件的交互可能会产生不可预测的行为—通常只在生产环境中暴露和观察到。

“任何事情都会失败。我们会失去整个数据中心!这些事情会发生。”

Werner Vogels

那么,我们如何在这些弱点扩散到我们的生产系统并影响客户体验之前识别它们呢?

受控中断

通过精心设计引入受控中断的实验,我们可以主动识别和解决弱点,并摆脱功能失调和被动的事件响应模式。

中断可以简单到终止一个 Linux 服务器上的进程,或者导致为生产中的客户服务的实时流量段出错。

将受控中断引入复杂分布式系统的混沌工程示例实验包括:

  • 停止、重启和终止个虚拟机
  • 删除网络服务、路由器和负载平衡器
  • 模拟整个区域的故障
  • 在服务之间引入延迟、丢失消息主题、随机错误和崩溃的 docker 容器
  • 模仿第三方 API 的不可用性或造成额外的延迟
  • 模拟 I/O、CPU 和内存峰值的操作系统问题

虽然混沌工程技术仍在被较小的组织学习和采用,但这些方法已经在亚马逊和网飞这样的大型组织中制度化了。

失败即服务

为了支持受控中断,FaaS(Failure as a Service)架构是在伯克利大学的一项研究中提出的。

目标类似于消防演习。也就是说,在经历意外的故障场景之前,云服务可以不时地执行故障演习,以找出其恢复不起作用的真实部署场景。

该架构基于三个重要特征:

  1. 故障演练基于大规模的中断注入
  2. 针对在线生产环境进行故障演练
  3. 故障演练作为一项易于使用的服务可供组织使用

该架构包括以下组件:

  • FaaS 控制器是一种容错服务,它向虚拟机中运行的代理发送防火练习命令。
  • FaaS 代理运行在与目标服务相同的虚拟机上,并接收调用受控中断的钻取命令。
  • 监控服务收集有关目标服务的数据,这些数据用于故障演练场景和规范。

该体系结构为设计用于在大规模分布式系统中引入常见故障模式的系统提供了基本模型。

通过利用混沌工程的原理来应对大规模的在线故障,你的组织和系统可以发展成一种更有弹性的——防火的——文化。

您对混沌工程有什么经验,或者您的组织在采用这些技术时面临什么挑战?在推特 上留言或 联系我!


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


如何使用 Amazon event bridge API Destinations 将您的工作负载与 Slack 相集成

原文:https://acloudguru.com/blog/engineering/how-to-integrate-your-workload-with-slack-using-amazon-eventbridge-api-destinations

API 使您的应用程序能够发出请求、传递数据和使用第三方服务的功能。随着在 Amazon EventBridge 中 API 目的地的推出,您现在可以直接从 AWS 中的事件调用外部 API。这使得将您的应用程序与软件即服务(SaaS)提供商(如 ZendeskPagerDuty )集成更加容易,或者将数据发送到任何公开 REST API 端点的服务。

当系统状态发生变化或您的工作负载发生变化时,就会发生事件。它可能是存储在 S3 中的新对象,来自控制台的新登录,或者是在您的电子商务应用程序中处理的支付。事件是一个 JSON 结构,它包含了所发生事件的细节,并且有许多事件是由 AWS 服务自动生成的。

对于无服务器开发人员来说,API Destinations 使得构建微服务变得更加简单,这些微服务可以响应工作负载内部或 AWS 服务生成的事件。这种集成取代了定制代码,有助于管理机密和 API 密钥,并自动处理下游请求的排队和节流。

通过将 AWS 事件与外部服务相连接,您可以:

  • 当审批工作流在 AWS 步骤功能中完成时,通过 Stripe 发放信用卡退款。
  • 自动打开 GitHub 问题以响应 AWS CodeStar 中的构建失败。
  • 当 Amazon DynamoDB 表中的数据发生变化时,在 Contentful 中创建新的产品页面。

在这篇博文中,我将展示如何与 Slack 进行集成。这会导致基于您的 AWS 帐户中的事件的消息发布到 Slack 通道。

这个示例使用 AWS 无服务器应用程序模型 (AWS SAM)将解决方案部署到您的 AWS 帐户。您可以使用这里介绍的代码来构建与服务的类似集成,如 GitHubStr i peContentful

概观

在示例应用程序中,您为 Slack 配置 API 目的地,并配置 EventBridge 规则来路由特定事件。架构看起来是这样的:

  1. AWS 服务和自定义应用程序生成事件。这些都用 JSON 表示。
  2. 一个 Amazon EventBridge 事件总线接收事件。
  3. 规则评估事件是否匹配指定的模式。这些模式也用 JSON 表示,可以匹配传入事件的属性。匹配 Slack 规则的事件被转发到 API Destinations 目标。
  4. API 目的地配置使用一个包含授权秘密的连接和一个 API。API 包含目标 URL、http 方法和其他配置信息。
  5. 外部 API 接收事件。这个例子使用 Slack,但是目标 URL 可以是任何 REST API 或 webhook。

要开始,你需要安装 AWS CLIAWS SAM 。你还需要一个备用账户,但这里显示的一切都可以使用免费账户完成。

API 目的地功能如何工作

EventBridge 规则将匹配的消息路由到目标,API 目的地是一种目标。它由包含认证信息的连接API 配置组成。连接中提供的凭证安全地存储在 AWS 秘密管理器中。一个连接代表一个目标服务,一个连接可以被多个 API 和规则使用。

虽然您可以使用 Lambda 函数调用外部 REST API,但是 API Destinations 提供了额外的管理和配置选项,否则您将使用自定义代码编写这些选项。您可以配置一个每秒调用速率,这可以保护 API 免受突发流量高峰的影响,并有助于减少繁忙系统中的调用数量。

在内部,EventBridge 使用一个队列来保存超过此速率的请求。它可以缓冲这些消息长达 24 小时。API 目标的最大超时是 5 秒,服务将重试任何超过此超时的调用。


自动化 AWS 成本优化
AWS 为您的企业提供了前所未有的价值,但经济高效地使用它可能是一项挑战。在这个免费点播的网络研讨会中,您将了解 AWS 成本优化工具和策略的概况。


测试 API 目的地功能

Webhook.site 是一个有用的调试工具,可以回应任何传入的请求,帮助查看 API 调用中发送了什么。在创建 Slack 集成之前,首先部署一个 EventBridge 规则,该规则带有一个路由到 Webhook.site 的 API 目的地。

要部署此解决方案:

  1. 导航到https://webhook.site/并复制唯一的 webhook URL。

  2. 克隆代码回购:
    git clone https://github.com/aws-samples/serverless-patterns

  3. 更改目录:
    cd ./eventbridge-api-destinations/1-webhook-site

  4. 部署 AWS SAM 模板:
    sam deploy --guided

  5. 当提示输入 MyWebhookURL 时,输入步骤 1 中的 URL。

要测试应用程序:

  1. 将目录改为主代码库:
    cd ..

  2. 向 EventBridge 发送测试事件:
    aws events put-events --entries file://testEvent.json

  3. API 调用到达 Webhook.site,在这里您可以看到有效负载和头:

这个示例应用程序将整个事件负载传递给 API 端点。testEvent.json 中的测试事件出现在 Webhook.site 的原始内容字段中。

了解 AWS SAM 模板

该模板部署多个 AWS 资源。首先,它创建了一个新的事件总线:

 MyEventBus:
    Type: AWS::Events::EventBus
    Properties:
      Name: "MyEventBus" 

API 目的地由一个连接和一个 API 组成。由于这是一个开放的 API,所以授权被定义为 API_KEY,并由 Webhook.site 注销:

 MyConnection:
    Type: AWS::Events::Connection
    Properties:
      AuthorizationType: API_KEY
      Description: 'My connection with an API key'
      AuthParameters:
        ApiKeyAuthParameters:
          ApiKeyName: MyWebhook
          ApiKeyValue: MyAPIkey 

API 将调用端点设置为在部署期间作为参数提供的 URL。它将 HTTP 方法配置为 POST ,并将消息限制为每秒 10 条:

MyApiDestination:
    Type: AWS::Events::ApiDestination
    Properties:
      Name: 'MyWebhookTest'
      ConnectionArn: !GetAtt MyConnection.Arn
      InvocationEndpoint: !Ref MyWebhookURL
      HttpMethod: POST
      InvocationRateLimitPerSecond: 10 

最后,模板定义了一个规则,该规则确定一个事件模式,然后将目标设置为新的 API 目的地:

 EventRule: 
    Type: AWS::Events::Rule
    Properties: 
      Description: "EventRule"
      State: "ENABLED"
      EventBusName: !Ref MyEventBus
      EventPattern: 
        source:
          - "MyTestApp"
        detail-type:
          - "MyTestMessage"       
      Targets: 
        - Arn: !GetAtt MyApiDestination.Arn
          RoleArn: !GetAtt EventBridgeTargetRole.Arn
          Id: "MyAPIdestination" 

EventBridge 服务也需要调用 API 目的地的权限,因此 IAM 角色授予了这种访问权限。


获得痛苦的云词典
说云不一定要努力。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取一些最痛苦的云术语的简洁定义。


将 Slack 设置为 API 目标

首先,您必须配置对 Slack 帐户的 bot 访问。为此,请按照 中的说明为您的工作区 创建一个 bot,并记下 bot 的令牌(该代码以 xoxb 开头)和通道 ID。您需要这两个值来部署此解决方案。

API 目的地支持三种不同类型的授权:基本用户名和密码、OAuth 和 API 密钥。Slack bot 使用 OAuth 方法,在 Authorization 头中作为载体令牌传递。这个令牌随每个 API 请求一起传递,使 Slack 能够验证发送者。

要部署松弛示例,请执行以下操作:

  1. 从终端,改变目录:
    cd ../2-slack

  2. 部署 AWS SAM 模板:
    sam deploy --guided

  3. 系统会提示您输入三个参数:

    1. MySlackToken:从 Slack 配置中输入 bot 令牌(这个从 xoxb 开始)。
    2. MySlackChannel:输入 Slack 中的频道 ID。
    3. MyEventBusName:接受默认值 MyEventBus ,因为该模板使用第一个示例中部署的相同事件总线。

要测试松弛集成,请执行以下操作:

  1. 将目录改为主代码库:
    cd ..

  2. 向 EventBridge 发送测试事件:
    aws events put-events --entries file://testEvent.json

  3. 该消息出现在松弛频道中:

了解 AWS SAM 模板

这个模板中使用的连接资源配置一个在 API 请求的授权头中传递的令牌。它在松弛令牌前添加“承载”关键字:

 Type: AWS::Events::Connection
    Properties:
      AuthorizationType: API_KEY
      Description: 'My connection with an API key'
      AuthParameters:
        ApiKeyAuthParameters:
          ApiKeyName: 'Authorization'
          ApiKeyValue: !Sub 'Bearer ${MySlackToken}' 

API 配置使用 Slack 的 Post Message API,并将调用速率限制为每秒 10 条消息:

 MyApiDestination:
    Type: AWS::Events::ApiDestination
    Properties:
      Name: 'MySlackNotifier'
      ConnectionArn: !GetAtt MyConnection.Arn
      InvocationEndpoint: 'https://slack.com/api/chat.postMessage'
      HttpMethod: POST
      InvocationRateLimitPerSecond: 10 

该规则使用与前面定义的相同的事件模式,过滤源为 MyTestApp 和细节类型为 MyTestMessage 的所有事件:

 EventRule: 
    Type: AWS::Events::Rule
    Properties: 
      Description: "EventRule"
      State: "ENABLED"
      EventBusName: !Ref MyEventBusName
      EventPattern: 
        source:
          - "MyTestApp"
        detail-type:
          - "MyTestMessage"       
      Targets: 
        - Arn: !GetAtt MyApiDestination.Arn
          RoleArn: !GetAtt EventBridgeTargetRole.Arn
          Id: "MyAPIdestination"
          InputTransformer:
            InputPathsMap:
              text: $.detail.event
            InputTemplate: !Sub >
              {
                "channel": "${MySlackChannel}",
                "text": <text>
              } 

在第一个示例中,整个事件负载被传递给目标。然而,Slack 需要特定的 JSON 属性,所以它使用一个输入转换器从有效负载中提取这些属性。输入路径映射部分定义了有效载荷的变量,而输入模板嵌入了 AWS SAM 参数和输入路径变量。结果是您可以配置一个有效负载来匹配 API 的特定需求。

结论

使用 API 目的地,您可以使用 EventBridge 调用第三方 API,而无需编写任何业务逻辑。该服务提供可配置的节流和安全的密钥管理,同时为超过此限制的消息缓冲长达 24 小时的消息。

通过过滤由 AWS 服务或定制应用程序生成的事件,您可以使用这种集成来扩展工作负载的功能。API Destinations 构建于现有的 EventBridge 功能之上,引入了连接API 资源来帮助配置凭证和定义 API 端点。

在这些例子中,您将消息发送到 webhook 调试服务和 Slack。使用所示的方法,您可以修改模板和有效负载格式来过滤不同的事件,并与几乎任何外部 REST API 端点集成。

要部署这些模式和其他模式,请参阅无服务器世界中新的无服务器模式集合。想了解更多无服务器提示和技巧吗?查看我们的 6 款最受欢迎的工具,让无服务器过渡变得轻而易举!


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。

通过应用服务环境在 Azure 中隔离您的应用

原文:https://acloudguru.com/blog/engineering/how-to-isolate-your-apps-in-azure-with-app-service-environments

在这篇博文中,我们将讨论如何使用应用服务环境来帮助保护 Microsoft Azure 中的应用。

在云中构建 web 和无服务器应用变得越来越普遍。当你想到利用像微软 AzureAWSGCP 这样的云提供商变得越来越容易时,你就会明白为什么了。

云计算可以让您更轻松地部署可扩展、高性能、甚至可全球访问的应用程序,通常比传统的托管平台省力得多。

然而,还有一些东西也变得越来越常见:头版新闻报道公司应用程序和数据的安全漏洞。


通往更好职业的钥匙

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


如何在 Azure 中隔离应用?

因此,如果您正在询问(或被询问)有关安全性的问题,您并不孤单。你可能会被问到的一个具体问题是:我如何将我的应用程序与其他客户隔离开来?

有几种技术可以保护 Azure 中的应用。在这篇博客中,我们将通过了解应用服务环境来关注一种特定的方法。

有哪些 App 服务环境?

应用服务环境(也称为 ASE)允许您通过使用隔离的计算和虚拟网络资源在 Azure 中托管应用程序,因此您的应用程序可以与其他客户工作负载更加隔离。

你为什么要这么做?如果你正在构建一个必须遵守严格标准的应用程序,这通常是很重要的——比如在处理机密信息时。

为了理解这是如何工作的,以及为什么这很重要,我们将看看 Azure 应用服务的幕后,并特别关注它与应用服务环境的不同之处。因为你将会了解到,应用服务环境实际上很容易建立和运行,并且与 Azure 应用服务非常相似(只是更具隔离性)。

什么是 Azure App 服务?

如果你在 Azure 中构建一个 web 应用,你可以使用 Azure 应用服务。Azure 应用服务是一种流行的 PaaS 产品,可以简化 web 应用部署和托管。Azure 应用服务提供负载平衡、自动扩展和 SSL 加密等功能,而无需管理底层基础设施。

Azure App Service 还支持 Azure Functions,这是一种 Azure 服务,通过允许您专注于正在实现的功能的单独代码,来帮助您构建无服务器应用程序。您可以配置触发器,以便代码只在需要时运行,并简化与其他 Azure 服务的集成。

当你使用 Azure App Service 时,你可以以比你自己管理所有必需的基础设施的成本低得多的价格获得所有这些功能。

应用服务应用是否运行在共享基础设施上?

云提供商如何提供比你更便宜的服务?通过规模经济。Azure App 服务是一个多租户服务。也就是说,许多客户与您共享相同的基础架构。

微软确保你的应用与其他客户分开,但当你保护你的解决方案时,了解其他客户确实与你共享服务元素是很重要的。

使用 Azure App Service 时,您的应用需要负载平衡、前端连接、出站连接和计算来执行代码。根据您使用的是共享应用服务计划还是专用应用服务计划,许多组件将与其他人共享。

这对于云计算来说很正常。其他人(如微软)管理许多客户共享的基础架构。这也是为什么它有助于理解云中的共享责任。

那么,如果你想在云中开发一个解决方案,但是不允许使用共享基础设施,会发生什么呢?

在处理必须保持安全的信息时,这种情况很常见。例如,对于某些政府或国防机构,可能不允许在共享基础架构上处理最高级别的机密信息。

为什么要使用 App 服务环境?

在这些场景中,有可能以更隔离的方式利用应用服务功能。现在可能已经不足为奇了——您可以通过使用 ASE 来实现这一点。

尤其是使用 ASE 第 3 版,将您的 Web 应用或功能应用部署到隔离的基础架构变得非常容易。所有这些对开发者体验的改变都很小,并且可以访问普通应用服务应用可用的相同类型的功能。

使用 ASE 隔离基础架构有两种主要方式。

  • 首先,您可以利用专用主机,这意味着您的应用将在其上运行的底层虚拟机管理程序仅对您可用。不再与其他顾客分享。

  • 其次,您的应用服务环境可以部署到您自己的虚拟网络中,确保您能够更好地控制应用的网络安全、入口和出口。

如果你正在构建一个只能内部访问的应用,你可以使用内部 ASE。这确保了只允许通过虚拟网络进行访问。另一方面,如果仍然需要公共可访问性,您可以部署外部 ASE。

配置好应用服务环境后,部署 web 或功能应用的流程与普通应用服务应用的流程大致相同。您将像以前一样配置一个应用程序,但不是为您的位置选择像 West US 这样的位置,而是选择您之前为您的位置配置的 ACE。

使用 ASE 时仍然需要应用服务计划,但您将选择一个独立的计划。这是指你的应用程序将与其他应用程序隔离开来。您可能还会注意到,该计划提供了与以前相同的功能,但具有更大的规模,这是一个额外的好处!

了解有关 Azure security 的更多信息

安全性通常是一种平衡行为,需要考虑很多事情。您可能想知道如何保护您用于 ASE 的虚拟网络,甚至想知道如何保护一个普通的应用服务应用。

如果你有兴趣了解更多关于在 Azure 中保护许多服务的信息,从身份到应用程序秘密,你可能会对我们的 AZ-500 微软 Azure 安全技术课程感兴趣。这是一门深入的实践课程,旨在通过 Azure 解决方案的实际操作为您准备 AZ-500 考试。


Complete guide to the Cloud and Dictionary

得到蔚蓝云痛苦辞典
说云不一定要辛苦。我们分析了数以百万计的回复,找出了最容易让人犯错的概念。抓住这个云指南获取 Azure 中一些最痛苦术语的简洁定义。

如何让您的 AWS Lambda 功能保持温暖

原文:https://acloudguru.com/blog/engineering/how-to-keep-your-lambda-functions-warm

了解如何安排 CloudWatch 事件规则来解冻 AWS Lambda 函数,并帮助将响应时间从 3 秒减少到几百毫秒。


通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


使用无服务器架构有很多优点,有数百篇优秀的文章赞美它的优点,但一个令人痛苦的缺点是不常用的无服务器功能的响应时间通常很慢。

这是因为,有时,创建函数的容器不会被重用。因此,对于某些请求,AWS 需要在处理请求之前用您的代码重新提供一个容器。

对于后台任务,这显然不是问题。但是,如果你有一个由用户输入触发的任务,并且在收到响应之前阻止你的应用程序,那么这个函数必须是热的,这样你的响应时间可以是几百毫秒,而不是 3 秒。

另一方面,有时您的代码只是冻结在一个容器中,在处理新的请求之前可以“解冻”,这只需要几毫秒。

理想情况下,AWS 会有一个类似“保持温暖”的选项,您可以切换并同意支付更多费用来让 AWS 让未使用的容器一直运行。唉,这还没有(还没有?)已经实现,所以我们的下一个最佳选择是使用 CloudWatch 计时器。

那么如何才能让我们的 AWS Lambda 函数保持温暖呢?正如在栈溢出中所建议的,你需要每 5-15 分钟 ping 你的 Lambda 函数来保持它们的热度。这比你想象的要容易。

1.创建 Amazon CloudWatch 事件规则

首先,打开 AWS 控制台(是的,有一种方法可以通过 CLI 做到这一点),然后进入 CloudWatch 。从那里,转到Events并点击Create rule。将事件类型设置为Schedule,每 1 分钟运行一次该事件。

然后从Targets列表中选择您想要的 Lambda 函数并保存。然后,您需要创建一个名称和描述。

就是这样!你现在每 1 分钟检测一次 Lambda 函数。

2.测试 Amazon CloudWatch 事件规则

为了测试我们的计时器是否真的让函数保持活动,我们将创建一个函数,在全局范围内(在单个函数之外)将惟一的awsRequestId存储在一个名为containerID的变量中。

从技术上讲,这不是容器的 ID,但它会告诉我们一个容器是否被后续请求重用,因为我们只在尚未定义值的情况下写入它。

在部署这个函数、设置一个计时器并等待一段时间后,您可以检查您的 CloudWatch 日志,您会看到containerID在请求之间持续存在,这告诉我们,如果调用之间的间隔少于 1 分钟,AWS 会保持函数的热度。

所以为了科学起见,我继续为 1-15 分钟,以及 30、45 和 60 分钟的间隔设置了间隔计时器。这应该让我们知道 AWS 能让这些容器保温多长时间。

3.检查结果

快进 8 小时,我们就有结果了。我希望结果足够有趣,可以创建一个漂亮的图表,但是相反,我发现所有函数都是这种模式。

基本上,所有 Lambda 函数在实验期间都保持温暖,除了在世界协调时 14:00 左右的某个时候,AWS 决定重置所有容器,而不管它最近是否被使用过。

即使是 1 小时的 ping 也连续几个小时使用同一个容器。

Logs showing the 1-hour ping continuing to use the same container for several hours in a row.

These requests were 1 hour apart, but still used the same container.

所以看起来(至少从这个实验来看)脉冲的频率并不那么重要…

无论哪种方式,每 15 分钟左右 ping 一次仍然几乎不花什么钱,所以没有理由吝啬你的 CloudWatch 定时器。


获得更好职业所需的技能。

掌握现代技术技能,获得认证,提升您的职业生涯。无论您是新手还是经验丰富的专业人士,您都可以通过实践来学习,并在 ACG 的帮助下推进您的云计算职业生涯。


Sam Corcos 是 CarDash 的联合创始人,这是一家全方位的汽车礼宾服务提供商,消除了汽车服务、护理和维护的麻烦。他也是 学凤凰 的作者,以及 视线图 的创始人。

如何通过 AWS 认证 DevOps 工程师-专业考试

原文:https://acloudguru.com/blog/engineering/how-to-pass-the-aws-certified-devops-engineer-professional-exam

如果你正在考虑参加 AWS 认证 DevOps 工程师-专业认证考试,我在这里帮助你粉碎它!以下是我对如何准备考试的一些建议,以及考试中不同的领域所涵盖的内容。


加速您的职业发展

从 ACG 开始通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室改变你的职业生涯。


如何通过 AWS 认证考试?

在我们谈论 DevOps Pro 考试之前,这里是我关于参加和通过 AWS 认证考试(或任何认证考试,就此而言)的顶级提示。

  1. 快速浏览问题,做好复习标记
    考试开始时总是有些紧张。所以我试着快速行动。我会浏览一个问题的内容,如果我感到有点不确定,我会很快标记它以便复习,然后继续下一个问题。

    当你在考试中前进时,一个问题或答案常常会唤起你对你标记为复习的东西的记忆。我几乎总是发现,我标记为复习的问题在第二次阅读时更容易回答。

  2. 不要先看答案
    先看那些选择题答案很诱人,但是不要!当我阅读一个问题时,在查看答案之前,我会思考哪些 AWS 服务可能是相关的*。当我看到这些选择时,就很难让我改变主意了。这是筛选和剔除不正确答案的好方法。*

  3. 确定关键词和术语
    我最有效的省时技巧就是使用关键词和术语。场景中提到“实时”了吗?这通常与亚马逊 Kinesis 有关。当你看到那个关键词时,跳到答案并搜索 Kinesis。这样可以快速排除错误答案。

    您是否需要保护 S3 的数据(如个人身份信息)?这让亚马逊玛西尖叫。快速扫描给 Macie 的答案,剔除不提 Macie 的烂苹果。长期储存?意思是冰川。建立用于开发运维的服务列表,研究该服务的服务页面和常见问题,找到关键词和术语,并创建您自己的参考列表。

    本着节省时间的精神,就参加我的 DevOps Pro 培训课程!我确保在整个课程中识别关键词和术语。

总的来说,我考试时的主要策略是动作要快。记住,每个问题你只有两分钟多一点的时间。在你知道的问题上节省时间。不要在困难的问题上磨磨蹭蹭。做好复习标记,继续前进!

AWS 认证 DevOps 工程师-专业考试涵盖哪些内容?

AWS DevOps 认证难吗?如果你了解你的东西就不会。让我们把事情按领域分解,并强调一些粉碎考试的顶级技巧。

领域 1: SDLC 自动化

这个领域主要关注关键的 AWS 开发工具——AWS 代码提交AWS 代码构建AWS 代码部署AWS 代码管道。我最喜欢的掌握这个领域的技巧是不要走,而是运行AWS 管理控制台,转到 CodePipeline,并开始构建!

这是关键——研究落差!从源阶段开始,展开下拉列表。可以用什么回购?都在下拉列表中。接下来是构建阶段。有哪些选择?点击下拉菜单。哦,对了,CodeBuild 或 Jenkins!等等,它说构建阶段是可选的。然后是部署阶段(也是可选的)。

对于我们可以部署的内容,有许多选项。研究下拉菜单并记住它。使用不同的选项(CloudFormation、CodeDeploy、Elastic Beanstalk 等)进行一些部署。),而且有戏。

域 2:配置管理和基础设施代码

该领域重点关注 AWS CloudFormationAWS OpsWorksAWS Elastic Beanstalk 。理解这些服务做什么,它们的用例,以及何时使用其中一个而不是另外两个是很重要的。

对于这个领域,理解部署方法也很重要,比如蓝/绿部署。对于 CloudFormation,了解助手脚本及其用例。

域 3:监控和记录

这个领域由亚马逊 CloudWatch亚马逊 Kinesis 主导。了解 Kinesis 的四种风格及其各自的用例。记住“实时”这个关键术语!

EventBridge 是 CloudWatch 事件服务的演进。但重点还是在事件上。CloudWatch 还没有被弃用, CloudWatch 警报还在。所以要做好准备,因为你可能会在考试中同时看到 EventBridge 和 CloudWatch。请将它们视为可互换的。

领域 4:政策和标准自动化

该领域涵盖了执行特定但相对简单的任务的服务。例子有 AWS 配置亚马逊检查员亚马逊守卫亚马逊 Macie 。了解他们的使用案例!这些可能是考试中容易的分数。并添加一些关键词和术语,如:个人身份信息(PII) = Macie。

如果您看到关键字“audit”或“auditing ”,请开始考虑 AWS 配置。请记住,可信顾问可以提供建议,但是对这些建议做些什么取决于您(您可以从可信顾问自动化中构建自动化)。

AWS 系统管理器类似于 Kinesis,因为它有几种不同的产品。了解每种产品,以及它能为您做什么。

领域 5:事故和事件响应

值得理解的是,域 4 和域 5 之间有一些交叉服务,如 Systems Manager 和 Kinesis。这个领域的一个关键主题是从自动化我们对事故和事件的响应的角度来思考。因此,考虑在自动化中充当连接器和触发器的服务,如亚马逊 SNSAWS LambdaCloudWatch Alarms亚马逊 EventBridge 事件

不要忘记混合环境!我们如何从本地服务器获取服务器日志?安装云观察日志代理。我们如何管理本地服务器?安装 SSM 代理。这些是需要学习和理解的事情。

领域 6:高可用性、容错和灾难恢复

这个域名告诉了我们太多东西——我们想要分散我们的资源。我们如何做到这一点?想想多 AZ 服务和技术(自动伸缩、负载平衡),不要忘记多区域服务(比如 Amazon DynamoDB 全局表)。

谈到灾难恢复,请描绘一个时间表。根据恢复时间目标(RTO ),在时间线上向前推进。我们还能消沉多久?有了恢复点目标(RPO ),在时间线上向后移动。我们能承受多少数据丢失?了解这些问题的解决方案,你就可以开始了。

想了解更多关于成为 DevOps 工程师的信息吗?

这是一个关于如何应对 DevOps 工程师专业考试的快速分析!但是我的最高小费?查看我的新 AWS 认证 DevOps 工程师-专业培训课程,包括动手实验和创新图形,以增强视觉学习!

如果你还在寻找更多关于在 DevOps 工作的好处的信息,看看这些好帖子:

如何准备 RHCSA EX200 考试

原文:https://acloudguru.com/blog/engineering/how-to-prepare-for-the-rhcsa-ex200-exam

最近,我们推出了红帽认证系统管理员(EX200)考试准备课程。在新课程中,我们涵盖了您需要了解的所有 RHCSA 基本目标,RHCSA v8 考试中添加的两个新目标类别(“创建简单的 shell 脚本”和“管理容器”),以及最近添加的存储技术 Stratis 和虚拟数据优化器。

管理集装箱:入侵波德曼

集装箱如今风靡一时,这种流行已经进入了 RHCSA 考试。“管理集装箱”目标类别是考试和我们课程的新增内容。

RHCSA 容器目标包括:

  • 从远程注册表中查找和检索容器图像
  • 检查容器图像
  • 使用 podman 和 skopeo 等命令执行容器管理
  • 执行基本的容器管理,例如运行、启动、停止和列出正在运行的容器
  • 在容器内运行服务
  • 将容器配置为作为系统服务自动启动
  • 将持久存储附加到容器

从 7.6/8.0 开始,波德曼就可以在 RHEL 使用了,它是 Docker 的替代者。Podman 非常适合独立的容器环境,但它也是利用编排(如 Kubernetes 或 OpenShift)的大型环境的门户。

无论你是一个老手,还是对集装箱完全陌生,我们都会带你快速上手,在你知道之前,你就会精通波德曼集装箱。我们涵盖了启动容器、支持网络访问、添加持久存储以及使用 Podman 创建非根 systemd 容器的基础知识。通过课程和动手实验,您将了解到 Podman 和容器本身的强大功能。

k . I . s . s . s——了解它——简单的 Shell 脚本

Shell 脚本比 Linux 本身存在的时间还要长,它们是系统管理员工具箱中的一个重要工具。这个新增加的考试内容也在我们的课程中。

Shell 脚本目标包括:

  • 有条件地执行代码(使用:if、test、[],等等。)
  • 使用循环结构(for 等。)来处理文件,命令行输入
  • 流程脚本输入(1 美元、2 美元等)。)
  • 在脚本中处理 shell 命令的输出
  • 处理外壳命令退出代码

在本课程中,我们提供了一些简单的 shell 脚本,供您用来强化技能、练习新技能以及准备 RHCSA 考试。如果您想更深入地了解一个或多个脚本目标,我们还提供了对历史悠久的“Bash 脚本编写系统管理员指南”课程的参考。

Stratis——超级简单的储物方式

Stratis 存储是 RHEL 8 中的一项技术预览,在“管理分层存储”下的考试目标中有所提及是的,这是一块蛋糕使用。我们也没有把这道甜点留到最后;你会发现它就在课程中间!

Stratis 将 LVM 和 XFS 的概念结合成一个易于使用的界面。使用各种工具管理存储的时代已经一去不复返了。有了 Stratis,您可以用一个 CLI 来管理它们:stratis-cli。Stratis 守护进程 stratisd 在后台为你管理一切。

Stratis 是围绕存储池的概念构建的,这些存储池是从一个或多个磁盘或分区创建的。然后,从该池中创建卷,其中包含 XFS 文件系统。如果你是 LVM 的老手,这可能听起来很熟悉,对吗?

Stratis 可能易于使用,但它为存储游戏带来了一些高级功能,包括快照、精简配置和分层。这些功能非常强大,但由于 Stratis 管理界面,也很容易使用。

由于 Stratis 是一个技术预览版,很有可能你还没有得到它。别担心,我们会确保你得到你的甜点!

利用虚拟数据优化器最大化存储

自软盘时代以来,存储一直在不断发展,存储技术的最新发展是虚拟数据优化器(VDO),它包含在 RHCSA 考试目标“配置磁盘压缩”中。

自 RHEL 7.5 以来,虚拟数据优化器就一直伴随着我们,但它是当前 RHCSA 考试存储部分的重要组成部分。VDO 通过零数据块消除、重复数据消除和压缩实现了 Linux 中的内联式数据减少。您所要做的就是安装 VDO,提供一个块设备,并指定一个逻辑 VDO 卷大小。就是这样!您可以自由地将文件系统直接放在您的 VDO 设备上,或者您可能希望使用 LVM 将您的 VDO 设备分割成逻辑卷。可能性是无限的!

我们将探索独立的虚拟数据优化器(文件系统位于 VDO 之上),以及与 LVM 配对的 VDO。来获得优化吧!不需要软盘。

准备红帽认证系统管理员(EX200)考试

在我们的Red Hat Certified System Administrator(ex 200)考试准备课程中,我们将通过大量基于场景的课程介绍 Red Hat RHCSA 考试目标,这些课程旨在帮助您快速实现考试目标。这些课程附有额外的资源,使您能够根据需要更深入地研究这些主题。使用课程指南跟随课程,探索额外的 ACG 课程/课程/实验室进行强化,查看重要的 Red Hat 文档,等等。

除了课程之外,还有许多精彩迷人的动手实验。你将有机会卷起袖子直接进入主题,让你边做边学!

我们将把它们与考试挑战实验室结合在一起,它允许您在一个地方练习您所学的所有技能,为实际考试做准备。

所以,和我们一起戴上我们的红帽子,开始吧!

关于作者

我是汤姆·迪恩。我在 IT 行业工作了大约 25 年,最初是一名注册 Novell 工程师。我的重点是 UNIX、Linux、架构和许多其他相关技术。我在一个云计算专家那里做了一年多的讲师,向全世界教授 Linux。来和我一起准备 RHCSA 考试吧!


提升您的云计算事业。

加入云专家并获得课程、动手实验、测验和学习路径,这些将带你一步一步地从新手成为你所选择的云领域的专家。获得 7 天免费试用或查看我们的免费课程

如何保护你的服务器免受字典攻击

原文:https://acloudguru.com/blog/engineering/how-to-protect-your-server-against-dictionary-attacks

如何在 Azure 中快速应用策略

原文:https://acloudguru.com/blog/engineering/how-to-quickly-apply-policies-in-azure

在本帖中,我们将讨论如何使用 Azure Policy 在 Azure 环境中快速实现治理控制。

什么是 Azure 策略?

Azure 策略可帮助您在 Azure 资源上强制实施您组织的合规性要求。这可能有助于:

  • 出于安全考虑,限制对特定资源的访问
  • 通过限制虚拟机创建来降低成本
  • 将数据保存在世界的特定区域

通往更好职业的钥匙

立即开始 ACG 通过 AWS、Microsoft Azure、Google Cloud 等领域的课程和实际动手实验室来改变你的职业生涯。


使用 Azure 策略内置策略

要在 Azure 中快速应用策略,你需要首先从微软已经提供的内置策略开始。

这里没有必要重新发明轮子。你开始工作所需的大部分政策都已经存在。您可以快速拒绝、记录、更改或部署资源。一旦资源被创建、更新、删除,或者在 Azure 策略的正常评估周期(每 24 小时一次)期间,就会发生这种情况。

首先,在 Azure 的顶部导航菜单中输入“Policy”导航到 Azure Policy。Azure Policy 会自动填充到搜索菜单中,你可以在那里点击“Policy”。

接下来,您将单击左侧导航菜单中“创作”下的“任务”这应该看起来很直观,因为您正在尝试“分配”一个“策略”,所以从技术上来说,这使您成为一个“作者”,因为您有能力创建或创作策略。

从这里开始,您会在顶部看到“分配策略”或“分配方案”

旁注:计划就像策略一样,只是它们帮助您更容易地管理一组具有相同目标的策略。例如,如果您有十几个管理虚拟机合规性的策略,您可以创建一个虚拟机计划并添加、减少和管理计划策略,而不是一次应用一个策略。

出于我们的目的,我们将单击“分配策略”。

您将看到一些需要填写的选项卡和下拉列表。我们只想关注策略定义“下拉框”——我说的“下拉框”是指文本框右侧的省略号或肉丸菜单框。单击此处将打开“可用定义”页面,在这里您将看到所有精彩的内置策略。

要查找您想要开始的策略,您可以在“类型”旁边的搜索菜单中筛选策略

如果您首先键入想要管理的资源(例如,虚拟机),您将开始看到与该资源相关的所有可用策略。一旦你有了你想要的政策,点击“选择”,你将回到你的基本标签。

在“基本”选项卡上,您可以更改策略的范围,因为它将默认为您的订阅。您可以选择将其更改为更高的范围,如管理组,或者更低的范围,如资源组。您可以暂时保留默认选择。

如果您愿意,可以为您的策略取一个不同的名称,或者保持不变。

最后,写一个很酷的定义,瞧!你已经在 Azure 中快速应用了你的第一个策略。当然,这是在你点击“查看+创建”然后点击“创建”之后

了解有关 Azure 治理和合规性的更多信息

如果你觉得这篇文章有帮助,可以看看我的课程,Azure 上的治理和合规性介绍

这门入门课程旨在向您概述在您的云环境中有效使用 Azure 原生工具和框架以实现合规性和治理所需的微软最佳实践和方法。它涵盖了 Azure 中用于在 Azure 上实现治理的五种原生工具,并触及了一些常见的治理陷阱。


开始免费试用或查看本月免费云培训。你还可以在 YouTube 上订阅一位云专家的每周云新闻,就像我们在脸书上一样,在推特上关注我们,并在不和谐上加入对话。

如何在Azure 上运行无服务器 PHP

原文:https://acloudguru.com/blog/engineering/how-to-run-serverless-php-on-azure

随着 Azure Functions 自定义处理程序的到来,你现在可以在 Azure 上运行 PHP 无服务器应用。在本文中,您将看到如何通过让您的 PHP 项目读取 Azure 函数来利用这一新功能。

入门指南

无服务器应用程序的结构

Azure 无服务器应用具有以下文件夹结构:

├── HttpTrigger
│   ├── function.json
│   └── index.php
├── QueueTrigger
│   ├── function.json
│   └── index.php
├── deploy.sh
├── host.json
├── local.settings.json

每一个无服务器功能都存在于类似于HttpTriggerQueueTrigger的文件夹中。在这些文件夹中,你将有两个文件function.jsonindex.php

functions.json中,您将指定函数如何被触发,它接收什么参数,以及它返回什么,而index.php是包含您的函数逻辑的文件。要了解更多关于 Azure Functions 无服务器应用的结构,请看本指南: Azure Functions 开发者指南

对于 PHP,这是我们感兴趣的,你需要在你的函数文件夹中有一个index.php文件,就像上面的HttpTrigger例子一样。您的 PHP 代码必须遵循这些约定:

<?php
use Azserverless\Context\FunctionContext;

function run(FunctionContext $context) {
    $req = $context->inputs['req'];

    $context->log->info('Http trigger invoked');

    $query = $req['Query'];

    if (array_key_exists('name', $query)) {
        $name = $query['name'];
        $message = 'Hello ' . $query['name'] . '!';
    } else {
        $name = 'EMPTY';
        $message = 'Please pass a name in the query string';
    }

    $context->outputs['outputQueueItem'] = json_encode($name);
    $context->log->info(sprintf('Adding queue item: %s', $name));

    return [
        'body' => $message,
        'headers' => [
            'Content-type' => 'text/plain'
        ]
    ];
}
?>

您需要一个名为run的函数,它接受一个FunctionContext参数,该参数将包含您的函数接收到的输入,以及其他实用程序,如独白记录器。您还可以在$context参数中设置outputs,就像代码对outputQueueItem所做的那样,添加一个值,该值将在这种特定情况下被转发到一个队列中。

那么,这个FunctionContext是从哪里来的呢?它来自专门为 Azure PHP 开发的新的 Azserverless 库。

转到您的项目根文件夹,并在您的composer.json中添加以下依赖项:

"require": {
    "videlalvaro/azserverless": "*"
}

如果您没有安装 composer,请遵循此处的说明

然后在命令行上运行composer.phar install,这将获得所有需要的依赖项。

为 PHP 配置 Azure 函数

现在是时候告诉 Azure 函数如何运行你的 PHP 项目了。打开host.json。在该文件中,您应该添加一个顶级条目,指定该项目使用自定义处理程序运行:

 "customHandler": {
      "description": {
      "defaultExecutablePath": "php",
      "arguments": [
        "-S",
        "0.0.0.0:%FUNCTIONS_CUSTOMHANDLER_PORT%",
        "vendor/videlalvaro/azserverless/bin/serverless.php"
      ]
    },
    "enableForwardingHttpRequest": false
  },

我们告诉 Azure 函数如何执行 PHP,提供将请求转发给函数处理程序的vendor/videlalvaro/azserverless/bin/serverless.php文件的路径。

最后,我们需要告诉 azure 我们的应用程序将在PHP 7.4上运行。打开命令行,使用以下参数调用 Azure CLI :

az webapp config set --name your_app_name --resource-group your_resource_group --php-version 7.4

最后润色

在部署之前,确保配置您的local.settings.json文件,包括"FUNCTIONS_WORKER_RUNTIME": "custom"配置键/值和您的AzureWebJobsStorage连接字符串:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "custom",
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>;EndpointSuffix=<endpointsuffix>"
  }
}

最后,确保添加指南为 Azure 应用服务配置 PHP 应用中指定的 Kudu 脚本,以便composer在每次部署应用时运行,保持您的依赖关系最新。

就是这样!您应该准备好通过使用新的自定义处理程序特性将您的 PHP 应用程序部署到 Azure 功能中。

了解更多信息

如果您想了解更多关于本文所涉及的主题,请务必访问以下网站:

黑客快乐!

关于作者

阿尔瓦罗·维德拉是微软的一名开发者拥护者,他组织了 DuraznoConf。他是 RabbitMQ in Action 的合著者,并为计算机器协会撰写文章。你可以在推特上找到他的名字是 @old_sound

posted @ 2024-10-31 16:45  绝不原创的飞龙  阅读(14)  评论(0编辑  收藏  举报