

# 소스 리포지토리 열기
<a name="runtimes-open-source"></a>

AWS Lambda는 서버리스 애플리케이션을 빌드, 사용자 지정 및 최적화하는 데 도움이 되는 다양한 오픈 소스 도구, 라이브러리 및 구성 요소를 제공합니다. 이러한 리소스에는 AWS에서 유지 관리하고 GitHub에서 사용할 수 있는 런타임 인터페이스 클라이언트, 이벤트 라이브러리, 컨테이너 기본 이미지, 개발 도구 및 샘플 프로젝트가 포함됩니다. 이러한 오픈 소스 리포지토리를 활용하여 Lambda의 기능을 확장하고, 사용자 지정 런타임을 생성하고, 다양한 AWS 서비스의 이벤트를 처리하고, 함수의 성능에 대한 심층적인 인사이트를 얻을 수 있습니다. 이 페이지에서는 Lambda 개발을 지원하는 주요 오픈 소스 프로젝트의 개요를 제공합니다.

## 런타임 인터페이스 클라이언트
<a name="open-source-ric"></a>

Lambda 런타임 인터페이스 클라이언트(RIC)는 [런타임 API](runtimes-api.md)를 구현하고 함수 코드와 Lambda 서비스 간의 상호 작용을 관리하는 오픈 소스 라이브러리입니다. 이러한 클라이언트는 호출 이벤트 수신, 컨텍스트 정보 전달 및 오류 보고를 처리합니다.

Lambda의 관리형 런타임 및 컨테이너 기본 이미지에서 사용하는 런타임 인터페이스 클라이언트는 오픈 소스로 게시됩니다. 사용자 지정 런타임을 빌드하거나 기존 런타임을 확장할 때 이러한 오픈 소스 라이브러리를 사용하여 구현을 간소화할 수 있습니다. 다음 오픈 소스 GitHub 리포지토리에는 Lambda의 RIC에 대한 소스 코드가 포함되어 있습니다.
+ [Node.js 런타임 인터페이스 클라이언트](https://github.com/aws/aws-lambda-nodejs-runtime-interface-client)
+ [Python 런타임 인터페이스 클라이언트](https://github.com/aws/aws-lambda-python-runtime-interface-client)
+ [Java 런타임 인터페이스 클라이언트](https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-runtime-interface-client)
+ [Ruby 런타임 인터페이스 클라이언트](https://github.com/aws/aws-lambda-ruby-runtime-interface-client)
+ [.NET 런타임 인터페이스 클라이언트](https://github.com/aws/aws-lambda-dotnet)
+ [Rust 런타임 인터페이스 클라이언트](https://github.com/aws/aws-lambda-rust-runtime)
+ [Go 런타임 인터페이스 클라이언트](https://github.com/aws/aws-lambda-go)
+ [Swift 런타임 인터페이스 클라이언트](https://github.com/awslabs/swift-aws-lambda-runtime)(실험 단계)
+ [C\$1\$1 런타임 인터페이스 클라이언트](https://github.com/awslabs/aws-lambda-cpp)(실험 단계)
+ [Lambda 기본 이미지](https://github.com/aws/aws-lambda-base-images)

이러한 클라이언트를 사용하여 사용자 지정 런타임을 빌드하는 방법에 대한 자세한 정보는 [AWS Lambda에 대한 사용자 지정 런타임 빌드](runtimes-custom.md) 섹션을 참조하세요.

## 이벤트 라이브러리
<a name="open-source-event-libraries"></a>

Lambda 이벤트 라이브러리는 다양한 AWS 서비스의 이벤트를 처리하기 위한 유형 정의 및 헬퍼 유틸리티를 제공합니다. 이러한 라이브러리를 사용하면 유형 안전 방식으로 이벤트 데이터를 구문 분석하고 처리할 수 있으므로 Amazon S3, Amazon DynamoDB 및 Amazon API Gateway와 같은 서비스의 이벤트를 더 쉽게 사용할 수 있습니다.

컴파일된 언어의 경우는 AWS가 다음 이벤트 라이브러리를 제공합니다.
+ [Java 이벤트 라이브러리](https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-events)
+ [.NET 이벤트 라이브러리](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src)
+ [Go 이벤트 라이브러리](https://github.com/aws/aws-lambda-go/tree/main/events)
+ [Rust 이벤트 라이브러리](https://github.com/awslabs/aws-lambda-rust-runtime)

Node.js, Python, Ruby와 같이 해석된 언어의 경우 별도의 라이브러리 없이 이벤트를 JSON 객체로 직접 구문 분석할 수 있습니다. 그러나 Node.js 및 Python을 사용하는 개발자는 컴파일된 언어 라이브러리가 제공하는 것과 유사한 유형 힌트, 데이터 검증 및 기능을 제공하는 AWS 이벤트에 내장 스키마를 제공하는 AWS Lambda용 powertools를 활용할 수 있습니다.
+ [TypeScript용 Powertools](https://docs.powertools.aws.dev/lambda/typescript/latest/features/parser/#built-in-schemas)
+ [Python용 Powertools](https://docs.powertools.aws.dev/lambda/python/latest/utilities/parser/#built-in-models)

## 컨테이너 기본 이미지
<a name="open-source-container-base-images"></a>

AWS는 Lambda 함수의 컨테이너 이미지를 빌드하기 위한 시작점으로 사용할 수 있는 오픈 소스 컨테이너 기본 이미지를 제공합니다. 이러한 기본 이미지에는 Lambda 실행 환경에서 함수를 실행하는 데 필요한 런타임 인터페이스 클라이언트 및 기타 구성 요소가 포함됩니다.

사용 가능한 기본 이미지 및 사용 방법에 대한 자세한 내용은 [AWS Lambda 기본 이미지](https://github.com/aws/aws-lambda-base-images) 리포지토리 및 [컨테이너 이미지를 사용하여 Lambda 함수 생성](images-create.md) 섹션을 참조하세요.

## 개발 도구
<a name="open-source-development-tools"></a>

AWS는 Lambda 함수를 빌드하고 최적화하는 데 도움이 되는 추가 오픈 소스 개발 도구를 제공합니다.

### AWS Lambda용 Powertools
<a name="open-source-powertools"></a>

AWS Lambda용 Powertools는 필수 유틸리티를 통해 서버리스 개발을 간소화하여 다중 레코드 처리 및 Kafka 소비자 라이브러리에 대한 중복 처리 및 배치 처리를 방지합니다. 이러한 기능을 사용하면 코드 복잡성과 운영 오버헤드를 최소화할 수 있습니다.

또한 다음 AWS Well-Architected 모범 사례를 따르면서 프로덕션 환경에서 바로 사용할 수 있는 Lambda 함수 생성을 가속화하도록 설계된 기본 제공 이벤트 스키마 검증, 구조화된 로깅 및 추적, 파라미터 스토어 통합을 활용할 수 있습니다.

GitHub 리포지토리:
+ [Python](https://github.com/aws-powertools/powertools-lambda-python)
+ [TypeScript](https://github.com/aws-powertools/powertools-lambda-typescript)
+ [Java](https://github.com/aws-powertools/powertools-lambda-java)
+ [.NET](https://github.com/aws-powertools/powertools-lambda-dotnet)

### Java 개발 도구
<a name="open-source-java-tools"></a>
+ [Java Profiler(실험용)](https://github.com/aws/aws-lambda-java-libs/tree/main/experimental/aws-lambda-java-profiler) - Java Lambda 함수를 프로파일링하기 위한 도구입니다.
+ [ Java 라이브러리](https://github.com/aws/aws-lambda-java-libs) - JUnit 테스트 유틸리티 및 프로파일링 도구와 같은 주요 프로젝트를 포함하여 Lambda 개발을 위한 포괄적인 Java 라이브러리 및 도구 모음이 포함된 리포지토리입니다.
+ [서버리스 Java 컨테이너](https://github.com/aws/serverless-java-container) - 변경 사항을 최소화하면서 Lambda에서 기존 Java 애플리케이션을 실행할 수 있는 라이브러리입니다.

### .NET 개발 도구
<a name="open-source-dotnet-tools"></a>

[AWS Lambda .NET ](https://github.com/aws/aws-lambda-dotnet)리포지토리는 .NET CLI용 AWS Lambda 도구 및 .NET Core 애플리케이션을 호스팅하기 위한 .NET Core 서버 등에 대한 주요 프로젝트를 포함하여 Lambda 개발을 위한 .NET 라이브러리 및 도구를 제공합니다.

## 샘플 프로젝트
<a name="open-source-sample-projects"></a>

[서버리스 랜드 리포지토리](https://serverlessland.com/repos)에서 샘플 Lambda 프로젝트 및 애플리케이션의 포괄적인 컬렉션을 살펴보세요. 이러한 샘플은 서버리스 애플리케이션을 시작하는 데 도움이 되는 다양한 Lambda 사용 사례, 통합 패턴 및 모범 사례를 보여 줍니다.