カスタムランタイムの構築 - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

カスタムランタイムの構築

「」を使用できます。sam buildコマンドを使用して、Lambda 関数に必要なカスタムランタイムを構築できます。カスタムランタイムを使用するように Lambda 関数を宣言するには、Runtime: provided関数に。

カスタムランタイムを構築するには、Metadataリソース属性をBuildMethod: makefileエントリ。あなたは、フォームのビルドターゲットを宣言するカスタムmakefileを提供しますbuild-function-logical-idには、ランタイムのビルドコマンドが含まれています。メイクファイルは、必要に応じてカスタムランタイムをコンパイルし、ビルド成果物をワークフローの以降のステップに必要な適切な場所にコピーする責任があります。メイクファイルの場所は、CodeUriプロパティであり、名前がMakefile

Examples

例 1: Rustで書かれた関数のカスタムランタイム

以下の 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「」を参照してください。AWS Lambda の Rust ランタイムブログ投稿。

例 2: Python3.7用のメイクファイルビルダー(バンドルされたビルダーを使用する代わりに)

バンドルされたビルダーに含まれていないライブラリやモジュールを使用することもできます。この例は、メイクファイルビルダーを使用した Python3.7 ランタイム用の AWS SAM テンプレートを示しています。

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

次のmakefileには、ビルドターゲットと実行されるコマンドが含まれています。以下の点に注意してください。CodeUriプロパティはhello_worldmakefile は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