[typescript] 타입스크립트와 AWS CloudFormation을 이용한 자동 배포 설정하기

본 포스트에서는 타입스크립트로 작성된 AWS CloudFormation 템플릿을 사용하여 서버리스 애플리케이션을 자동으로 배포하는 방법에 대해 알아보겠습니다.

1. 타입스크립트로 AWS CloudFormation 템플릿 작성하기

먼저, 타입스크립트를 사용하여 AWS CloudFormation 템플릿을 작성합니다. 타입스크립트를 이용하면 코드의 안정성과 가독성을 높일 수 있으며, 템플릿을 좀 더 쉽게 관리할 수 있습니다.

import * as cdk from 'aws-cdk-lib';
import * as lambda from 'aws-cdk-lib/aws-lambda';

export class MyServerlessAppStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const lambdaFunction = new lambda.Function(this, 'MyLambda', {
      runtime: lambda.Runtime.NODEJS_14_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset('path/to/lambda/code'),
    });
  }
}

위의 코드는 타입스크립트로 작성된 AWS CDK 스택에서 람다 함수를 정의하는 부분입니다.

2. AWS CDK를 사용하여 배포 자동화 설정하기

다음으로, AWS CDK를 사용하여 타입스크립트로 작성된 템플릿을 배포 자동화 설정합니다. AWS CDK를 이용하면 클라우드에 리소스를 프로그래밍 방식으로 배포할 수 있으며, 변경사항을 추적하고 업데이트할 수 있습니다.

npm install -g aws-cdk
cdk init app --language typescript

위의 명령어를 통해 AWS CDK 프로젝트를 초기화하고, 다음으로 cdk deploy 명령어를 사용하여 템플릿을 배포할 수 있습니다.

3. 자동 배포 구성 및 실행

마지막으로, AWS CodePipeline과 AWS CodeBuild를 사용하여 배포 자동화를 구성합니다. AWS CodePipeline을 이용하면 소스 코드 변경이 감지될 때 자동으로 빌드 및 배포 프로세스가 실행되며, AWS CodeBuild를 이용하여 빌드 환경을 설정하고 빌드 스크립트를 실행할 수 있습니다.

resources:
  - pipelines:
      - name: my-serverless-app-pipeline
        stages:
          - source:
              type: S3
              bucket: my-source-bucket
              path: source-code.zip
          - build:
              type: CodeBuild
              environment:
                nodejs: 14
              build_spec: buildspec.yml
          - deploy:
              type: CloudFormation
              stack: MyServerlessAppStack
              input_artifacts: [source_artifact]

위의 예시는 AWS CodePipeline에 정의된 파이프라인이며, 소스 코드가 변경될 때마다 빌드 및 배포가 자동으로 실행됩니다.

결론

본 포스트에서는 타입스크립트로 AWS CloudFormation 템플릿을 작성하고, AWS CDK를 사용하여 배포 자동화를 설정하는 방법에 대해 살펴보았습니다. 이를 통해 서버리스 애플리케이션의 코드와 인프라 구성을 프로그래밍적으로 관리하고, 자동으로 배포하는 과정을 스스로 구축할 수 있습니다.