AWS 인프라 배포 자동화 안내서

AWS 인프라 배포 자동화 안내서

클라우드의 인프라 관리와 관련하여 AWS는 리소스 생성 및 관리를 자동화하는 데 도움이되는 몇 가지 강력한 도구를 제공합니다.

배포를 처리하는 가장 효과적인 방법 중 하나는 AWS CloudFormation을 통한 것입니다. 이를 통해 인프라를 선언적 인 방식으로 정의하여 탄성 Beanstalk, Serverless Applications, EC2 인스턴스, 보안 그룹,로드 밸런서 등을 포함한 AWS 서비스 제공을 쉽게 자동화 할 수 있습니다.

AWS CloudFormation

이 안내서에서는 AWS CloudFormation을 사용하여 인프라를 프로그래밍 방식으로 배포하는 방법을 살펴 보겠습니다. 또한 AWS 관리 콘솔을 통해 수동으로 리소스를 배포하는 방법과 Elastic Beanstalk, Serverless Functions, EC2, IAM 및 기타 AWS 리소스와 같은 서비스를 자동화 된 워크 플로에 통합하는 방법을 다룹니다.

인프라에 AWS CloudFormation을 코드로 사용합니다

AWS CloudFormation을 사용하면 코드를 사용하여 인프라를 정의 할 수 있습니다. CloudFormation은 Elastic Beanstalk, EC2 인스턴스, VPC, IAM 역할, Lambda 기능 또는 서버리스 응용 프로그램을 설정하여 인프라를 자동화하고 버전 할 수있는 통합 프레임 워크를 제공합니다.

CloudFormation 템플릿은 YAML 또는 JSON 형식으로 작성되며 제공하는 데 필요한 리소스를 정의합니다. CloudFormation을 사용하면 간단한 응용 프로그램에서 복잡한 멀티 서비스 환경에 이르기까지 모든 것을 자동화 할 수 있습니다.

CloudFormation의 주요 기능

  • 선언적 구성. 원하는 인프라의 원하는 상태를 설명하고 CloudFormation은 현재 상태가 일치하도록합니다.
  • 자원 관리. EC2 인스턴스, RDS 데이터베이스, VPC, LAMBDA 기능, IAM 역할 등과 같은 AWS 리소스를 자동으로 제공하고 관리합니다.
  • 선언적 스택 업데이트. 인프라를 수정 해야하는 경우 CloudFormation 템플릿을 업데이트하면 리소스를 새로운 원하는 상태로 조정합니다.

다양한 AWS 배포에 CloudFormation을 사용하는 단계

CloudFormation을 통한 탄성 콩나무 배포

1. CloudFormation 템플릿을 작성하십시오

Yaml 또는 JSON CloudFormation 템플릿을 만들어 탄성 빈 스토킹 응용 프로그램 및 환경을 정의하십시오. 이 템플릿에는 EC2 인스턴스, 보안 그룹, 스케일링 정책 및 탄성 Beanstalk 응용 프로그램 자체와 같은 리소스가 포함될 수 있습니다.

CloudFormation 템플릿의 예 (Elastic Beanstalk) :

yaml
Resources:
  MyElasticBeanstalkApplication:
    Type: 'AWS::ElasticBeanstalk::Application'
    Properties:
      ApplicationName: "my-application"
      Description: "Elastic Beanstalk Application for my React and Spring Boot app"

  MyElasticBeanstalkEnvironment:
    Type: 'AWS::ElasticBeanstalk::Environment'
    Properties:
      EnvironmentName: "my-app-env"
      ApplicationName: !Ref MyElasticBeanstalkApplication
      SolutionStackName: "64bit Amazon Linux 2 v3.4.9 running Docker"
      OptionSettings:
        - Namespace: "aws:autoscaling:asg"
          OptionName: "MaxSize"
          Value: "3"
        - Namespace: "aws:autoscaling:asg"
          OptionName: "MinSize"
          Value: "2"
        - Namespace: "aws:ec2:vpc"
          OptionName: "VPCId"
          Value: "vpc-xxxxxxx"
        - Namespace: "aws:ec2:vpc"
          OptionName: "Subnets"
          Value: "subnet-xxxxxxx,subnet-yyyyyyy"

