물리 서버의 어두운 과거에는 스크류드라이버와 케이블을 이용하여 습한 지하실에서 인프라를 프로비저닝해야 했습니다. 이러한 어두운 시기는 온프레미스 인프라보다는 퍼블릭 클라우드 솔루션이 서버 프로비저닝과 운영의 선호 방식으로 대체되기 시작함으로써 밝아졌습니다. 이 블로그 포스트에서는 AWS CLI와 CloudFormation을 사용하여 클라우드 솔루션을 배포하는 방법에 대해 알아보겠습니다.
이 게스트 포스트는 몇 분 안에 모의 API를 생성할 수 있게 해주는 도구인 Mocki의 공동 창업자인 Karl Eriksson의 기고입니다.
어플리케이션을 위한 환경이 하나라면 AWS 콘솔과 같은 그래픽 사용자 인터페이스(GUI)를 통해 쉽게 관리할 수 있습니다. 하지만 개발, 스테이징, 프로덕션과 같이 여러 환경을 다룰 때는 어려움이 생깁니다. 인간의 실수와 시간이 개입됩니다. AWS CLI와 CloudFormation은 도움이 될 수 있습니다.
인프라스트럭처를 코드로 관리해야 합니다. AWS 세계에서는 CloudFormation 스택을 사용하여 이를 수행할 수 있습니다.
CloudFormation 스택을 처음으로 배포할 때는 AWS가 처음부터 모든 것을 생성합니다. 스택을 업데이트로 배포하면 인프라에 대한 변경 사항을 감지하고 해당 변경 사항만 배포합니다.
CloudFormation 스택은 여러 환경에서 동일한 변경 사항이 적용되도록 보장합니다.
CloudFormation: AWS 인프라스트럭처를 코드로 관리하기

