

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

# 에서 사용자 지정 런타임을 사용하여 Lambda 함수 빌드 AWS SAM
<a name="building-custom-runtimes"></a>

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

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

## 예제
<a name="building-custom-runtimes-examples"></a>

### 예제 1: Rust로 작성된 함수의 사용자 지정 런타임
<a name="building-custom-runtimes-examples-rust"></a>

**참고**  
Cargo Lambda을 사용해 Lambda 함수를 구축하는 것이 좋습니다. 자세한 내용은 [Cargo Lambda에서를 사용하여 Rust Lambda 함수 빌드 AWS SAM](building-rust.md)를 참조하세요.

다음 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](https://aws.amazon.com/blogs/opensource/rust-runtime-for-aws-lambda/)을 잠조하세요.

### 예제 2: Python3.12용 Makefile 빌더(번들 빌더 사용의 대안)
<a name="building-custom-runtimes-examples-python"></a>

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