写点什么

一文掌握 AWS,成为云计算工程师

  • 2018-07-22
  • 本文字数:3553 字

    阅读完需:约 12 分钟

如今,越来越多的人通过 AWS 来入门云计算。很多初学者都迫切地想要知道如何才能成为一名 Linux 管理员,于是我想通过本文详细介绍一下云计算的相关知识,希望能够借此来解答开发者心中的疑问。本文既包括 AWS 的基础知识,又包括复杂架构的自动化部署这样的高级操作。读者可以根据自己的背景和基础,选择自己感兴趣的部分阅读。

开始之前,我先假设你具备以下能力:
- 拥有初级或者中级的 Linux 系统管理技能。
- 至少熟悉一门编程语言或者脚本语言。不必特别精通,但是要有实际的编程经历。
- 愿意花时间去解决一些复杂的问题。
- 需要花费一点钱购买 AWS 服务,从而提高自己的技能。

本指南使用须知:
- 首先,本指南不会一步一步手把手地教你如何操作。
- 我会循序渐进地引导你。因此,你需要真正理解每一部分,然后再阅读下一部分。
- 遇到问题时你要善用谷歌搜索、AWS 文档以及 Stack Overflow 网站去寻找答案。
- 使用最正确的方式,不要只顾图快。当然,先用快速的方法完成,然后再进行重构也未尝不可。
- 在学习过程中充分理解之后再去服务器上进行实际操作。使用不到 50 美元的 AWS 版本即可完成本指南中的所有工作。重新构建的过程能够帮助你加深理解。
- 跳过开头先去阅读“成本分析”和“自动化”两部分的内容,阅读其他部分的时候保证这两部分的内容了然于胸。
- 最后,一定要多动手进行实际操作。此时不做,更待何时。

项目概况

本指南不是教你如何在 AWS 上开发网站。而是通过一个网站示例来介绍 AWS 提供给你的所有技术服务。通过概念的学习和实际操作,你能够对 AWS 有非常全面的了解。

本指南将从最基本的网页开始,最后使用极其便宜的 ASW 构建 Web 应用程序。虽然网站很小,但是无所谓。它可以做任何你想做的事情,可谓麻雀虽小,五脏俱全。

示例网站名为“每日财富”,每次加载页面随机显示一个财富值,在页面底部提供一个输入框和一个按钮,通过这两个组件向随机财富列表中添加新的财富数据。

帐户相关的基础知识

  • 创建一个 IAM 用户供你个人使用。
  • 为 root 用户设置 MFA,关闭所有 root 用户的 API 密钥。
  • 设置帐单提醒,以便超过指定的价钱后你能够及时知道。
  • 使用 API 凭证为你的用户配置 AWS CLI。
  • 本阶段目标:你可以使用 AWS CLI 查询你的 AWS 账户信息。

虚拟主机的基础知识

  • 部署 EC2 虚拟机并显示一个简单的静态网页,页面上呈现“每日财富网站即将推出”的字样。
  • 拍摄虚拟机快照,接着删除虚拟机,然后从快照中部署一个新的虚拟机,并选中基本的磁盘备份和磁盘还原功能。
  • 本阶段目标:你可以查看 EC2 实例提供的简单 HTML 页面。

弹性伸缩配置

  • 从虚拟机中创建一个 AMI 并将其放入弹性伸缩组中,确保至少有一个虚拟机在运行。
  • 给虚拟机添加弹性负载均衡器,并在两个可用区域之间实行负载均衡。
  • 本阶段目标:你可以查看来自两个 EC2 实例的简单 HTML 页面。你任意关闭其中一个,网站仍然可以访问。

数据库访问

  • 创建一个 DynamoDB 数据库表,并手动执行数据插入和检索操作,然后通过本地计算机上的脚本执行相同的操作。
  • 将你的静态页面重构为每日财富网站,使用 Node、PHP 或者 Python 都可以,对 AWS DynamoDB 数据表中的财富数据执行读取和更新操作。
  • 本阶段目标:你的网站现在可以在用户和会话之间将数据加载并保存到数据库中。

虚拟主机 PaaS

  • 将这个简单的网站重新部署到 Elastic Beanstalk 上。
  • 创建一个静态的 S3 Bucket,上传一些静态的页面文件和图片,并将这些资源添加到你的 Elastic Beanstalk 网站。
  • 注册一个域名,或者使用现有的域名,总之你得有一个。然后配置 Route53 域名服务。把 www.< 你的域名 >.com 指向你的 Elastic Beanstalk,并配置 static.< 你的域名 >.com 从 S3 Bucket 获取数据。
  • 为你的静态 S3 网站启用 SSL,这很重要。
  • 为你的 Elastic Beanstalk 网站启用 SSL。
  • 本阶段目标:你的网站现在通过 HTTPS 提供所有数据。除非你不必自己管理服务器、Web 服务软件、网站部署或者负载均衡器,否则将会与从前一样。