AWS CloudFormation은 AWS 환경에서 인프라를 코드로 작성하고 프로비저닝하는 도구입니다. AWS의 대부분의 서비스가 CloudFormation을 지원합니다. 가상 서버, 데이터베이스, 로드 밸런서, 파일 저장소와 같이 AWS 콘솔을 통해 생성할 수 있는 대부분의 리소스를 CloudFormation 스택에 추가할 수 있습니다. 추가한 후에는 이러한 모든 리소스를 명령 줄이나 다른 자동화된 프로세스를 통해 배포할 수 있습니다.
업데이트 시, CloudFormation은 작업을 가장 효율적인 방식으로 수행하며, 문제가 발생하면 변경 사항을 자동으로 롤백합니다.
이제 AWS CLI와 CloudFormation을 사용하여 인프라를 생성하는 방법을 배워보겠습니다.
사전 요구 사항
이 문서의 나머지 부분에서 CloudFormation 자습서를 따라하려면 다음 사항이 필요합니다:
- AWS 계정
- AWS CLI – 다운로드 및 설정하는 방법은 여기에서 확인할 수 있습니다.
aws s3 ls
명령을 실행하여 CLI 설치가 성공적으로 완료되었는지 확인할 수 있습니다. 명령이 성공적으로 실행되면 모든 것이 정상입니다.
AWS CLI를 통해 여러 개의 AWS 프로필을 구성한 경우, 이 튜토리얼에서 사용하기 위해 개발이나 테스트 용도에 적합한 프로필을 사용하십시오.
첫 번째 CloudFormation 스택 생성
충분한 배경 정보가 있으니, AWS CLI와 CloudFormation을 사용하여 스택을 생성해 봅시다!
이 예제에서는, 정적 파일 호스팅 서비스인 AWS S3에 호스팅되는 정적 웹 사이트를 배포하기 위해 필요한 인프라가 포함된 스택을 생성합니다.
시작하기 위해 template.yaml
이라는 새 파일을 생성하고 아래의 내용으로 채우세요:
AWSTemplateFormatVersion
– 템플릿의 형식 버전을 결정하여 AWS가 올바르게 해석할 수 있게 합니다.Description
– 템플릿에 대한 설명을 포함하며, 배포 후 AWS 콘솔에서 표시됩니다.Resources
– 템플릿에 추가하는 모든 인프라를 포함합니다. 이 경우, 리소스는 정적 사이트를 호스팅할 간단한 S3 버킷을 생성합니다.
BucketName
속성은 고유해야 하므로, “your-bucket-name” 이외의 다른 이름을 생각해 보세요.
AWS CLI 및 CloudFormation을 사용하여 스택 배포하기
이제 배포할 간단한 템플릿이 생성되었으므로, 아래 명령을 사용하여 AWS에 배포하세요:
명령을 실행한 후에는 AWS 콘솔로 이동하여 Services → CloudFormation으로 이동하세요. 그러면 배포가 실행되는 것을 볼 수 있습니다. 몇 분 후에 CREATE_COMPLETE
상태로 전환될 것입니다. 그렇다면 완료된 것입니다!
오류가 발생한 경우 스택의 상세 정보를 보는 동안 이벤트 섹션에서 해당 오류를 확인할 수 있어야 합니다.
Services → S3으로 이동하여 새로운 S3 버킷이 생성된 것을 확인할 수 있어야 합니다.
간단한 웹사이트 생성하기
웹사이트를 저장할 S3 버킷이 준비되었다면, 사이트로 사용할 index.html 파일을 생성하세요.
만약 자신의 것이 없는 경우, 아래 내용을 index.html 파일에 사용할 수 있습니다:
index.html 파일을 저장하고 AWS 콘솔을 통해 S3 버킷에 업로드하세요.
인덱스 파일에 대한 공개 읽기 액세스 권한을 부여해야 합니다. 이는 사이트를 방문하는 모든 사용자에게 접근 가능하게 합니다.
템플릿 업데이트하기
지금은 방금 생성된 S3 버킷이 웹 사이트 호스팅을 구성하지 않았습니다. 이를 변경합시다. 현재는 AWS 콘솔을 통해 인덱스 파일을 다운로드할 수 있지만, 공개 인터넷을 통해 접근할 수는 없습니다. AWS CLI와 CloudFormation을 사용하여 구성을 변경하여 정적 웹 사이트 호스팅을 활성화합니다. 이를 위해
다음과 같이 template.yaml 파일을 변경합니다. 여기에서 몇 가지 새로운 속성을 소개합니다.
AccessControl
– S3 버킷의 액세스 권한을 공개 읽기로 설정하여 사이트를 방문하는 모든 사용자가index.html
파일을 볼 수 있도록 합니다.WebsiteConfiguration
– 사용자가 버킷 URL로 이동할 때 업로드된 index.html 파일을 제공하는 웹 사이트로 S3 버킷을 구성합니다.Outputs
– 스택의 일부인 리소스에 대한 다른 속성입니다. 위의 예제에서WebsiteURL
은 스택 출력입니다. 템플릿을 다시 배포하면 AWS CloudFormation 콘솔에서 웹 사이트 URL을 출력으로 볼 수 있어야 합니다.
이전 단계와 동일한 명령을 사용하여 기존 스택에 변경 사항을 배포하세요.
결과를 확인하려면 CloudFormation 콘솔로 이동하십시오. 몇 분 후에 스택이 UPDATE_COMPLETE
상태로 변경되었음을 알 수 있을 것입니다. 스택이 이 상태로 들어가면 템플릿에서 Outputs 탭으로 이동하십시오. 여기에서 템플릿에 WebsiteUrl
이 출력으로 추가된 것을 볼 수 있습니다.
제공된 URL을 클릭하면 브라우저에서 사이트를 볼 수 있을 것입니다.
축하합니다! AWS CLI와 CloudFormation을 사용하여 인프라를 코드로 배포했습니다! 이 시점에서 템플릿 파일을 계속 추가하여 새로운 변경 사항을 배포하거나 필요에 따라 새로운 템플릿을 만들 수 있습니다.
결론
이 자습서에서는 인프라를 코드로 구축하는 개념과 수동 인프라 프로비저닝에 비해 가지는 장점에 대해 배웠습니다. AWS CLI와 CloudFormation을 사용하여 인프라를 코드로 구축함으로써 정적 웹사이트를 생성하는 스택을 배포했습니다.
이 자습서에서 배운 원칙을 사용하여 CloudFormation을 사용하여 프로덕션에 적합한 시스템을 완전히 배포할 수 있습니다.
더 읽기
인프라를 코드로 사용하는 현상에 대해 더 읽고 싶다면 HashiCorp의 실제 세계에서의 인프라를 코드로를 확인하세요.
CloudFormation을 개발 플로우에 통합하고 CloudFormation을 사용하여 모든 인프라를 관리하는 방법에 대해 자세히 알아보려면 다음을 확인하세요:
인프라스트럭처를 코드로 배포하는 여정에서 AWS를 통해 모든 인프라를 성공적으로 배포하길 바랍니다!
Source:
https://adamtheautomator.com/aws-cli-and-cloudformation/