在 中使用自訂執行期建置 Lambda 函數 AWS SAM - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 中使用自訂執行期建置 Lambda 函數 AWS SAM

您可以使用 sam build命令來建置 Lambda 函數所需的自訂執行期。您可以為函數指定 ,宣告 Lambda Runtime: provided函數使用自訂執行期。

若要建置自訂執行期,請使用 BuildMethod: makefile項目宣告Metadata資源屬性。您提供自訂 makefile,在此宣告build-function-logical-id包含執行期建置命令之表單的建置目標。如有必要,您的 makefile 負責編譯自訂執行期,並將建置成品複製到工作流程中後續步驟所需的適當位置。makefile 的位置由函數資源的 CodeUri 屬性指定,且必須命名為 Makefile

範例

範例 1:以 Rust 編寫的函數的自訂執行期

注意

我們建議使用 建置 Lambda 函數 Cargo Lambda。 若要進一步了解,請參閱 使用 建置 Rust Lambda 函數 Cargo Lambda 在 中 AWS SAM

下列 AWS SAM 範本宣告 函數,該函數使用以 Rust 編寫的 Lambda 函數的自訂執行期,並指示 sam build 執行build-HelloRustFunction建置目標的命令。

Resources: HelloRustFunction: Type: AWS::Serverless::Function Properties: FunctionName: HelloRust Handler: bootstrap.is.real.handler Runtime: provided MemorySize: 512 CodeUri: . Metadata: BuildMethod: makefile

下列 makefile 包含要執行的建置目標和命令。請注意, CodeUri 屬性設定為 .,因此 makefile 必須位於專案根目錄 (即與應用程式 AWS SAM 範本檔案相同的目錄)。檔案名稱必須為 Makefile

build-HelloRustFunction: cargo build --release --target x86_64-unknown-linux-musl cp ./target/x86_64-unknown-linux-musl/release/bootstrap $(ARTIFACTS_DIR)

如需設定開發環境以在上一個 中執行cargo build命令的詳細資訊makefile,請參閱 Rust Runtime for AWS Lambda 部落格文章。

範例 2:Makefile Builder for Python3.12 (使用搭售建置器的替代方案)

您可能想要使用未包含在套件建置器中的程式庫或模組。此範例顯示具有 makefile 建置器的 Python3.12 執行時間 AWS SAM 範本。

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.12 Metadata: BuildMethod: makefile

下列 makefile 包含要執行的建置目標和命令。請注意, CodeUri 屬性設定為 hello_world,因此 makefile 必須位於hello_world子目錄的根目錄,且檔案名稱必須為 Makefile

build-HelloWorldFunction: cp *.py $(ARTIFACTS_DIR) cp requirements.txt $(ARTIFACTS_DIR) python -m pip install -r requirements.txt -t $(ARTIFACTS_DIR) rm -rf $(ARTIFACTS_DIR)/bin