微服务

  • 对你的 Elastic Beanstalk 网站进行重构,使其仅仅提供 API。只能通过 POST 和 GET 从 DynamoDB 数据库更新和检索特定的数据。使其成为一个简单的 REST API,把 api.< 你的域名 >.com 作为 URL 提供。
  • 将你的 Elastic Beanstalk 网站的 UI 部分移到你的静态 S3 网站,当页面加载时使用 Javascript 从 api.< 你的域名 >.com URL 中检索数据。将数据发送到 Elastic Beanstalk URL 以使其更新 DynamoDB 数据库。将数据地址从 static.< 你的域名 >.com 改为 www.< 你的域名 >.com。
  • 本阶段目标:你的 Elastic Beanstalk 部署现在只是一种从数据库检索数据的结构化方式。所有 UI 和应用程序逻辑均通过 S3 Bucket 提供。由于你不再使用昂贵的服务器来提供网站的静态数据,因此你可以支持更多的用户。

Serverless

  • 编写一个 AWS Lambda 函数,每天晚上定时将 DynamoDB 表中的所有财富数据通过邮件发送给你。可以使用 Python 3 的 Lambda、Boto3、亚马逊 SES 或者 CloudWatch 的预定功能都可以。
  • 将上述应用重构为无服务器应用。这有点抽象,你需要自己做很多研究和实验。
    • 架构:静态 S3 网站前端调用 API 网关,它执行 Lambda 函数来读取和更新 DyanmoDB 表中的数据。
  • 使用启用了 SSL 的存储区作为包含静态内容的主域名登录页面。
  • 创建一个 AWS API 网关,使用它将 HTTP 请求转发到 AWS Lambda 函数,该函数从 DynamoDB 查询与 Elastic Beanstalk 微服务相同的数据。
  • 你的 S3 静态内容应该使用 Javascript 调用 API 网关,然后使用检索到的数据更新页面。
  • 首先提供“Get Fortune”API 网关并确保 Lambda 函数能够工作,然后提供“New Fortune”API。
  • 本阶段目标:你的 API 网关和 S3 Bucket 由 CloudFront 通过 SSL 进行配置。你没有部署 EC2 实例。所有工作均由 AWS 服务完成,根据使用情况计费。

成本分析

  • 熟悉 AWS 的定价方式,了解满足自己服务的最低价。
  • 当你构建服务时,问问自己下列问题:
    • 每个月大概会花费多少钱?
    • 将会进行怎样的扩展,成本会如何变化?
  • 明确架构
  • 基本虚拟主机:静态网页使用 HA EC2 实例即可
  • 微服务:Elastic Beanstalk SSL 仅适用于 API + S3 的静态网站,所有静态内容的静态网站还需 DynamoDB 数据库表 + Route53 + CloudFront SSL
  • 本阶段目标:使用 API​​网关 + Lambda 函数的无服务器网站 + 针对所有静态内容的 DynamoDB + Route53 + CloudFront SSL + S3 静态网站

自动化

  • 这些技术在自动化时最为强大。你可以在几分钟内创建一个开发环境,体验之后可以随意抛弃。这并不容易,只有真正熟练的人才擅长这样做。
  • 将上述系统进行自动化部署。使用任何你想要的工具。比较流行的是 AWS CloudFormation 或者 Teraform。将代码存储在 AWS CodeCommit 或者 GitHub 上。是的,你可以使用原生 AWS 工具将上述所有内容进行自动化部署。
  • 我的建议是,当你手动完成与应用程序相关的部分时,就会返回并自动执行基础架构的配置。比如,自动配置你的 EC2 实例。在启用静态网站托管的情况下自动创建 S3 Bucket。这并不容易,但当你看到它工作时,这一切都是值得的。

持续交付

  • 当你对自动化部署足够熟悉之后,你应该去探索并实施持续交付。
  • 开发一个 CI/CD 管道,以便在新代码发布时自动更新基础架构的开发部署,然后构建一个工作流程以在批准时更新生产版本。Travis CI 是一款强大的 SaaS 工具,Jenkins 的关注度也很高,如果你想坚持使用 AWS 特有的技术,可以试试 CodePipeline。

其他

以下内容也是 AWS 的重要主题,值得你探索:

  • IAM:你应该真正了解如何创建复杂的 IAM 策略。为 EC2 实例角色和 Lambda 执行角色执行基本的角色和策略当然是必不可少的,但实际上这里还有许多更加高级的功能。
  • 网络:从头开始创建一个新的 VPC,其中包含多个子网,当其正常工作之后,再创建一个 VPC 并将它们放在一起。在每个子网中获取一个虚拟机,互相使用其私有 IP 地址来通信。
  • KMS:重做早期的 EC2 实例,在磁盘上启用加密。学习如何加密 AMI。

