参考书目及文档:
1.《AWS IN ACTION》----Andress Witting,Michael Witting
2.aws官方文档:https://docs.aws.amazon.com/index.html
1.注册aws账号
2.与aws交互的四种方式
3.相关资源及名词解释
4.搭建一个WordPress站点
5.搭建包含服务器和网络的虚拟基础设施
6.在云上保存数据
7.在AWS上搭架构
8.利用AWS API Gateway+Lambda实战Serverless
1.注册
注册网址:https://portal.aws.amazon.com/billing/signup
文档:https://docs.aws.amazon.com/index.html
2.登录
登录aws管理控制台:https://console.aws.amazon.com
服务:资源概览
AWS服务分类:
资源组:跳转到服务
客户名字:账单和账户
区域部分:区域选择
支持:帮助区域
3.创建密钥对
要访问aws中的虚拟服务器,客户需要一个由私钥和公钥组成的密钥对。
公钥将上传至aws并配置到虚拟服务器中,私钥为客户私有的。
注意:一定要保护好自己的私钥,一旦丢失将无法重新获得。
要访问Linux服务器,使用SSH协议。
客户在登陆时将通过密钥对而不是密码进行身份验证。
如果客户需要通过远程桌面协议(RDP)来访问Windows服务器,客户也需要使用密钥对才能解密管理员密码,然后才能登录。
进入提供虚拟服务器的EC2服务的仪表盘,在那里客户可以获得密钥对:
注意:可以使用自己的密钥对
读者可以将现有密钥的公钥上传至AWS。
优点:
1.可以复用现有的密钥对
2.可以确定只有自己知道密钥对的私有部分,如果使用【创建密钥对】按钮,你可能担心aws知道(至少是暂时知道)自己的密钥对。
Linux与Mac OS X:
客户现在唯一需要做的是更改密钥名.pem文件的访问权限,以便只有自己可以读取该文件的内容:chmod 400 密钥名.pem
Windows:
其不提供SSH客户端,因此客户需要下载适用于windows的PuTTY安装程序,然后安装PuTTY。
PuTTY下载网址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
PuTTY提供了一个名为PuTTYgen的工具,可以将密钥名.pem转换为密钥名.ppk。
注意:在win10的软件商店中直接提供了这款工具,安装完成后显示的相关工具不能运行,须在官网中进行下载。
附:
putty使用教程:https://blog.csdn.net/qq_38741971/article/details/80393627
PuTTY 中文教程:https://chaifeng.com/blog/2007/06/putty_200611.html#h.8b5ac165b044
创建计费警告:在开始使用aws账户前,创建一个计费警告。如果超出了免费套餐的额度,读者会收到警告邮件。
当客户与aws进行交互以配置或使用aws服务时,客户就会调用API,该API是AWS的入口。
下面为几种调用API的可用工具:
管理控制台
使用基于 Web 的管理控制台实现与 AWS 的交互
客户可使用基于Web GUI,即管理控制台实现与AWS的交互。
通过Web GUI,客户可以手动控制AWS。
这个管理控制台支持每一种现代Web浏览器(Chrome,firefox,Safari 5及以上,IE 9及以上)
管理控制台是为了开发,测试而设置云基础设施比较好的方式。
命令行接口
通常用于自动执行 AWS 上的任务,客户可以将多个 CLI 调用链接起来,以实现基础设施的自动化
客户可以通过命令行启动虚拟服务器,设置存储并且发送邮件。
使用该命令行接口可以控制aws的一切。
CLI通常用于自动执行aws上的任务。如果客户想通过持续集成服务器(如Jekins)的帮助自动化基础设施部分,则CLI是该任务的正确工具。
CLI提供了访问API的便捷方式,并可以将对API的多个调用整合到一个脚本中。
客户还可以将多个CLI调用链接起来,以实现基础设施的自动化。
CLI可以用于windows,Mac,Linux,还有一个适用的PowerShell版本。
SDK
SDK 通常用于将 AWS 服务集成到应用程序中
有时客户需要从自己的应用程序中调用aws。
使用SDK,客户可以使用自己喜欢的编程语言将aws集成到应用程序的逻辑中。
AWS为以下开发环境提供了SDK:
*Android
*Node.js(JavaScript)
*浏览器(JavaScript)
*PHP
*IOS
*Python
*Java
*Ruby
*.NET
*Go
*C++
SDK通常用于将AWS服务集成到应用程序中。如果客户正在进行软件开发,并希望集成AWS服务(如NoSQL或推送通知服务),那么SDK是该任务的正确选择。
某些服务(如队列和主题订阅)必须子应用程序中使用SDK。
蓝图(AWS CloudFormation,官方称之为“堆栈”)
是包含所有服务和依赖关系的对于系统的描述。蓝图可以帮助你自动化云中基础设施的配置。(简而言之,就是用一个 JSON 文件描述整个云服务基础设施架构,可以一键部署)。
蓝图可以实现基础设施自动化。
蓝图是包含所有服务和依赖关系的对于系统的描述。
蓝图并没有说明实现所描述的系统所必须的而步骤或顺序
相关资源:
注册网址:https://portal.aws.amazon.com/billing/signup
文档:https://docs.aws.amazon.com/index.html
管理控制台:https://console.aws.amazon.com
EC2:Elastic Compute Cloud,弹性云计算
Amazon Elastic Compute Cloud (Amazon EC2) 是一种提供可调节计算容量的 Web 服务 – 简单来说,就是 Amazon 数据中心里的服务器 – 您可以使用它来构建和托管您的软件系统。
EC2服务将提供虚拟服务器。
因为虚拟服务器可能会宕机,因此你需要部署至少两台虚拟服务器,并通过ELB分发流量。一旦一台server宕机,ELB将会停止给宕机的server发送流量。
Batch
借助 AWS Batch,您可以在 AWS 云上运行批量计算工作负载。批量计算是开发人员、科学家和工程师访问大量计算资源的常用方式。借助 AWS Batch,您无需再承担配置和管理所需基础设施的无差别的繁重任务。
ELB:Elastic Load Balancing,弹性负载均衡
Amazon Elastic Compute Cloud (Amazon EC2) 是一种提供可调节计算容量的 Web 服务 – 简单来说,就是 Amazon 数据中心里的服务器 – 您可以使用它来构建和托管您的软件系统。
ELB会将流量分发到它后面的一组服务器上,并且ELB自身默认就是高可用的。
ECR:Elastic Container Register,弹性容器注册
Amazon Elastic Container Registry (Amazon ECR) 是一项完全托管的 Docker 容器注册表服务,可让开发人员轻松存储、管理和部署 Docker 容器映像。
ECS:Elastic Container Service,弹性容器服务
Amazon Elastic Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务,可轻松运行、停止和管理 Amazon EC2 实例集群上的 Docker 容器。
EKS:Elastic Kubernetes Service,弹性k8s服务
Amazon Elastic Container Service for Kubernetes (Amazon EKS) 是一项托管服务,借助该服务,您可以轻松在 AWS 上运行 Kubernetes,而无需安装和操作您自己的 Kubernetes 群集。
Elastic Beanstalk
AWS Elastic Beanstalk 可让您迅速地在 AWS 云中部署和管理应用程序,而无需为运行这些应用程序的基础设施操心。AWS Elastic Beanstalk 可降低管理的复杂性,但不会影响选择或控制。您只需上传应用程序,AWS Elastic Beanstalk 将自动处理有关容量预配置、负载均衡、扩展和应用程序运行状况监控的部署细节。
Lambda
使用 AWS Lambda,您无需预置或管理服务器即可运行代码。您只需为使用的计算时间付费,在代码未运行期间不产生任何费用。您可以为几乎任何类型的应用程序或后端服务运行代码,而无需任何管理。只需上传您的代码,Lambda 会处理运行和扩展高可用性代码所需的一切工作。您可以将您的代码设置为自动从其他 AWS 产品触发,或者直接从任何 Web 或移动应用程序调用。
Lightsail
借助 Amazon Lightsail,仅需虚拟私有服务器的开发人员可以通过最简单的方式开始使用 AWS。Lightsail 包括您快速启动项目所需的一切 (虚拟机、基于 SSD 的存储、数据传输、DNS 管理和静态 IP),价格低廉且可预测。
ParallelCluster
AWS ParallelCluster 是一个 AWS 支持的开源集群管理工具,它可帮助您在 AWS 云中部署和管理高性能计算 (HPC) 集群。
SAM:Serverless Application Model
The AWS Serverless Application Model (AWS SAM) is an open-source framework that enables you to build serverless applications on AWS. It provides you with a template specification to define your serverless application, and a command line interface (CLI) tool.
SAR:Serverless Application Repository
借助 AWS Serverless Application Repository,您可以在 AWS 云中快速找到并部署无服务器应用程序。您可以按类别浏览应用程序,也可以按名称、发布者或事件源进行搜索。要使用应用程序,您只需选择该应用程序、配置所需字段并单击几下部署即可。作为无服务器应用程序开发人员,您还可以轻松发布应用程序,并与团队、组织和其他 AWS 用户轻松共享。要发布无服务器应用程序,您可以使用 AWS 管理控制台、AWS CLI 或 AWS 开发工具包上传代码和简单的清单文件。
S3:Simple Storage Service
Amazon Simple Storage Service (Amazon S3) 是一种面向 Internet 的存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。您可以使用 AWS 管理控制台简单而直观的 web 界面来完成这些任务。
Backup
AWS Backup is a fully managed backup service that makes it easy to centralize and automate the backup of data across AWS services in the cloud as well as on premises.
EBS:Elastic Block Store
Amazon Elastic Block Store (Amazon EBS) 提供了块级存储卷以用于 EC2 实例。EBS 卷是高度可用、可靠的存储卷,您可以将其附加到同一可用区域中任何正在运行的实例。附加到 EC2 实例的 EBS 卷公开为独立于实例生命周期存在的存储卷。使用 Amazon EBS,您可以按实际用量付费。
EFS:Amazon Elastic File System
Amazon EFS 为 Amazon EC2 实例提供文件存储。借助 Amazon EFS,您可以创建文件系统、将文件系统挂载到 EC2 实例上,然后读取来自 EC2 实例的数据并将其写入文件系统,反之亦然。
FSx
Amazon FSx provides fully managed third-party file systems with the native compatibility and feature sets for workloads such as Microsoft Windows–based storage, high-performance computing, machine learning, and electronic design automation. Amazon FSx supports two file system types: Lustre and Windows File Server.
S3 Glasier
Amazon Glacier 是一种针对不常用的数据(“冷数据”)而经过了优化的存储服务。 这项服务为数据存档和备份提供了持久且成本极低的存储解决方案及安全功能。使用 Amazon Glacier,您可以将数据经济高效地存储数月、数年,甚至数十年。Amazon Glacier 可让您将存储扩展到 AWS 并卸下操作以及管理负担,这样,您就不必担心容量规划、硬件配置、数据复制、硬件故障检测和恢复,或者耗时的硬件迁移等问题。有关更多服务亮点和定价信息,请转到 Amazon Glacier 详细信息页。
Snowball
AWS Snowball 是一种服务,适用于想要将 TB 或 PT 级数据传入或传出 AWS 的客户,也适用于想要在无法连接 Internet 的地方以本地方式经济高效地使用 AWS 云的存储和计算功能的客户。
Storage Gateway
AWS Storage Gateway 是一项可将本地软件设施与基于云的存储设施相连接的服务,从而在云中提供本地 IT 环境和 AWS 存储基础设施间的无缝安全整合。
Aurora:
Amazon Aurora (Aurora) 是一个与 MySQL 和 PostgreSQL 兼容的完全托管的关系数据库引擎。您已了解了 MySQL 和 PostgreSQL 不仅具有高端商用数据库的速度和可靠性,同时还具有开源数据库的简单性和成本效益。您目前用于现有 MySQL 和 PostgreSQL 数据库的代码、工具和应用程序可用于 Aurora。在某些工作负载条件下,Aurora 最多可以将 MySQL 吞吐量增加 5 倍,将 PostgreSQL 的吞吐量增加 3 倍,而无需对大多数现有应用程序进行更改。
Aurora 包括一个高性能的存储子系统。已自定义其 MySQL 和 PostgreSQL 兼容数据库引擎以利用该快速分布式存储。基础存储根据需要自动增长,最高为 64 TB。Aurora 还会自动化和标准化数据库集群和复制,这通常是数据库配置和管理方面的最大问题。
Aurora 是托管数据库服务 Amazon Relational Database Service (Amazon RDS) 的一部分。Amazon RDS 是一种 Web 服务,可以轻松在云中设置、运行和扩展关系数据库
DocumentDB:
Amazon DocumentDB(兼容 MongoDB)是一项快速、可靠的完全托管数据库服务,使您能够轻松设置、操作和扩展 MongoDB 兼容的数据库。
DynamoDB:
Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,提供快速而可预测的性能,能够实现无缝扩展。您可以使用 Amazon DynamoDB 创建一个数据库表来存储和检索任何大小的数据,并处理任何级别的请求流量。Amazon DynamoDB 可自动将表的数据和流量分布到足够多的服务器中,以处理客户指定的请求容量和数据存储量,同时保持一致的性能和高效的访问。
ElastiCache:
Amazon ElastiCache 可让用户在 AWS 云中轻松设置、管理和扩展分布式内存中的缓存环境。它可以提供高性能、可调整大小且符合成本效益的内存缓存,同时消除部署和管理分布式缓存环境产生的相关复杂性。ElastiCache 与 Redis 和 Memcached 引擎一起工作;要查看哪个最适合您,请参见任一用户指南中的“比较 Memcached 和 Redis”主题。
Neptune:
Amazon Neptune 是一项快速、可靠且完全托管的图形数据库服务,可帮助您轻松构建和运行使用高度互连数据集的应用程序。Neptune 的核心是一个专门打造的高性能图形数据库引擎,它经过优化,可存储数十亿个关系并能以毫秒级延迟进行图形查询。Neptune 支持常见的图形查询语言 Apache TinkerPop Gremlin 和 W3C SPARQL,可让您构建查询,高效地浏览高度互连数据集。Neptune 支持图形使用案例,如建议引擎、欺诈检测、知识图谱、药物开发和网络安全。
RDS:
Amazon Relational Database Service (Amazon RDS) 是一种 Web 服务,可让用户更轻松地在云中设置、操作和扩展关系数据库。它可以经济有效的为用户提供一个容量可调的行业标准的关系数据库,并承担常见的数据库管理任务。
Redshift:
Amazon Redshift 是一种快速、完全托管的 PB 级数据仓库服务,它使得用现有商业智能工具对您的所有数据进行高效分析变得简单而实惠。它为从几百 GB 到 1PB 或更大的数据集而优化,且每年每 TB 花费不到 1 000 USD,为最传统数据仓库存储解决方案成本的十分之一。
Cloud 9
AWS Cloud9 是一种基于云的集成开发环境 (IDE),可用于编写、运行和调试代码。
CodeBuild
AWS CodeBuild 是一种完全托管的生成服务,可编译源代码、运行单元测试和生成部署就绪的工件。
CodeDeploy
AWS CodeDeploy 是一种部署服务,让开发人员能够实现将应用程序部署到实例的自动化,并根据需要更新应用程序。
CodeStar
借助 AWS CodeStar,您可以在 AWS 上快速开发、构建和部署应用程序。
工具和开发工具包
用于在 AWS 上开发和管理应用程序的工具。
https://aws.amazon.com/cn/tools/?id=docs_gateway
X-Ray
AWS X-Ray 提供请求跟踪、异常收集以及分析功能,使开发人员能够轻松分析分布式应用程序的行为。
IAM:Identity and Access Management
AWS Identity and Access Management (IAM) 是一项用于安全地控制 AWS 服务访问的 Web 服务。借助 IAM,您可以集中管理用户、访问密钥等安全凭证,以及控制用户和应用程序可以访问哪些 AWS 资源的权限。
Artifact:
AWS Artifact 是一种 Web 服务,让您能够下载 AWS 安全性与合规性文档,如 ISO 认证和 SOC 报告。
Cognito:
Amazon Cognito 是一项服务,您可以用它来为您的用户创建唯一身份,通过身份提供商对这些身份进行验证,还可以在 AWS 云中保存移动用户数据。
Directory Service:
AWS Directory Service 提供多种方式设置 Amazon Cloud Directory、Amazon Cognito 和 Microsoft AD并将其与其他 AWS 服务一起运行。Amazon Cloud Directory 为您的应用程序多层数据提供高度可扩展的目录存储。Amazon Cognito 帮助您创建一个目录存储,以便通过您自己的用户池或通过联合身份提供程序对您的用户进行身份验证。适用于 Microsoft Active Directory 的 AWS Directory Service(企业版)又称为 Microsoft AD,可为您提供目录感知型工作负载和 AWS 资源,以便让您在 AWS 云中使用托管的 Active Directory。
Firewall Manager:
AWS Firewall Manager 可以跨多个账户与资源简化您的 AWS WAF 管理与维护任务。借助 AWS Firewall Manager,您只需建立一次防火墙规则。即使您添加新资源,该服务也会自动跨账户和资源应用您的规则
Cloud Directory:
Amazon Cloud Directory 是一种云原生目录,可存储数亿个包含应用程序特定对象以及多种关系和架构。如果您需要云规模的目录,用于在应用程序之间共享和控制对分层数据的访问,可以使用 Cloud Directory。借助 Cloud Directory,您可以将应用程序数据组织为多个层次结构,以便在目录信息中支持许多组织中心和关系。
GuardDuty:
Amazon GuardDuty 是一项持续安全监控服务。 Amazon GuardDuty 可帮助识别 AWS 环境中的意外活动和潜在的未经授权或恶意活动。
Inspector:
Amazon Inspector 是一项安全漏洞评估服务,有助于提高 AWS 资源的安全性与合规性。Amazon Inspector 可自动评估资源以确定是否存在漏洞或者与最佳实践是否有偏差,然后创建按严重性级别进行优先级排序的详细安全结果列表。Amazon Inspector 具有一个知识库,其中包含数百条与常见安全标准和漏洞定义相对应的规则,AWS 安全研究人员会定期更新这些规则。
Macie:
Amazon Macie 是一项利用机器学习技术自动发现、分类和保护 AWS 中的敏感数据的安全服务。Amazon Macie 可识别个人身份信息 (PII) 或知识产权等敏感数据,并为您提供控制面板和警报,帮助您了解这些数据是如何被访问或移动的。
RAM:Resource Access Manager
利用 AWS Resource Access Manager (AWS RAM),您可以与 AWS Organizations 中的任何 AWS 账户或组织共享您的资源。运营多个账户的客户可以集中创建资源,并使用 AWS RAM 与其所有账户共享这些资源以降低运营开销。AWS RAM 不收取额外费用。
Secrects Manager:
AWS Secrets Manager 可以帮助您安全加密、存储和检索数据库和其他服务的凭证。您可以在需要的时候调用 Secrets Manager 检索您的凭证,而无需在应用程序中对凭证进行硬编码。Secrets Manager 可以轮换和管理对私密信息的访问权限,从而让您能保护对 IT 资源和数据的访问权限。
Security Hub:
AWS Security Hub provides you with a comprehensive view of your security state within AWS. Security Hub collects security data from across AWS accounts and services, and helps you analyze your security trends and identify the highest priority security issues across your AWS environment.
Shield:
AWS 可以提供两种级别的 DDoS 攻击防护:AWS Shield Standard 和 AWS Shield Advanced。除了您已经为 AWS WAF 和其他 AWS 服务支付的费用之外,AWS Shield Standard 将自动包含在其中,不会额外收取费用。如需进一步增强 DDoS 攻击防护,AWS 提供了 AWS Shield Advanced。AWS Shield Advanced 可以针对 Amazon EC2 实例、Elastic Load Balancing 负载均衡器、Amazon CloudFront 分配和 Amazon Route 53 托管区域提供扩展的 DDoS 攻击防护功能。
Single Sign-On
AWS Single Sign-On 是一种基于云的服务,可以简化对 AWS 账户和业务应用程序的 SSO 访问管理。您可以控制 AWS Organizations 中所有 AWS 账户的 SSO 访问和用户权限。您还可以管理对常用业务应用程序以及自定义应用程序(支持安全断言标记语言 (SAML) 2.0)的访问权限。此外,AWS SSO 还提供一个用户门户,在其中,您的用户可以在一个地方集中查找和访问所有分配的 AWS 账户、云应用程序及自定义应用程序。
WAF:Web Application Firewall
AWS WAF 是 web 应用程序防火墙,它使您能够监控转发到 Amazon CloudFront 分配或 Application Load Balancer 的 web 请求。您还可以使用 AWS WAF 根据您指定的条件 (例如请求的来源 IP 地址或请求中的值) 阻止或允许请求。
加密服务概述
AWS Cryptographic Services and Tools
AWS provides multiple services that you can use to help protect your data at rest or in transit.
PKI:Public Key Infrastructure
Public key infrastructure (PKI) involves the creation, issuance, management, distribution, usage, storage, and revocation of digital certificates. AWS offers multiple PKI services to help you easily and securely manage your certificate infrastructure.
CloudHSM:
AWS CloudHSM 在 AWS 云中提供托管的硬件安全模块,进而为客户提供安全加密密钥存储。
KMS:Key Management Service
AWS Key Management Service (KMS) 是一项针对云进行了扩展的加密和密钥管理服务。KMS 的密钥和功能可用于其他 AWS 服务,而您可以使用它们保护您那些使用 AWS 的应用程序中的数据。
Crypto Tools:
加密是很难做到安全正确。AWS Crypto Tools 库专门用于帮助每个人正确地进行加密,即使没有专门的专业知识也能做到。我们的客户端加密库可帮助您使用安全加密算法、信封加密和签名来保护其源中的敏感数据。
ACM:AWS Certificate Manager
借助 AWS Certificate Manager (ACM),您可以轻松在 AWS 托管的资源上预置、管理和部署 SSL/TLS 证书。
Apache MXNet (MXNet)
是一款开源深度学习框架,让您能在从云基础设施到移动设备的各种平台上定义、训练和部署深度神经网络。该框架高度可扩展,因此可实现快速的模型培训,并提供灵活的编程模型和多语言支持。MXNet 库是可移植的轻量级库,可无缝扩展,在多个 GPU 和多个设备上运行。MXNet 支持多种语言编程以构建和训练深度学习模型。这些语言包括 Python、R、Scala、Julia 和 Perl。
Amazon Comprehend
Amazon Comprehend 使用自然语言处理 (NLP) 提取有关文档内容的见解,无需任何特殊处理。Amazon Comprehend 可处理所有 UTF-8 格式的文本文件。它可以通过识别文档中的实体、关键短语、语言、情绪和其他常见元素生成见解。使用 Amazon Comprehend 基于对文档结构的理解创建新产品。借助 Amazon Comprehend,您可以搜索提及相关产品的社交网络信息流、扫描整个文档存储库的关键短语,或确定一组文档中包含的主题。
AWS DeepLens
AWS DeepLens 搭配联网的高清摄像机开发人员工具包和一系列示例项目,帮助开发人员使用实操型计算机视觉使用案例学习机器学习的概念。AWS DeepLens 经过了预配置,可与多种 AWS 产品搭配使用,提供针对 AWS DeepLens 进行优化的深度学习框架,进而轻松构建计算机视觉应用程序。AWS DeepLens 的功能足以满足专家的使用需求,但它旨在帮助在深度学习方面拥有很少或零经验的所有开发人员快速入门。
DeepRacer
AWS DeepRacer is a reinforcement learning (RL)-enabled autonomous 1/18th-scale vehicle with supporting services in the AWS Machine Learning ecosystem. It offers an interactive learning system for users of all levels to acquire and refine their skill set in machine learning in general and reinforcement learning in particular. You can use the AWS DeepRacer console to train and evaluate deep reinforcement learning models in simulation and then deploy them to an AWS DeepRacer vehicle for autonomous driving. You can also join AWS DeepRacer League to race in the online Virtual Circuit or the in-person Summit Circuit.
Forecast
Amazon Forecast is a fully managed deep-learning service for accurate time-series forecasting. By providing Amazon Forecast with historical time-series data, you can predict future points in a time series.
Lex
Amazon Lex 是一项可在应用程序内使用语音和文本构建对话接口的 AWS 服务。与 Amazon Lex 一起,可支持 Amazon Alexa 的相同的深度学习引擎现已面向所有开发人员提供,让您能为新应用程序和现有应用程序构建使用自然语言的高级聊天机器人。Amazon Lex 提供自然语言理解 (NLU) 和自动语音识别 (ASR) 的深度功能和灵活性,让您能构建具有生动对话交互的高度参与的用户体验,以及创建新的产品类别。
Machine Learning
使用 Amazon Machine Learning,开发人员能够轻松构建智能应用程序,包括用于欺诈检测、需求预测、定向营销和点击预测的应用程序。Amazon Machine Learning 的强大算法可通过在您现有的数据中发现模式来创建机器学习 (ML) 模型。然后,该服务会使用这些模型处理新数据并为应用程序生成预测结果。
Personalize:
实时个性化和推荐(基于 Amazon.com 中使用的相同技术)。
Polly:
Amazon Polly 是一种文本转语音 (TTS) 云服务,可以将文本转化为逼真的语音。可以使用 Amazon Polly 开发能提高参与度和可用性的应用程序。Amazon Polly 支持多种语言并且包含各种逼真的声音,因此,您可以构建支持语音并能用于各种位置的应用程序,并使用适合客户的声音。
Rekognition:
Amazon Rekognition 让您可以向应用程序轻松添加图像和视频分析功能。您只需向 Rekognition API 提供图像或视频,该服务即会识别物体、人员、文本、场景和活动。它还可以检测任何不合适的内容。Amazon Rekognition 还可以提供高度准确的面孔分析和面孔识别功能。您可以在各种使用案例中检测、分析和比较不同面孔,例如用户验证、编录、人员计数和公共安全等领域。
SageMaker:
Amazon SageMaker 是一种完全托管的机器学习服务。借助 Amazon SageMaker,数据科学家和开发人员可以快速轻松地构建和训练机器学习模型,然后直接将模型部署到托管的生产就绪环境中。它提供了一个集成的 Jupyter 编写 Notebook 实例,供您轻松访问数据源以便进行探索和分析,因此您无需管理服务器。此外,它还可以提供常见的机器学习算法,这些算法经过了优化,可以在分布式环境中高效处理非常大的数据。借助对自带算法和框架的原生支持,Amazon SageMaker 可以提供灵活并且适合具体工作流程的分布式训练选项。
Textract:
Amazon Textract enables you to add document text detection and analysis to your applications. You provide a document image to the Amazon Textract API, and the service detects the document text. Amazon Textract works with formatted text and can detect words and lines of words that are located close to each other. It can also analyze a document for items such as related text, tables, key-value pairs, and selection elements.
Transcribe:
Amazon Transcribe 可以针对音频文件提供转录服务。它使用高级机器学习技术来识别语音并将其转换为文本。
Translate:
Amazon Translate 是一种神经网络机器翻译服务,可将文本在各种支持的语言和英语之间进行互译。以深度学习技术为依托,Amazon Translate 提供快速、高质量且经济实惠的语言翻译。该服务提供持续受训的托管解决方案,让您可以轻松翻译公司和用户撰写的内容,或构建需要多种语言支持的应用程序。机器翻译引擎已根据不同领域中的各种内容进行训练,以产生满足各个行业需求的高质量翻译。
Auto Scaling:
借助 AWS Auto Scaling,您可以快速发现应用程序的可扩展 AWS 资源,并设置动态扩展。它使用 Amazon EC2 Auto Scaling 扩展 EC2 实例,并使用 Application Auto Scaling 扩展来自其他服务的资源。
CloudFormation:
借助 AWS CloudFormation,您可以有预见性地、重复地创建和预置 AWS 基础设施部署。它可以帮助您利用 AWS 产品 (如 Amazon EC2、Amazon Elastic Block Store、Amazon SNS、Elastic Load Balancing 和 Auto Scaling) 在云中构建高度可靠、高度可扩展且经济高效的应用程序,为您免除创建和配置底层 AWS 基础设施之忧。借助 AWS CloudFormation,您可以使用模板文件,将资源集作为一个单元 (堆栈) 进行创建和删除。
CloudTrail:
利用 AWS CloudTrail,可获取您账户的 API 调用历史记录,包括通过 AWS 管理控制台、AWS 软件开发工具包、命令行工具、较高级 AWS 服务进行的 API 调用,进而监控您在云上的 AWS 部署。您还可以确定哪些用户和账户为支持 CloudTrail 的服务调用了 AWS API、发出调用的源 IP 地址以及调用发生的时间。您可将 CloudTrail 集成到使用 API 的应用程序、为您的组织自动创建跟踪、检查跟踪的状态和控制管理员启用和关闭 CloudTrail 日志记录的方式。
CloudWatch:
Amazon CloudWatch 提供可靠、可调整且灵活的监测解决方案,让您可在短短几分钟内开始使用。您不再需要设置、管理和扩展监控系统和基础设施了。
CLI:
AWS 命令行界面 (AWS CLI) 是一种统一工具,可提供一致的界面用于与 AWS 的所有部分进行交互。随附的用户指南中包含了不同服务的 AWS CLI 命令,包括描述、语法和使用示例。
Config:
AWS Config 提供了与您的 AWS 账户关联的资源的详细信息,包括如何配置这些资源、这些资源如何彼此关联以及各种配置及其关系如何随时间发生变化
Data Lifecyle Manager
通过 Amazon Data Lifecycle Manager,您可以管理 AWS 资源的生命周期。您可以创建生命周期策略对指定资源自动执行操作。
Health:
AWS Health 可提供可能影响 AWS 基础设施的活动相关的个性化信息,逐步指导您进行有计划的更改,并加速对影响 AWS 资源和账户的问题的故障排除。
License Manager
AWS License Manager streamlines the process of bringing software vendor licenses to the cloud. As you build out cloud infrastructure on AWS, you can save costs by using bring-your-own-license (BYOL) opportunities, that is, by repurposing your existing license inventory for use with cloud resources. License Manager reduces the risk of licensing overages and penalties with inventory tracking that is tied directly into AWS services.
管理控制台
AWS 管理控制台是一款 Web 应用程序,包含并引用多种用于管理 Amazon Web Services 的服务控制台。首次登录时,您会看到控制台主页。
OpsWorks
AWS OpsWorks 提供了一种简单灵活的方法来创建和管理堆栈及应用程序。使用 AWS OpsWorks,您可以预置 AWS 资源、管理它们的配置、为这些资源部署应用程序,以及监控它们的运行状况。
Organizations:
AWS Organizations 是一项账户管理服务,可让您将多个 AWS 账户整合到您创建并集中管理的组织中。借助 AWS Organizations,您可以创建成员账户,还可以邀请现有账户加入您的组织。您可以将这些账户分到不同的组中,然后应用基于策略的控制。
Service Catalog
利用 AWS Service Catalog,IT 管理员可以创建、管理和向最终用户分发已批准的产品组合,然后,最终用户可以在个性化的门户中访问他们所需的产品。典型的产品包括使用 AWS 资源(例如,Amazon EC2 实例或 Amazon RDS 数据库)部署的服务器、数据库、网站或应用程序。您可以控制哪些用户具有特定产品的访问权限,以便强制遵守组织的业务标准、管理产品生命周期并帮助用户有把握地找到并启动产品。
Systems Manager
使用 AWS Systems Manager 组织、监控 AWS 资源并对其自动执行管理任务。
Tools for PowerShell
AWS Tools for PowerShell 和 AWS Tools for PowerShell Core 是 PowerShell 模块,依托于由适用于 .NET 的 AWS 开发工具包公开的功能构建,能让您从 PowerShell 命令行在 AWS 资源上为操作编写脚本。虽然您使用开发工具包的服务客户端和方法来实现 cmdlet,但 cmdlet 为您提供了 PowerShell 体验来指定参数和处理结果。例如,这两个模块中的 cmdlet 都支持 PowerShell 管道在 cmdlet 中输入和输出 PowerShell 对象。
Trusted Advisor
AWS Support 为 Amazon Web Services 用户提供支持。所有用户均可以通过 AWS Support 中心获得账户和账单方面的帮助。此外,加入某些支持计划的客户还可以访问其他功能,包括 AWS Trusted Advisor 和可以编程方式访问支持案例和 Trusted Advisor 的 API。
Well-Architecture Tool:
使用 AWS Well-Architected Tool 对照当前的 AWS 架构最佳实践审核您的工作负载。AWS Well-Architected Tool 测量工作负载并提供有关如何改进架构的建议。
创建基础设施
使用4中不同的aws基础服务把旧的基础设施复制到aws。
ELB:【SaaS】Elastic Load Balancing,弹性负载均衡。
ELB将访问流量分发到它后面的一组服务器上,并且其自身默认高可用,用户无需担心负载均衡器本身成为瓶颈点。
EC2:【IaaS】Elastic Compute Cloud,弹性云计算。
EC2服务将为用户提供运行在云端的虚拟服务器,但是虚拟服务器本身不提供高可用性,其自身可能会宕机,因此至少部署两台虚拟服务器,并通过ELB进行流量分发。一旦有服务器宕机,ELB将会自动停止对宕机的服务器的流量分发。
RDS:【SaaS】Relational Database Service,关系数据库服务。
AWS的RDS提供对如下传统关系型数据库的支持:
此处使用MySQL。
在选用了DB的规格(存储,CPU,RAM)后,RDS会负责其余的工作(备份,升级)。
并且RDS通过数据复制实现MySQL的高可用。
安全组security group。
安全组类似于防火墙,是AWS控制网络流量的一项基本服务。
安全组能附加到ELB,EC2,RDS等服务上。
通过设置和附加安全组,ELB可以只接受对80端口访问的互联网流量,Web服务器只接受来自ELB对服务器80端口的访问请求,而MySQL数据库则只接受来自Web服务器对于3306端口的连接。如果想通过SSH直接登录Web服务器,则需打开22端口。
首先将地区切换至【弗吉尼亚北部】
为了创建博客站点的基础设施,要打开AWS管理控制台并登录,点击导航栏中的【服务】,然后点击【CloudFormation】服务。
输入S3(Simple Storage Service)的URL:https://s3.amazonaws.com/awsinaction/chapter2/template.json
点击右下角的【在设计器中查看】,可以查看到该堆栈的具体设计结构。
以下为用蓝图CloudFormation(堆栈)实现的基础设施即代码(即基础设施的自动化)
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "AWS in Action: chapter 2",
"Parameters": {
"KeyName": {
"Description": "Key Pair name",
"Type": "AWS::EC2::KeyPair::KeyName",
"Default": "mykey"
}
},
"Mappings": {
"EC2RegionMap": {
"ap-northeast-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-cbf90ecb"},
"ap-southeast-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-68d8e93a"},
"ap-southeast-2": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-fd9cecc7"},
"eu-central-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-a8221fb5"},
"eu-west-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-a10897d6"},
"sa-east-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-b52890a8"},
"us-east-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-1ecae776"},
"us-west-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-d114f295"},
"us-west-2": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-e7527ed7"}
}
},
"Resources": {
"VPC": {
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": "172.31.0.0/16",
"EnableDnsHostnames": "true"
}
},
"InternetGateway": {
"Type": "AWS::EC2::InternetGateway",
"Properties": {
}
},
"VPCGatewayAttachment": {
"Type": "AWS::EC2::VPCGatewayAttachment",
"Properties": {
"VpcId": {"Ref": "VPC"},
"InternetGatewayId": {"Ref": "InternetGateway"}
}
},
"SubnetA": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"AvailabilityZone": {"Fn::Select": ["0", {"Fn::GetAZs": ""}]},
"CidrBlock": "172.31.38.0/24",
"VpcId": {"Ref": "VPC"}
}
},
"SubnetB": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"AvailabilityZone": {"Fn::Select": ["1", {"Fn::GetAZs": ""}]},
"CidrBlock": "172.31.37.0/24",
"VpcId": {"Ref": "VPC"}
}
},
"RouteTable": {
"Type": "AWS::EC2::RouteTable",
"Properties": {
"VpcId": {"Ref": "VPC"}
}
},
"RouteTableAssociationA": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",
"Properties": {
"SubnetId": {"Ref": "SubnetA"},
"RouteTableId": {"Ref": "RouteTable"}
}
},
"RouteTableAssociationB": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",
"Properties": {
"SubnetId": {"Ref": "SubnetB"},
"RouteTableId": {"Ref": "RouteTable"}
}
},
"RoutePublicNATToInternet": {
"Type": "AWS::EC2::Route",
"Properties": {
"RouteTableId": {"Ref": "RouteTable"},
"DestinationCidrBlock": "0.0.0.0/0",
"GatewayId": {"Ref": "InternetGateway"}
},
"DependsOn": "VPCGatewayAttachment"
},
"NetworkAcl": {
"Type": "AWS::EC2::NetworkAcl",
"Properties": {
"VpcId": {"Ref": "VPC"}
}
},
"SubnetNetworkAclAssociationA": {
"Type": "AWS::EC2::SubnetNetworkAclAssociation",
"Properties": {
"SubnetId": {"Ref": "SubnetA"},
"NetworkAclId": {"Ref": "NetworkAcl"}
}
},
"SubnetNetworkAclAssociationB": {
"Type": "AWS::EC2::SubnetNetworkAclAssociation",
"Properties": {
"SubnetId": {"Ref": "SubnetB"},
"NetworkAclId": {"Ref": "NetworkAcl"}
}
},
"NetworkAclEntryIngress": {
"Type": "AWS::EC2::NetworkAclEntry",
"Properties": {
"NetworkAclId": {"Ref": "NetworkAcl"},
"RuleNumber": "100",
"Protocol": "-1",
"RuleAction": "allow",
"Egress": "false",
"CidrBlock": "0.0.0.0/0"
}
},
"NetworkAclEntryEgress": {
"Type": "AWS::EC2::NetworkAclEntry",
"Properties": {
"NetworkAclId": {"Ref": "NetworkAcl"},
"RuleNumber": "100",
"Protocol": "-1",
"RuleAction": "allow",
"Egress": "true",
"CidrBlock": "0.0.0.0/0"
}
},
"LoadBalancer": {
"Type": "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties": {
"Subnets": [{"Ref": "SubnetA"}, {"Ref": "SubnetB"}],
"LoadBalancerName": "awsinaction-elb",
"Listeners": [{
"InstancePort": "80",
"InstanceProtocol": "HTTP",
"LoadBalancerPort": "80",
"Protocol": "HTTP"
}],
"HealthCheck": {
"HealthyThreshold": "2",
"Interval": "5",
"Target": "TCP:80",
"Timeout": "3",
"UnhealthyThreshold": "2"
},
"SecurityGroups": [{"Ref": "LoadBalancerSecurityGroup"}],
"Scheme": "internet-facing"
},
"DependsOn": "VPCGatewayAttachment"
},
"LoadBalancerSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "awsinaction-elb-sg",
"VpcId": {"Ref": "VPC"},
"SecurityGroupIngress": [{
"CidrIp": "0.0.0.0/0",
"FromPort": 80,
"IpProtocol": "tcp",
"ToPort": 80
}]
}
},
"WebServerSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "awsinaction-sg",
"VpcId": {"Ref": "VPC"},
"SecurityGroupIngress": [{
"CidrIp": "0.0.0.0/0",
"FromPort": 22,
"IpProtocol": "tcp",
"ToPort": 22
}, {
"FromPort": 80,
"IpProtocol": "tcp",
"SourceSecurityGroupId": {"Ref": "LoadBalancerSecurityGroup"},
"ToPort": 80
}]
}
},
"DatabaseSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "awsinaction-db-sg",
"VpcId": {"Ref": "VPC"},
"SecurityGroupIngress": [{
"IpProtocol": "tcp",
"FromPort": "3306",
"ToPort": "3306",
"SourceSecurityGroupId": {"Ref": "WebServerSecurityGroup"}
}]
}
},
"Database": {
"Type": "AWS::RDS::DBInstance",
"DeletionPolicy": "Delete",
"Properties": {
"AllocatedStorage": "5",
"BackupRetentionPeriod": "0",
"DBInstanceClass": "db.t2.micro",
"DBInstanceIdentifier": "awsinaction-db",
"DBName": "wordpress",
"Engine": "MySQL",
"MasterUsername": "wordpress",
"MasterUserPassword": "wordpress",
"VPCSecurityGroups": [{"Fn::GetAtt": ["DatabaseSecurityGroup", "GroupId"]}],
"DBSubnetGroupName": {"Ref": "DBSubnetGroup"}
},
"DependsOn": "VPCGatewayAttachment"
},
"DBSubnetGroup" : {
"Type" : "AWS::RDS::DBSubnetGroup",
"Properties" : {
"DBSubnetGroupDescription" : "DB subnet group",
"SubnetIds": [{"Ref": "SubnetA"}, {"Ref": "SubnetB"}]
}
},
"LaunchConfiguration": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"yum": {
"php": [],
"php-mysql": [],
"mysql": [],
"httpd": []
}
},
"sources": {
"/var/www/html": "https://wordpress.org/wordpress-4.2.4.tar.gz"
},
"files": {
"/tmp/config": {
"content": {"Fn::Join": ["", [
"#!/bin/bash -ex\n",
"cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php\n",
"sed -i \"s/'database_name_here'/'wordpress'/g\" wp-config.php\n",
"sed -i \"s/'username_here'/'wordpress'/g\" wp-config.php\n",
"sed -i \"s/'password_here'/'wordpress'/g\" wp-config.php\n",
"sed -i \"s/'localhost'/'", {"Fn::GetAtt": ["Database", "Endpoint.Address"]}, "'/g\" wp-config.php\n",
"chmod -R 777 wp-content/ \n"
]]},
"mode": "000500",
"owner": "root",
"group": "root"
}
},
"commands": {
"01_config": {
"command": "/tmp/config",
"cwd": "/var/www/html/wordpress"
}
},
"services": {
"sysvinit": {
"httpd": {
"enabled": "true",
"ensureRunning": "true"
}
}
}
}
}
},
"Properties": {
"EbsOptimized": false,
"ImageId": {"Fn::FindInMap": ["EC2RegionMap", {"Ref": "AWS::Region"}, "AmazonLinuxAMIHVMEBSBacked64bit"]},
"InstanceType": "t2.micro",
"SecurityGroups": [{"Ref": "WebServerSecurityGroup"}],
"KeyName": {"Ref": "KeyName"},
"AssociatePublicIpAddress": true,
"UserData": {"Fn::Base64": {"Fn::Join": ["", [
"#!/bin/bash -ex\n",
"yum update -y aws-cfn-bootstrap\n",
"/opt/aws/bin/cfn-init -v --stack ", {"Ref": "AWS::StackName"}, " --resource LaunchConfiguration --region ", {"Ref": "AWS::Region"}, "\n",
"/opt/aws/bin/cfn-signal -e $? --stack ", {"Ref": "AWS::StackName"}, " --resource AutoScalingGroup --region ", {"Ref": "AWS::Region"}, "\n"
]]}}
}
},
"AutoScalingGroup": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"LoadBalancerNames": [{"Ref": "LoadBalancer"}],
"LaunchConfigurationName": {"Ref": "LaunchConfiguration"},
"MinSize": "2",
"MaxSize": "2",
"DesiredCapacity": "2",
"VPCZoneIdentifier": [{"Ref": "SubnetA"}, {"Ref": "SubnetB"}]
},
"CreationPolicy": {
"ResourceSignal": {
"Timeout": "PT10M"
}
},
"DependsOn": "VPCGatewayAttachment"
}
},
"Outputs": {
"URL": {
"Value": {"Fn::Join": ["", ["http://", {"Fn::GetAtt": ["LoadBalancer", "DNSName"]}, "/wordpress"]]},
"Description": "Wordpress URL"
}
}
}
点击下一步,为基础设施打上标签(tag)。
标签是一个键值对(Key-Value),可以添加到基础设施的所有组件上。
通过使用标签可以区分不同的资源,例如:生产资源与测试资源的区分。也可以添加部门名称以追踪各部门的成本。
媒体上传和插件
WorldPress使用MySQL DB存储文章和用户数据。但是在默认设置下,wordpress把上传的媒体文件和插件存储在一个名为wp-content的而本地文件目录下,所以服务器不是无状态的。如果使用多台服务器,就需要每个请求可以被任意一台的服务器处理,但是由于上传的媒体和插件只保存在某一台服务器上,所以默认配置并不支持多台服务器的部署方式。
使用标签来标记wordpress系统的资源,这有助于你以后更快速找到属于wordpress系统的基础架构。
使用system作为key,wordpress作为value。
点击【审核】,最后将看到一个确认页面。
在【估算费用】一栏中,点击后将在后台打开一个新的标签页将会显示该堆栈的所有设施的费用花费情况。
最后点击【创建】,基础架构现在将会被创建。
名为wordpress的堆栈正处于CREATE_IN_PROGRESS的状态,等待5-15min左右的时间,待其状态变为CREATE_COMPLETE
创建完成后,切换到【输出】标签,将看到访问wordpress系统的URL,点击链接即可访问。
探索基础设施
现已经创建好了博客站点的基础设施,该基础设施包含如下几个部分:
点击导航栏中的【资源组】,点击【创建组】
创建一个新的资源组。
估算成本
登录如下链接可访问成本:https://s3.amazonaws.com/awsinaction/chapter2/cost.html
删除基础设施
进入管理控制台的CloudFormation服务
在确认删除后,AWS会在几分钟内自动分析资源依赖关系并删除整个基础设施。
这是管理基础设施的一种高效的方法:自动化基础设施的创建,自动化基础设施的删除。
可以随时按需创建或删除基础设施,仅需在创建和运行基础设施时支付费用,删除后将不会在支付费用。