esbuild로 서버리스 스택을 위한 CDK 배포 속도 향상
7997 단어 typescriptcdkserverlessaws
1. 이전 경험
개발 경력을 쌓는 동안 AWS에 스택을 배포하는 다양한 솔루션을 만났습니다. 운이 좋게도 CloudFormation , SAM , CDK 및 Serverless Framework 을 사용할 수 있었습니다.
저는 대부분 서버리스 기술을 사용합니다. 나는 TypeScript 및 Node.js 을 사용하지만 Lambda 함수는 JavaScript 코드만 허용합니다.
코드 변환, 번들링 및 배포는 몇 분이 걸릴 수 있으며 때로는 영원처럼 보입니다. 스택에 약간의 변경을 가한 다음 클라우드에서 업데이트된 스택을 몇 분 동안 기다려야 할 때 답답함을 느낍니다.
esbuild
는 CDK와 잘 작동하는 놀랍도록 빠른 JavaScript 번들러입니다.2. 샘플 스택
이를 시연하기 위해
test-project
라는 폴더에 샘플 스택을 생성합니다.npx cdk init --language=typescript
이 명령은
TestProject
라는 CDK 버전 2 스택의 폴더 구조를 생성합니다. 패키지 작성자가 때때로 최신 버전보다 뒤쳐지기 때문에 모든 패키지는 준비가 된 후에 업데이트합니다.lib
폴더에 Lambda 함수를 생성해 보겠습니다.import { Duration, Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { NodejsFunction, LogLevel, NodejsFunctionProps } from 'aws-cdk-lib/aws-lambda-nodejs';
import { Runtime } from 'aws-cdk-lib/aws-lambda';
import { RetentionDays } from 'aws-cdk-lib/aws-logs';
const lambdaFnProps: Partial<NodejsFunctionProps> = {
bundling: {
target: 'es2020',
keepNames: true,
logLevel: LogLevel.INFO,
sourceMap: true,
minify: true,
},
runtime: Runtime.NODEJS_16_X,
timeout: Duration.seconds(6),
memorySize: 256,
logRetention: RetentionDays.ONE_DAY,
environment: {
NODE_OPTIONS: '--enable-source-maps',
},
};
export class TestProjectStack extends Stack {
constructor(scope: Construct, id: string, props: StackProps) {
super(scope, id, props);
new NodejsFunction(this, 'test', {
...lambdaFnProps,
functionName: 'TestFn',
});
}
}
스택을 배포하려면
npm run cdk deploy
를 실행할 수 있습니다. 그러나 이 시점에서 Docker을 실행해야 합니다. 그렇지 않으면 명령이 오류를 반환합니다.3. 에스빌드 사용하기
스택 모듈에 일부
bundling
옵션을 설정했지만 CDK는 여전히 번들링에 Docker image을 사용하고 있습니다.Docker를 사용하지 않고 로컬로 설치
esbuild
하면 배포 시간을 크게 단축할 수 있습니다.npm install -D esbuild
그리고 이것이 전부입니다.
npm run cdk deploy
명령은 이제 Docker 없이 작동하며 배포가 빠릅니다. CDK는 esbuild
를 사용하여 TypeScript를 JavaScript로 자동 트랜스파일합니다. CDK와 esbuild가 우리를 위해 모든 것을 해결할 것이기 때문에 webpack 또는 다른 번들러를 사용할 필요가 없습니다.4. 요약
esbuild
는 CDK v2가 배포 시 TypeScript 코드를 변환하는 데 사용하는 뛰어난 모듈 번들러입니다. esbuild
의 빠른 번들링과 CDK의 향상된 배포 시간을 활용하려면 패키지를 로컬로 설치해야 합니다.5. 추가 자료
esbuild documentation -
esbuild
에 대한 모든 것
Reference
이 문제에 관하여(esbuild로 서버리스 스택을 위한 CDK 배포 속도 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/improving-cdk-deployment-speed-for-serverless-stacks-with-esbuild-ald텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)