最后的想法

我最近一直在负责云系统工程师和云系统管理员的招聘工作。我们面试了几十个具有相关经验的求职者。一开始,我都会和他们聊一聊 DynamoDB 或者弹性伸缩。我发现很少有人真的会动手操作。许多人对这些概念很熟悉,但是当涉及到细节的时候,他们都不太了解。实际动手,你会学到很多。

如果你在工作中没有机会学习,我建议你构建一个小巧而华丽且令人印象深刻的个人项目,你可以通过这个项目来提升自己的技能。将它开源到 GitHub 上,编写专业的文档,尽可能获得更多的评论,并提供网站的演示。将项目链接添加到你的 LinkedIn 上,在你的简历中引用它,并在求职过程中展示给面试官答案。如果你完成了这个任务并熟悉了 AWS 的大部分服务,我相信你在面试时能够回答很多实操性的问题。

原文链接: https://www.reddit.com/r/sysadmin/comments/8inzn5/so_you_want_to_learn_aws_aka_how_do_i_learn_to_be/

2018-07-22 13:142677

评论

发布
暂无评论
发现更多内容

WEB项目如何通知用户在线更新?

GFE

前端 版本管理

「文本检测与识别白皮书-3.2」第三节:常用的文本识别模型

合合技术团队

人工智能 机器学习 深度学习 模型 文字识别

图数据 3D 可视化在 Explorer 中的应用

NebulaGraph

可视化 图数据库 3D

图解vue3.0编译器核心原理

GFE

前端 Vue3

2022世界互联网大会 | VoneCredit为中小企业纾困解忧

旺链科技

区块链 产业区块链 世界互联网大会 企业号十月PK榜

EMQ《物联网平台大规模数据接入和处理性能评测方法》成功入选“可信边缘计算推进计划”

EMQ映云科技

物联网 IoT 边缘计算 边云协同 11月月更

量化合约对冲挖矿app软件开发案例(支持测试)

开发微hkkf5566

【愚公系列】2022年11月 Go教学课程 040-字符串处理

愚公搬代码

11月月更

Go语言躲坑经验总结

百度Geek说

Go 企业号十月 PK 榜

软件测试面试真题 | 说一下常用的控件定位方法

测试人

软件测试 面试题 web测试 元素定位

Go语言入门12—异常

良猿

Go golang 后端 11月月更

云转售是什么意思?哪家好?理由是什么?

行云管家

云计算 企业上云 云资源 云转售

python小知识-classmethod类方法

AIWeker

Python 人工智能 python小知识 11月月更

Spring Boot「22」使用 Hibernate & JPA 持久化 Java 对象

Samson

Java hibernate Spring Boot 学习笔记 11月月更

前端 30 问:愿你能三十而立

GFE

面试 前端

详解AQS中的condition源码原理

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

NGINX Sprint 年度线上会议:报名通道已开启,立即预定您的 NGINX 深潜之旅

NGINX开源社区

nginx

三位技术大咖的「研发效能」实践干货

万事ONES

研发效能 课程笔记

7k字,12张图,从零到一带你详解Redis

Java永远的神

数据库 nosql redis 程序员 面试

字节跳动开源数据集成引擎BitSail的演进历程与能力解析

字节跳动数据平台

数据库 开源 数据开发 数据集成 企业号十月 PK 榜

NFTScan 与 Bitizen 钱包达成战略合作,双方将在 NFT 数据层面进行深度合作

NFT Research

NFT 数据基础设施

【重磅】Serverless Devs 进入 CNCF 沙箱,成首个入选的 Serverless 工具项目!

阿里巴巴云原生

阿里云 Serverless 云原生

分布式锁实战:基于Zookeeper的实现

小小怪下士

Java zookeeper 分布式

IM消息ID技术专题(七):网易严选分布式ID的技术选型、优化、落地实践

JackJiang

网络编程 即时通讯 IM 开源im

平均110万个漏洞被积压,企业漏洞管理状况堪忧

SEAL安全

DevSecOps 漏洞修复 软件供应链安全 漏洞管理 漏洞优先级匹配

堡垒机按什么收费?大概多少钱?有一个标准吗?

行云管家

网络安全 堡垒机 IT安全

网络爬虫技术及应用

郑州埃文科技

网络安全 IP地址资源 爬虫技术

详解 Serverless 架构的 6 大应用场景

阿里巴巴云原生

阿里云 Serverless 云原生

拥抱“大信创”浪潮,优博讯开启成长新曲线

Geek_2d6073

扒官方文档学Ts类型编程

GFE

typescript 前端

扒官方文档学Ts类型编程(二)

GFE

typescript 前端

一文掌握AWS,成为云计算工程师_服务革新_SpectralCoding_InfoQ精选文章