[파이썬] AWS Lambda와 CloudFormation을 통한 애플리케이션 환경 구성

AWS Lambda와 CloudFormation을 사용하면 효율적이고 확장 가능한 애플리케이션 환경을 쉽게 구성할 수 있습니다. 이 블로그 포스트에서는 Python과 함께 AWS Lambda 함수와 CloudFormation 템플릿을 사용하여 애플리케이션 환경을 구성하는 방법에 대해 알아보겠습니다.

AWS Lambda란?

AWS Lambda는 서버리스 컴퓨팅 서비스로, 코드 실행을 위한 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있습니다. Lambda 함수는 이벤트에 응답하여 실행되며, 특정 이벤트가 발생할 때만 실행되기 때문에 비용을 절감하고 자원을 효율적으로 사용할 수 있습니다.

CloudFormation이란?

AWS CloudFormation은 인프라스트럭처를 쉽게 프로비저닝하고 관리하기 위한 서비스입니다. CloudFormation 템플릿을 사용하여 애플리케이션을 구성할 수 있으며, 이를 통해 리소스의 생성, 관리, 업데이트, 삭제를 자동화할 수 있습니다.

애플리케이션 환경 구성하기

  1. AWS Management Console에 로그인하고, Lambda 콘솔로 이동합니다.
  2. “함수 만들기”를 클릭하고, 함수 이름을 입력하고 런타임으로 “Python 3.8”을 선택합니다.
  3. 코드 입력란에 다음과 같은 Python 코드를 작성합니다.
import json

def lambda_handler(event, context):
    # Lambda 함수의 메인 핸들러입니다.
    # 이벤트와 컨텍스트를 받아 처리하는 코드를 작성합니다.
    
    return {
        'statusCode': 200,
        'body': json.dumps('Hello, AWS Lambda!')
    }
  1. 함수 아래에 있는 “페이지 아래로 스크롤하여 함수 생성”을 클릭합니다.
  2. 이제 CloudFormation 템플릿을 작성하여 Lambda 함수를 배포할 수 있습니다. 템플릿 파일을 생성하고 다음과 같은 내용을 추가합니다.
AWSTemplateFormatVersion: '2010-09-09'
Description: 'AWS Lambda function deployment'

Resources:
  MyLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: MyLambdaFunction
      Role: !Ref MyLambdaFunctionRole
      Code:
        ZipFile: |
          import json

          def lambda_handler(event, context):
              return {
                  'statusCode': 200,
                  'body': json.dumps('Hello, AWS Lambda!')
              }
      Runtime: python3.8

  MyLambdaFunctionRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: MyLambdaFunctionRole
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      Path: /
      Policies:
        - PolicyName: MyLambdaFunctionPolicy
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - logs:CreateLogGroup
                  - logs:CreateLogStream
                  - logs:PutLogEvents
                Resource: arn:aws:logs:*:*:*
  1. CloudFormation 콘솔로 이동하여 “스택 생성”을 클릭합니다.
  2. “새 리소스로 리소스 생성”을 선택하고, 앞에서 작성한 템플릿 파일을 업로드합니다.
  3. 필요에 따라 스택에 대한 이름을 설정하고, 다음을 클릭하여 스택을 생성합니다.
  4. 스택이 생성된 후에는 Lambda 함수를 확인하고, 해당 함수를 테스트해볼 수 있습니다.

결론

AWS Lambda와 CloudFormation은 애플리케이션 환경을 구성하기 위한 강력한 도구입니다. Python과 함께 사용하면 효율적이고 확장 가능한 애플리케이션을 쉽게 구성할 수 있습니다. AWS Lambda와 CloudFormation을 통해 애플리케이션을 배포하고 관리하는 방법에 대해 자세히 알아볼 것을 권장합니다.