[파이썬] AWS Lambda와 CloudFormation을 통한 서버리스 애플리케이션 배포

AWS Lambda와 CloudFormation은 서버리스 아키텍처를 구현하고 애플리케이션을 배포하는데 매우 유용한 도구입니다. 이 블로그 포스트에서는 AWS Lambda와 CloudFormation을 사용하여 Python으로 서버리스 애플리케이션을 배포하는 방법에 대해 알아보겠습니다.

AWS Lambda란?

AWS Lambda는 이벤트 기반의 서버리스 컴퓨팅 서비스입니다. 서버나 인프라를 관리할 필요없이 코드를 실행하고 스케일링할 수 있습니다. Lambda 함수는 특정 이벤트가 발생할 때 실행되며, 예를 들어 Amazon S3 파일 업로드, Amazon DynamoDB 데이터 변경 등 다양한 이벤트에 반응할 수 있습니다.

Lambda 함수는 여러 가지 프로그래밍 언어로 작성할 수 있지만, 이 예제에서는 Python을 사용하겠습니다.

CloudFormation이란?

AWS CloudFormation은 AWS 리소스를 프로비저닝하고 관리하는 도구입니다. CloudFormation 템플릿을 사용하여 인프라 구성을 정의하고, 이를 기반으로 AWS 리소스를 생성, 업데이트, 삭제할 수 있습니다. CloudFormation을 사용하면 코드로 인프라를 관리할 수 있으며, 애플리케이션 배포 및 수정이 간편해지는 장점이 있습니다.

서버리스 애플리케이션 배포하기

서버리스 애플리케이션을 배포하기 위해서는 다음 단계를 따라야 합니다.

1. Lambda 함수 작성하기

첫 번째 단계로 Lambda 함수를 작성해야 합니다. 이 예제에서는 Python으로 Lambda 함수를 작성합니다. 따라서 함수의 코드는 .py 확장자를 가진 파일에 작성해야 합니다.

import json

def lambda_handler(event, context):
    # Lambda 함수의 핵심 로직 작성
    return {
        'statusCode': 200,
        'body': json.dumps('Hello, Serverless!')
    }

이 코드는 간단히 ‘Hello, Serverless!’를 반환하는 Lambda 함수입니다.

2. CloudFormation 템플릿 작성하기

다음으로 CloudFormation 템플릿을 작성해야 합니다. 이 템플릿은 Lambda 함수와 관련 리소스를 정의합니다.

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyLambdaFunction:
    Type: 'AWS::Lambda::Function'
    Properties:
      Code:
        ZipFile: |
          import json
      
          def lambda_handler(event, context):
              # Lambda 함수의 핵심 로직 작성
              return {
                  'statusCode': 200,
                  'body': json.dumps('Hello, Serverless!')
              }
      Handler: index.lambda_handler
      Runtime: python3.8

이 코드는 MyLambdaFunction이라는 Lambda 함수를 정의하는 CloudFormation 템플릿입니다. 코드와 핸들러 정보, 런타임 등을 포함합니다.

3. CloudFormation 스택 생성하기

이제 작성한 CloudFormation 템플릿을 사용하여 CloudFormation 스택을 생성해야 합니다. 스택은 템플릿에 정의된 리소스를 생성하고 구성합니다. 이를 통해 Lambda 함수와 관련 서비스가 배포됩니다.

aws cloudformation create-stack --stack-name my-serverless-app --template-body file://template.yaml

위 명령어를 실행하여 my-serverless-app이라는 이름의 CloudFormation 스택을 생성합니다. template.yaml 파일에 작성한 템플릿을 사용합니다.

4. 배포 결과 확인하기

스택 생성이 완료되면 Outputs 섹션에 정의된 리소스 정보를 확인할 수 있습니다. 이를 통해 배포된 Lambda 함수의 ARN, API Gateway 엔드포인트 등의 정보를 확인할 수 있습니다.

마무리

이 블로그 포스트에서는 AWS Lambda와 CloudFormation을 사용하여 Python으로 서버리스 애플리케이션을 배포하는 방법에 대해 살펴보았습니다. AWS Lambda를 사용하여 서버리스 컴퓨팅을 활용하고, CloudFormation을 사용하여 애플리케이션 배포를 자동화할 수 있는 장점을 알게되었습니다. Python을 이용하여 서버리스 애플리케이션을 작성하고 배포해보세요!