에서 사용자 지정 런타임을 사용하여 Lambda 함수 빌드 AWS SAM - AWS Serverless Application Model

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에서 사용자 지정 런타임을 사용하여 Lambda 함수 빌드 AWS SAM

sam build 명령을 사용하여 귀하의 Lambda 함수에 필요한 사용자 지정 런타임을 구축할 수 있습니다. Lamda 함수를 선언하여 사용자 지정 런타임을 사용하기 위해 해당 Lambda 함수에 대해 Runtime: provided을 지정하십시오.

사용자 지정 런타임을 구축하려면 Metadata 항목이 있는 BuildMethod: makefile 리소스 속성을 선언하십시오. 런타임용 빌드 명령이 포함된 양식의 빌드 대상을 build-function-logical-id 선언하는 사용자 지정 makefile을 제공하십시오. 귀하의 makefile은 필요한 경우 사용자 지정 런타임을 컴파일하고 워크플로의 후속 단계에 필요한 적절한 위치에 빌드 아티팩트를 복사합니다. makefile의 위치는 함수 리소스의 CodeUri 속성으로 지정되며 Makefile라는 이름을 지정해야 합니다.

예시

예제 1: Rust로 작성된 함수의 사용자 지정 런타임

참고

를 사용하여 Lambda 함수를 빌드하는 것이 좋습니다.Cargo Lambda. 자세한 내용은 섹션을 참조하세요를 사용하여 Rust Lambda 함수 빌드 Cargo Lambda 의 AWS SAM.

다음 AWS SAM 템플릿은 Rust로 작성된 Lambda 함수에 사용자 지정 런타임을 사용하는 함수를 선언하고 build-HelloRustFunction 빌드 대상에 대한 명령을 실행sam build하도록 지시합니다.

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 AWS Lambda을 잠조하세요.

예제 2: Python3.12용 Makefile 빌더(번들 빌더 사용의 대안)

번들 빌더에 포함되지 않은 라이브러리 또는 모듈을 사용하고 싶을 수도 있습니다. 이 예제에서는 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