[파이썬] AWS Lambda와 CloudFormation을 통한 서버리스 인프라 관리

서버리스 아키텍처는 최근 몇 년 동안 많은 인기를 얻고 있습니다. 이는 서버리스 함수 기반 컴퓨팅 서비스인 AWS Lambda가 많은 사용자들에게 제공되기 때문입니다. Lambda를 사용하면 서버 프로비저닝, 운영 및 확장에 대한 걱정 없이 코드를 실행할 수 있습니다.

하지만 단순히 Lambda 함수를 작성하는 것만으로는 충분하지 않습니다. 함수를 실행하는데 필요한 다른 AWS 리소스를 프로비저닝하고 관리하는 것이 필요합니다. 이러한 문제를 해결하기 위해 AWS CloudFormation은 서버리스 인프라를 관리할 수 있는 좋은 도구입니다.

AWS CloudFormation 소개

AWS CloudFormation은 “인프라스트럭처를 코드로”라는 개념을 기반으로 작동하는 AWS의 통합 관리 서비스입니다. CloudFormation은 JSON 또는 YAML 포맷으로 작성된 템플릿을 사용하여 AWS 리소스를 정의하고 프로비저닝하는 역할을 합니다.

여기서는 CloudFormation을 사용하여 Lambda 함수와 관련 리소스를 정의하고 배포하는 방법을 살펴보겠습니다. Python을 사용하여 간단한 Lambda 함수를 작성하겠습니다.

AWS Lambda 함수 작성

AWS 콘솔에 로그인하고 Lambda 서비스로 이동합니다. 새로운 함수를 만들기 위해 “함수 만들기” 버튼을 클릭합니다. 새로운 함수를 생성하고 트리거를 설정한 후 아래의 코드를 Lambda 함수 코드 편집기에 붙여넣습니다.

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': 'Hello, Serverless World!'
    }

이 코드는 간단한 Lambda 핸들러 함수를 정의합니다. 이 함수는 HTTP 200 상태 코드와 “Hello, Serverless World!”라는 응답 본문을 반환합니다.

CloudFormation 템플릿 작성

CloudFormation에서 Lambda 함수와 관련된 리소스를 프로비저닝하기 위해 템플릿을 작성해야 합니다. JSON 또는 YAML 문법을 사용하여 템플릿을 작성할 수 있습니다. 여기서는 YAML을 사용하도록 하겠습니다.

다음은 Lambda 함수와 관련된 CloudFormation 템플릿의 예입니다.

Resources:
  MyLambdaFunction:
    Type: 'AWS::Lambda::Function'
    Properties:
      FunctionName: MyLambdaFunction
      Runtime: python3.8
      Handler: lambda_function.lambda_handler
      Code:
        ZipFile: |
          def lambda_handler(event, context):
              return {
                  'statusCode': 200,
                  'body': 'Hello, Serverless World!'
              }

위의 예제에서는 MyLambdaFunction이라는 이름의 Lambda 함수를 정의합니다. 이 함수는 python3.8 런타임에서 실행되며, “lambda_function.lambda_handler” 핸들러를 가지고 있습니다. 코드 부분에는 앞에서 작성한 Lambda 함수의 코드가 포함되어 있습니다.

CloudFormation 스택 생성

템플릿을 작성했으면 CloudFormation 스택을 생성하여 Lambda 함수와 관련된 리소스를 프로비저닝할 수 있습니다. AWS 콘솔에서 CloudFormation 서비스로 이동하고 “스택 생성” 버튼을 클릭합니다. 템플릿을 업로드하고 필요한 매개변수를 입력한 후 스택을 생성합니다.

스택이 성공적으로 생성되면 Lambda 함수와 관련된 리소스가 프로비저닝됩니다. 이제 Lambda 함수를 테스트하고 사용할 수 있습니다.

서버리스 인프라 관리를 위해 AWS Lambda와 CloudFormation을 사용하는 것은 매우 효율적입니다. 이를 통해 코드 실행을 위한 인프라 프로비저닝과 관리를 자동화할 수 있으며, 더 나은 확장성과 유지보수 가능성을 제공합니다.

AWS Lambda와 CloudFormation을 통해 자동화된 서버리스 인프라 관리를 시작해보세요!