- 運算›
- AWS Lambda›
- 常見問答集
AWS Lambda 常見問答集
頁面主題
一般問題一般問題
問:什麼是 AWS Lambda?
問:什麼是無伺服器運算?
無伺服器運算可讓您建立和執行應用程式與服務,而無須擔心伺服器的問題。使用無伺服器運算,您的應用程式仍然在伺服器上執行,但所有伺服器管理工作都由 AWS 完成。AWS Lambda 是無伺服器運算的核心,讓您無須佈建或管理伺服器即可執行程式碼。
問:哪些事件可以觸發 AWS Lambda 函數?
如需事件來源的完整清單,請參閱我們的文件。
問:何時應該使用 AWS Lambda?何時又該使用 Amazon EC2?
Amazon Web Services 提供一組運算服務以滿足各種需求。
Amazon EC2 具有多種執行個體類型以及自訂作業系統、網路和安全設定以及整個軟體堆疊的選項,可提供靈活性,讓您能夠將現有的應用程式輕鬆移到雲端。使用 Amazon EC2 時,您要負責佈建容量、監控機群的運作狀態和效能,並設計容錯能力和可擴展性。AWS Elastic Beanstalk 提供易用的服務供您部署和擴展 Web 應用程式,而您也可在使用這些服務時保有對基礎 EC2 執行個體的擁有權和完整控制權。Amazon EC2 Container Service 是一項可擴展的管理服務,支援 Docker 容器,並讓您在 Amazon EC2 執行個體受管的叢集上輕鬆執行分散式應用程式。
AWS Lambda 可輕鬆執行程式碼以回應事件,例如 Amazon S3 儲存貯體的變更、Amazon DynamoDB 表的更新,或您的應用程式或裝置產生的自訂事件。使用 Lambda 時,您不必佈建自己的執行個體;Lambda 會代您執行所有的操作和管理活動,包括容量佈建、監控叢集運作狀態、對基礎運算資源套用安全性修補程式、部署您的程式碼、在前端執行 Web 服務以及監控和記錄您的程式碼。您不需進行其他作業,AWS Lambda 即可讓程式碼易於擴展且高度可用。
問:AWS Lambda 上可執行哪種程式碼?
問:AWS Lambda 支援哪些語言?
問:我是否能存取執行 AWS Lambda 所在的基礎設施?
問:AWS Lambda 如何隔離我的程式碼?
問:AWS Lambda 如何保護我的程式碼安全?
問:哪些 AWS 區域可使用 AWS Lambda?
請參閱 AWS 全球基礎設施區域表。
AWS Lambda 函數
問:什麼是 AWS Lambda 函數?
問:AWS Lambda 是否會重複使用函數執行個體?
為了改善效能,AWS Lambda 可以選擇保留您的函數執行個體,讓它重複使用於後續請求,而不是建立一個新副本。若要進一步了解 Lambda 如何重複使用函數執行個體,請參閱我們的文件。您的程式碼不應假設此操作會經常發生。
問:如果我需要在磁碟上為 AWS Lambda 函數提供暫存空間,應該怎麼做?
您可以為每個 Lambda 函數設定 512MB 至 10,240MB 之間的暫時性儲存,以 1MB 為增量。暫時性儲存在每個函數的目錄中均可使用。
每個函數都能免費使用 512MB 的儲存空間。使用超過 512MB 的暫時性儲存設定函數時,將會依據設定的儲存量和函數執行的時間計費,以 1 毫秒為增量來計量。相比之下,在美國東部 (俄亥俄) 區域,AWS Fargate 暫時性儲存價格為每 GB-小時 0.000111 USD,或每 GB-月 0.08 USD。美國東部 (俄亥俄) 的 Amazon EBS gp3 儲存磁碟區定價為每月-每 GB 0.08 USD。AWS Lambda 暫時性儲存定價為每 GB-秒 0.0000000309 USD,或每 GB-小時 0.000111 USD 和每 GB-月 0.08 USD。若要進一步了解,請參閱 AWS Lambda 定價。
問:如何設定我的應用程式以使用 AWS Lambda 暫時性儲存?
問:AWS Lambda 暫時性儲存是否加密?
問:可以使用哪些指標來監控我的 AWS Lambda 暫時性儲存用量?
您可以使用 AWS CloudWatch Lambda Insight 指標來監控暫時性儲存用量。要進一步了解,請參閱 AWS CloudWatch Lambda Insights 文件。
問:什麼時候應當為我的無伺服器應用程式使用 Simple Storage Service (Amazon S3)、Amazon EFS 或 AWS Lambda 暫時性儲存?
如果您的應用程式需要耐用的持久性儲存,請考慮使用 Simple Storage Service (Amazon S3) 或 Amazon EFS。如果您的應用程式需要在單一函數叫用中存放程式碼所需的資料,請考慮使用 AWS Lambda 暫時性儲存作為暫時性快取。要進一步了解,請參閱在 Web 應用程式中選擇 AWS Lambda 資料儲存選項。
問:在為我的函數啟用佈建並行時是否可以使用暫時性儲存?
問:如何設定我的應用程式以使用 AWS Lambda 暫時性儲存?
問:AWS Lambda 暫時性儲存是否加密?
問:可以使用哪些指標來監控我的 AWS Lambda 暫時性儲存用量?
您可以使用 AWS CloudWatch Lambda Insight 指標來監控暫時性儲存用量。要進一步了解,請參閱 AWS CloudWatch Lambda Insights 文件。
問:為什麼 AWS Lambda 函數必須是無狀態的?
問:我是否可在 AWS Lambda 函數程式碼中使用執行緒和程序?
問:AWS Lambda 函數程式碼有哪些限制?
問:如何使用 Lambda 主控台建立 AWS Lambda 函數?
如果您使用的是 Node.js 或 Python,可透過 AWS Lambda 主控台的程式碼編輯器為函數編寫程式碼,您可以在這裡編寫和測試函數,以及在與 IDE 類似的穩固環境中檢視函數執行的結果。前往主控台以開始使用。
您也可以將程式碼 (以及任何相依程式庫) 封裝成 ZIP,並使用 AWS Lambda 主控台從您的本機環境上傳,或者指定 ZIP 檔案所在的 Amazon S3 位置。上傳的內容不得大於 50 MB (已壓縮)。您可以使用 AWS Eclipse 外掛程式以 Java 編寫和部署 Lambda 函數。您可以使用 Visual Studio 外掛程式以 C# 和 Node.js 編寫和部署 Lambda 函數。
問:如何使用 Lambda CLI 建立 AWS Lambda 函數?
您可以將程式碼 (以及任何相依程式庫) 封裝成 ZIP,並使用 AWS CLI 從您的本機環境上傳,或者指定 ZIP 檔案所在的 Amazon S3 位置。上傳的內容不得大於 50 MB (已壓縮)。瀏覽 Lambda 入門指南以開始使用。
問:AWS Lambda 是否支援環境變數?
是。您可以透過 AWS Lambda 主控台、CLI 或軟體開發套件輕鬆建立和修改環境變數。若要進一步了解環境變數,請參閱文件。
問:是否可在環境變數存放敏感資訊?
如果是資料庫密碼這類敏感資訊,我們建議您使用 AWS Key Management Service 的用戶端加密,將結果值以加密文字的形式存放在環境變數中。您需要在 AWS Lambda 函數程式碼中加入邏輯,以解密這些值。
問:如何管理 AWS Lambda 函數?
您可以使用 Lambda API 或主控台,調整和保護與 Lambda 函數相關聯的資源。若要進一步了解,請參閱文件。
問:我是否可以跨函數共用程式碼?
是,您可以將任何程式碼 (架構、SDK、程式庫等) 封裝為 Lambda 層,並在多個函數之間輕鬆管理和共用它們。
問:如何監控 AWS Lambda 函數?
AWS Lambda 會自動代您監控 Lambda 函數,透過 Amazon CloudWatch 報告即時指標,包括請求總數、帳戶層級和函數層級並行用量、延遲、錯誤率和節流請求。您可以透過 Amazon CloudWatch 主控台或 AWS Lambda 主控台檢視每個 Lambda 函數的統計資料。您還可以在 Lambda 函數中呼叫第三方監控 API。
若要進一步了解,請參閱 CloudWatch 指標的疑難排解。若要使用 Lambda 內建指標,AWS Lambda 將按照標準收費。
問:如何對 AWS Lambda 函數進行故障診斷?
AWS Lambda 會與 Amazon CloudWatch Logs 自動整合,為每個 Lambda 函數建立一個日誌群組,並提供基本的應用程式生命週期事件日誌項目,包括記錄每次使用函數所耗用的資源。您可以在程式碼中輕鬆插入其他記錄陳述式。您還可以在 Lambda 函數中呼叫第三方記錄 API。若要進一步了解,請參閱 Lambda 函數的疑難排解。將採用 Amazon CloudWatch Logs 費率。
問:如何擴展 AWS Lambda 函數?
問:如何將運算資源指定給 AWS Lambda 函數?
在 AWS Lambda 資源模式中,您可以選擇想為函數分配的記憶體數量,並按 CPU 功率和其他資源的比例分配。例如,若是選擇 256 MB 記憶體,分配給 Lambda 函數的 CPU 功率大約是請求 128 MB 記憶體的兩倍,也是選擇 512 MB 記憶體時的一半。要進一步了解,請參閱我們的函式組態文件。
您可以將記憶體從 128 MB 設為 10,240 MB。
問:在記憶體超過 3008 MB 的情況下,AWS Lambda 函式的使用時機?
問:AWS Lambda 函數可以執行多久的時間?
問:使用 AWS Lambda 函數如何收費?
AWS Lambda 按使用量收費。如需詳細資訊,請參閱 AWS Lambda 定價頁面。
問:我能否透過 Compute Savings Plan 在 AWS Lambda 上節省資金?
問:AWS Lambda 是否支援版本控制?
是。預設情況下,每個 AWS Lambda 函數都有單一的目前版本程式碼。Lambda 函數的用戶端可以呼叫特定版本或取得最新實作。請參閱有關 Lambda 函數版本控制的文件。
問:上傳我的程式碼後,AWS Lambda 函數需要準備多久才能進行呼叫?
問:是否可使用我自己的支援程式庫版本?
問:分層定價如何運作?
AWS Lambda 針對超過特定閾值的每月所需功能持續時間,提供折扣定價方案。分層定價適用於在 x86 和 Arm 架構上執行的功能。依據帳戶內同一區域、相同架構 (分別為 x86 或 Arm) 上所執行函數的彙總每月所需持續時間,套用 Lambda 定價方案。如果您在 AWS Organizations 中使用合併帳單,依據組織各帳戶同一區域、相同架構上所執行函數的彙總每月持續時間,套用 Lambda 定價方案。例如,如果您在美國東部 (俄亥俄) 區域執行 x86 Lambda 函數,對於每月前 60 億 GB-秒,每 GB-秒需支付 0.0000166667 美元,對於接下來的 90 億 GB-秒,每 GB-秒需支付 0.0000150000 美元,在該區域每月超過 150 億 GB-秒,每 GB-秒需支付 0.0000133334 美元。請求、佈建並行和佈建並行持續時間的定價保持不變。如需詳細資訊,請參閱 AWS Lambda 定價
問:是否可以同時利用分層定價和 Compute Savings Plans?
是。您的每小時節省計畫承諾涵蓋的 Lambda 用量,按適用的 CSP 費率和折扣計費。此承諾未涵蓋的剩餘用量,將依據與您的每月彙總功能持續時間所屬等級相對應的費率計費。
使用 AWS Lambda 處理 AWS 事件
問:什麼是事件來源?
問:哪些事件來源可用於 AWS Lambda?
如需事件來源的完整清單,請參閱我們的文件。
問:如何在 AWS Lambda 中表示事件?
事件會以事件輸入參數的形式傳輸到 Lambda 函數中。對於事件在其中以批次處理方式到達的事件來源 (例如 Amazon SQS、Amazon Kinesis 和 Amazon DynamoDB Streams),根據您請求的批次大小,事件參數可能在單次呼叫中就包含多個事件。若要進一步了解 Amazon S3 事件通知,請瀏覽為 Amazon S3 事件設定通知。若要進一步了解 Amazon DynamoDB Streams,請瀏覽 DynamoDB Stream 開發人員指南。若要進一步了解如何使用 Amazon SNS 叫用 Lambda 函數,請瀏覽 Amazon SNS 開發人員指南。如需 Amazon Cognito 事件的詳細資訊,請瀏覽 Amazon Cognito。若要進一步了解 AWS 服務間的 AWS CloudTrail 日誌與稽核 API 呼叫,請參閱 AWS CloudTrail。
問:如何讓 AWS Lambda 函數針對 Amazon S3 儲存貯體的變更做出回應?
問:如何讓 AWS Lambda 函數針對 Amazon DynamoDB 表的變更做出回應?
問:如何使用 AWS Lambda 函數處理 Amazon Kinesis 串流中的記錄?
問:AWS Lambda 如何處理來自 Amazon Kinesis Streams 和 Amazon DynamoDB Streams 的資料?
我應如何在 AWS Lambda 和 Amazon Kinesis Data Analytics 之間選擇以符合我的分析需求?
AWS Lambda 可讓您在碎片之類的單一邏輯分區中,對 Amazon Kinesis 或 Amazon DynamoDB Streams 中的資料執行以時間為基礎的彙總 (例如計數、最大值、總和、平均值等),所需時間很短暫 (最久為 15 分鐘)。這可讓您為以事件為基礎的應用程式輕鬆設定簡單的分析,而不會增加架構的複雜性,因為您的業務和分析邏輯可位於相同的函式中。Lambda 會根據事件的時間戳記,在最多 15 分鐘的輪轉時段進行彙總。Amazon Kinesis Data Analytics 可讓您建置更複雜的分析應用程式,來支援彈性的處理選項和強健的容錯能力,應用程式還可具備確切的一次性處理而不會重複,以及跨多個邏輯分區對整個資料串流執行分析。藉助 KDA,您就可以使用事件時間或處理時間,透過多種類型的彙總時段 (輪轉時段、交錯時段、移動時段、工作階段時段) 分析資料。
AWS Lambda | Amazon KDA | |
---|---|---|
輪轉時段 | 是 | 是 |
交錯時段 | 否 | 是 |
移動時段 | 否 | 是 |
工作階段時段 | 否 | 是 |
擴充 | 否 | 是 |
聯合輸入和參考資料表 | 否 | 是 |
分割輸入串流 | 否 | 是 |
確切的一次性處理 | 否 | 是 |
時段上限 | 15 分鐘 | 無限制 |
彙總範圍 | 分區/碎片 | 串流 |
時間語意 | 事件時間 | 事件時間、處理時間 |
問:如何使用 AWS Lambda 函數回應 Amazon Simple Notification Service (SNS) 傳送的通知?
問:如何使用 AWS Lambda 函數回應 Amazon Simple Email Service (SES) 傳送的電子郵件?
問:如何使用 AWS Lambda 函數回應 Amazon CloudWatch 警示?
首先要設定警示以傳送 Amazon SNS 通知。然後從 AWS Lambda 主控台中選擇一個 Lambda 函數,並將其與 Amazon SNS 主題建立關聯。若要進一步了解如何設定 Amazon CloudWatch 警示,請參閱 Amazon CloudWatch 開發人員指南。
問:如何使用 AWS Lambda 函數回應由 Amazon Cognito 管理的使用者或裝置資料的變更?
您可以從 AWS Lambda 主控台選擇要在任何資料集與 Amazon Cognito 身分集區同步時觸發的函數。還可透過 AWS 開發套件和 CLI 提供此相同的功能。請瀏覽 Amazon Cognito 了解使用 Amazon Cognito 跨多個使用者裝置分享和同步資料的詳細資訊。
問:我的應用程式如何直接觸發 AWS Lambda 函數?
您可以透過 AWS Lambda 的叫用 API,使用自訂事件叫用 Lambda 函數。只有該函數的擁有者或該擁有者授予許可的另一個 AWS 帳戶才能叫用該函數。若要進一步了解,請瀏覽 Lambda 開發人員指南。
問:叫用 AWS Lambda 函數以回應事件會有多少延遲?
問:如何使用 AWS Lambda 建立行動後端?
上傳您要 AWS Lambda 執行的程式碼,並使用 AWS Mobile SDK 中的 AWS Lambda 開發套件,從行動應用程式叫用它。您可以直接 (同步) 呼叫來擷取或即時查看資料,也可以進行異步呼叫。您可以使用 Amazon API Gateway 定義自訂 API,並透過任何與 REST 相容的用戶端叫用 Lambda 函數。若要進一步了解 AWS Mobile SDK,請瀏覽 AWS Mobile SDK 頁面。若要進一步了解 Amazon API Gateway,請瀏覽 Amazon API Gateway 頁面。
問:如何透過 HTTPS 叫用 AWS Lambda 函數?
問:AWS Lambda 函數如何自訂發出請求的裝置與應用程式行為?
問:AWS Lambda 函數如何根據應用程式最終使用者的身分對其行為進行個人化?
問:如何使用 AWS Lambda 建立 Alexa 技術?
問:如果我的函數在處理事件時發生故障,會出現什麼情況?
使用 AWS Lambda 建置應用程式
問:什麼是無伺服器應用程式?
問:如何部署和管理無伺服器應用程式?
問:如何找出 AWS 社群開發的現有無伺服器應用程式?
您可以透過 AWS Serverless Application Repository,從 AWS community 開發人員、公司和合作夥伴發佈的無伺服器應用程式集合中選擇。找到應用程式之後,可以直接從 Lambda 主控台進行設定和部署。
問:如何自動化無伺服器應用程式的部署?
您可以使用 AWS CodePipeline 和 AWS CodeDeploy 自動化無伺服器應用程式的發佈程序。CodePipeline 是一種持續交付的服務,讓您能夠將無伺服器應用程式所需的步驟模型化、視覺化和自動化。CodeDeploy 可為 Lambda 應用程式提供部署自動化引擎。CodeDeploy 可讓您根據已確立的最佳實務方法 (如早期開發測試和線性部署) 協調部署,並協助您建立必要的防護,以確定新部署的程式碼是否安全、穩定且可全面發布到生產環境。
若要進一步了解無伺服器 CI/CD,請參閱我們的文件。
問:如何開始建置無伺服器應用程式?
若要開始建置,請前往 AWS Lambda 主控台,並下載其中一個藍圖。所下載的檔案會包含一個 AWS SAM 檔案 (用於定義應用程式中的 AWS 資源),以及 .ZIP 檔案 (其中包含函數的程式碼)。之後,您可以使用 AWS CloudFormation 命令來封裝和部署您剛下載的無伺服器應用程式。如需詳細資訊,請參閱我們的文件。
問:如何協調多個 AWS Lambda 函數之間的呼叫?
您可以使用 AWS Step Functions,以特定順序協調一系列 AWS Lambda 函數。您可以依序叫用多個 Lambda 函數,將函數的結果傳遞給另一個函數,也可以 (或者) 並行叫用多個函數,而 Step Functions 會在執行期間為您維護狀態。
問:如何對無伺服器應用程式進行故障排除?
您可以在 Lambda 函數執行角色新增 X-Ray 許可並將函數的 "tracing mode" 變更為 "active",以啟用 Lambda 函數的 AWS X-Ray 追蹤功能。 為 Lambda 函數啟用 X-Ray 之後,AWS Lambda 會將追蹤資訊發送到 X-Ray,這些資訊是關於 Lambda 服務叫用函數時所產生的開銷。這會提供您有關 Lambda 服務開銷、函數啟動時間和函數執行時間等等的洞見。此外,您還可以在 Lambda 部署套件中包含 X-Ray 開發套件來建立自己的追蹤片段、註解追蹤或檢視從 Lambda 函數發出的下游呼叫追蹤片段。X-Ray 開發套件目前可使用 Node.js 和 Java。若要進一步了解,請參閱 Lambda 應用程式的疑難排解。將採用 AWS X-Ray 費率。
問:我能否建立連結至關聯式資料庫的無伺服器應用程式?
是。Amazon RDS Proxy 是可管理連至關聯式資料庫的數千個並行連線的高可用性資料庫代理,您可使用此服務建立連線至關聯式資料庫的高度擴展且安全的無伺服器應用程式。RDS 代理目前支援 MySQL 和 Aurora 資料庫。您可以透過 Amazon RDS 主控台或 AWS Lambda 主控台,開始使用 RDS 代理。使用來自 RDS Proxy 之全受管連線集區的無伺服器應用程式,是根據 RDS Proxy 定價計費。
問:AWS SAM 如何獲得授權?
此規格根據 Apache 2.0 為開源,這可讓您和其他人將 AWS SAM 採納並融合到建置、部署、監控和管理工具之中,並提供有利於商業的授權。您可以在這裡存取 GitHub 上的 AWS SAM 儲存庫。
容器映像支援
問:AWS Lambda 的容器映像支援是什麼?
問:我應如何使用 AWS Lambda 的容器映像支援?
問:受支援的容器映像類型有哪些?
問:我可以使用哪些基礎映像?
問:我可以使用哪些容器工具,來將函式封裝和部署為容器映像?
問:對於部署為容器映像的函式,可使用的 AWS Lambda 功能有哪些?
問:AWS Lambda 會修補和更新我部署的容器映像嗎?
問:使用 ZIP 封存和容器映像建立的函式之間有什麼差異?
使用 ZIP 封存和容器映像建立的函式之間的差異主要有三個:
- 使用 ZIP 封存建立的函式,具備的解壓縮程式碼套件大小上限為 250 MB,而使用容器映像建立的函式,映像大小上限為 10 GB。
- Lambda 會使用 Amazon ECR 作為基礎程式碼儲存,適合定義為容器映像的函式,因此在將基礎映像從 ECR 刪除後,就可能無法叫用函式。
- 系統會根據最新的執行階段安全性和錯誤修正,自動修補 ZIP 函式。定義為容器映像的函式是不可變的,而且客戶需要負責處理在此函式中封裝的元件。客戶可以利用 AWS 提供的基礎映像 (AWS 通常會定期更新基礎映像,以確保安全性和進行錯誤修正),搭配最新可用的修補程式。
問:定義為 zip 和定義為容器映像的函式之間是否有效能差異?
問:系統會如何向我收取部署為容器映像之 Lambda 函式的費用?
封裝為容器映像並部署至 AWS Lambda 的函式無需額外費用。當您叫用部署為容器映像的函式時,需要為請求和執行持續時間支付標準費用。要進一步了解,請參閱 AWS Lambda 定價。 在 Amazon ECR 中存放容器映像,系統會以標準 ECR 價格向您收費。要進一步了解,請參閱 Amazon ECR 定價。
問:什麼是 Lambda 執行階段界面模擬器 (RIE)?
Lambda 執行階段界面模擬器是 Lambda 執行階段 API 的代理,可讓客戶在本機測試封裝為容器映像的 Lambda 函式。這是一種輕量型的 Web 伺服器,可將 HTTP 請求轉換為 JSON 事件並模擬 Lambda 執行階段 API。這可讓您使用 cURL 和 Docker CLI 等熟悉的工具,在本機測試函式 (同時測試封裝為容器映像的函式)。這個功能也可簡化在其他運算服務上執行應用程式的過程。您可以在容器映像中納入 Lambda 執行階段界面模擬器,使其以原生方式接受 HTTP 請求,而不是接受部署至 Lambda 所需的 JSON 事件。此元件不會模擬 Lambda 的協調器或安全性和身份驗證組態。執行階段界面模擬器的開源在 GitHub 上。您可以透過在本機上下載並安裝此元件來開始。
問:為何我在本機測試期間需要 Lambda Runtime Interface Emulator (RIE)?
問:我可以在本機使用 Emulator 測試的函式行為有哪些?
問:執行階段界面模擬器 (RIE) 如何協助我在其他運算服務上,執行 Lambda 相容的映像?
客戶可以將執行階段界面模擬器新增為容器映像的進入點,或以附屬的形式封裝該模擬器,以確保容器映像現在會接受 HTTP 請求 (而不是 JSON 事件)。此舉可簡化在其他運算服務上執行容器映像所需的變更。客戶需負責其所選環境遵守所有安全性、效能和並行最佳實務。RIE 是在 AWS Lambda 提供的映像中預先封裝的功能,依預設可在 AWS SAM CLI 中使用。基礎映像供應商可使用此文件,為其基礎映像提供相同的體驗。
問:我應如何將現有的容器化應用程式部署至 AWS Lambda?
如果容器化應用程式滿足以下要求,您就可以將其部署至 AWS Lambda:
- 此容器映像必須實作 Lambda 執行階段 API。我們有一組開放原始碼的軟體套件 (執行階段界面用戶端 (RIC)),這些套件會實作 Lambda 執行階段 API,讓您可以順暢地將偏好的基礎映像擴展為與 Lambda 相容的映像。
- 容器映像必須能夠在僅唯讀檔案系統上執行。您的函式程式碼可以存取 512 MB 的可寫入 /tmp 目錄儲存。如果使用的映像需要可寫入的根目錄,請將其設定為寫入至 /tmp 目錄。
- 預設 Lambda 使用者可讀取執行函式程式碼所需的檔案。Lambda 會為預設 Linux 使用者定義最低權限的許可,以遵循安全性最佳實務。您需要驗證應用程式程式碼是否不須仰賴受其他 Linux 使用者限制的檔案,而即可執行。
- 這是以 Linux 為基礎的容器映像。
AWS Lambda Snapstart
問: 什麼是 AWS Lambda SnapStart?
針對延遲敏感應用程式,AWS SnapStart 可以將啟動效能從幾秒鐘縮短至不到一秒。SnapStart 的運作方式是透過快照擷取函數的初始化記憶體 (和磁碟) 狀態,並快取此快照以進行低延遲存取。隨後調用函數時,Lambda 會從此預先初始化的快照 (而不是從頭開始初始化) 恢復執行環境,從而改善啟動延遲。為了提高彈性,Lambda 會維護快照的快取副本,並自動將軟體更新 (例如執行時期升級和安全性修補程式) 套用至其中。
問:如何設定我的 Lambda 函數以使用 Lambda SnapStart?
Lambda SnapStart 是一個簡單的函數級組態,可使用 Lambda API、AWS 管理主控台、AWS 命令列介面 (CLI)、AWS SDK、AWS Cloud Development Kit (CDK)、AWS CloudFormation 和 AWS Serverless Application Model (SAM) 設定新函數和現有的函數。在您設定 Lambda SnapStart 時,此後發佈的每個函數版本都會受益於 Lambda SnapStart 提供的改善的啟動效能。若要進一步了解 Lambda SnapStart,請參閱文件。
問:如何在 Lambda SnapStart 和佈建並行 (PC) 之間進行選擇?
Lambda SnapStart 是一種效能最佳化,可透過減少執行一次性初始化程式碼期間產生的可變延遲,協助函數實現更快的啟動速度。雖然 Lambda SnapStart 減少了啟動延遲,但它是一種盡力而為的最佳化,並不能保證消除冷啟動。如果您的應用程式對延遲要求嚴格,需要兩位數毫秒級啟動時間,建議您使用 PC。
問:Lambda SnapStart 支援哪些執行階段?
Lambda SnapStart 支援多個執行時期,包括 Java 11 (及更新版本)、Python 3.12 (及更新版本) 和 .NET 8 (以及更新版本)。執行時期的未來版本將在發佈後獲得支援。如需了解 Lambda 支援的所有執行時間,請參閱 Lambda 執行時間文件。
問:是否可以在相同的函數上同時啟用 Lambda SnapStart 和 PC?
問:是否可以使用虛擬私有雲端 (VPC) 設定 Lambda SnapStart 函數?
是。您可以設定 Lambda SnapStart 函數,以存取虛擬私有雲端 (VPC) 中的資源。如需有關如何使用 VPC 設定函數的詳細資訊,請參閱 Lambda 文件。
問:是否可以在 x86 和 Arm 架構上設定 Lambda SnapStart?
是。您可以針對在 x86 和 Arm 架構上執行的函數設定 Lambda SnapStart。
問:是否可以使用 Amazon Elastic File System (EFS) 啟用 Lambda SnapStart?
問:是否可以啟用具有 512 MB 以上的更大暫時性儲存 (/tmp) 的 Lambda SnapStart?
問:快取和從快照恢復的程序是否引入了軟體相容性考量?
問:是否可以在建立快照之前,或從快照恢復函數時執行自己的程式碼?
是。您可以在建立 (檢查點) 快照之前和使用執行時間勾點恢復快照之後,實作自己的軟體邏輯。如需進一步了解資訊,請參閱 Lambda SnapStart 文件。
問:是否需要為 Lambda SnapStart 付費?
是的,您將在功能版本處於作用中狀態的期間內支付快取快照的費用,至少要支付 3 小時的費用,之後以每毫秒計費。價格依您分配給函數的記憶體量而定。每次 Lambda 還原快照來恢復執行環境時,系統也會向您收取費用,價格取決於您分配給函數的記憶體數量。若要進一步了解 SnapStart 定價,請瀏覽 AWS Lambda 定價。
SnapStart 定價不適用於支援的 Java 受管理執行時期,這些執行時期只能快取最多 14 天的快照。
問:如何計算 SnapStart 的持續時間費用?
與所有 Lambda 函數一樣,持續時間費用適用於 SnapStart 函數。對於使用 SnapStart 的函數,持續時間包括執行時期載入所需的時間、執行時期勾點中執行的任何程式碼,以及建立快照副本以提供彈性時執行的初始化程式碼。
問:發佈函數版本的快照會在 Lambda SnapStart 中保持快取多長時間?
使用適用於 Python 和 .NET 的 Lambda SnapStart,只要函數處於作用中的狀態,函數快照就會保持作用中的狀態。若是 Java 函數,如果與發佈函數關聯的快照保持非作用中狀態超過 14 天,則會到期。
問:如何加密 Lambda SnapStart 建立的初始化執行環境的快照?
依預設,快照使用 Lambda 服務擁有和管理的客戶的不重複 AWS Key Management Service (KMS) 金鑰進行加密。客戶還可以使用客戶擁有和管理的 KMS 金鑰來加密快照。
問:程式碼初始化可使用 Lambda SnapStart 執行的時長是否有時間限制?
佈建並行
問:什麼是 AWS Lambda 佈建並行?
問:我如何設置與管理佈建並行?
您可以透過 AWS 管理主控台、Lambda API、AWS CLI 和 AWS CloudFormation,在函數上配置並行。從佈建並行獲益最簡單的方式就是使用 AWS Auto Scaling。您可以使用應用程式 Auto Scaling 配置排程,或讓 Auto Scaling 依需求的變化即時自動調整佈建並行的程度。若要進一步了解佈建並行,請參閱文件。
問:如果想要使用佈建並行,是否必須變更程式碼?
問:佈建並行如何收費?
佈建並行新增「佈建並行」定價方式,可讓函數保持初始化。啟用時,您需要按設定的並行數量和設定的時段付費。執行已配置佈建並行的函數時,您也必須支付請求和執行持續時間的費用。要進一步了解有關佈建並行的定價資訊,請參閱 AWS Lambda 定價。
問:什麼時候該使用佈建並行?
問:如果函數收到的叫用超出配置的佈建並行程度,會發生什麼事?
由 Graviton2 處理器驅動的 AWS Lambda 函數
問︰什麼是由 Graviton2 處理器驅動的 AWS Lambda 函數?
問:為什麼我應使用由 Graviton2 處理器驅動的 AWS Lambda 函數?
問:如何設定我的函數以在 Graviton2 處理器上執行?
問:如何使用由 Graviton2 處理器驅動的函數部署建置的應用程式?
問:應用程式能否同時使用由 Graviton2 處理器和 x86 處理器驅動的函數?
問:是否需要以 Arm 為基礎的開發機器,在本機建立、建置和測試由 Graviton2 處理器驅動的函數?
Python、Java 和 Node 等解釋性語言通常不需要重新編譯,除非您的程式碼引用了使用架構特定元件的庫。在這些情況下,您需要提供針對 arm64 的庫。如需詳細資訊,請參閱開始使用 AWS Graviton 頁面。非解釋性語言需要將程式碼編譯為針對 arm64。雖然更現代化的編譯器將為 arm64 產生編譯程式碼,但您需要將其部署至以 arm 為基礎的環境中進行測試。若要進一步了解如何將 Lambda 函數與 Graviton2 結合使用,請參閱文件。
問:AWS Lambda 是否支援多架構容器映像?
問:是否能針對由 AWS Graviton2 處理器驅動的函數建立 AWS Lambda 層?
問:在 Graviton2 處理器上執行的 Lambda 函數支援哪些語言和執行時間?
在發佈時,客戶可使用 Python、Node.js、Java、Ruby、.Net Core、自訂執行時間 (provided.al2) 和 OCI Base 映像。若要進一步了解,請參閱 AWS Lambda 執行階段。
問:由 AWS Graviton2 處理器驅動的 AWS Lambda 函數的定價是多少? AWS Lambda 免費方案是否適用於由 Graviton2 驅動的函數?
問:如何選擇在 Graviton2 處理器或 x86 處理器上執行我的函數?
每個工作負載都是獨一無二的,建議客戶測試其函數,以確定能否看到性價比改進。為此,我們建議使用 AWS Lambda Power Tuning 工具。建議在測試您的工作負載以提高潛在的性價比時,從 Web 和行動後端、資料和串流處理開始。
Amazon EFS for AWS Lambda
問:什麼是 Amazon EFS for AWS Lambda?
問:如何設定 Amazon EFS for Lambda?
開發人員可以使用主控台、CLI 或 SDK,透過 EFS Access Point 輕鬆將現有 EFS 檔案系統連線至 Lambda 函數。首次叫用函數時,檔案系統將自動掛載並供函數程式碼使用。您可以參閱文件以進一步了解。
問:使用 Amazon EFS 檔案系統前是否需要透過 VPC 設定來設定我的函數?
問:誰應該使用 Amazon EFS for Lambda?
問:我的資料會在傳輸時加密嗎?
問:我的資料是否會靜態加密?
問:Amazon EFS for AWS Lambda 如何計費?
使用 Amazon EFS for AWS Lambda 無須額外付費。客戶只需支付 AWS Lambda 和 Amazon EFS 標準價格。在相同可用區域中使用 Lambda 和 EFS 時,不會向客戶收取資料傳輸費用。但是,如果他們使用 VPC 對等進行跨帳戶存取,則會產生資料傳輸費用。若要進一步了解,請參閱定價。
問:AWS Lambda 函數是否可與多個 Amazon EFS 檔案系統關聯?
問:我是否可在多個函數、容器和執行個體使用相同的 Amazon EFS 檔案系統?
Lambda 函數 URL
問:AWS Lambda 函數是否支援 HTTP(S) 端點?
問:我如何針對我的函數設定 Lambda 函數 URL?
您可以透過 AWS 管理主控台、AWS Lambda API、AWS CLI、AWS CloudFormation 和 AWS Serverless Application Model 來設定函數 URL。可以在您函數的 $LATEST 非限定版本或任何函數別名上啟用函數 URL。若要進一步了解設定函數 URL,請參閱文件。
問:我如何保護 Lambda 函數 URL 安全?
問:如何使用 Lambda 函數 URL 叫用我的函數?
問:Lambda 函數 URL 是否適用於函數版本和別名?
是。可以在函數或函數別名上啟用 Lambda 函數 URL。如果未指定別名,依預設,URL 會指向 $LATEST。函數 URL 不能針對個別函數版本。
問:我是否可以針對 Lambda 函數 URL 啟用自訂網域?
問:是否可以使用 Lambda 函數 URL 在 VPC 中叫用函數?
問:使用 Lambda 函數 URL 的定價如何?
使用函數 URL 無需額外收費。您只需支付 AWS Lambda 標準費用。若要進一步了解,請參閱 AWS Lambda 定價。
Lambda@Edge
問:什麼是 Lambda@Edge?
Lambda@Edge 可讓您在全球 AWS 位置執行程式碼,不僅不需佈建或管理伺服器,更能以最少的網路延遲回應最終使用者。您只需將 Node.js 或 Python 程式碼上傳至 AWS Lambda,並設定要觸發的函數,以回應 Amazon CloudFront 請求 (確切時間點包括:檢視者請求抵達時、將請求轉送到原始伺服器或從原始伺服器收到請求時,以及在回應最終使用者之前)。收到索取內容的請求時,就能在全球各個 AWS 位置執行該程式碼,並根據全球的 CloudFront 請求數量加以擴展。如要進一步了解,請參閱我們的文件。
問:如何使用 Lambda@Edge?
要使用 Lambda@Edge,您只需將程式碼上傳到 AWS Lambda,並關聯要觸發的函數版本以回應 Amazon CloudFront 請求。您的程式碼必須滿足 Lambda@Edge 服務限制。Lambda@Edge 目前支援使用 Node.js 和 Python,透過 CloudFront 事件執行全球叫用。如要進一步了解,請參閱我們的文件。
問:何時應使用 Lambda@Edge?
Lambda@Edge 已針對分佈全球的最終檢視者最注重延遲的使用案例進行優化。決策所需的所有資訊應該都在 CloudFront 節點的函數和請求內。這表示您所尋找要根據使用者特性 (例如,地點、用戶端裝置等等) 決定如何提供內容的使用案例,現在可以在離使用者最近的地方執行和提供服務,無須傳送回集中化的伺服器。
問:是否可部署現有的 Lambda 函數以進行全球叫用?
如果函數滿足 Lambda@Edge 服務需求和限制,您可以建立現有 Lambda 函數與 CloudFront 事件的關聯以進行全球叫用。在這裡閱讀有關如何更新函數屬性的詳細資訊。
問:哪些 Amazon CloudFront 事件可用來觸發函數?
您的函數會自動觸發以回應下列 Amazon CloudFront 事件:
- 檢視者請求 – 當網際網路上的最終使用者或裝置發出 HTTP(S) 請求給 CloudFront,且請求抵達最靠近該使用者的節點時,會發生此事件。
- 檢視者回應 – 當節點上的 CloudFront 伺服器準備好回應發出請求的最終使用者或裝置時,會發生此事件。
- 原始伺服器請求 – 當 CloudFront 節點伺服器的快取中尚未有請求的物件,且檢視者請求已準備好傳送到後端原始 Web 伺服器 (例如 Amazon EC2、Application Load Balancer 或 Amazon S3) 時,會發生此事件。
- 原始伺服器回應 – 當邊緣上的 CloudFront 伺服器從後端原始 Web 伺服器收到回應時,會發生此事件。
問:AWS Lambda@Edge 與在 Amazon API Gateway 後方使用 AWS Lambda 有何不同?
不同之處在於 API Gateway 和 Lambda 都是區域服務。使用 Lambda@Edge 和 Amazon CloudFront,可讓您根據最終檢視者的位置跨多個 AWS 位置執行邏輯。
可擴展性和可用性
問:AWS Lambda 函數的可用性如何?
問:當我變更程式碼或其設定時,是否還能使用 AWS Lambda 函數?
問:一次可執行的 AWS Lambda 函數數量是否有限制?
否。AWS Lambda 設計成能夠平行執行大量的函數執行個體。不過,AWS Lambda 對於每個區域的每個帳戶設有並行執行數量的預設安全調節限制 (請參閱這裡以取得預設安全調節限制的相關資訊)。您也可以控制個別 AWS Lambda 函數的最高並行執行數,為關鍵函數保留一部分的帳戶並行限制,或者設定下游資源流量速率上限。
如果您要提交請求以增加並行執行限制,可以使用 Service Quotas 來請求提高上限。
問:如果帳戶超出並行執行的預設節流限制,會出現什麼情況?
當超出最大並行執行限制時,同步叫用的 AWS Lambda 函數將會傳回節流錯誤 (錯誤碼為 429)。異步叫用的 Lambda 函數可以承受合理範圍內的突發流量約 15 到 30 分鐘,但之後再進來的事件將因為節流而遭到拒絕。如果叫用的 Lambda 函數是用於回應 Amazon S3 事件,則遭到 AWS Lambda 拒絕的事件可能會由 S3 保留 24 小時並在此期間重試。除非 Lambda 函數成功或資料過期,否則來自 Amazon Kinesis Streams 和 Amazon DynamoDB Streams 的事件會一直重試。Amazon Kinesis 與 Amazon DynamoDB 串流會將資料保留 24 小時。
問:是否在每個函數層級套用預設最大並行執行限制?
預設最大並行執行限制會在帳戶層級套用。但是,您也可以對個別函數設定限制 (請造訪此處以取得有關預留並行的資訊)。
問:我的 AWS Lambda 函數能夠以多快的速度擴展?
每個同步叫用的 Lambda 函數可以每 10 秒以最多 1000 次並行執行的速率進行擴展。雖然 Lambda 的擴展速率適用於大多數使用案例,但特別適合流量突增可預測或不可預測的使用案例。例如,SLA 界定的資料處理需要可預測但快速的擴展來滿足處理需求。同樣,提供突發新聞文章或快閃銷售可能會在短時間內推動不可預測的流量層級。Lambda 的擴展速率可以促進此類使用案例,而無需額外的組態或工具。此外,並行擴展限制是函數層級限制,這意味著帳戶中的每個函數都會獨立於其他函數進行擴展。
問:如果我的 Lambda 函數在處理事件時發生故障,會出現什麼情況?
問:哪些資源可設定為 Lambda 函數的無效字母佇列?
問:如果 Lambda 函數叫用耗盡可用的政策,會發生什麼事?
當超出非同步叫用的重試政策時,您可在放置事件的位置設定「無效字母佇列」(DLQ);沒有設定 DLQ 的事件會被拒絕。當超出串流調用的重試政策時,表示資料已經到期,因此會被拒絕。
安全和存取控制
問:如何允許我的 AWS Lambda 函數存取其他 AWS 資源?
您可以使用 IAM 角色授予 Lambda 函數存取其他資源的許可。AWS Lambda 在執行您的 Lambda 函數時會擔任執行角色,因此您可以對該服務可使用的 AWS 資源保持完整且安全的控制。若要進一步了解角色,請瀏覽設定 AWS Lambda。
問:如何控制哪些 Amazon S3 儲存貯體可以呼叫哪些 AWS Lambda 函數?
當您設定 Amazon S3 儲存貯體以傳送訊息到 AWS Lambda 函數時,將會建立一條授權存取的資源政策規則。請瀏覽 Lambda 開發人員指南,進一步了解資源政策與存取 Lambda 函數控制的相關資訊。
問:如何對 AWS Lambda 函數可以輪詢哪個 Amazon DynamoDB 表或 Amazon Kinesis 串流進行控制?
存取控制是透過 Lambda 函數的角色來管理。您指派給 Lambda 函數的角色也決定了 AWS Lambda 可代表其輪詢的資源。若要進一步了解,請瀏覽 Lambda 開發人員指南。
問:如何控制 AWS Lambda 函數可以輪詢哪一個 Amazon SQS 佇列?
問:如何透過 AWS Lambda 函數存取 Amazon VPC 的資源?
您可透過指定子網路與安全群組作為函數組態的一部分來啟用 Lambda 函數來存取 VPC 的資源。設定要存取特定 VPC 中資源的 Lambda 函數,預設無法存取網際網路。若要授與這些功能網際網路權限,請使用網際網路閘道。根據預設,Lambda 函數會透過 IPv4 與雙堆疊 VPC 的資源通訊。您可設定函數來透過 IPv6 存取雙堆疊 VPC 的資源。如需詳細資訊了解使用 VPC 設定的 Lambda 函數,請參閱使用 VPC 的 Lambda 私人網路。
問:AWS Lambda 的程式碼簽署是什麼?
AWS Lambda 的程式碼簽署提供信任和完整性控制項,可讓您驗證只有來自核准開發人員的未修改程式碼才會在您的 Lambda 函式中部署。您可以將 AWS Signer (一個全受管程式碼簽署服務) 用於數位簽署的程式碼成品,並將 Lambda 函式設定為在部署時驗證簽章。目前僅封裝為 ZIP 封存的函式可使用 AWS Lambda 的程式碼簽署。
問:我應如何建立數位簽署的程式碼成品?
您可以使用簽署描述檔,透過 AWS Signer 主控台、Signer API、SAM CLI 或 AWS CLI,建立數位簽署程式碼成品。若要進一步了解,請參閱 AWS Signer 文件。
問:我應如何將 Lambda 函式設定為啟用程式碼簽署?
問:AWS Lambda 會在部署時執行哪些簽章檢查?
AWS Lambda 可在部署時執行以下簽章檢查:
• 簽章損壞 - 程式碼成品在簽署後發生變更時,會發生此狀況。
• 簽章不相符 - 程式碼成品遭未經核准的簽署描述檔簽署時,會發生此狀況。
• 簽章過期 - 簽章超過設定的過期日時,會發生此狀況。
• 簽章遭撤銷 - 簽署描述檔擁有者撤銷簽署任務時,會發生此狀況。
若要進一步了解,請參閱 AWS Lambda 文件。
問:我可以為現有函式啟用程式碼簽署嗎?
問:使用 AWS Lambda 的程式碼簽署是否需要額外付費?
使用 AWS Lambda 的程式碼簽署無需額外付費。您只需支付 AWS Lambda 標準費用。若要進一步了解,請參閱定價。
進階監控功能
問:Lambda 支援哪些進階日誌控制?
為了在預設情況下為您提供簡化且增強的日誌體驗,AWS Lambda 提供進階日誌控制,例如能以 JSON 結構化格式原生擷取 Lambda 函數日誌、控制 Lambda 函數日誌的日誌層級篩選而無需變更程式碼,而且自訂 Amazon CloudWatch 日誌群組 Lambda 的日誌傳送。
問:我可以使用進階日誌控制做什麼?
您可以 JSON 結構化格式擷取 Lambda 函數日誌,而無需使用自己的日誌庫。JSON 結構化日誌可讓您更輕鬆地搜尋、篩選和分析大量日誌項目。您可以控制 Lambda 函數日誌的日誌層級篩選,無需進行任何程式碼變更,進而可選擇 Lambda 函數所需的日誌詳細度等級,而無需在偵錯和疑難排解時篩選大量日誌。您也可以設定 Lambda 應將日誌傳送至哪個 Amazon CloudWatch 日誌群組,讓您更輕鬆將應用程式內多個函數日誌彙集到一個位置。您接著就可以將安全性、治理和保留原則套用到應用程式層級的日誌,不必分別套用至每個函數。
問:我如何使用進階日誌控制?
您可以使用 AWS Lambda API、AWS Lambda 主控台、AWS CLI、AWS Serverless Application Model (SAM) 和 AWS CloudFormation,為 Lambda 函數指定進階日誌控制。若要進一步了解,請造訪啟動部落格文章以取得進階日誌控制,或參閱 Lambda 開發人員指南。
問:我可以使用自己的日誌庫為我的 Lambda 函數產生 JSON 結構化日誌嗎?
可以,您可以使用自己的日誌庫以 JSON 結構化格式產生 Lambda 日誌。為確保您的日誌庫能夠與 Lambda 的原生 JSON 結構化日誌功能順暢運作,Lambda 不會對您的函數產生的任何已經有 JSON 編碼的日誌進行雙重編碼。您也可以使用 Powertools for AWS Lambda 來擷取 JSON 結構化格式的 Lambda 日誌。
問:進階日誌控制如何收費?
在 Lambda 上使用進階日誌控制不需額外收費。Amazon CloudWatch Logs 將繼續向您收取擷取和儲存 Lambda 日誌的費用。如需日誌定價詳細資訊,請參閱 CloudWatch 定價頁面。
問:什麼是 CloudWatch Application Signals,以及其如何與 Lambda 搭配使用?
CloudWatch Application Signals 是一種應用程式效能監控 (APM) 解決方案,可讓開發人員和操作員輕鬆監控使用 Lambda 建置的無伺服器應用程式的運作狀態和效能。Application Signals 提供預先建置的標準化儀表板,以了解關鍵應用程式指標、相關的追蹤以及 Lambda 函數及其相依性之間的互動,所有這些都不需要開發人員手動檢測或程式碼變更。
問:如何搭配使用 Application Signals 與 Lambda?
您只需按一下在 Lambda 主控台的「組態」標籤下的「監控和操作工具」部分,即可為您的函數啟用 Application Signals。啟用 Application Signals 後,您可以在 CloudWatch 主控台中檢視預先建置的儀表板、服務地圖等,並分析無伺服器應用程式的效能和運作狀態。若要進一步了解,請瀏覽 Lambda 開發人員指南和 Application Signals 開發人員指南。請造訪 CloudWatch 定價頁面,進一步了解關於搭配使用 Application Signals 與 Lambda 函數的收費方式。
問:什麼是 CloudWatch Live Tail,以及其如何與 Lambda 搭配使用?
CloudWatch Logs Live Tail 是一項互動式日誌串流和分析功能,可提供對日誌的即時可見性,使 Lambda 函數的開發和疑難排解更為容易。這讓開發人員能夠即時快速測試和驗證程式碼或組態變更,加速使用 Lambda 建置應用程式時的作者測試部署週期 (也稱為「內部開發循環」)。Live Tail 體驗還能夠使操作員和 DevOps 團隊更高效地偵測和偵錯 Lambda 函數程式碼中的故障和關鍵錯誤,縮短疑難排解 Lambda 函數錯誤時的平均復原時間 (MTTR)。
問:如何搭配使用 Live Tail 與 Lambda?
若要將 Live Tail 用於您的 Lambda 函數,請造訪 Lambda 主控台,然後按一下程式碼編輯器中的「開啟 CloudWatch Live Tail」按鈕。如需詳細資訊,請參閱 Lambda 開發人員指南。請造訪 CloudWatch 定價頁面,進一步了解關於搭配使用 Live Tail 與 Lambda 函數的收費方式。
以 Java 編寫的 AWS Lambda 函數
問:如何編譯 AWS Lambda 函數 Java 程式碼?
您可以使用 Maven 或 Gradle 這類標準工具編譯 Lambda 函數。您的建置程序應該與編寫依靠 AWS 開發套件的任何 Java 程式碼的建置程序相同。在原始檔案上執行 Java 編譯器工具,並在 classpath 包括 AWS 開發套件 1.9 或更新版本及轉移相依項。如需詳細資訊,請參閱我們的文件。
問:Lambda 用來執行函數的 JVM 環境為何?
以 Node.js 編寫的 AWS Lambda 函數
問:我是否可將套件與 AWS Lambda 搭配使用?
是。您可以使用 NPM 套件和自訂的套件。在這裡進一步了解。
問:是否可在以 Node.js 編寫的 AWS Lambda 函數中執行其他程式?
是。Lambda 的內建沙盒可讓您執行批次 (「殼層」) 指令碼、其他語言執行階段、公用程式常式以及可執行檔。在這裡進一步了解。
問:是否可將原生模組與以 Node.js 編寫的 AWS Lambda 函數搭配使用?
是。您上傳的 ZIP 檔案可包含任何靜態連結的原生模組,以及動態連結的模組,動態模組是用指向您的 Lambda 函數根目錄的根路徑編譯的。在這裡進一步了解。
問:是否能使用以 Node.js 編寫的 AWS Lambda 執行二進位程式碼?
是。您可以使用 Node.js 的 child_process 命令來執行包含在函數中的二進位程式碼,或任何可以從 Amazon Linux 看到函數的可執行檔。另外,還有多個包裝命令列二進位程式碼的 NPM 套件,如 node-ffmpeg。在這裡進一步了解。
問:如何部署以 Node.js 編寫的 AWS Lambda 函數?
若要部署以 Node.js 撰寫的 Lambda 函數,只要將 Javascript 程式碼和相依程式庫封裝成 ZIP。您可以從本機環境上傳 ZIP,或者指定 ZIP 檔案所在的 Amazon S3 位置。如需詳細資訊,請參閱我們的文件。
以 Python 編寫的 AWS Lambda 函數
問:我是否可將 Python 套件與 AWS Lambda 搭配使用?
以 C# 編寫的 AWS Lambda 函數
問:如何以 C# 封裝和部署 AWS Lambda 函數?
以 PowerShell 編寫的 AWS Lambda 函數
問:如何部署以 PowerShell 撰寫的 AWS Lambda 函數?
PowerShell Lambda 部署套件是一個 ZIP 檔案,包含 PowerShell 指令碼、PowerShell 指令碼所需的 PowerShell 模組,以及託管 PowerShell Core 時所需的組件。您可以使用 AWSLambdaPSCore PowerShell 模組 (可以從 PowerShell Gallery 安裝) 建立您的 PowerShell Lambda 部署套件。
以 Go 編寫的 AWS Lambda 函數
問:如何以 Go 封裝和部署 AWS Lambda 函數?
透過 AWS CLI 或 Lambda 主控台,以 ZIP 檔案的形式上傳您的 Go 可執行成品,並選取 go1.x 執行時間即可。有了 Lambda,您就可使用 Go 的原生工具來建置及包裝程式碼。如需更多詳細資訊,請閱讀我們的文件。
以 Ruby 編寫的 AWS Lambda 函數
問:如何部署以 Ruby 撰寫的 AWS Lambda 函數?
其他主題
問:AWS Lambda 支援哪些版本的 Amazon Linux、Node.js、Python、JDK、.NET Core、開發套件和其他程式庫?
您可以檢視這裡的受支援版本清單。
問:我是否能更改 Amazon Linux 或任何語言執行時間的版本?
否,AWS Lambda 向該服務的所有使用者提供單一版本的作業系統和受管語言執行時間。您可以將自己的語言執行時間用在 Lambda 中。
問:如何記錄和稽核對 AWS Lambda API 所做的呼叫?
問:如何協調多個 Lambda 函數之間的呼叫?
您可以使用 Amazon Step Functions 來協調多個叫用的 Lambda 函數。您可以依序叫用多個 Lambda 函數,將一個函數的結果傳遞給另一個,或是並行叫用函數。如需詳細資訊,請參閱我們的文件。