写点什么

一文掌握 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:142728

评论

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

一文吃透扫码登录原理

程序员大彬

Java java面试 扫码

美团:某动态线程池框架是官方开源的么?

马丁玩编程

线程池 美团线程池

解决苹果无线鼠标、键盘或触控板无法被 Mac 识别的方法

理理

mac系统 苹果无线鼠标 触控板 无法被mac识别

AntDB-M数据库锁分析,不要错过!

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库 企业号 3 月 PK 榜

共铸国云智领未来| 以数字林草之“笔” 绘就塞上江南新图景

天翼云开发者社区

线段树模板与练习

timerring

线段树

Tars-Java网络编程源码分析

vivo互联网技术

网络编程 nio TARS

稳定高效数据库管理:Valentina Studio Pro激活版

真大的脸盆

数据库 Mac 数据库管理工具 Mac 软件 管理数据库

使用 Pixelmator Pro,打印出最完美的照片效果

理理

Mac修图软件 Pixelmator Pro破解 Pixelmator Pro中文 Pixelmator Pro下载

HTML5智慧农业大棚Web3D可视化系统

2D3D前端可视化开发

智慧大棚 智慧农业 数字农业 大棚三维可视化 数字孪生智慧大棚

ChatGPT4 高分通过数据库系统工程师(DBA)认证

NineData

数据库 dba GPT ChatGPT4 数据库系统工程师

优秀的录屏软件:Record It Pro 直装激活版

真大的脸盆

Mac Mac 软件 录屏 屏幕录制 录屏软件

聊一聊系统重构

如何实现云数据治理中的数据安全?

京东科技开发者

云计算 大数据 数据治理 企业号 3 月 PK 榜 计算资源

AAA级认证!索信达综合信用水平获高度认可

索信达控股

移动云发布操作系统迁移工具,助力全场景业务一站式迁移

openEuler

Linux centos 操作系统 虚拟化 openEuler

大语言模型(LLMs)和新兴机器学习技术栈

Baihai IDP

人工智能 自然语言处理 NLP 大模型 大模型 白海科技

简历上的项目,需要这样描述才有亮点!

小傅哥

Java 面试 项目 简历 校招

使用K8S进行蓝绿部署的简明实操指南

SEAL安全

k8s 企业号 3 月 PK 榜 蓝绿部署

SwitchResX for mac自定义分辨率时遇到的问题汇总

理理

Mac软件 电脑分辨率 SwitchResX下载 SwitchResX常见问题

全球掀起AI热,天翼云智算能力已就绪!

天翼云开发者社区

Final Cut Pro资源库占用内存太大如何释放磁盘空间?

理理

FCPX下载 fcpx Final Cut Pro空间不足 fcpx中文版

Stepn跑鞋GMT系统开发(NFT链游)

薇電13242772558

NFT链游

学完阿里P8面试官推荐的Java高并发核心编程文档后终拿蚂蚁offer

程序知音

Java 并发编程 编程语言 高并发 java架构

基于 Kafka 和 Elasticsearch 构建实时站内搜索功能的实践

京东科技开发者

MySQL ES 京东云 京东物流 京东技术

Three.js 进阶之旅:物理效果-3D乒乓球小游戏 🏓

dragonir

CSS JavaScript 前端 React three.js

PyTorch深度学习实战 | 神经网络的优化难题

TiAmo

PyTorch 随机梯度下降 动态调整

追踪 Kubernetes 中的数据包

张晓辉

Kubernetes 网络

Dubbo + ZooKeeper|如何解决线上故障排查链路长的难题

云布道师

dubbo

gt-checksum 1.2.1发布,新增表结构校验及修复等超实用特性

GreatSQL

MySQL greatsql社区 gt-check

Parallels Desktop虚拟机问题汇总

理理

常见问题 parallels desktop18 pd虚拟机 PD密钥

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