[파이썬] AWS Lambda와 CloudFormation을 통한 애플리케이션 배포 자동화

AWS Lambda와 CloudFormation을 함께 사용하면 애플리케이션 배포를 자동화할 수 있습니다. 이를 통해 개발자들은 배포 과정을 간편하게 관리하고, 인프라 구성을 코드로 정의하여 일관성 있게 유지할 수 있습니다. 이번 블로그 포스트에서는 AWS Lambda와 CloudFormation을 이용한 애플리케이션 배포 자동화에 대해 알아보겠습니다.

AWS Lambda란?

AWS Lambda는 서버리스 컴퓨팅 서비스로, 개발자가 코드를 실행할 때에만 리소스를 사용하도록 해 줍니다. Lambda 함수는 이벤트 기반으로 동작하며, 각 이벤트에 대해 사전 정의된 작업이 실행됩니다. 이를 통해 개발자는 인프라 관리에 신경쓰지 않고 코드 작성에 집중할 수 있습니다.

CloudFormation이란?

AWS CloudFormation은 인프라스트럭처를 코드화하여 관리하기 위한 AWS의 서비스입니다. CloudFormation은 JSON 또는 YAML 형식으로 작성된 템플릿을 사용해 리소스를 정의하고 배포할 수 있습니다. 이를 통해 인프라 구성을 코드로 작성하여 손쉽게 관리할 수 있습니다.

애플리케이션 배포 자동화하기

이제 AWS Lambda와 CloudFormation을 이용하여 애플리케이션 배포를 자동화해 봅시다. 아래는 Python을 기반으로 한 예시 코드입니다.

  1. Lambda 함수 생성

    import boto3
       
    def lambda_handler(event, context):
        # 배포할 애플리케이션 코드 작성
       
        # CloudFormation 스택 생성
        cloudformation_client = boto3.client('cloudformation')
        response = cloudformation_client.create_stack(
            StackName='my-stack',
            TemplateURL='https://s3.amazonaws.com/my-bucket/my-template.yaml',
            Parameters=[
                {
                    'ParameterKey': 'Param1',
                    'ParameterValue': 'Value1'
                },
                {
                    'ParameterKey': 'Param2',
                    'ParameterValue': 'Value2'
                },
            ]
        )
       
        return {
            'statusCode': 200,
            'body': 'Application deployment initiated'
        }
    
  2. CloudFormation 템플릿 작성

    CloudFormation 템플릿은 AWS 리소스를 정의하고 배포하는 데 사용됩니다. 아래는 간단한 템플릿 예시입니다.

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
      MyBucket:
        Type: AWS::S3::Bucket
        Properties:
          BucketName: my-bucket
      MyTopic:
        Type: AWS::SNS::Topic
        Properties:
          TopicName: my-topic
    
  3. 배포 과정 실행

    Lambda 함수를 실행하면, 코드에서 CloudFormation 스택을 생성하여 애플리케이션 배포를 시작합니다. 이 때, CloudFormation 템플릿 파일의 URL과 필요한 파라미터들을 지정하여 전달합니다.

    배포 결과 및 상태는 Lambda 함수의 응답으로 반환됩니다.

    $ aws lambda invoke --function-name my-lambda-function --payload '' response.json
    

이제 위 예시 코드를 참고하여 AWS Lambda와 CloudFormation을 통한 애플리케이션 배포 자동화를 시작해보세요. 더 다양한 AWS 서비스와의 연동을 통해 자동화를 더욱 확장할 수도 있습니다.

Happy coding!