強大的AWS lambda

AWS強大的lambda

自從幾年前換工作後,我所參與的項目一直都是基於AWS雲服務的架構,我慢慢對serverless的相關基礎建設有了一定了解和實踐經驗。其中lambda是我心中最強大的serveless服務,是很好的高併發業務解決方案。

  1. 什麼是lambda
    lambda是AWS提供的一種無服務器的計算服務,根據請求流量自動擴展應用服務,
  • 按需付費
    因爲是無服務器,所以無需提前準備(租用)好物理服務器。按照計算次數(請求次數)來收取費用,非常節省運維成本。

  • 支持高併發
    目前默認對每個賬號的每個region(區域)最大併發執行數是1000,也就是說如果同一秒來了1000個計算請求,那麼它可以最多併發處理1000個請求。最大併發執行數可以根據實際需求進行調整和設置。

  • 事件驅動

    lambda可以被多種事件(event)觸發執行,比如HTTP請求,數據庫操作,文件上傳等等。
    
  • 支持多種編程語言

lambda可以支持多種編程語言,比如Node.js, Python, Java, Go, Ruby以及.NET Core(C#),基本覆蓋了主流編程技術,可以選擇我們項目中對應實用的編程語言進行開發。特別是對NodeJS和Python的SDK最爲全面,這也是很多公司選擇AWS lambda的原因之一。

  1. lambda如何創建

有兩種方式可以創建lambda,一種是通過AWS控制檯進行創建,通過創建頁面的引導進行相關設置,在線編寫lambda的邏輯處理代碼。另一種就是通過上傳代碼包,從而創建lambda。

對於代碼包(通常是zip包)是有大小限制的,最大不能超過250M。所以如果你的zip包太大,可以選擇將這些代碼打包成鏡像,然後再上傳到AWS。

  1. lambda的常見實用場景

最常見的一個使用案例是文件處理後需要進一步處理的業務。例如視頻網站在用戶上傳了原始視頻後,需要對視頻進行壓縮,然後把壓縮文件重新寫入s3,併發送通知給用戶,比如用郵件的方式。

那麼對於這種併發量無法簡單估算且處理邏輯比較清晰的場景,可以選擇用lambda去完成。lambda的代碼流程:

  1. s3 event去觸發lambda,傳遞message給lambda function。

  2. lambda對message中的s3文件進行下載,然後壓縮,生成新的文件。

3)lambda上傳新生成的文件到s3,並寫入記錄到數據庫。

4)lambda通過AWS簡單郵件服務(SES)發送通知郵件給用戶。
代碼如下所示:

const AWS = require('aws-sdk');
const ses = new AWS.SES();

exports.handler = async (event) => {
    const params = {
        Destination: {
            ToAddresses: ['[email protected]']
        },
        Message: {
            Body: {
                Text: {
                    Data: 'Hello, this is the email body.'
                }
            },
            Subject: {
                Data: 'Subject of the email'
            }
        },
        Source: '[email protected]'
    };

    try {
        const result = await ses.sendEmail(params).promise();
        console.log('Email sent:', result);
        return {
            statusCode: 200,
            body: JSON.stringify('Email sent successfully!')
        };
    } catch (error) {
        console.error('Error sending email:', error);
        return {
            statusCode: 500,
            body: JSON.stringify('Error sending email.')
        };
    }
};


Lambda還有更多實際的配置和使用案例,比如怎麼和SQS、SNS服務進行集成,我會在後續的博客中繼續聊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章