0. AWS Cloudformation으로 환경 구축 ~디렉토리 설계/스택 단위~

3425 단어 CloudFormationAWS

대상 독자


  • 개인으로 서비스를 만들고 싶지만 시간이 없다. 그러나 제대로 된 네트워크를 만들고 싶은 사람들
  • 기존 서비스를 cloudformation에 올려놓기 위해 공부하고 싶은 사람
  • 응용 프로그램에 집중하고 싶기 때문에 네트워크는 누군가의 cloudformation을 사용하여 신속하게 사용하고 싶은 사람

  • 사용중인 서비스


  • api gateway
  • codebuild
  • codepipeline
  • alb
  • elasticbeanstalk
  • vpc
  • ec2(bastion-nat)
  • ecs
  • eip
  • sns
  • sam
  • route table
  • route53(public private)
  • lambda
  • cloudformation

  • Cloudformation화된 서비스


  • codebuild
  • codepipeline
  • alb
  • elasticbeanstalk
  • vpc
  • ec2(bastion-nat)
  • ecs
  • eip
  • route table
  • route53(public private)
  • lambda(sam)
  • cloudformation

  • 네트워크 구성





    ※ 이번 소개하는 것은 아래 그림의 왼쪽과 aws vpc 항상 구축되는 ecs만.

    디렉토리 구성


    ├── README.md
    ├── api
    │   ├── deployment-pipeline.yml![Bad Request]()
    ![Bad Request]()
    
    │   ├── eb.yml
    │   ├── residential-map-template.yml
    │   ├── route53.yml
    │   └── main.yml
    ├── batch
    │   ├── deployment-pipeline.yml
    │   ├── eb.yml
    │   ├── residential-map-template.yml
    │   ├── route53.yml
    │   └── main.yml
    └── web
    │   ├── deployment-pipeline.yml
    │   ├── ecs-cluster.yml
    │   ├── load-balancer.yml
    │   ├── residential-map-template.yml
    │   ├── route53.yml
    │   ├── service.yml
    │   └── main.yml
    ├── db.yml
    ├── delete.sh
    ├── route53.yml
    ├── run.sh
    ├── sg.yml
    └── vpc.yml
    
    

    실행 순서는
    vpc.yml
    ↓
    sg.yml
    ↓
    dns.yml
    ↓
    db.yml
    ↓
    batch/main.yml
    ↓
    api/main.yml
    ↓
    web/main.yml
    

    Cloudformation은 모두 하나의 template로 사용해야하지만 부분적으로 사용해야합니까?



    결론은 나누어 관리하는 것이 좋았다.

    모두 하나의 template로 개발하는 경우의 단점
  • stack의 작성에는 상당한 시간이 걸리므로 원인의 분리가 어렵다.
  • 한 곳에서 실패하면 전체가 롤 팩 되어 버린다. (꽤 오랜 시간이 걸립니다.)
  • 스코프가 단락하기 어렵다. 하나의 템플릿으로 작성하면, 중복을 허락하지 않게 만들기 위해서 sg.yml라든지 ecs.yml라든지 고집해 버리면, 어디에 무엇이 쓰여 있는지 전망이 나빠진다. (이것은 개인적인 것일 수 있습니다)

  • 어느 정도로 범위를 구분하고, 나머지는 서비스 마다 디렉토리를 잘라서 실행하는 것이 좋다고 하는 것이
    이 디렉토리 구성.
    ├── api/*
    ├── batch/*
    └── web/*
    ├── db.yml
    ├── delete.sh
    ├── route53.yml
    ├── run.sh
    ├── sg.yml
    └── vpc.yml
    

    다만, 조금 받을 수 없는 것이, 하나의 스택이 다른 스택에 의존하면, 그 스택 단독의 갱신을 할 수 없는 일이 있습니다.
    이런 느낌입니다.

    다음에 vpc를 만드는 데 실제로 사용하는 정의 파일을 자세히 살펴 보겠습니다.

    좋은 웹페이지 즐겨찾기