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