




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
AWSLambda:開發(fā)指Copyright?2017AmazonWebServices,Inc.and/oritsaffiliates.sAmazon'strademarksandtradedressmaynotbeusedinconnectionwithanyproductorservicethatisnotAmazon's,inanymannerthatislikelytocauseconfusionamongcustomers,orinanymannerthatdisparagesordiscreditsAmazon.AllothertrademarksnotownedbyAmazonarethepropertyoftheirrespectiveowners,whomayormaynotbeaffiliatedwith,connectedto,orsponsoredbyTableof什么是AWS 應在何時使用 您是AWSLambda的新用戶嗎 Lambda函 計算需求-Lambda函數(shù)配 調用類 構建Lambda函 為您的Lambda函數(shù)編寫代 部署代碼和創(chuàng)建Lambda函 和故障排 基于AWSLambda的應用程序示 相關編程模 創(chuàng)建部署程序 版本控制和別 環(huán)境變 標記Lambda函 VPC支 配置Lambda函數(shù)以Amazon 對Lambda函數(shù)的Internet.........................................................................................................................設置支持VPC的Lambda函數(shù)的準 :AmazonVPC中的資 場 CloudWatch指 CloudWatch日 指 死信隊 使用AWSLambda構建應用程 示例 示例 示例3:自定義應用程序發(fā)布事件和調用Lambda函 建議閱讀材 事件源........................................................................................................................................................................AWS服務的事件源AWS基于流的服務的事件 自定義應用程序的事件 支持的事件 Amazon Amazon AmazonKinesis AmazonSimpleNotification AmazonSimple Amazon AWS AmazonCloudWatch AmazonCloudWatch事 計劃的事件(由AmazonCloudWatch事件提供支持 AWS Amazon Amazon AmazonAPI 其他事件源:根據(jù)需要調用Lambda函 示例事件數(shù) 部署基于Lambda的應用程 使用AWSCloudFormation部署無服務器應用程 使用AWS無服務器應用程序模型(AWS 創(chuàng)建您自己的無服務器應用程 基于Lambda應用程序的自動化部 使用SAMLocal在本地測試您的無服務應用程序(公開測試版 支持的運行 使用SAMLocal的要 SAMLocal使用入 基于Lambda的應用程序問題排 利用AWSX-Ray基于Lambda的應用程 利用Lambda設置AWSX- Lambda作為AWSX-Ray........................................................................................................................從Lambda函數(shù)發(fā)送分 Lambda環(huán)境中的AWSX-Ray守護程 使用環(huán)境變量與AWSX-Ray通 在AWSX-Ray控制臺中Lambda:示 如何使 AWSLambda如何運行代碼?容器模 并發(fā)執(zhí) 并發(fā)執(zhí)行請求速 并發(fā)執(zhí)行限 擴 出錯時重 權限模 管理權限:使用IAM角色(執(zhí)行角色 管理權限:使用Lambda函數(shù)策 建議閱讀材 執(zhí)行環(huán) 適用于Lambda函數(shù)的環(huán)境變 建議閱讀材 入 步驟1:設置AWS賬戶和AWS 步驟1.1:設置賬 步驟1.2:設置AWS 步驟2:創(chuàng)建oWorldLambda函數(shù)和探索控制 入門準備工 步驟2.1:創(chuàng)建oWorldLambda函 步驟2.2:調用Lambda函 步驟2.3:(可選)創(chuàng)建用Java編寫的Lambda函 步驟2.4:(可選)創(chuàng)建使用C#編寫的Lambda函 步驟3:使用Lambda和API網(wǎng)關創(chuàng)建簡單的微服 下一 步驟3.1:使用AmazonAPIGateway創(chuàng)建 步驟3.2:測試發(fā)送HTTPS請 步驟3.3:(可選)嘗試其他藍 接下來做什么 使用案 Amazon ......................................................................................................................................................................... .........................................................................................................................................................................Amazon .........................................................................................................................................................................AWS .........................................................................................................................................................................Amazon .........................................................................................................................................................................AmazonAPI 將AWSLambda與AmazonAPIGateway結合使用(按需并通過 移動后端 .........................................................................................................................................................................計劃的事 .........................................................................................................................................................................自定義用戶應用程 .........................................................................................................................................................................AWS 設置Lambda@Edge的IAM權限和角 為CloudFront事件創(chuàng)建一個Lambda@Edge函數(shù)和一個觸發(fā) 為Lambda@Edge函數(shù)添加觸發(fā)器(AWSLambda控制臺 為Lambda@Edge編寫函 示例:A/B測 示例:HTTP重定 為Lambda@Edge編輯Lambda函 測試和調 Lambda@Edge限 使用AWSCloudTrail進行API日志記 CloudTrail中的AWSLambda信 了解AWSLambda日志文件條 最佳實 函數(shù)代 函數(shù)配 警報與指 流事件調 Async調 Lambda 限 AWSLambda限制列 AWSLambda限制錯 驗證和控 驗 控 管理概 AWSLambda資源和操 了解資源 管理對資源 指定策略元素:操作、效果、資源和委托 在策略中指定條 使用基于的策略(IAM策略 使用AWSLambda控制臺所需的權 適用于AWSLambda的AWS托管(預定義)策 客戶托管策略示 控制臺權 使用基于資源的策略(Lambda函數(shù)策略 允許AmazonS3調用Lambda函 允許AmazonAPIGateway調用Lambda函 跨賬戶方 檢索Lambda函數(shù)策 刪除權 使用Lambda函數(shù)版本控制、別名和權 LambdaAPI權限參 策略模 基本:“基本Lambda權限 VPCAccess:“LambdaVPC權限 Kinesis:“LambdaKinesis流輪詢器權限 Edge:”基本的EdgeLambda權限 堆棧只讀權限 AMI:“AMI只讀權限 KMS:“KMS權限 S3:“S3對象只讀權限 權限 SES:“SES退回郵件權限 TestHarness:“測試設備權限 Microservice:“簡單微服務權限 :“連接權限 SQS:“SQS輪詢器權限 IoTButton:“AWSIoT按鈕權限 RekognitionNoDataAccess:”AmazonRekognition無數(shù)據(jù)權限 只讀權限 只寫權限 API參 CreateEventSourceMap................................................................................................................................ DeleteEventSourceMap................................................................................................................................ GetEventSourceMap..................................................................................................................................... UpdateEventSourceMap.............................................................................................................................. Data 文檔歷史記 應在何時使用什么是AWSSama是一項計算服務,可使您無需預配置或管理服務器即可運行代碼。AWSama只在需要時執(zhí)行您的代碼并自動縮放,從每天幾個請求到每秒數(shù)千個請求。您只需按消耗的計算時間–代碼未運行時不產(chǎn)生費用。借助ASama任何管理。AWSama在可用性高的計算基礎設施上運行您的代碼,執(zhí)行計算資源的所有管理工作,其中包括服務器和操作、容量預置和自動擴展、代碼和記錄。您只需要以ASama支持的一種語言(目前為Ne.s、aa、#和t)提供您的代碼。您可以使用AWSambda運行代碼以響應事件,例如更改Aazon3桶或AazonDynamoDB表中的數(shù)據(jù);以及使用AazonAPIGateway運行代碼以響應HTP請求;或者使用通過AWSSDK完成的A調用來調用您的代碼。借助這些功能,您可以使用ambda輕松地為AazonS3和AazonDynamoDB等AWS服務構建數(shù)據(jù)處理觸發(fā)程序;處理Kines中的流數(shù)據(jù),或創(chuàng)建您自己的按AWS規(guī)模、性能和安您也可以構建由事件觸發(fā)的函數(shù)組成的無服務器應用程序,并使用AWSCodePipeline和AWS自動部署這些應用程序。有關信息,請參閱部署基于Lambda的應用程序(p.133)有關AWSLambda執(zhí)行環(huán)境的信息,請參閱Lambda執(zhí)行環(huán)境和可用庫(p.164)。有關AWSLambda如何確定執(zhí)行您的代碼所需的計算資源的信息,請參Lambda函數(shù)配p.3)。應在何時使用AWS (即,Node.js、Java、C#和Python)編寫應用程序代碼,并在AWSLambda標準運行時環(huán)境和Lambda提在使用Sama時,您只需負責自己的代碼。AWSama管理提供內存、CU、網(wǎng)絡和其他資源均衡的計算機群。這是以靈活性為代價的,這意味著您不能登錄計算實例,或自定義操作系統(tǒng)或語言運行時。通過這些約AWSama可以代表您執(zhí)行操作和管理活動,包括預置容量、機群運行狀況、應用全補丁、部署您的代碼以及和記錄您的ama函數(shù)日志。如果您需要管理自己的計算資源,AmazonWebServices還提供了其他計算服務以滿足您的Amznceld(Amazn)服務提供靈活性和各種2實例類型供您選擇。它允許您選擇自定義操作系統(tǒng)、網(wǎng)絡和安全性設置以及整個軟件堆棧,但您負責預置容量、機群運行狀況和性能以及使用可用區(qū)來實現(xiàn)容錯。ElasticBeanstalk提供易用的服務,您可將應用程序部署和擴展到AmazonEC2上,在其中您保留對底EC2實例的所和完整控制權AWSLambda的新用戶嗎AWSLambda的新用戶嗎如果您是首次接觸AWSLambda閱讀產(chǎn)品概述并宣傳,以了解示例使用案例。這些資源可在AWSLambda網(wǎng)頁上找到閱讀本指南中的“工作原理”部分。本部分介紹了您可以用來打造端到端體驗的各種AWSLambda組件。有關信息,請參閱如何使用(p.159)。查看指南中的”Lambda函數(shù)“部分。要了解Lambda函數(shù)的編程模型和部署選項,您應該熟悉幾個概念。本節(jié)介紹了這些概念,并提供了有關這些概念在可用于編寫Lambda函數(shù)代碼的各種語言中的工作方式的詳細信息。有關信息,請參閱Lambda函數(shù)(p.3)。嘗試基于控制臺的入門練習。此練習提供了使用控制臺創(chuàng)建和測試您的第一個Lambda函數(shù)的說明。您還可以了解控制臺提供的藍圖以快速創(chuàng)建您的Lambda函數(shù)。有關信息,請參閱入門(p.168)。閱讀本指南的”使用AWSLambdaAWSLambda組件。有關信息,請參閱使用AWSLambda構建應用程序(p.113)除了入門練習之外,您還可瀏覽各種使用案例,每個使用案例都隨附有指導您完成示例方案的。根據(jù)您的應用程序需求(例如,無論您需要事件驅動型ama函數(shù)調用還是按需調用)求的特定進行操作。有關信息,請參閱使用案例(p.。以下提供了有關AWSLambda的信息AWSLambda函數(shù)版本控制和別名(p.使用AmazonCloudWatch和AWSLambda函數(shù)(p.使用AWSLambda函數(shù)的最佳實踐(p.AWSLambda限制(p.計算需求-Lambda函數(shù)配置Lambda函數(shù)在您打包自定義代碼(包括任何依賴項)并將其上傳到AWSLambda中之后,您就創(chuàng)建了Lambda函數(shù)。如果您是首次接觸AWSLambda,可能會問:哪些類型的代碼可以作為Lambda函數(shù)運行?AWS如何執(zhí)行代碼?AWSLambda如何知道運行Lambda代碼所需的內存量和CPU要求?以下部分Lambda函數(shù)的工作方式根據(jù)您的情景,您可以構建應用程序,在其中使用AWSLambda服務運行您的所有或部分應用程序代碼。有關信息,請參閱構建Lambda函數(shù)(p.4)。如何使用(p.159)提供了示例,說明如何為特定情景創(chuàng)建Lambda函數(shù)這一中的部分提供有關Lambda函數(shù)的下列介紹性信息計算需求-Lambda函數(shù)配置(p.調用類p.簡介:構建Lambda函數(shù)(p.配置Lambda函數(shù)以AmazonVPC中的資源(p.使用AmazonCloudWatch和AWSLambda函數(shù)(p.計算需求-Lambda函數(shù)配置Lambda函數(shù)包含代碼以及任意關聯(lián)依賴項。此外,Lambda函數(shù)還有與之關聯(lián)的配置信息。最初,您在創(chuàng)建Lambda函數(shù)時指定配置信息。Lambda為您提供API來更新一些配置數(shù)據(jù)。Lambda函數(shù)配置信息包括您需要的計算資源-您僅指定要為您的Lambda函數(shù)分配的內存量。AWSLambda分配與內存成比例的CPU處理能力,方式是使用與通用AmazonEC2實例類型(如M3類型)相同的比率。例如,如果為您的Lambda函數(shù)分配256MB內存,則該函數(shù)獲得的CPU份額將是僅分配128MB內存時的兩倍。您可以更新配置,以64MB的增量請求額外的內存128MB1536MB)。有關相關限制的信息,請參閱AWSLambda限制(p.291)。要更改您的Lambda登錄AWS管理控制臺,然后導航到AWSLambda單擊Configuration選項卡,然后展開Advancedsettings在Memory(MB)列表中,選擇您所(可選)您可以使用以下AWSCLI命令更新您的函數(shù)的內存大?。ㄊ褂糜行У?4MB增量$$awslambdaupdate-function-configuration--function-nameyourfunctionname--regionregionwhereyourfunctionresides--memory-sizememoryamount--profile有關設AWSCLI的信息1:設置AWS賬戶AWSCLIp.168最長執(zhí)行時間(超時)-為運行您的Lambda函數(shù)所用的AWS資源支用。為了防止您的Lambda無限期運行,您可以指定超時。在達到指定超時時間時,AWSLambda會終止您的Lambda函數(shù)。IAM角色(執(zhí)行角色)AWSLambda在代表您Lambda數(shù)時代處理程處理程序是指您的代AWSLambda開始執(zhí)行的方法。AWSLambda將觸發(fā)了調用的AWSLambda支持同步和異步調用Lambda函數(shù)。只有在您調用Lambda函數(shù)時,您才能控制(稱為按需調用)您的自定義應用程序Lambda函數(shù)您手動調用Lambda函數(shù)(例如,使用AWSCLI)用于測試用在這兩種情況下,您Invokep.372)操作調Lambda函數(shù),并且可以指定同步或異步調但是,在您使用AWS服務作為事件源時,每個這些服務的調用類型是預定義的。對于這些事件源在調用Lambda函數(shù)時使用的調用類型,您沒有任何控制方法。例如,AmazonS3始終異步Lambda數(shù),AmazonCognito始終同步調用Lambda函數(shù)。對基于流的AWS服務(AmazonKinesisStreams和AmazonDynamoDBStreams),AWSLambda輪詢流并同步調用您的Lambda函數(shù)。簡介:構建Lambda函數(shù)您以一Lambda的形式將應用程序代碼上傳到AWSLambda(一種計算服務),此服務可代表您運行代碼。AWSLambda負責預配置和管理服務器以便在調用時運行代碼。通常AWSLambda的應用程序的生命周期包括編寫代碼、將代碼部署到AWSLambda,然后是為Lambda函數(shù)編寫代碼-支持哪些語言?是否有我需要遵循的編程模型?如何打包代碼和依賴項以便上傳到AWSLambda?有哪些可用工具?為您的Lambda函數(shù)編寫代碼上傳代碼并創(chuàng)建Lambda函數(shù)-如何將代碼包上傳到AWSLambda?如何告知AWSLambda從何處和故障排除-對于生產(chǎn)中的Lambda函數(shù),有哪些可用的指標?如果出現(xiàn)任何故障,如何獲取日下列部分提供了介紹性信息,而最后的“示例”部分提供了工作示例以幫助您了解本提供了有關如何開發(fā)基于AWSLambda的應用程序的介紹性概覽。如何使用(p.159)部分描述了Lambda函數(shù)和事件源的具體信息,并說明了AWSLambda如何執(zhí)行您的Lambda為您的Lambda函數(shù)編寫代碼您可以AWSLambda所支持的Lambda函數(shù)代碼。有關受支持的語言的列表,請參閱Lambda執(zhí)行環(huán)境和可用庫(p.164)。有許多可用于編寫代碼的工具,例如,AWSLambda控制臺、EclipseIDE和VisualStudioIDE。不過,可用的工具和選項取決于:您選擇用來編寫Lambda函數(shù)代碼代碼中使用的庫。AWSLambdaAWSLambda控制VisualStudio,帶IDE插件(請參閱VisualStudio中的AWSLambda支EclipseAWSToolkitfor(請參閱AWSLambdaAWSToolkitforEclipse結合使用)AWSToolkit還會創(chuàng)建部署程序包(部署代碼和創(chuàng)建Lambda函數(shù)(p.6)中進行了說明)VisualStudio,帶IDE插件(請參閱VisualStudio中的AWSLambda支.NET內核(請參閱NET核安裝指AWSToolkit還會創(chuàng)建部署程序包(部署代碼和創(chuàng)建Lambda函數(shù)(p.6)中進行了說明)AWSLambda控制此外,無論您選擇哪種語言,都有一個用于編寫ambda函數(shù)代碼的模式。例如,如何編寫ambda函數(shù)的處理程序方法(即,AWSLama在開始執(zhí)行代碼時首先調用的方法)部署代碼和創(chuàng)建Lambda函數(shù)代碼中使用哪些語句CloudWatchLogs中生成日志、如何與AWSLambda運行時交互并獲取信息(例如,超時前的剩余時間)以及如何處理異常。編程模型(p.7)部分提供了每種受支持的語言的信息。在您熟悉AWSamba后,請參閱使用案例(p.182),其中提供的分步說明可幫助您探究端到端部署代碼和創(chuàng)建Lambda函數(shù)要創(chuàng)建Lambda函數(shù),您首先將代碼和依賴項打包到部署程序包中。然后,將部署程序包上傳到AWSLambda以創(chuàng)建Lambda函數(shù)。創(chuàng)建部署程序包-組織代碼和依賴項(p.上傳部署程序包-創(chuàng)建Lambda函數(shù)(p.Lambda(p.您必須首先通過特定方式來組織您的代碼和依賴項并創(chuàng)建部署程序包。有關創(chuàng)建部署程序包的說明因您選擇用來編寫代碼的語言而異。例如,您可以使用構建插件(例如,enkns(針對Noes和tMaven(針對Jaa))來創(chuàng)部署程序包有關信,請參閱創(chuàng)建部署程序包(p.)。在使用控制臺創(chuàng)建Lambda函數(shù)時,控制臺會為您創(chuàng)建部署程序包,然后上傳該部署程序包以創(chuàng)建函數(shù)上傳部署程序包-創(chuàng)建Lambda函數(shù)AWSLambda提供了CreateFunction(p.337)操作,您可使用此操作創(chuàng)建Lambda函數(shù)??墒笰WSLambda控制臺、AWSCLI和AWS開發(fā)工具包創(chuàng)建Lambda函數(shù)。在,所有這些接口都調CreateFunction除了提供您的部署程序包之外,您還可以在創(chuàng)建ama函數(shù)時提供配置信息,包括ama函數(shù)的計算要求、aa函數(shù)中的處理程序方法的名稱以及運行時,具體取決于您選擇用來編寫代碼的語言。有關信息,請參閱ama函數(shù)(p.。此部分提供了有關開發(fā)基于AWSLambda的應用程序的介紹性概覽。如何使p.159)描述了有關Lambda函數(shù)和事件源的具體信息,并說明了AWSLambda如何執(zhí)行您的Lambda函數(shù)。測試Lambda函LambdaLambda函數(shù)在控制臺中測試Lambda函數(shù)使用AWSCLI測試Lambda函數(shù)。您可以使用Invoke方法調用您的Lambda函數(shù)并傳入示例事件數(shù)控制臺提供了示例事件數(shù)據(jù)。事件源發(fā)布的示例事件(p.125)中還提供了相同的數(shù)據(jù),您可以在AWSCLI中使用此數(shù)據(jù)來調用Lambda函數(shù)。在您的Lambda函數(shù)處于生產(chǎn)中后,AWSLambda將代表您自動函數(shù),并通過AmazonCloudWatch報告指標。有關信息,請參閱AWSLambda的AmazonCloudWatch指標(p.107)。為幫助您排除函數(shù)中的故障,Lambda會記錄您的函數(shù)處理的所有請求,并自動將代碼生成的日志在AmazonCloudWatchLogs中。有關信息,請參閱AWSLambda的AmazonCloudWatch日志(p.108)。基于AWSLambda的應用程序本指南提供了多個示例以及分步說明。如果您是首次使用AWSLambda,入門(p.168)-入門練習提供了基于控制臺的體驗。在Python中編寫示例代碼。您可以在控制臺中編輯代碼,將代碼上傳到AWSamba,然后使用控制臺中提供的示例事件數(shù)據(jù)來測試代碼。使用案例(p.182)-如果您無法使用控制臺編寫代碼,則必須創(chuàng)建您自己的部署程序包,并使用AWSCLI(或開發(fā)工具包)創(chuàng)建您的Lambda函數(shù)。有關信息,請參閱為您的Lambda函數(shù)編寫代碼(p.5)?!笆褂冒咐辈糠种械拇蠖鄶?shù)示例都使用AWSCLI。如果您是首次使用AWSLambda,建議相關編程模型(p.7)創(chuàng)建部署程序包(p.AWSLambda函數(shù)版本控制和別名(p.使用AmazonCloudWatch和AWSLambda函數(shù)(p.您將使AWSLambda支持的語言之一為Lambda函數(shù)編寫代碼。無論您選擇哪種語言,都可以采用一個通用模式,即為包含以下概念的Lambda函數(shù)編寫代碼:處理程序-處理程序是ASama調用的用于開始執(zhí)行ama函數(shù)的函數(shù)。您在創(chuàng)建ama函數(shù)時標識處理程序。在調用ama函數(shù)時,AWSama將通過調用處理程序函數(shù)來開始執(zhí)行您的代碼。AWSama將任何事件數(shù)據(jù)作為第一個參數(shù)傳遞給處理程序。您的處理程序應處理此傳入事件數(shù)據(jù),并且可調用您的代碼中的任何其他函數(shù)/方法。context對象以及它在運行時與Lambda交互的方式-AWSLambda還將context對象作為第二個參數(shù)傳遞給處理程序函數(shù)。通過此context對象,您的代碼可與AWSLambda交互。例如,您的代碼可在AWSLambda終止Lambda函數(shù)前發(fā)現(xiàn)剩余的執(zhí)行時間。此外,對于Node.js等語言,有一個使用回調的異步平臺。AWSLambda提供了有關此context對象的其他方法。您將使用這些context對象方法指示AWSLambda終止Lambda函數(shù)并將值返回到調用方(可日志記錄-您的Lambda函數(shù)可包含日志記錄語句。AWSLambda將這些日志寫入CloudWatchLogs。特定語言語句將生成日志條目,具體取決于您編寫Lambda函數(shù)代碼所用的語言。異常-您的Lambda函數(shù)需要將函數(shù)執(zhí)行的結果傳遞給AWSLambda。根據(jù)您編寫Lambda函數(shù)代碼所用的語言,成功結束請求或向AWSLambda通知執(zhí)行期間出現(xiàn)了錯誤有幾種不同的方式。如果您同步調用該函數(shù),則AWSLambda會將結果轉發(fā)回客戶端。必須以無狀態(tài)風格編寫ama函數(shù)代碼,且與底層的計算基礎設施不存在關聯(lián)。您的代碼應該要求將本地文件系統(tǒng)權限、子流程和類似項目限制為請求的生命周期。持久狀態(tài)應在Amzn、namB或其他云服務中。要求函數(shù)無狀態(tài)可使Sama根據(jù)需要啟動合適數(shù)量的函數(shù)副本,以根據(jù)傳入事件和請求的速率調整規(guī)模。對于不同的請求,這些函數(shù)可能不會始終運行在同一個計算實例上,且Sama可能會多次使用ama函數(shù)的給定實例。以下語言特定提供了詳細信息編程模Node.jsp使用Java編寫Lambda函數(shù)的編程模型(p.使用C#編寫Lambda函數(shù)的編程模型(p.用于使用Python編寫Lambda函數(shù)的編程模型(p.AWSLambda當前支持以下Node.js運行Node.js運行時v6.10(runtime=Node.js運行時v0.10.42(runtime=ev0.10.2目前已淘汰。您必須盡快將現(xiàn)有函數(shù)遷移到ASama上可用的較新Noe.s運行時版本(noejs.3或node)。在7年6月0日之前,您可以申請延期:前往ama控制臺,然后按照提供的說明操作。不遷移也不延期會導致以Ne.10.42運行時編寫的函數(shù)的任意調用返回無效參數(shù)值錯誤。注意,對于包含以Nev0.0.42運行時編寫的函數(shù)的每個區(qū)域,您都必須遵循此過程。有關v0..42運行時中編程模型差異的信息,請參閱使用較早的Noe.s運行時v0.10.42(p.)。當您創(chuàng)建Lambda函數(shù)時,請指定要使用的運行時。有關信息,請參閱CreateFunction(p.337)runtime參數(shù)以下各節(jié)說明了在使用Nodejs編寫ambda函數(shù)代碼時常見的編程模式和概念的適用情況。除非另有Lambda函數(shù)處理程(Node.jsp.日志記Node.jsp函數(shù)錯Node.jsp使用較早Node.js運行v0.10.42(p.Lambda在創(chuàng)Lambda函數(shù)時,需要指定一個處理程序(您代碼中的一個函數(shù)),以供AWSLambda在服務執(zhí)行代碼時調用。在使用Node.js創(chuàng)建處理程序函數(shù)時,請使用以下一般語法。exports.exports.myHandler=function(event,context,)}exports.exports.myHandler=function(event,context,callback)//Usecallback()andreturninformationtothe}event-AWSLambdacontext-AWSLambda使用此參數(shù)為您的處理程序提供正在執(zhí)行的Lambda函數(shù)的運行時信息。有關更多信息,請參閱Context對象(Node.js)(p.11)。callback-您可以使用可選的回調將信息返回給調用方,否則返回值為null。有關信息,請參閱使用回調參數(shù)(p.10)。只有Node.js運行時v6.10和v4.3支持回調。如果您使用運行時v0.10.42,則需要使用context行時v0.10.42(p.17)。myHandler-這是AWSLambda調用的函數(shù)的名稱。您導出此項,使其對AWSLambda可見。假設您將此代碼保存為oworld.js。然后,oworld.myHandler是處理程序。有關信息,請參閱CreateFunction(p.337)。如果使用了RequestResponse調用類型(同步執(zhí)行),則AWSLambda會將Node.js函數(shù)調用的結果返回到調用Lambda函數(shù)的客戶端(在對調用請求的HTTP響應中,已序列化為JSON)。例如,AWSLambda控制臺使用RequestResponse調用類型,因此當您使用該控制臺測試調用函數(shù)時,該控制臺將如果處理程序未返回任何內容,AWSLambda將返回空值如果使用了Event調用類型(異步執(zhí)行),請考慮以下Node.js示例代exports.exports.myHandler=function(event,context,{console.log("value1="+event.key1);console.log("value2="+event.key2);callback(null,"somesuccessmessage");////callback("someerror}此示例有一個函數(shù),該函數(shù)同時也是處理程序。在該函數(shù)中,)語句會將一些傳入的事件數(shù)據(jù)記錄到CludWachoa函數(shù)僅在Noe.s事件循環(huán)為空(Nodejs事件循環(huán)與作為參數(shù)傳遞的事件不同)時退出。如果您使用運行時v0.10.42,則需要使用context方法(done、succeed和fail)正確終止函數(shù)。有關信息,請參閱使用較早的Node.js運行時v0.10.42(p.17)上傳此代碼并將其作為Lambda函數(shù)(控制臺)進在控制臺中,使用以下信息創(chuàng)建Lambda函數(shù)使用o-world藍圖建議nodejs6.10指定runtime,不過您也可以選擇nodejs4.3。所提供的代碼示例對于這兩個版在Handler中,將index.handler替換為exports.myHandler有關使用控制臺創(chuàng)建Lambda函數(shù)的說明,請參閱步驟2.1:創(chuàng)建oWorldLambda函數(shù)(p.171)。使用Lambda控制臺中提供的名為oWorld的Sampleeventtemplate測試Lambda函數(shù)。有關如何執(zhí)行此操作的說明,請參閱步驟2.2:手動調用Lambda函數(shù)并驗證結果、日志和指標(p.175)。Node.js運行時v4.3和v6.10支持可選的callback參數(shù)。您可以使用它顯式將信息返回到調用方。一般語callback(Errorcallback(Errorerror,Objecterror-是可選參數(shù),可用于提供失敗的Lambda函數(shù)執(zhí)行的結果。Lambda函數(shù)成功時,您可以傳遞作為第一個參result-是可選參數(shù),可用于提供成功的函數(shù)執(zhí)行的結果。提供的result必須兼容JSON.stringify。如果callbackcallback參數(shù),則行為與您不使用任何參數(shù)調用callback()的情況相同。您可以在代碼中指定callback以將信息返回到調用方。如果您在代碼中不使用callback,AWSLambda將隱式調用它,返回值是null//Indicatessuccessbutnoinformationreturnedtothecallback(null);//Indicatessuccessbutnoinformationreturnedtothe//Indicatessuccessbutnoinformationreturnedtothecallback(null);//Indicatessuccessbutnoinformationreturnedtothecaller.callback(null,"success");//Indicatessuccesswithinformationreturnedtothecaller. //Indicateserrorwitherrorinformationreturnedtothecaller.AWSLambda將任何非null的error參數(shù)值視為已處理的異常。無論在Lambda函數(shù)時指定了什么調用類型(請參閱Invokep.372)),回調方法自動將error的非null的字符串表示形式記錄到與Lambda函數(shù)關聯(lián)的AmazonCloudWatchLogs流中。如果同步調用了Lambda函數(shù)(使用RequestResponse調用類型),如果error為null,則將響應正文設置為result如果error不為null,則errorcallback(error,null)(callback(error))時,Lambda256KB。對于較大的錯誤對象,AWSLambda截斷日志并在錯誤對象旁邊顯示文本TruncatedbyContext在執(zhí)Lambda函數(shù)時,它可以與AWSLambda進行交互以獲取有用的運行時AWSLambda終止您的Lambda函數(shù)之前的剩余時間量(超時是Lambda函數(shù)配置屬性之一)與正在執(zhí)行的Lambda函數(shù)關聯(lián)的CloudWatch日志組返回到調用了Lambda函數(shù)的客戶端AWSID??梢允褂么苏埱驣DAWSSupport進行任何跟進如果通AWS移動軟件開發(fā)工具包Lambda函數(shù),則可了解Lambda函數(shù)的移動應用程序AWSLambda通過context對象提供此信息,服務將此對象作為第二個參數(shù)傳遞給Lambda函數(shù)處理程序。有關信息,請參閱Lambda函數(shù)處理程序(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函數(shù)的一些運行時信息記錄到CloudWatch。如果Lambda控制臺調用該函數(shù),控制臺將在Logoutput部分中顯示日志。您可使用此Lambda函數(shù)并使用控制臺測試AWSLambda控制臺中測試此代在控制臺中,使用o-world藍圖創(chuàng)建Lambda函數(shù)。在runtime中,選擇nodejs6.10。有關如何執(zhí)行此操作的說明,請參閱步驟2.1:創(chuàng)建 oWorldLambda函數(shù)(p.171)。測試此函數(shù),然后也可更新代碼以獲 上下文信息Context方法context對象提供了以返回當前正在執(zhí)行的ambda函數(shù)的大約剩余執(zhí)行時間(在發(fā)生超時前)。超時是ambda函數(shù)配置之一。當達到超時時間時,AWSLambda會終止您的ambda函數(shù)。Context屬性context對象提供您可以更新的以下屬性默認值為trNe.s運行件循環(huán)為空,然后才凍結進程并將結果返回給調用方。您可以將此屬性設置為WSama在調用k后立即凍結進程,即使事件循環(huán)中存在事件也是如此。AWSama將凍結進程、任何狀態(tài)數(shù)據(jù)以及Noes事件循環(huán)中的事件(下次調用ama函數(shù)時,如果ASama選擇使用凍結的進程,則處理事件循環(huán)中的任何剩余事件)。有關回調的信息,請參閱使用回調參數(shù)(p.1)。此外,context對象提供了您可用來獲取運行時信息的以下屬性正在執(zhí)行的Lambda函數(shù)的名稱Lambdafunction_versionARN用于調用此函數(shù)。它可以是函數(shù)ARN或別名ARN。非限定的ARN執(zhí)行$LATEST版本,別名執(zhí)行Lambda函數(shù)配置的內存限制(以MB為單位)。您在創(chuàng)建Lambda函數(shù)時設置內存限制,并且隨后與請求關聯(lián)的AWS請求ID。這是返回到調用了invoke方法的客戶端的ID如果AWSLambda重試調用(例如,在處理Kinesis記錄的Lambda函數(shù)異常的情況下)時,請求ID保持不變。CloudWatch日志組的名稱,可從該日志組中查找由Lambda函數(shù)寫入的日志CloudWatch日志組的名稱,可從該日志組中查找由Lambda函數(shù)寫入的日志。Lambda函數(shù)如果amba函數(shù)無法創(chuàng)建日志流,則該值為空。當向ambda函數(shù)授予必限的執(zhí)行角色未包括針對CloudWatch操作的權限時,可能會發(fā)生這種情況。有關AmazonCognito提供商的信息(通過AWS移動軟件開發(fā)工具包調用時)。它可以為空有關特定移動平臺準確值的信息,請參閱AWSMobileSDKforiOSDeveloperGuide中的上下文以及“適用于Android的AWS移動軟件開發(fā)工具包DeveloperGuide”中的上下文。通過AWSclientContext,您可獲取以下信息有關特定移動平臺準確值的信息,請參閱AWSMobileSDKforiOSDeveloperGuide中的客戶端上下文和適用于Android的AWS移動軟件開發(fā)工具包DeveloperGuide中的客戶端上下文。您的Lambda函數(shù)可包含日志記錄語句。AWSLambda將這些日志寫入CloudWatch。如果您使用控制臺調用Lambda函數(shù),控制臺將顯示相同的日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藍圖創(chuàng)建Lambda函數(shù)。確保選擇Node.js作為runtime。有關如何執(zhí)行此操作的說明,請參閱步驟2.1:創(chuàng)建oWorldLambda函數(shù)(p.171)。使用Lambda控制臺中提供的名為oWorld的Sampleeventtemplate測試Lambda函數(shù)。有關如何執(zhí)行此操作的說明,請參閱步驟2.2:手動調用Lambda函數(shù)并驗證結果、日志和指標(p.175)。如需分步指導,請參閱p.168在AWSLambda控制臺中-AWSLambda控制臺中的Logoutput部分顯示日在響應標頭中,當您以編程方式調用Lambda函數(shù)時-如果以編程方式調用Lambda函數(shù),則可添加LogType參數(shù)以檢索已寫入CloudWatch日志的最后4KB日志數(shù)據(jù)。AWSLambda在響應的x-amz-log-results頭中返回此日志信息。有關信息,請參閱調用。如果您使用AWSCLI調用該函數(shù),則可指定帶有值Tail的--log-typeparameter在CloudWatch日志中-要在CloudWatch中查找您的日志,您需要知道日志組名稱和日志流名稱。您可context.logGroupNamecontext.logStreamName方法來獲取這類信息。當您運行Lambda函數(shù)時,在控制臺或CLI中生成的日志將為您顯示日志組名稱和日志流名稱。如果您Lambda函數(shù)通AWSLambda它未能正確執(zhí)行,Lambda會嘗試將錯誤對象轉換為字符串??糴xports.handler=function(event,context,callback)//Thisexamplecodeonlythrowsvarerror=newError("somethingiswrong");當您調用此Lambda函數(shù)時,它將向AWSLambda通知函數(shù)執(zhí)行已完成但返回錯誤,并將錯誤信息傳遞AWSLambda。AWSLambda會將錯誤信息返回給{{"errorMessage":"somethingiswrong","errorType":"Error",]}請注意,堆棧將以堆棧元素的stackTraceJSON數(shù)組形式返回。RequestResponse調用類型(即同步執(zhí)行),該函數(shù)會將結果返回到執(zhí)行調用的客戶例如,控制臺始終使用RequestResponse調用類型,因此控制臺將在Executionresult部分中顯示錯誤,相同信息也將發(fā)送到CloudWatch,并且Logoutput部分將顯示相如果某個客戶端指定了Event調用類型(即異步執(zhí)行),AWSLambda不會返回任何信息。相反,它將錯誤信息記錄到CloudWatch日志。您還可在CloudWatch指標中查看錯誤指標。AWSLambda可能會重試失敗的Lambda函數(shù),具體視事件源而定。例如,如果Kinesis為事件源,則AWSLambda會重試失敗的調用,直到Lambda函數(shù)成功或流中的記錄過期。有關重試的信息,請參閱出錯時重試(p.162)。測試上述Node.js代碼(控制臺在控制臺中,使用o-world藍圖創(chuàng)建Lambda函數(shù)。在runtime中,選擇Node.js;在Role中,選擇Basicexecutionrole。有關如何執(zhí)行此操作的說明,請參閱步驟2.1:創(chuàng)建oWorldLambda函數(shù)(p.171)。使用Lambda控制臺中提供的名為oWorld的Sampleeventtemplate測試Lambda函數(shù)。有關如何執(zhí)行此操作的說明,請參閱步驟2.2:手動調用Lambda函數(shù)并驗證結果、日志和指標(p.175)。您可以創(chuàng)建自定義錯誤處理機制,直接從您的Lambda函數(shù)異常,并直接在AWSStepFunctions狀態(tài)機中進行處理(重試或捕獲)。有關信息,請參閱使用狀態(tài)機處理錯誤情況。請將CreateAccount狀態(tài)看作使用Lambdaaa建過程。以下代碼示例演示了如何執(zhí)行此操作。請注意 中的自定義錯誤必須擴展錯誤原型exports.handlerexports.handler=function(event,context,{functionAccountAlreadyExistsError(message){="AccountAlreadyExistsError";this.message=message;}consterror=newAccountAlreadyExistsError("Accountisin您可以StepFunctions,使用Catch規(guī)則捕獲錯誤{{"States":{{"Type":"Resource":"arn:aws:lambda:us-east-"Next":"Catch":{e"Next":"SuggestAccountName"}]…}}AWSStepFunctions可于運行時捕獲錯誤,按照Next轉換中指定的方式,轉換至SuggestAccountName狀ErrorErrorEquals自定義錯誤處理機制使創(chuàng)建無服務器應用程序變得更加容易。此功能與Lambda編程模型(p.7)支持的要進一步了解如何使用AWSStepFunctionsAWSLambda創(chuàng)建您自己的無服務器應用程序AWSStepFunctions使用較早的Node.js截至2017年5月,AWSLambda支持Node.js6.10和Node.js4.3。有關在創(chuàng)建Lambda函數(shù)時指定此運行時的信息,請參閱CreateFunction(p.337)的--runtime參數(shù)。Nodev0.1042目前已淘汰。您必須盡快將現(xiàn)有函數(shù)遷移到AWSambda上可用的較新Noejs運行時版本nodejs43或nodejs610)。在2017年6月30日之前,您可以申請延期:前往ambda控制臺,然后按照提供的說明操作。不遷移也不延期會導致以Noev0042運行時編寫的函數(shù)的任意調用返回無效參數(shù)值錯誤。注意,對于包含以Nodev01042運行時編寫的函數(shù)的每個區(qū)域,您都必須遵循此過程。下面的部分重點介紹AWSambda的運行時支持策略,運行時v0042的特有行為,以及如何將現(xiàn)有函數(shù)遷移到運行時支持策略(p.將Lambda函數(shù)代碼轉換為較新的運行時(p.Node.js運行時v0.10.42中的context方法(p.AWSLambda將根據(jù)NodeLTS工作組頁面指定的時段結束時間,僅淘汰標記為EOL(終止使用)的運行時。標記為EOL的版本(如Node0.10)將首先停止支持新函數(shù)的創(chuàng)建?,F(xiàn)有函數(shù)將繼續(xù)有效,直到客有足夠的時間遷移到較新版本,根據(jù)個別客戶的需要進行配合。在其他Node版本被標記為LTS(長期支持)后的幾個月內,AWSLambda將增加對該LTS版本的支持。將LambdaNodev0.10.42目前已淘汰。您必須盡快將現(xiàn)有函數(shù)遷移到AWSLambda上可用的較新Node.js運行時版本(nodejs4.3或nodejs6.10)。在2017年6月30日之前,您可以申請延期:前往Lambda控制臺,然后按照提供的說明操不遷移也不延期會導致以Nodev0.10.42時編寫的函數(shù)的任意調用返回無效參數(shù)錯誤。注意,對于包含以Nodev0.10.42運行時編寫的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東聊城高三一模數(shù)學試卷試題答案詳解
- 協(xié)議出讓土地合同范例
- 業(yè)務服務咨詢合同范例
- 專題03 天氣與氣候-2025年中考地理一輪復習知識清單(背誦版)
- 同城買貓合同范例
- sd卡采購合同范例
- 班主任如何關注學生的情緒變化計劃
- 以美術為載體的主題教育活動計劃
- 企業(yè)安全成本的控制與管理計劃
- 如何選擇合適的投資渠道計劃
- GB/T 10051.1-2010起重吊鉤第1部分:力學性能、起重量、應力及材料
- 王建業(yè)院長-中文LUTS CHINA 調查結果課件
- 2022年人民交通出版社股份有限公司招聘筆試試題及答案解析
- 精細化工工藝學-第1章緒論講解課件
- 仰拱棧橋計算
- 中醫(yī)婦科 月經(jīng)過多課件
- 2022年江西制造職業(yè)技術學院單招語文試題及答案解析
- 穆斯林太巴熱咳慶念詞文
- 商標一級授權書模板
- 軟硬結合板的設計制作與品質要求課件
- 民營醫(yī)院組織架構圖示
評論
0/150
提交評論