2. CloudFormation 스택을 배포하십시오

사용하십시오 AWS CLI 또는 AWS 관리 콘솔 CloudFormation 스택을 배포합니다. 배포되면 CloudFormation은 템플릿에 정의 된 모든 리소스를 자동으로 생성합니다.

AWS CLI를 통해 배포 :

bash
aws cloudformation create-stack --stack-name MyElasticBeanstalkStack --template-body file://my-template.yml

AWS Lambda, API Gateway 및 DynamoDB로 서버리스 배포

CloudFormation은 서버리스 애플리케이션을 배포하는 데 유용합니다. AWS Lambda, API Gateway, DynamoDB 및 S3와 같은 서비스를 통해 서버리스 워크로드를 쉽게 관리 할 수 ​​있습니다.

1. 서버리스 클라우드 포맷 템플릿을 만듭니다

이 템플릿에는 Lambda 함수, 기능에 액세스하기위한 API 게이트웨이 및 DynamODB 테이블이 포함됩니다.

CloudFormation 템플릿 (Serverless)의 예 :

yaml
Resources:
  MyLambdaFunction:
    Type: 'AWS::Lambda::Function'
    Properties:
      FunctionName: "MyServerlessFunction"
      Handler: "index.handler"
      Role: arn:aws:iam::123456789012:role/lambda-execution-role
      Code:
        S3Bucket: "my-serverless-code-bucket"
        S3Key: "function-code.zip"
      Runtime: nodejs14.x

  MyAPIGateway:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      Name: "MyAPI"
      Description: "API Gateway for My Serverless Application"
    
  MyDynamoDBTable:
    Type: 'AWS::DynamoDB::Table'
    Properties:
      TableName: "MyTable"
      AttributeDefinitions:
        - AttributeName: "id"
          AttributeType: "S"
      KeySchema:
        - AttributeName: "id"
          KeyType: "HASH"
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 5

2. 서버리스 스택을 배포하십시오

AWS CLI 또는 AWS 관리 콘솔을 사용하여 서버리스 애플리케이션을 배포하십시오.

bash
aws cloudformation create-stack --stack-name MyServerlessStack --template-body file://serverless-template.yml

VPC 및 EC2 배포

CloudFormation은보다 전통적인 워크로드에 대한 가상 프라이빗 클라우드 (VPC), 서브넷, 보안 그룹 및 EC2 인스턴스 생성을 자동화 할 수 있습니다.

1. VPC 및 EC2 용 Cloudformation 템플릿

이 템플릿은 VPC 내에서 간단한 EC2 인스턴스를 정의하고 보안 그룹은 HTTP 트래픽을 허용합니다.

CloudFormation 템플릿의 예 (VPC 및 EC2) :

Resources:
  MyVPC:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: "10.0.0.0/16"
      EnableDnsSupport: "true"
      EnableDnsHostnames: "true"

  MySecurityGroup:
    Type: 'AWS::EC2::SecurityGroup'
    Properties:
      GroupDescription: "Allow HTTP and SSH traffic"
      SecurityGroupIngress:
        - IpProtocol: "tcp"
          FromPort: "80"
          ToPort: "80"
          CidrIp: "0.0.0.0/0"
        - IpProtocol: "tcp"
          FromPort: "22"
          ToPort: "22"
          CidrIp: "0.0.0.0/0"

  MyEC2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      InstanceType: "t2.micro"
      ImageId: "ami-xxxxxxxx"
      SecurityGroupIds: 
        - !Ref MySecurityGroup
      SubnetId: !Ref MyVPC

2. 스택을 배치하십시오

aws cloudformation create-stack --stack-name MyEC2Stack --template-body file://vpc-ec2-template.yml

CloudFormation의 고급 기능

