赞
踩
AWS 中的一切都是 API 调用,每个 AWS 服务都有自己的一组 API 可以与之交互。
AWS 命令行界面 (AWS CLI) 是一种开源工具,使你能够使用命令行 shell 中的命令与 AWS 服务进行交互。
配置后,AWS CLI 能够从终端程序中的命令提示符开始运行实现与基于浏览器的 AWS 管理控制台所提供的功能等效的命令。
AWS Cloud9 是基于云的 IDE ,并已内置多种功能,可进行开发和协作项目。Cloud9 可以提供的其中一项功能就是使用 AWS 命令行界面。
可以通过 Web 浏览器访问 AWS Cloud9 IDE。可以根据自己的喜好配置 IDE。可以切换颜色主题、绑定快捷键、启用特定于编程语言的语法着色和代码格式化等。
在Cloud9中, 不要出于任何原因将AWS 凭证硬编码到代码中,应该尽可能依赖 IAM role 进行访问。
Boto3 是适用于 Python 的 AWS 开发工具包。它使 Python 开发人员能够创建、配置和管理 AWS 服务,例如 EC2 和 S3。
Boto3 中的一些概念:
AWS Toolkit for PyCharm 是 PyCharm IDE 的开源插件,可以更轻松地在 Amazon Web Services 上创建、调试和部署 Python 应用程序。
AWS Toolkit 使用 AWS 无服务器应用程序模型 (AWS SAM) 创建和管理 AWS 资源,例如 AWS Lambda 函数。
无服务器应用程序是 Lambda 函数、事件源和其他资源的组合,它们协同工作以执行任务。
Amazon API Gateway 是一项 AWS 服务,用于创建、发布、维护、监控和保护任何规模的 REST、HTTP 和 WebSocket API。API 开发人员可以创建API 访问 AWS 或其他 Web 服务以及存储在 AWS 云中的数据的 API。
API Gateway 支持多种类型的 API,这里将重点介绍 REST API。
API Gateway 中的 REST API 是与后端 HTTP 端点、Lambda 函数或其他 AWS 服务集成的资源和方法的集合。API Gateway REST API 使用请求/响应模型,其中客户端向服务发送请求并且服务同步响应。这种模型适用于依赖于同步通信的许多不同类型的应用程序。
下图显示了客户端调用 API 以访问后端资源的步骤。
API Gateway 可以执行基本验证,验证在 API 的方法请求和方法响应中执行。对于基本验证,API Gateway 会验证以下条件之一或两者:
API Gateway 中的模型用于定义 Method Request 上传入数据的格式,或 Method Response 上传出数据的格式。
映射是用 Velocity 模板语言 (VTL) 编写的模板,您可以将其应用于 REST API 的集成请求或集成响应。映射模板允许转换数据,包括注入硬编码数据,或在数据传递到支持服务之前或在将响应发送到客户端之前更改数据的形状。
Stage(阶段)是对部署的命名引用,使用 Stage 来管理和优化特定部署。例如,可以配置阶段设置以启用缓存、自定义请求限制、配置日志记录、定义阶段变量以进行测试。
阶段变量是名称-值对,可以将其定义为与 REST API 的部署阶段关联的配置属性。它们的作用类似于环境变量,可以在 API 设置和映射模板中使用。
下图列举了一些身份验证的方法
AWS Lambda 是一项计算服务,无需预置或管理服务器即可运行代码。AWS Lambda 仅在需要时执行您的代码并自动扩展,从每天几个请求到每秒数千个请求。
当 AWS Lambda 执行 Lambda 函数时,它会预置和管理运行您的 Lambda 函数所需的资源。创建 Lambda 函数时可以指定配置信息,例如 Lambda 函数允许的内存量和最长执行时间。
AWS Lambda其中一个很重要的概念是 execution context reuse,意思是在函数的 handler 方法之外声明的对象保持初始化,在再次调用函数时提供额外的优化。
当代码在 Lambda 中执行时,该服务将启动一个微型虚拟机,该虚拟机将下载您的代码和所需的所有依赖项,然后执行它。AWS 在创建这项技术时考虑了 Lambda 以及 AWS Fargate 服务中使用的多租户容器。
使用 AWS Lambda 时需要注意两种类型的权限。
第一种是执行权限。lambda 函数的执行权限由 IAM 角色控制。此角色将包含允许或拒绝进行特定 API 调用的策略。为了使 lambda 函数中运行的代码能够调用 AWS API,执行角色必须包含这些 API 调用的权限。
AWS Lambda 需要注意的第二种权限类型是基于资源的策略。基于资源的策略用于控制对调用和管理 lambda 函数的访问。
设置触发器调用 lambda 函数时,有两个主要模型。
首先是push 模型。push 模型是触发器向 lambda 发送事件,然后调用您的 lambda 函数。使用推送模型时,基于资源的策略必须允许触发器调用 lambda 函数。
第二个模型是pull 模型。在pull 模型中,AWS Lambda 从事件源中提取事件,然后调用 lambda 函数,叫做event source mapping。例如Amazon Simple Queue Service (SQS) 服务,SQS 允许消息在队列中建立,然后您的代码将处理这些消息,我们不会在 SQS 每次收到消息时都调用 lambda,而是在队列中建立消息,并且将事件源映射定义为 lambda 函数的触发器。AWS Lambda 会将事件从 SQS pull 到 lambda 函数。
Lambda存在冷启动问题,在一个lambda函数结束运行以后,它的handler以外的部分会持续存在一段时间,例如数据库访问,因此在连续调用相同函数时会缩短运行时间。我们可以通过设置Provisioned concurrency来控制一直保持运行的变量。
通过 CLI 或 SDK 调用 Lambda 函数时,可以根据使用的 API 调用选择调用类型(同步或异步)。使用 AWS 服务触发 Lambda 函数时,调用类型通常由配置的触发器决定。例如,S3 异步调用 Lambda。
一些服务例如 API Gateway可以自主选择调用类型。API Gateway 默认同步调用 Lambda。在长延迟操作的情况下,异步调用它并使用另一种机制让客户端知道操作已完成更好。
版本:可以在创建新函数或更新现有函数时发布新版本的 AWS Lambda 函数。每个版本的 lambda 函数都有自己唯一的 Amazon 资源名称 (ARN)。
别名:别名本质上是指向一个特定 Lambda 版本的指针。创建的每个别名都有一个唯一的 ARN。一个别名只能指向一个函数版本,不能指向另一个别名。您可以更新别名以指向该函数的新版本。
AWS Step Functions 用于协调分布式组件并分析分布式工作流的流程。Step Functions 基于任务和状态机的概念。使用基于 JSON 的 Amazon 状态语言来定义状态机。Step Functions 提供了一个图形控制台,可将应用程序的组件排列和可视化为一系列步骤。
状态机包含以下几种状态:
Fail 类型以外的任何状态类型都可以完全控制输入和输出。可以使用“InputPath”、“ResultPath”和“OutputPath”来控制它们。路径是以 $ 开头的字符串,可用于标识 JSON 文本中的组件。
AWS Step Functions 与一些 AWS 服务集成,以便可以调用 API 操作,并直接从 Step Functions 中的 Amazon 状态语言协调执行。可以使用三种服务集成模式控制这些 AWS 服务:
工作流分为两种,
活动:在 AWS Step Functions 中可以创建活动。活动被用作将运行在 Amazon EC2 或 Amazon ECS 等地方的代码或任何外部计算(称为活动工作者)与状态机中的特定任务相关联的一种方式。当 Step Functions 达到活动任务状态时,工作流会等待活动工作点轮询任务。
活动工作点使用 GetActivityTask API 轮询 Step Functions,并为请求中的相关活动发送 ARN。 GetActivityTask 返回一个响应,其中包括任务的 JSON 输入字符串和 taskToken。
一些应用程序需要实现回调模式。回调任务提供了一种在返回任务令牌之前暂停工作流的方法。一项任务可能需要等待人工批准、与第三方集成或调用遗留系统。对于此类任务,您可以无限期暂停 Step Functions,并等待外部流程或工作流程完成。
AWS X-Ray 是一项服务,它收集有关应用程序所服务的请求的数据,并提供可用于查看、过滤和深入了解这些数据的工具,以识别问题和优化。对于应用程序的任何跟踪请求,不仅可以查看有关请求和响应的详细信息,还可以查看有关应用程序对下游 AWS 资源、微服务、数据库和 HTTP Web API 的调用的详细信息。
一些关于AWS X-Ray 的概念:
Log events:日志事件是被监视的应用程序或资源记录的某些活动的记录。
Log streams:日志流是共享同一源的一系列日志事件。
Log groups:日志组定义共享相同保留、监控和访问控制设置的日志流组。
Metric filters:可以使用指标过滤器从摄取的事件中提取指标观察结果,并将它们转换为 CloudWatch 指标中的数据点。
Retention settings:保留设置可用于指定日志事件在 CloudWatch Logs 中保留多长时间。
AWS 边缘站点是 Amazon CloudFront 用来缓存您的内容副本以便更快地交付给全球用户的站点。通过将内容部署到边缘位置,可以为最终用户减少应用程序的延迟,因为他们在物理上比您最初托管资源的区域更靠近他们的位置访问资源。
我们可以在 Amazon API Gateway 中启用 API 缓存来缓存终端节点的响应。通过缓存,可以减少对端点的调用次数,还可以改善对 API 的请求延迟。
Lambda@Edge 是 Amazon CloudFront 的一项功能,可让您在更靠近应用程序用户的位置运行代码,从而提高性能并减少延迟。
可以将 Lambda 函数配置为以层的形式引入额外的代码和内容。层是包含库、自定义运行时或其他依赖项的 ZIP 存档。使用层,您可以在函数中使用库,而无需将它们包含在部署包中。层可以让您的部署包保持较小,从而使开发更容易。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。