lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!
lambda :: ->
如果你還沒有注意到了,我最近被嘮叨試圖開始使用時(shí),我遭遇了陷阱AWSλ-S3正式例子 。 雖然大多數(shù)這些愚蠢的錯(cuò)誤的指責(zé)是對(duì)我自己的懶惰,過度自尊和缺乏對(duì)細(xì)節(jié)的關(guān)注,我個(gè)人覺得,在開始與一家領(lǐng)先的無服務(wù)器供應(yīng)商不應(yīng)該是那么難。
我在SLAppForge的團(tuán)隊(duì)也是如此 。 他們建立了Sigma來實(shí)現(xiàn)它。
(警告:貓從書包里拿出來了!)
讓我們看看Sigma可以做什么, 使您的無服務(wù)器生活變得輕松 。
Sigma已經(jīng)提供了S3縮略圖樣本的現(xiàn)成版本 。 根據(jù)自述文件 ,如果您敢的話,部署它只需幾分鐘。
在此討論中,讓我們采用一種更為動(dòng)手的方法:從原始縮略圖樣本中獲取代碼,將其粘貼到Sigma中,然后將其部署到AWS中 -上一次我嘗試在該塊中運(yùn)行的過程完全相同。 。
如您所知 ,Sigma代表您管理有關(guān)應(yīng)用程序的許多“幕后”工作,包括功能權(quán)限, 觸發(fā)器配置和相關(guān)資源 。 這取決于代碼中遵循的某些語法準(zhǔn)則,幸運(yùn)的是,這些準(zhǔn)則非常簡單和普通。 因此,我們要做的就是獲取原始源代碼,將其粘貼到Sigma中,然后進(jìn)行一些調(diào)整和拖放配置 ,而Sigma將理解并處理其余的內(nèi)容。
如果您還沒有這樣做,現(xiàn)在是注冊(cè)Sigma的絕佳時(shí)機(jī),這樣我們就可以開始以無服務(wù)器的出色表現(xiàn)激發(fā)您的靈感。 (不計(jì)其數(shù),您確實(shí)需要一個(gè)Sigma帳戶才能訪問IDE 。)請(qǐng)參閱此小型指南 。
進(jìn)入后,只需從AWS文檔中復(fù)制S3縮略圖示例代碼,然后將其推到Sigma的喉嚨即可。
編輯本來會(huì)很平淡無聊,但現(xiàn)在開始顯示一些有趣的東西。 特別是在編輯區(qū)域的左邊界。
頂部的閃電符號(hào)(與帶有突出顯示的event變量的函數(shù)標(biāo)題相對(duì))表示觸發(fā)器 ; lambda函數(shù)的調(diào)用(入口)點(diǎn)。 盡管這不是功能本身的一部分,但仍應(yīng)使用必要的源(S3存儲(chǔ)桶),目標(biāo)(拉姆達(dá)函數(shù))和權(quán)限進(jìn)行正確配置。
好消息是,使用Sigma,您只需要指示源(S3存儲(chǔ)桶)配置即可 ; Sigma將負(fù)責(zé)其余的工作。
此時(shí),閃電符號(hào)為紅色,表示尚未配置觸發(fā)器 。 只需將S3條目從左窗格拖到上一行(函數(shù)標(biāo)題),以向Sigma指示此lambda應(yīng)該由S3事件觸發(fā)。
一旦完成拖放操作,Sigma就會(huì)詢問您缺失的謎題:即S3存儲(chǔ)桶(應(yīng)作為lambda的觸發(fā)點(diǎn))以及觸發(fā)該操作的操作的性質(zhì); 在我們的例子中,這是圖像文件的“對(duì)象創(chuàng)建”事件 。
在指定源存儲(chǔ)桶時(shí),Sigma提供了兩種選擇:您可以選擇
- 通過下拉列表(“ 現(xiàn)有存儲(chǔ)桶”標(biāo)簽)選擇一個(gè)現(xiàn)有存儲(chǔ)桶 ,或
- 通過“ New Bucket”選項(xiàng)卡定義一個(gè)新的存儲(chǔ)桶名稱,以便Sigma在項(xiàng)目部署中重新創(chuàng)建它。
由于“圖像文件”類別涉及多種文件類型,因此我們需要為lambda定義多個(gè)觸發(fā)器,每個(gè)觸發(fā)器對(duì)應(yīng)于不同的文件類型。 (不幸的是,S3觸發(fā)??器尚不支持文件名前綴/后綴的模式 ;如果支持 ,我們可以只使用一個(gè)觸發(fā)器!)因此,讓我們首先通過選擇“創(chuàng)建對(duì)象”作為事件來定義JPG文件的觸發(fā)器,然后輸入“ .png”作為后綴,然后拖放并配置另一個(gè)觸發(fā)器,以“ .jpg”作為后綴-您猜對(duì)了,就是JPG文件。
選擇第二個(gè)觸發(fā)器的存儲(chǔ)桶時(shí),需要記住一點(diǎn):即使為第一個(gè)觸發(fā)器輸入了新的存儲(chǔ)桶名稱,也必須從“現(xiàn)有存儲(chǔ)桶”選項(xiàng)卡中選擇相同的,已經(jīng)定義的存儲(chǔ)桶。第二個(gè)觸發(fā)條件,而不是再次將存儲(chǔ)桶名稱作為“新”存儲(chǔ)桶提供。 原因是Sigma跟蹤每個(gè)新定義的資源(因?yàn)樗仨氃诓渴饡r(shí)創(chuàng)建存儲(chǔ)桶),并且,如果兩次定義一個(gè)新存儲(chǔ)桶,Sigma將會(huì)感到“困惑”,并且部署可能無法按計(jì)劃進(jìn)行。 為減輕歧義,當(dāng)我們?cè)诂F(xiàn)有存儲(chǔ)桶列表下顯示新定義的存儲(chǔ)桶時(shí),我們將其標(biāo)記為“((新)”)(例如,對(duì)于新添加的my-new-bucket例如my-new-bucket (New) )–至少對(duì)于現(xiàn)在,直到我們找到更好的選擇; 如果您有個(gè)不錯(cuò)的主意,請(qǐng)隨時(shí)加入! 。
現(xiàn)在兩個(gè)觸發(fā)器都已準(zhǔn)備就緒,我們可以繼續(xù)進(jìn)行操作了 。
您可能已經(jīng)注意到編輯器的左窗格中兩個(gè)S3圖標(biāo),它們?cè)谟|發(fā)指示器的下方,緊靠s3.getObject和s3.putObject調(diào)用。 這兩個(gè)操作的參數(shù)塊也將突出顯示。 這表明Sigma已經(jīng)確定了API調(diào)用,并可以通過自動(dòng)生成必要的提示使它們正常工作(例如執(zhí)行權(quán)限)來幫助您。
單擊第一個(gè)圖標(biāo)(與s3.getObject )以打開操作編輯彈出窗口。 我們要做的就是為Bucket參數(shù)選擇正確的存儲(chǔ)桶名稱(同樣,請(qǐng)確保在“現(xiàn)有”標(biāo)簽上選擇帶“(新)”前綴的存儲(chǔ)桶,而不是在輸入框上重新輸入存儲(chǔ)桶名稱。 “新”標(biāo)簽),然后點(diǎn)擊更新 。
同樣,使用第二個(gè)圖標(biāo)( s3.putObject ),選擇目標(biāo)存儲(chǔ)桶。 由于我們尚未添加或使用目標(biāo)存儲(chǔ)桶定義,因此您將在Sigma中添加新的存儲(chǔ)桶定義; 因此,您可以選擇現(xiàn)有的存儲(chǔ)桶或?yàn)樾碌拇鎯?chǔ)桶命名,就像第一個(gè)觸發(fā)器一樣。
僅需一步:添加依賴項(xiàng)。
盡管Sigma為您提供了將第三方依賴項(xiàng)添加到您的項(xiàng)目的功能的出色功能,但它確實(shí)需要在構(gòu)建時(shí)知道依賴項(xiàng)的名稱和版本。 由于我們將異類代碼復(fù)制并粘貼到了編輯器中,因此我們應(yīng)該分別告訴Sigma有關(guān)代碼中使用的依賴項(xiàng),以便將它們與我們的項(xiàng)目源捆綁在一起。 只需單擊工具欄上的“添加依賴項(xiàng)”按鈕,搜索依賴項(xiàng),然后單擊“添加”,所有添加的依賴項(xiàng)(以及兩個(gè)默認(rèn)值aws-sdk和@slappforge/slappforge-sdk )將顯示在依賴項(xiàng)下拉列表中-在“添加依賴項(xiàng)”按鈕下。
在本例中,必須遵循原始的AWS示例準(zhǔn)則 ,我們必須添加async (對(duì)于瀑布式執(zhí)行流)和gm (對(duì)于GraphicsMagick )依賴項(xiàng)。
做完了!
現(xiàn)在剩下的就是單擊IDE工具欄上的Deploy按鈕,使輪子運(yùn)動(dòng)!
首先,Sigma將把應(yīng)用程序源保存(提交)到您的GitHub存儲(chǔ)庫中。 因此,請(qǐng)確保在Sigma要求您提供一個(gè)不錯(cuò)的提交消息時(shí):)您也可以選擇自己喜歡的回購名稱,如果不存在,Sigma會(huì)創(chuàng)建它。 (但是,在遇到“空”存儲(chǔ)庫(即沒有主分支的存儲(chǔ)庫)時(shí),Sigma有一個(gè)已知的故障,因此,如果您有全新的存儲(chǔ)庫,請(qǐng)確保對(duì)主分支進(jìn)行至少一次提交;最簡單的方法是創(chuàng)建自述文件,只需在創(chuàng)建倉庫時(shí)一鍵即可輕松完成 。
保存完成后,Sigma將自動(dòng)構(gòu)建您的項(xiàng)目,并打開一個(gè)部署摘要彈出窗口,其中顯示與新的S3縮略圖生成器有關(guān)的所有內(nèi)容。 有些名稱看起來有些亂七八糟,但它們通常會(huì)反映已部署資源的類型和名稱(例如s3MyAwesomeBucket可能代表一個(gè)名為my-awesome-bucket的新S3存儲(chǔ)my-awesome-bucket )。
查看列表(如果您愿意),然后單擊Deploy 。 部署機(jī)制將啟動(dòng),顯示實(shí)時(shí)進(jìn)度欄(以及顯示項(xiàng)目基礎(chǔ)CloudFormation堆棧中發(fā)生的更改的日志視圖)。
部署完成后,您期待已久的縮略圖生成器lambda就可以進(jìn)行測試了! 只需將JPG或PNG文件上傳到您選擇的源存儲(chǔ)桶(通過S3控制臺(tái) ,或者如果您更像我,則通過aws s3 cp ),然后驚嘆于將在目標(biāo)存儲(chǔ)桶中彈出的縮略圖秒!
如果在目標(biāo)存儲(chǔ)桶中沒有發(fā)現(xiàn)任何有趣的內(nèi)容(稍等片刻),則可以像檢查其他lambda一樣檢查lambda的執(zhí)行日志 ,以檢查出了什么問題。 我們知道回到AWS控制臺(tái)執(zhí)行此操作很痛苦,并且我們希望不久后能找到一種更酷的替代方法。
如果您想將生成的縮略圖公開(就像我在前一篇文章中所說的那樣,私有縮略圖有什么用?),您不必四處閱讀IAM文檔,更新IAM角色并擺脫困境。 只需單擊s3.putObject調(diào)用上的S3操作編輯圖標(biāo),從s3.putObject列表中選擇“ public-read應(yīng)用于對(duì)象的ACL”參數(shù)作為public-read ,然后單擊“ Deploy”經(jīng)歷另一個(gè)保存-構(gòu)建-部署周期。 (我們已經(jīng)在努力加快這些“零錢”部署的速度,因此請(qǐng)暫時(shí)忍受:))新部署完成后,要查看任何新生成的縮略圖,您只需輸入U(xiǎn)RL http://<bucketname>.s3.amazonaws.com/resized-<original image name>放入您喜歡的Web瀏覽器,然后按Enter!
哦,如果您遇到任何異常情況-提交/構(gòu)建/部署失敗,異常錯(cuò)誤或Sigma自身的錯(cuò)誤-別忘了通過Slack ping我們 -或在我們的公共問題跟蹤器上發(fā)布問題 ; 您可以使用“幫助”→“報(bào)告問題”菜單項(xiàng)直接在IDE中進(jìn)行操作。 對(duì)于您以后希望在Sigma中看到的任何改進(jìn)或出色功能,也是如此:更快的構(gòu)建和部署,下載構(gòu)建/部署工件的能力,嶄新的主題集等等。 請(qǐng)告訴我們,我們會(huì)將其添加到待辦事項(xiàng)中,并在不遠(yuǎn)的將來嘗試一下!
好的,伙計(jì)們,是時(shí)候回去開始和Sigma一起玩了 ,而我寫了我的下一篇博客文章! 請(qǐng)繼續(xù)關(guān)注SLAppForge的更多信息!
翻譯自: https://www.javacodegeeks.com/2018/03/no-more-running-around-the-block-lambda-s3-thumbnailer-nailed-by-slappforge-sigma.html
lambda :: ->
總結(jié)
以上是生活随笔為你收集整理的lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 食品不备案可以销售吗(食品不备案)
- 下一篇: DDOS源码(ddos源码数据怎么设置)