AWS CloudFormation은 단순한 리소스 프로비저닝 이상을 제공합니다. 다음은 CloudFormation을 인프라 자동화를위한 강력한 도구로 만드는 고급 기능 중 일부입니다.

  • 스택 세트. 여러 AWS 계정 및 지역에서 스택을 생성하고 관리하여 조직 전체에 인프라를 일관되게 배포 할 수 있습니다.
  • 변경 세트. CloudFormation 스택에 변경 사항을 적용하기 전에 원하는 결과를 보장하기 위해 변경 세트로 변경 사항을 미리 봅니다.
  • 출력. 다른 스택 또는 응용 프로그램에 사용할 수있는 CloudFormation의 출력 값. 예를 들어, API 게이트웨이의 URL 또는 EC2 인스턴스의 IP 주소를 출력하십시오.
  • 매개 변수. 매개 변수를 전달하여 템플릿 자체를 수정하지 않고 스택을 사용자 정의하여 다른 환경에서 재사용 할 수 있도록합니다.
  • 매핑. AWS 영역 별 값, 인스턴스 유형 또는 기타 환경 별 매개 변수와 같은 구성 값을 매핑 할 키 값 쌍을 만듭니다.

Elastic Beanstalk 이외의 AWS 서비스와 함께 Cloudformation 사용

CloudFormation은 탄성 Beanstalk 배포에만 국한된 것이 아닙니다. 이는 다음을 포함하여 다양한 AWS 서비스와 함께 사용할 수있는 유연한 도구입니다.

  • AWS Lambda. API 게이트웨이, S3 또는 DynamODB 이벤트와 같은 트리거와 함께 서버리스 기능의 배포를 자동화하십시오.
  • 아마존 S3. CloudFormation을 사용하여 S3 버킷을 생성하고 구성을 관리하십시오.
  • aws iam. IAM 역할 및 정책 작성을 자동화하여 자원에 대한 액세스를 제어하십시오.
  • 아마존 RDS. VPC 설정, 서브넷 및 보안 그룹과 같은 모든 관련 구성으로 RDS 데이터베이스 (MySQL, PostgreSQL 등)를 정의하십시오.
  • 아마존 SQS, SNS. CloudFormation을 사용하여 응용 프로그램 아키텍처의 대기열 및 주제를 관리합니다.
  • 아마존 EC 및 EK. EC 및 EKS와 같은 서비스로 컨테이너화 된 응용 프로그램의 생성 및 배포를 자동화하십시오.

AWS 관리 콘솔에서 인프라를 수동으로 배포합니다

CloudFormation은 프로세스를 자동화하지만 때로는 수동 개입이 필요합니다. 그만큼 AWS 관리 콘솔 리소스를 수동으로 배포 할 수 있습니다.

1. 탄성 콩나무 응용 프로그램

  • 탄성 Beanstalk 콘솔로 이동하십시오.
  • 응용 프로그램 작성을 클릭하고 단계를 따라 응용 프로그램 이름과 플랫폼 (예 : Docker, Node.js)을 정의한 다음 환경, 스케일링 및 보안 옵션을 수동으로 구성하십시오.

2. 서버리스 애플리케이션 (Lambda + API 게이트웨이)

  • Lambda 콘솔로 이동하여 기능을 작성하고 배포하십시오.
  • API 게이트웨이 콘솔을 사용하여 Lambda 기능에 대한 API를 만듭니다.

3. EC2 인스턴스

  • EC2 콘솔에서 EC2 인스턴스를 수동으로 시작하여 선택한 인스턴스 유형, 보안 그룹 및 키 쌍으로 구성하십시오.

결론

AWS CloudFormation은 탄성 Beanstalk 응용 프로그램, 서버리스 아키텍처 및 EC2 기반 애플리케이션의 인프라를 관리하는 일관되고 반복 가능한 방법을 제공합니다. 스택 세트, 변경 세트 및 매개 변수와 같은 고급 기능을 사용하면 CloudFormation은 복잡한 환경의 요구를 충족시키기 위해 확장 할 수 있습니다.

크거나 역동적 인 AWS 환경을 관리하는 사람이라면 CloudFormation은 모든 AWS 배포에서 일관성, 보안 및 자동화를 보장하기위한 필수 도구입니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다