本文中,我們將嘗試模擬一個真實且更專業的工作環境,就像專業人士如何與AWS合作一樣。要在本地創建AWS Lambda函數,我們首先需要準備我們的機器,以便能夠輕松地與AWS進行工作,為此我們需要安裝一些軟件和一些軟件包。
首先,我們需要通過安裝 AWS SAM CLI 來構建使用基礎設施即代碼模式的應用程序。您可以在 AWS 文檔中找到這個定義:AWS 無服務器應用程序模型(SAM)是一個用于構建無服務器應用程序的開源框架。它提供了簡化的語法來表達函數、API、數據庫和事件源映射。只需幾行資源定義,您就可以定義所需的應用程序并使用 YAML 進行建模。在部署過程中,SAM 將 SAM 語法轉換和擴展為 AWS CloudFormation 語法,使您能夠更快地構建無服務器應用程序。在深入討論代碼解釋部分時,我們將詳細討論 SAM。如果您使用的是 macOS,您必須安裝 Homebrew。要安裝 Homebrew,請訪問 Homebrew 網站并按照簡單的步驟進行安裝https://brew.sh。安裝完成后,請將 Homebrew 添加到系統的路徑中,這樣您就可以在系統的任何位置使用 Homebrew 命令。接下來,我們需要安裝 AWS CLI,以下是安裝 SAM CLI 的命令:
brew tap aws/tap
brew install aws-sam-cli
一旦這兩個命令成功運行,您可以通過檢查SAM版本來進行驗證。
如果您使用的是Windows或Linux,只需點擊此鏈接并按照一兩個簡單步驟進行安裝:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html
如果你是初學者,不用擔心,你只需要一個 Docker 應用程序,目前來說,掌握 Docker 知識是有好處的,但不是運行 Lambda 函數所必需的。現在你可能在想為什么我們需要 Docker?
答案是我們只需要 Docker 來在本地環境中模擬 AWS 運行時。你可以從 Docker 官方網站安裝 Docker Desktop 應用程序,鏈接如下:https://www.docker.com/products/docker-desktop/
AWS 命令行界面與 SAM CLI 不同,使用 SAM CLI,你可以利用 SAM 框架在 AWS 之上完成一些操作。通過 AWS CLI,你可以進行諸如身份驗證 AWS 帳戶、從 AWS S3 存儲桶下載文件等操作。你可以從以下鏈接安裝 AWS CLI:https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html 下載完成后,你可以通過終端運行以下命令來驗證安裝:
所有安裝都已完成,現在我們將在本地開發我們的第一個 AWS Lambda 函數,為此我們需要按照以下步驟進行操作:
身份驗證
要在本地登錄我們的 AWS 帳戶,你需要使用 AWS CLI,在終端中運行以下命令:
aws configure
添加以下信息:
創建一個新項目
首先,在你的本地目錄中創建一個新文件夾,在你喜歡的編輯器中打開該文件夾,對我來說是 Visual Studio Code,一旦文件夾在代碼編輯器中打開,在編輯器的終端中打開,或者打開一個單獨的終端并導航到當前項目目錄,然后運行以下命令:
sam -h
這個命令將幫助你在使用 AWS SAM 或 SAM CLI 時找到有用的命令。
sam init
這個命令將幫助你創建一個通用的 HelloWorld 模板,以便開始使用 AWS 無服務器應用程序模型(SAM),了解 SAM 的語法和文件夾結構。
選擇 1 來獲取預定義的 SAM 模板,如果你已經在使用某個特定的模板,則可以選擇選項 2。
然后,你會得到許多模板選項,你可以根據自己的需求進行選擇,但為了簡單起見,我們將選擇選項 1,如果我們需要任何復雜的內容,可以在不重新運行 sam init 的情況下使用 SAM 模板進行更改。然后選擇你喜歡的語言,我使用的是 Python,所以我會選擇默認選項,但你后面也可以更改它。我錯誤地允許了 X-Ray 追蹤,但我們目前不需要它,所以你可以選擇 N 來關閉 X-Ray 追蹤。
選擇你的項目名稱并按下回車鍵,我們的項目將根據我們選擇的選項進行創建,現在我們只需要根據我們的需求和業務邏輯進行更改。
這是在模板生成過程完成后我們得到的文件夾結構。
這是我們在運行 sam init 后將得到的文件夾結構,在所有這些文件夾和文件中,template.yml 是最重要的文件,它代表了我們的所有基礎設施代碼,我們可以在這個文件中創建所有的 AWS 資源(Lambda 函數、API 網關、SQS、DynamoDB 表等),當我們部署時,template.yml 會被轉換成云形成模板,并在 AWS 上創建所有的資源。
在我們的 template.yaml 文件中,我們描述了整個應用程序的內容,不包括業務邏輯。
在進行所有更改后,現在是構建我們的項目的時候,這樣我們就可以在本地進行測試或將其部署到 AWS。要創建項目的構建版本,我們運行以下命令:
sam build
注意:每次我們進行任何更改并希望進行測試或部署時,都必須運行此命令。你可以在你的文件夾的 .aws-sam 文件夾中看到項目的構建版本。
我們的構建版本已經準備好了,現在是將其部署到 AWS 的時候,為此我們必須運行以下命令:
#如果你是第一次部署,請運行:
sam deploy --guided
當你運行此命令時,你將完整地瀏覽你的項目,并有選擇添加和更新諸如選擇堆棧名稱等內容的選項。
#如果你是第二次或之后進行部署
sam deploy
在第一次引導式部署之后,你將看到一個 samconfig.toml 文件,它將保存所有配置,如堆棧名稱、s3_prefix 區域等,供以后的所有部署使用。
此截圖表示CloudFormation在后臺執行的操作。
如果我們想要在本地測試特定的函數,我們可以使用以下命令來運行它:注意:在本地運行任何東西之前,請確保 Docker Desktop 在后臺正常運行。
sam local invoke FunctionName
#在 template.yaml 文件中定義的函數名稱
那么,如果我們的 Lambda 函數期望從事件中獲取一些輸入,比如來自 API 請求或其他事件的輸入,我們可以使用本地事件來模擬這個過程。為此,請打開在 sam init 后創建的 events 文件夾,創建一個新的 event.json 文件,并粘貼任何 JSON 數據,例如:
使用 print(event["firstName"]) 語句在你的 Lambda 函數中查看本地終端中的輸出。然后構建你的項目,并運行以下命令,將該文件生成為輸入事件傳遞給你的 Lambda 函數:
sam local invoke FunctionName -e events/eventFileName.json
這就是你需要了解的關于在本地創建 Lambda 函數的全部內容。
雷鋒網消息,2020年11月10日, 亞馬遜云服務(AWS)宣布,AWS中國(寧夏)區域(由西云數據運營)和AWS中國(北京)區域(由光環新網運營)同時正式上線了兩項全新的文件存儲服務:Amazon FSx for Windows File Server和Amazon FSx for Lustre。
作為AWS云上的為Windows工作負載提供的文件存儲服務, Amazon FSx for Windows File Server主要應用于用戶文件共享、Web網站服務、企業內容管理、Windows應用程序和工作負載、數據分析業務等。
Amazon FSx for Lustre作為AWS云上的高性能文件存儲服務,可廣泛應用于機器學習、高性能計算、電子設計自動化、生命科學、自動駕駛和視頻渲染等需要高性能共享存儲的工作負載。與以往采用開源或第三方商用的文件存儲服務相比,這兩項AWS托管的存儲服務可以極大地降低運維復雜性,將安裝部署文件系統的時間從過去的數周甚至數月,縮短至數分鐘,同時也可以實現系統的靈活擴展。
此次推出的Amazon FSx for Windows File Server和Amazon FSx for Lustre文件存儲服務,加上1月推出的、為Linux工作負載提供的文件存儲服務Amazon Elastic File System (Amazon EFS)。至此,亞馬遜在中國區域集齊了AWS存儲服務“全家桶”,全面覆蓋了對象存儲、塊存儲、Linux文件存儲、Windows文件存儲、高性能文件存儲、低成本歸檔存儲以及云上備份存儲,同時提供云服務實現PB級數據傳輸上云,以及本地IT環境與云存儲的集成。
企業可以從對象存儲、文件存儲和塊存儲服務組成的AWS整套存儲服務,以及備份和數據遷移選項中進行選擇,構建云上IT 環境,降低成本、提高業務敏捷性和加速創新。
亞馬遜云服務(AWS)大中華區產品部總經理顧凡介紹了不同的關鍵業務和數據對存儲服務的需求,以及AWS中國區域提供的針對性存儲服務方案。
他將AWS存儲服務的優勢總結為四點,即安全可信、至廣至深、高度集成和開放生態。
顧凡坦言,在沒有云上托管文件存儲服務之前,很多客戶不得不購買第三方的商業文件存儲軟件許可證,以在云上自建共享文件存儲,需要花費大量時間和精力進行軟件安裝、維護、存儲空間配置、高可用管理、自建數據備份方案、負責軟件補丁更新,實施復雜的文件系統性能優化;有些客戶采用開源的方案自建共享文件存儲,除了以上復雜的管理開銷外,遇到技術問題,很難得到及時有效的技術支持。
Amazon FSx for Windows File Server 提供一種完全托管、高度可靠且可擴展的文件存儲服務,它與Windows 應用程序完全兼容,Linux 和 MacOS 操作系統也可以通過行業標準的SMB協議訪問,共享文件存儲。而Amazon FSx for Lustre 是一項完全托管的高性能文件存儲服務,可提供亞毫秒級延遲、高達每秒數百 GB 的吞吐量和百萬級的 IOPS,為計算密集型工作負載提供經濟高效的高性能存儲。
值得一提的是,Amazon FSx for Windows還支持數據去重功能,幫助企業優化成本,這也是其存儲服務的一大亮點。
據介紹,通過使用這兩項新的文件存儲服務,企業可以通過 AWS 管理控制臺或AWS命令行界面,在幾分鐘之內輕松地創建高可靠的共享文件系統,而無需自己管理底層的存儲服務,從而可以把更多的時間和精力釋放出來,投入到應用開發和業務流程上,提高開發效率和業務創新。
這兩項存儲服務都提供多種存儲類型選擇,例如全閃盤介質、閃盤+磁盤混合介質,企業可以根據實際業務需求,選擇經濟或高效的部署選項。
“這兩項全新的文件存儲服務的落地,讓 AWS中國區域形成了完整而強大的存儲服務陣容”,顧凡表示,”AWS大中華區團隊的首要任務就是根據中國市場需求的發展,按照中國客戶需求的優先級,通過與光環新網和西云數據的緊密合作,迅速地推動AWS全球領先的、經過驗證的服務在中國區域的部署,助力中國客戶的數字化轉型與創新。”
存儲服務是云基礎設施服務的核心基礎之一。此次AWS中國區域集齊了存儲服務“全家桶”,不僅意味著AWS在中國區域云市場的布局進一步深入,同時也釋放出一個信號,存儲領域競爭激烈的情況下,未來各家云廠商將看重為客戶提供更加安全和定制化的存儲服務。
(雷鋒網雷鋒網)