lambda计算需求-Lambda函数配置_第1页
lambda计算需求-Lambda函数配置_第2页
lambda计算需求-Lambda函数配置_第3页
lambda计算需求-Lambda函数配置_第4页
lambda计算需求-Lambda函数配置_第5页
已阅读5页,还剩451页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AWSLambda:开发指Copyright©2017AmazonWebServices,Inc.and/oritsaffiliates.sAmazon'strademarksandtradedressmaynotbeusedinconnectionwithanyproductorservicethatisnotAmazon's,inanymannerthatislikelytocauseconfusionamongcustomers,orinanymannerthatdisparagesordiscreditsAmazon.AllothertrademarksnotownedbyAmazonarethepropertyoftheirrespectiveowners,whomayormaynotbeaffiliatedwith,connectedto,orsponsoredbyTableof什么是AWS 应在何时使用 您是AWSLambda的新用户吗 Lambda函 计算需求-Lambda函数配 调用类 构建Lambda函 为您的Lambda函数编写代 部署代码和创建Lambda函 和故障排 基于AWSLambda的应用程序示 相关编程模 创建部署程序 版本控制和别 环境变 标记Lambda函 VPC支 配置Lambda函数以Amazon 对Lambda函数的Internet.........................................................................................................................设置支持VPC的Lambda函数的准 :AmazonVPC中的资 场 CloudWatch指 CloudWatch日 指 死信队 使用AWSLambda构建应用程 示例 示例 示例3:自定义应用程序发布事件和调用Lambda函 建议阅读材 事件源........................................................................................................................................................................AWS服务的事件源AWS基于流的服务的事件 自定义应用程序的事件 支持的事件 Amazon Amazon AmazonKinesis AmazonSimpleNotification AmazonSimple Amazon AWS AmazonCloudWatch AmazonCloudWatch事 计划的事件(由AmazonCloudWatch事件提供支持 AWS Amazon Amazon AmazonAPI 其他事件源:根据需要调用Lambda函 示例事件数 部署基于Lambda的应用程 使用AWSCloudFormation部署无服务器应用程 使用AWS无服务器应用程序模型(AWS 创建您自己的无服务器应用程 基于Lambda应用程序的自动化部 使用SAMLocal在本地测试您的无服务应用程序(公开测试版 支持的运行 使用SAMLocal的要 SAMLocal使用入 基于Lambda的应用程序问题排 利用AWSX-Ray基于Lambda的应用程 利用Lambda设置AWSX- Lambda作为AWSX-Ray........................................................................................................................从Lambda函数发送分 Lambda环境中的AWSX-Ray守护程 使用环境变量与AWSX-Ray通 在AWSX-Ray控制台中Lambda:示 如何使 AWSLambda如何运行代码?容器模 并发执 并发执行请求速 并发执行限 扩 出错时重 权限模 管理权限:使用IAM角色(执行角色 管理权限:使用Lambda函数策 建议阅读材 执行环 适用于Lambda函数的环境变 建议阅读材 入 步骤1:设置AWS账户和AWS 步骤1.1:设置账 步骤1.2:设置AWS 步骤2:创建oWorldLambda函数和探索控制 入门准备工 步骤2.1:创建oWorldLambda函 步骤2.2:调用Lambda函 步骤2.3:(可选)创建用Java编写的Lambda函 步骤2.4:(可选)创建使用C#编写的Lambda函 步骤3:使用Lambda和API网关创建简单的微服 下一 步骤3.1:使用AmazonAPIGateway创建 步骤3.2:测试发送HTTPS请 步骤3.3:(可选)尝试其他蓝 接下来做什么 使用案 Amazon ......................................................................................................................................................................... .........................................................................................................................................................................Amazon .........................................................................................................................................................................AWS .........................................................................................................................................................................Amazon .........................................................................................................................................................................AmazonAPI 将AWSLambda与AmazonAPIGateway结合使用(按需并通过 移动后端 .........................................................................................................................................................................计划的事 .........................................................................................................................................................................自定义用户应用程 .........................................................................................................................................................................AWS 设置Lambda@Edge的IAM权限和角 为CloudFront事件创建一个Lambda@Edge函数和一个触发 为Lambda@Edge函数添加触发器(AWSLambda控制台 为Lambda@Edge编写函 示例:A/B测 示例:HTTP重定 为Lambda@Edge编辑Lambda函 测试和调 Lambda@Edge限 使用AWSCloudTrail进行API日志记 CloudTrail中的AWSLambda信 了解AWSLambda日志文件条 最佳实 函数代 函数配 警报与指 流事件调 Async调 Lambda 限 AWSLambda限制列 AWSLambda限制错 验证和控 验 控 管理概 AWSLambda资源和操 了解资源 管理对资源 指定策略元素:操作、效果、资源和委托 在策略中指定条 使用基于的策略(IAM策略 使用AWSLambda控制台所需的权 适用于AWSLambda的AWS托管(预定义)策 客户托管策略示 控制台权 使用基于资源的策略(Lambda函数策略 允许AmazonS3调用Lambda函 允许AmazonAPIGateway调用Lambda函 跨账户方 检索Lambda函数策 删除权 使用Lambda函数版本控制、别名和权 LambdaAPI权限参 策略模 基本:“基本Lambda权限 VPCAccess:“LambdaVPC权限 Kinesis:“LambdaKinesis流轮询器权限 Edge:”基本的EdgeLambda权限 堆栈只读权限 AMI:“AMI只读权限 KMS:“KMS权限 S3:“S3对象只读权限 权限 SES:“SES退回邮件权限 TestHarness:“测试设备权限 Microservice:“简单微服务权限 :“连接权限 SQS:“SQS轮询器权限 IoTButton:“AWSIoT按钮权限 RekognitionNoDataAccess:”AmazonRekognition无数据权限 只读权限 只写权限 API参 CreateEventSourceMap................................................................................................................................ DeleteEventSourceMap................................................................................................................................ GetEventSourceMap..................................................................................................................................... UpdateEventSourceMap.............................................................................................................................. Data 文档历史记 应在何时使用什么是AWSSama是一项计算服务,可使您无需预配置或管理服务器即可运行代码。AWSama只在需要时执行您的代码并自动缩放,从每天几个请求到每秒数千个请求。您只需按消耗的计算时间–代码未运行时不产生费用。借助ASama任何管理。AWSama在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作、容量预置和自动扩展、代码和记录。您只需要以ASama支持的一种语言(目前为Ne.s、aa、#和t)提供您的代码。您可以使用AWSambda运行代码以响应事件,例如更改Aazon3桶或AazonDynamoDB表中的数据;以及使用AazonAPIGateway运行代码以响应HTP请求;或者使用通过AWSSDK完成的A调用来调用您的代码。借助这些功能,您可以使用ambda轻松地为AazonS3和AazonDynamoDB等AWS服务构建数据处理触发程序;处理Kines中的流数据,或创建您自己的按AWS规模、性能和安您也可以构建由事件触发的函数组成的无服务器应用程序,并使用AWSCodePipeline和AWS自动部署这些应用程序。有关信息,请参阅部署基于Lambda的应用程序(p.133)有关AWSLambda执行环境的信息,请参阅Lambda执行环境和可用库(p.164)。有关AWSLambda如何确定执行您的代码所需的计算资源的信息,请参Lambda函数配p.3)。应在何时使用AWS (即,Node.js、Java、C#和Python)编写应用程序代码,并在AWSLambda标准运行时环境和Lambda提在使用Sama时,您只需负责自己的代码。AWSama管理提供内存、CU、网络和其他资源均衡的计算机群。这是以灵活性为代价的,这意味着您不能登录计算实例,或自定义操作系统或语言运行时。通过这些约AWSama可以代表您执行操作和管理活动,包括预置容量、机群运行状况、应用全补丁、部署您的代码以及和记录您的ama函数日志。如果您需要管理自己的计算资源,AmazonWebServices还提供了其他计算服务以满足您的Amznceld(Amazn)服务提供灵活性和各种2实例类型供您选择。它允许您选择自定义操作系统、网络和安全性设置以及整个软件堆栈,但您负责预置容量、机群运行状况和性能以及使用可用区来实现容错。ElasticBeanstalk提供易用的服务,您可将应用程序部署和扩展到AmazonEC2上,在其中您保留对底EC2实例的所和完整控制权AWSLambda的新用户吗AWSLambda的新用户吗如果您是首次接触AWSLambda阅读产品概述并宣传,以了解示例使用案例。这些资源可在AWSLambda网页上找到阅读本指南中的“工作原理”部分。本部分介绍了您可以用来打造端到端体验的各种AWSLambda组件。有关信息,请参阅如何使用(p.159)。查看指南中的”Lambda函数“部分。要了解Lambda函数的编程模型和部署选项,您应该熟悉几个概念。本节介绍了这些概念,并提供了有关这些概念在可用于编写Lambda函数代码的各种语言中的工作方式的详细信息。有关信息,请参阅Lambda函数(p.3)。尝试基于控制台的入门练习。此练习提供了使用控制台创建和测试您的第一个Lambda函数的说明。您还可以了解控制台提供的蓝图以快速创建您的Lambda函数。有关信息,请参阅入门(p.168)。阅读本指南的”使用AWSLambdaAWSLambda组件。有关信息,请参阅使用AWSLambda构建应用程序(p.113)除了入门练习之外,您还可浏览各种使用案例,每个使用案例都随附有指导您完成示例方案的。根据您的应用程序需求(例如,无论您需要事件驱动型ama函数调用还是按需调用)求的特定进行操作。有关信息,请参阅使用案例(p.。以下提供了有关AWSLambda的信息AWSLambda函数版本控制和别名(p.使用AmazonCloudWatch和AWSLambda函数(p.使用AWSLambda函数的最佳实践(p.AWSLambda限制(p.计算需求-Lambda函数配置Lambda函数在您打包自定义代码(包括任何依赖项)并将其上传到AWSLambda中之后,您就创建了Lambda函数。如果您是首次接触AWSLambda,可能会问:哪些类型的代码可以作为Lambda函数运行?AWS如何执行代码?AWSLambda如何知道运行Lambda代码所需的内存量和CPU要求?以下部分Lambda函数的工作方式根据您的情景,您可以构建应用程序,在其中使用AWSLambda服务运行您的所有或部分应用程序代码。有关信息,请参阅构建Lambda函数(p.4)。如何使用(p.159)提供了示例,说明如何为特定情景创建Lambda函数这一中的部分提供有关Lambda函数的下列介绍性信息计算需求-Lambda函数配置(p.调用类p.简介:构建Lambda函数(p.配置Lambda函数以AmazonVPC中的资源(p.使用AmazonCloudWatch和AWSLambda函数(p.计算需求-Lambda函数配置Lambda函数包含代码以及任意关联依赖项。此外,Lambda函数还有与之关联的配置信息。最初,您在创建Lambda函数时指定配置信息。Lambda为您提供API来更新一些配置数据。Lambda函数配置信息包括您需要的计算资源-您仅指定要为您的Lambda函数分配的内存量。AWSLambda分配与内存成比例的CPU处理能力,方式是使用与通用AmazonEC2实例类型(如M3类型)相同的比率。例如,如果为您的Lambda函数分配256MB内存,则该函数获得的CPU份额将是仅分配128MB内存时的两倍。您可以更新配置,以64MB的增量请求额外的内存128MB1536MB)。有关相关限制的信息,请参阅AWSLambda限制(p.291)。要更改您的Lambda登录AWS管理控制台,然后导航到AWSLambda单击Configuration选项卡,然后展开Advancedsettings在Memory(MB)列表中,选择您所(可选)您可以使用以下AWSCLI命令更新您的函数的内存大小(使用有效的64MB增量$$awslambdaupdate-function-configuration--function-nameyourfunctionname--regionregionwhereyourfunctionresides--memory-sizememoryamount--profile有关设AWSCLI的信息1:设置AWS账户AWSCLIp.168最长执行时间(超时)-为运行您的Lambda函数所用的AWS资源支用。为了防止您的Lambda无限期运行,您可以指定超时。在达到指定超时时间时,AWSLambda会终止您的Lambda函数。IAM角色(执行角色)AWSLambda在代表您Lambda数时代处理程处理程序是指您的代AWSLambda开始执行的方法。AWSLambda将触发了调用的AWSLambda支持同步和异步调用Lambda函数。只有在您调用Lambda函数时,您才能控制(称为按需调用)您的自定义应用程序Lambda函数您手动调用Lambda函数(例如,使用AWSCLI)用于测试用在这两种情况下,您Invokep.372)操作调Lambda函数,并且可以指定同步或异步调但是,在您使用AWS服务作为事件源时,每个这些服务的调用类型是预定义的。对于这些事件源在调用Lambda函数时使用的调用类型,您没有任何控制方法。例如,AmazonS3始终异步Lambda数,AmazonCognito始终同步调用Lambda函数。对基于流的AWS服务(AmazonKinesisStreams和AmazonDynamoDBStreams),AWSLambda轮询流并同步调用您的Lambda函数。简介:构建Lambda函数您以一Lambda的形式将应用程序代码上传到AWSLambda(一种计算服务),此服务可代表您运行代码。AWSLambda负责预配置和管理服务器以便在调用时运行代码。通常AWSLambda的应用程序的生命周期包括编写代码、将代码部署到AWSLambda,然后是为Lambda函数编写代码-支持哪些语言?是否有我需要遵循的编程模型?如何打包代码和依赖项以便上传到AWSLambda?有哪些可用工具?为您的Lambda函数编写代码上传代码并创建Lambda函数-如何将代码包上传到AWSLambda?如何告知AWSLambda从何处和故障排除-对于生产中的Lambda函数,有哪些可用的指标?如果出现任何故障,如何获取日下列部分提供了介绍性信息,而最后的“示例”部分提供了工作示例以帮助您了解本提供了有关如何开发基于AWSLambda的应用程序的介绍性概览。如何使用(p.159)部分描述了Lambda函数和事件源的具体信息,并说明了AWSLambda如何执行您的Lambda为您的Lambda函数编写代码您可以AWSLambda所支持的Lambda函数代码。有关受支持的语言的列表,请参阅Lambda执行环境和可用库(p.164)。有许多可用于编写代码的工具,例如,AWSLambda控制台、EclipseIDE和VisualStudioIDE。不过,可用的工具和选项取决于:您选择用来编写Lambda函数代码代码中使用的库。AWSLambdaAWSLambda控制VisualStudio,带IDE插件(请参阅VisualStudio中的AWSLambda支EclipseAWSToolkitfor(请参阅AWSLambdaAWSToolkitforEclipse结合使用)AWSToolkit还会创建部署程序包(部署代码和创建Lambda函数(p.6)中进行了说明)VisualStudio,带IDE插件(请参阅VisualStudio中的AWSLambda支.NET内核(请参阅NET核安装指AWSToolkit还会创建部署程序包(部署代码和创建Lambda函数(p.6)中进行了说明)AWSLambda控制此外,无论您选择哪种语言,都有一个用于编写ambda函数代码的模式。例如,如何编写ambda函数的处理程序方法(即,AWSLama在开始执行代码时首先调用的方法)部署代码和创建Lambda函数代码中使用哪些语句CloudWatchLogs中生成日志、如何与AWSLambda运行时交互并获取信息(例如,超时前的剩余时间)以及如何处理异常。编程模型(p.7)部分提供了每种受支持的语言的信息。在您熟悉AWSamba后,请参阅使用案例(p.182),其中提供的分步说明可帮助您探究端到端部署代码和创建Lambda函数要创建Lambda函数,您首先将代码和依赖项打包到部署程序包中。然后,将部署程序包上传到AWSLambda以创建Lambda函数。创建部署程序包-组织代码和依赖项(p.上传部署程序包-创建Lambda函数(p.Lambda(p.您必须首先通过特定方式来组织您的代码和依赖项并创建部署程序包。有关创建部署程序包的说明因您选择用来编写代码的语言而异。例如,您可以使用构建插件(例如,enkns(针对Noes和tMaven(针对Jaa))来创部署程序包有关信,请参阅创建部署程序包(p.)。在使用控制台创建Lambda函数时,控制台会为您创建部署程序包,然后上传该部署程序包以创建函数上传部署程序包-创建Lambda函数AWSLambda提供了CreateFunction(p.337)操作,您可使用此操作创建Lambda函数。可使AWSLambda控制台、AWSCLI和AWS开发工具包创建Lambda函数。在,所有这些接口都调CreateFunction除了提供您的部署程序包之外,您还可以在创建ama函数时提供配置信息,包括ama函数的计算要求、aa函数中的处理程序方法的名称以及运行时,具体取决于您选择用来编写代码的语言。有关信息,请参阅ama函数(p.。此部分提供了有关开发基于AWSLambda的应用程序的介绍性概览。如何使p.159)描述了有关Lambda函数和事件源的具体信息,并说明了AWSLambda如何执行您的Lambda函数。测试Lambda函LambdaLambda函数在控制台中测试Lambda函数使用AWSCLI测试Lambda函数。您可以使用Invoke方法调用您的Lambda函数并传入示例事件数控制台提供了示例事件数据。事件源发布的示例事件(p.125)中还提供了相同的数据,您可以在AWSCLI中使用此数据来调用Lambda函数。在您的Lambda函数处于生产中后,AWSLambda将代表您自动函数,并通过AmazonCloudWatch报告指标。有关信息,请参阅AWSLambda的AmazonCloudWatch指标(p.107)。为帮助您排除函数中的故障,Lambda会记录您的函数处理的所有请求,并自动将代码生成的日志在AmazonCloudWatchLogs中。有关信息,请参阅AWSLambda的AmazonCloudWatch日志(p.108)。基于AWSLambda的应用程序本指南提供了多个示例以及分步说明。如果您是首次使用AWSLambda,入门(p.168)-入门练习提供了基于控制台的体验。在Python中编写示例代码。您可以在控制台中编辑代码,将代码上传到AWSamba,然后使用控制台中提供的示例事件数据来测试代码。使用案例(p.182)-如果您无法使用控制台编写代码,则必须创建您自己的部署程序包,并使用AWSCLI(或开发工具包)创建您的Lambda函数。有关信息,请参阅为您的Lambda函数编写代码(p.5)。“使用案例”部分中的大多数示例都使用AWSCLI。如果您是首次使用AWSLambda,建议相关编程模型(p.7)创建部署程序包(p.AWSLambda函数版本控制和别名(p.使用AmazonCloudWatch和AWSLambda函数(p.您将使AWSLambda支持的语言之一为Lambda函数编写代码。无论您选择哪种语言,都可以采用一个通用模式,即为包含以下概念的Lambda函数编写代码:处理程序-处理程序是ASama调用的用于开始执行ama函数的函数。您在创建ama函数时标识处理程序。在调用ama函数时,AWSama将通过调用处理程序函数来开始执行您的代码。AWSama将任何事件数据作为第一个参数传递给处理程序。您的处理程序应处理此传入事件数据,并且可调用您的代码中的任何其他函数/方法。context对象以及它在运行时与Lambda交互的方式-AWSLambda还将context对象作为第二个参数传递给处理程序函数。通过此context对象,您的代码可与AWSLambda交互。例如,您的代码可在AWSLambda终止Lambda函数前发现剩余的执行时间。此外,对于Node.js等语言,有一个使用回调的异步平台。AWSLambda提供了有关此context对象的其他方法。您将使用这些context对象方法指示AWSLambda终止Lambda函数并将值返回到调用方(可日志记录-您的Lambda函数可包含日志记录语句。AWSLambda将这些日志写入CloudWatchLogs。特定语言语句将生成日志条目,具体取决于您编写Lambda函数代码所用的语言。异常-您的Lambda函数需要将函数执行的结果传递给AWSLambda。根据您编写Lambda函数代码所用的语言,成功结束请求或向AWSLambda通知执行期间出现了错误有几种不同的方式。如果您同步调用该函数,则AWSLambda会将结果转发回客户端。必须以无状态风格编写ama函数代码,且与底层的计算基础设施不存在关联。您的代码应该要求将本地文件系统权限、子流程和类似项目限制为请求的生命周期。持久状态应在Amzn、namB或其他云服务中。要求函数无状态可使Sama根据需要启动合适数量的函数副本,以根据传入事件和请求的速率调整规模。对于不同的请求,这些函数可能不会始终运行在同一个计算实例上,且Sama可能会多次使用ama函数的给定实例。以下语言特定提供了详细信息编程模Node.jsp使用Java编写Lambda函数的编程模型(p.使用C#编写Lambda函数的编程模型(p.用于使用Python编写Lambda函数的编程模型(p.AWSLambda当前支持以下Node.js运行Node.js运行时v6.10(runtime=Node.js运行时v0.10.42(runtime=ev0.10.2目前已淘汰。您必须尽快将现有函数迁移到ASama上可用的较新Noe.s运行时版本(noejs.3或node)。在7年6月0日之前,您可以申请延期:前往ama控制台,然后按照提供的说明操作。不迁移也不延期会导致以Ne.10.42运行时编写的函数的任意调用返回无效参数值错误。注意,对于包含以Nev0.0.42运行时编写的函数的每个区域,您都必须遵循此过程。有关v0..42运行时中编程模型差异的信息,请参阅使用较早的Noe.s运行时v0.10.42(p.)。当您创建Lambda函数时,请指定要使用的运行时。有关信息,请参阅CreateFunction(p.337)runtime参数以下各节说明了在使用Nodejs编写ambda函数代码时常见的编程模式和概念的适用情况。除非另有Lambda函数处理程(Node.jsp.日志记Node.jsp函数错Node.jsp使用较早Node.js运行v0.10.42(p.Lambda在创Lambda函数时,需要指定一个处理程序(您代码中的一个函数),以供AWSLambda在服务执行代码时调用。在使用Node.js创建处理程序函数时,请使用以下一般语法。exports.exports.myHandler=function(event,context,)}exports.exports.myHandler=function(event,context,callback)//Usecallback()andreturninformationtothe}event-AWSLambdacontext-AWSLambda使用此参数为您的处理程序提供正在执行的Lambda函数的运行时信息。有关更多信息,请参阅Context对象(Node.js)(p.11)。callback-您可以使用可选的回调将信息返回给调用方,否则返回值为null。有关信息,请参阅使用回调参数(p.10)。只有Node.js运行时v6.10和v4.3支持回调。如果您使用运行时v0.10.42,则需要使用context行时v0.10.42(p.17)。myHandler-这是AWSLambda调用的函数的名称。您导出此项,使其对AWSLambda可见。假设您将此代码保存为oworld.js。然后,oworld.myHandler是处理程序。有关信息,请参阅CreateFunction(p.337)。如果使用了RequestResponse调用类型(同步执行),则AWSLambda会将Node.js函数调用的结果返回到调用Lambda函数的客户端(在对调用请求的HTTP响应中,已序列化为JSON)。例如,AWSLambda控制台使用RequestResponse调用类型,因此当您使用该控制台测试调用函数时,该控制台将如果处理程序未返回任何内容,AWSLambda将返回空值如果使用了Event调用类型(异步执行),请考虑以下Node.js示例代exports.exports.myHandler=function(event,context,{console.log("value1="+event.key1);console.log("value2="+event.key2);callback(null,"somesuccessmessage");////callback("someerror}此示例有一个函数,该函数同时也是处理程序。在该函数中,)语句会将一些传入的事件数据记录到CludWachoa函数仅在Noe.s事件循环为空(Nodejs事件循环与作为参数传递的事件不同)时退出。如果您使用运行时v0.10.42,则需要使用context方法(done、succeed和fail)正确终止函数。有关信息,请参阅使用较早的Node.js运行时v0.10.42(p.17)上传此代码并将其作为Lambda函数(控制台)进在控制台中,使用以下信息创建Lambda函数使用o-world蓝图建议nodejs6.10指定runtime,不过您也可以选择nodejs4.3。所提供的代码示例对于这两个版在Handler中,将index.handler替换为exports.myHandler有关使用控制台创建Lambda函数的说明,请参阅步骤2.1:创建oWorldLambda函数(p.171)。使用Lambda控制台中提供的名为oWorld的Sampleeventtemplate测试Lambda函数。有关如何执行此操作的说明,请参阅步骤2.2:手动调用Lambda函数并验证结果、日志和指标(p.175)。Node.js运行时v4.3和v6.10支持可选的callback参数。您可以使用它显式将信息返回到调用方。一般语callback(Errorcallback(Errorerror,Objecterror-是可选参数,可用于提供失败的Lambda函数执行的结果。Lambda函数成功时,您可以传递作为第一个参result-是可选参数,可用于提供成功的函数执行的结果。提供的result必须兼容JSON.stringify。如果callbackcallback参数,则行为与您不使用任何参数调用callback()的情况相同。您可以在代码中指定callback以将信息返回到调用方。如果您在代码中不使用callback,AWSLambda将隐式调用它,返回值是null//Indicatessuccessbutnoinformationreturnedtothecallback(null);//Indicatessuccessbutnoinformationreturnedtothe//Indicatessuccessbutnoinformationreturnedtothecallback(null);//Indicatessuccessbutnoinformationreturnedtothecaller.callback(null,"success");//Indicatessuccesswithinformationreturnedtothecaller. //Indicateserrorwitherrorinformationreturnedtothecaller.AWSLambda将任何非null的error参数值视为已处理的异常。无论在Lambda函数时指定了什么调用类型(请参阅Invokep.372)),回调方法自动将error的非null的字符串表示形式记录到与Lambda函数关联的AmazonCloudWatchLogs流中。如果同步调用了Lambda函数(使用RequestResponse调用类型),如果error为null,则将响应正文设置为result如果error不为null,则errorcallback(error,null)(callback(error))时,Lambda256KB。对于较大的错误对象,AWSLambda截断日志并在错误对象旁边显示文本TruncatedbyContext在执Lambda函数时,它可以与AWSLambda进行交互以获取有用的运行时AWSLambda终止您的Lambda函数之前的剩余时间量(超时是Lambda函数配置属性之一)与正在执行的Lambda函数关联的CloudWatch日志组返回到调用了Lambda函数的客户端AWSID。可以使用此请求IDAWSSupport进行任何跟进如果通AWS移动软件开发工具包Lambda函数,则可了解Lambda函数的移动应用程序AWSLambda通过context对象提供此信息,服务将此对象作为第二个参数传递给Lambda函数处理程序。有关信息,请参阅Lambda函数处理程序(Node.js)(p.9)。以下部分提供了使用context对象的示例Lambda请考虑以下Node.js示例。处理程序通过contextexports.handler=function(event,context,callback)//console.log('Receivedevent:',JSON.stringify(event,null,2));console.log('value1=',event.key1);console.log('value3=',console.log('remainingtime=',context.getRemainingTimeInMillis());console.log('functionName=',context.functionName);console.log('AWSrequestID=',context.awsRequestId);console.log('logGroupName=',context.logGroupName);console.log('logStreamName=',context.logStreamName);console.log('clientContext=',context.clientContext);if(typeofcontext.identity!=={identityID=',}callback(null,event.key1);//Echobackthefirstkey////callback("someerror在本示例中,处理程Lambda函数的一些运行时信息记录到CloudWatch。如果Lambda控制台调用该函数,控制台将在Logoutput部分中显示日志。您可使用此Lambda函数并使用控制台测试AWSLambda控制台中测试此代在控制台中,使用o-world蓝图创建Lambda函数。在runtime中,选择nodejs6.10。有关如何执行此操作的说明,请参阅步骤2.1:创建 oWorldLambda函数(p.171)。测试此函数,然后也可更新代码以获 上下文信息Context方法context对象提供了以返回当前正在执行的ambda函数的大约剩余执行时间(在发生超时前)。超时是ambda函数配置之一。当达到超时时间时,AWSLambda会终止您的ambda函数。Context属性context对象提供您可以更新的以下属性默认值为trNe.s运行件循环为空,然后才冻结进程并将结果返回给调用方。您可以将此属性设置为WSama在调用k后立即冻结进程,即使事件循环中存在事件也是如此。AWSama将冻结进程、任何状态数据以及Noes事件循环中的事件(下次调用ama函数时,如果ASama选择使用冻结的进程,则处理事件循环中的任何剩余事件)。有关回调的信息,请参阅使用回调参数(p.1)。此外,context对象提供了您可用来获取运行时信息的以下属性正在执行的Lambda函数的名称Lambdafunction_versionARN用于调用此函数。它可以是函数ARN或别名ARN。非限定的ARN执行$LATEST版本,别名执行Lambda函数配置的内存限制(以MB为单位)。您在创建Lambda函数时设置内存限制,并且随后与请求关联的AWS请求ID。这是返回到调用了invoke方法的客户端的ID如果AWSLambda重试调用(例如,在处理Kinesis记录的Lambda函数异常的情况下)时,请求ID保持不变。CloudWatch日志组的名称,可从该日志组中查找由Lambda函数写入的日志CloudWatch日志组的名称,可从该日志组中查找由Lambda函数写入的日志。Lambda函数如果amba函数无法创建日志流,则该值为空。当向ambda函数授予必限的执行角色未包括针对CloudWatch操作的权限时,可能会发生这种情况。有关AmazonCognito提供商的信息(通过AWS移动软件开发工具包调用时)。它可以为空有关特定移动平台准确值的信息,请参阅AWSMobileSDKforiOSDeveloperGuide中的上下文以及“适用于Android的AWS移动软件开发工具包DeveloperGuide”中的上下文。通过AWSclientContext,您可获取以下信息有关特定移动平台准确值的信息,请参阅AWSMobileSDKforiOSDeveloperGuide中的客户端上下文和适用于Android的AWS移动软件开发工具包DeveloperGuide中的客户端上下文。您的Lambda函数可包含日志记录语句。AWSLambda将这些日志写入CloudWatch。如果您使用控制台调用Lambda函数,控制台将显示相同的日Node.js语句生成例如,请考虑以下Node.js代码示例exports.handler=function(event,context,callback)//console.log('Receivedevent:',JSON.stringify(event,null,2));console.log('value1=',event.key1);console.log('value3=',callback(null,event.key1);//Echobackthefirstkey屏幕截Lambda控制台中的示例Logoutput您还CloudWatch找这些日志。有关AWSLambda的AmazonCloudWatch日志(p.108RequestResponse调用类型(同步调用),AWSLambdavalue1AWSLambda控制台中测试上述Node.js代在控制台中,使用o-world蓝图创建Lambda函数。确保选择Node.js作为runtime。有关如何执行此操作的说明,请参阅步骤2.1:创建oWorldLambda函数(p.171)。使用Lambda控制台中提供的名为oWorld的Sampleeventtemplate测试Lambda函数。有关如何执行此操作的说明,请参阅步骤2.2:手动调用Lambda函数并验证结果、日志和指标(p.175)。如需分步指导,请参阅p.168在AWSLambda控制台中-AWSLambda控制台中的Logoutput部分显示日在响应标头中,当您以编程方式调用Lambda函数时-如果以编程方式调用Lambda函数,则可添加LogType参数以检索已写入CloudWatch日志的最后4KB日志数据。AWSLambda在响应的x-amz-log-results头中返回此日志信息。有关信息,请参阅调用。如果您使用AWSCLI调用该函数,则可指定带有值Tail的--log-typeparameter在CloudWatch日志中-要在CloudWatch中查找您的日志,您需要知道日志组名称和日志流名称。您可context.logGroupNamecontext.logStreamName方法来获取这类信息。当您运行Lambda函数时,在控制台或CLI中生成的日志将为您显示日志组名称和日志流名称。如果您Lambda函数通AWSLambda它未能正确执行,Lambda会尝试将错误对象转换为字符串。考exports.handler=function(event,context,callback)//Thisexamplecodeonlythrowsvarerror=newError("somethingiswrong");当您调用此Lambda函数时,它将向AWSLambda通知函数执行已完成但返回错误,并将错误信息传递AWSLambda。AWSLambda会将错误信息返回给{{"errorMessage":"somethingiswrong","errorType":"Error",]}请注意,堆栈将以堆栈元素的stackTraceJSON数组形式返回。RequestResponse调用类型(即同步执行),该函数会将结果返回到执行调用的客户例如,控制台始终使用RequestResponse调用类型,因此控制台将在Executionresult部分中显示错误,相同信息也将发送到CloudWatch,并且Logoutput部分将显示相如果某个客户端指定了Event调用类型(即异步执行),AWSLambda不会返回任何信息。相反,它将错误信息记录到CloudWatch日志。您还可在CloudWatch指标中查看错误指标。AWSLambda可能会重试失败的Lambda函数,具体视事件源而定。例如,如果Kinesis为事件源,则AWSLambda会重试失败的调用,直到Lambda函数成功或流中的记录过期。有关重试的信息,请参阅出错时重试(p.162)。测试上述Node.js代码(控制台在控制台中,使用o-world蓝图创建Lambda函数。在runtime中,选择Node.js;在Role中,选择Basicexecutionrole。有关如何执行此操作的说明,请参阅步骤2.1:创建oWorldLambda函数(p.171)。使用Lambda控制台中提供的名为oWorld的Sampleeventtemplate测试Lambda函数。有关如何执行此操作的说明,请参阅步骤2.2:手动调用Lambda函数并验证结果、日志和指标(p.175)。您可以创建自定义错误处理机制,直接从您的Lambda函数异常,并直接在AWSStepFunctions状态机中进行处理(重试或捕获)。有关信息,请参阅使用状态机处理错误情况。请将CreateAccount状态看作使用Lambdaaa建过程。以下代码示例演示了如何执行此操作。请注意 中的自定义错误必须扩展错误原型exports.handlerexports.handler=function(event,context,{functionAccountAlreadyExistsError(message){="AccountAlreadyExistsError";this.message=message;}consterror=newAccountAlreadyExistsError("Accountisin您可以StepFunctions,使用Catch规则捕获错误{{"States":{{"Type":"Resource":"arn:aws:lambda:us-east-"Next":"Catch":{e"Next":"SuggestAccountName"}]…}}AWSStepFunctions可于运行时捕获错误,按照Next转换中指定的方式,转换至SuggestAccountName状ErrorErrorEquals自定义错误处理机制使创建无服务器应用程序变得更加容易。此功能与Lambda编程模型(p.7)支持的要进一步了解如何使用AWSStepFunctionsAWSLambda创建您自己的无服务器应用程序AWSStepFunctions使用较早的Node.js截至2017年5月,AWSLambda支持Node.js6.10和Node.js4.3。有关在创建Lambda函数时指定此运行时的信息,请参阅CreateFunction(p.337)的--runtime参数。Nodev0.1042目前已淘汰。您必须尽快将现有函数迁移到AWSambda上可用的较新Noejs运行时版本nodejs43或nodejs610)。在2017年6月30日之前,您可以申请延期:前往ambda控制台,然后按照提供的说明操作。不迁移也不延期会导致以Noev0042运行时编写的函数的任意调用返回无效参数值错误。注意,对于包含以Nodev01042运行时编写的函数的每个区域,您都必须遵循此过程。下面的部分重点介绍AWSambda的运行时支持策略,运行时v0042的特有行为,以及如何将现有函数迁移到运行时支持策略(p.将Lambda函数代码转换为较新的运行时(p.Node.js运行时v0.10.42中的context方法(p.AWSLambda将根据NodeLTS工作组页面指定的时段结束时间,仅淘汰标记为EOL(终止使用)的运行时。标记为EOL的版本(如Node0.10)将首先停止支持新函数的创建。现有函数将继续有效,直到客有足够的时间迁移到较新版本,根据个别客户的需要进行配合。在其他Node版本被标记为LTS(长期支持)后的几个月内,AWSLambda将增加对该LTS版本的支持。将LambdaNodev0.10.42目前已淘汰。您必须尽快将现有函数迁移到AWSLambda上可用的较新Node.js运行时版本(nodejs4.3或nodejs6.10)。在2017年6月30日之前,您可以申请延期:前往Lambda控制台,然后按照提供的说明操不迁移也不延期会导致以Nodev0.10.42时编写的函数的任意调用返回无效参数错误。注意,对于包含以Nodev0.10.42运行时编写的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论