esbuild를 사용하여 Node.js Lambda 함수 빌드 - AWS Serverless Application Model

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

esbuild를 사용하여 Node.js Lambda 함수 빌드

Node.js AWS Lambda 함수를 빌드하고 패키징하려면 JavaScript esbuild AWS SAMCLI 번들러와 함께 를 사용할 수 있습니다. esbuild 번들러는 사용자가 작성하는 Lambda 함수를 지원합니다. TypeScript

esbuild를 사용하여 Node.js Lambda 함수를 빌드하려면 AWS:Serverless::Function 리소스에 Metadata 객체를 추가하고 BuildMethodesbuild를 지정합니다. sam build명령을 실행하면 esbuild를 AWS SAM 사용하여 Lambda 함수 코드를 번들로 묶습니다.

메타데이터 속성

Metadata 객체는 다음 속성을 지원합니다.

BuildMethod

애플리케이션의 URL 접두사를 지정합니다. 지원되는 유일한 값은 esbuild입니다.

BuildProperties

Lambda 함수 코드의 빌드 속성을 지정합니다.

BuildProperties 객체는 다음 속성을 지원합니다. 다른 모든 속성은 선택 사항입니다. 기본적으로 Lambda 함수 핸들러를 진입점으로 AWS SAM 사용합니다.

EntryPoints

애플리케이션의 진입점을 지정합니다.

외부

빌드에서 제외할 패키지 목록을 지정합니다. 자세한 내용은 esbuild 웹사이트외부 섹션을 참조하세요.

형식

애플리케이션에서 생성된 JavaScript 파일의 출력 형식을 지정합니다. 자세한 내용은 esbuild 웹 사이트형식을 참조하세요.

로더

지정된 파일 유형의 데이터를 로드하기 위한 구성 목록을 지정합니다.

MainFields

패키지를 확인할 때 가져오려고 시도할 package.json 필드를 지정합니다. 기본 값은 main,module입니다.

Minify

번들링된 출력 코드를 축소할지 여부를 지정합니다. 기본 값은 true입니다.

OutExtension

esbuild가 생성하는 파일의 파일 확장자를 사용자 지정합니다. 자세한 내용은 esbuild 웹사이트확장을 참조하세요.

Sourcemap

번들러가 소스 맵 파일을 생성할지 여부를 지정합니다. 기본 값은 false입니다.

true로 설정되면 NODE_OPTIONS: --enable-source-maps는 Lambda 함수의 환경 변수에 추가되고, 소스 맵이 생성되어 함수에 포함됩니다.

또는 NODE_OPTIONS: --enable-source-maps가 함수의 환경 변수에 포함된 경우 Sourcemap가 자동으로 true로 설정됩니다.

충돌하는 경우 Sourcemap: falseNODE_OPTIONS: --enable-source-maps보다 우선합니다.

참고

기본적으로 Lambda는 저장된 모든 환경 변수를 AWS Key Management Service (AWS KMS)로 암호화합니다. 소스 맵을 사용할 때 배포가 성공하려면 함수의 실행 역할에 kms:Encrypt 작업을 수행할 수 있는 권한이 있어야 합니다.

SourcesContent

소스 맵 파일에 소스 코드를 포함할지 여부를 지정합니다. Sourcemap'true'로 설정되면 이 속성을 구성합니다.

  • 모든 소스 코드를 포함하도록 SourcesContent: 'true'를 지정합니다.

  • 모든 소스 코드를 제외하도록 SourcesContent: 'false'를 지정합니다. 이렇게 하면 소스 맵 파일 크기가 작아지므로 시작 시간을 줄여 프로덕션에 유용합니다. 하지만 소스 코드는 디버거에서 사용할 수 없습니다.

기본 값은 SourcesContent: true입니다.

자세한 내용은 esbuild 웹 사이트소스 콘텐츠를 참조하세요.

대상

대상 ECMAScript 버전을 지정합니다. 기본 값은 es2020입니다.

TypeScript Lambda 함수 예제

다음 예제 AWS SAM 템플릿 스니펫은 esbuild를 사용하여 코드의 Node.js Lambda 함수를 생성합니다. TypeScript hello-world/app.ts

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.handler Runtime: nodejs14.x Architectures: - x86_64 Events: HelloWorld: Type: Api Properties: Path: /hello Method: get Environment: Variables: NODE_OPTIONS: --enable-source-maps Metadata: BuildMethod: esbuild BuildProperties: Format: esm Minify: false OutExtension: - .js=.mjs Target: "es2020" Sourcemap: true EntryPoints: - app.ts External: - "<package-to-exclude>"