[typescript] 타입스크립트로 AWS Lambda 함수 작성하기

서버리스 아키텍처의 핵심 요소 중 하나인 AWS Lambda 함수는 간편한 배포 및 관리가 가능하며, 이러한 함수를 타입스크립트로 작성하는 것은 매우 유용합니다. 이 블로그에서는 타입스크립트를 사용하여 AWS Lambda 함수를 작성하고 배포하는 방법에 대해 알아보겠습니다.

사전 준비

먼저, AWS 계정을 가지고 있어야 합니다. 계정이 없다면 AWS 웹사이트에서 새로운 계정을 생성할 수 있습니다. 또한, AWS CLI를 설치하여 AWS Lambda 함수를 배포하는 데 필요한 도구를 사용할 수 있어야 합니다.

타입스크립트 프로젝트 설정

새로운 디렉터리를 만들고 그 안에서 npm을 사용하여 새로운 프로젝트를 초기화합니다.

mkdir my-lambda-function
cd my-lambda-function
npm init -y

다음으로, typescriptaws-sdk를 설치합니다.

npm install typescript @types/node aws-sdk

TypeScript 설정 파일 tsconfig.json를 생성하고 다음과 같이 설정합니다.

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "outDir": "dist",
    "strict": true
  }
}

AWS Lambda 함수 작성

src 디렉터리에 index.ts 파일을 만들고 아래와 같이 간단한 AWS Lambda 함수를 작성합니다.

import { APIGatewayProxyHandler } from 'aws-lambda';

export const handler: APIGatewayProxyHandler = async (event, context) => {
  try {
    const response = {
      statusCode: 200,
      body: JSON.stringify({
        message: 'Hello from AWS Lambda!',
      }),
    };
    return response;
  } catch (error) {
    return {
      statusCode: 500,
      body: JSON.stringify({
        message: 'Internal server error',
      }),
    };
  }
};

AWS Lambda 함수 배포

AWS Lambda 함수를 배포하려면 먼저 함수를 명세하는 sam.yml 또는 serverless.yml 파일을 작성해야 합니다. 다음으로 AWS CLI를 사용하여 함수를 배포할 수 있습니다.

aws lambda create-function --function-name my-lambda-function --runtime nodejs14.x --handler dist/index.handler --role arn:aws:iam::123456789012:role/lambda-role --zip-file fileb://function.zip

위 명령어에서 my-lambda-function, arn:aws:iam::123456789012:role/lambda-rolefunction.zip을 실제 값으로 변경해야 합니다.

결론

이제 타입스크립트로 AWS Lambda 함수를 작성하고 배포하는 방법에 대해 알아보았습니다. 이를 통해 더 간편하고 안정적인 서버리스 애플리케이션을 개발할 수 있을 것입니다.

참고문헌: