IaaS/퍼블릭클라우드 110

(AWS) Elastic Beanstalk의 CI/CD에 대해서

Elastic Beanstalk를 배포하는데 있어서 다음과 같은 전력이 가능하다. All at Once : 모든 인스턴스를 한번에 배포하나 Downtime발생 추가 자원이 필요하지는 않음 개발환경이 가벼워 금방 업데이트 된다면 괜찮은 방법 Rolling : 한번에 몇개의 인스턴스만 Rolling Update 업데이트 대상 인스턴스 갯수 지정가능 동시간에 v1 v2 모두 혼재 추가 자원이 필요하지는 않음 All at Once방식보다 시간이 더 걸림 Rolling with additional batches : Rolling 방식과 유사하나, 추가적으로 v2자원을 할당하고 개발이 완료된 후에 삭제하는 방식 Prod환경에 적합 적은 양의 추가 리소스 필요 업데이트 대상 인스턴스 갯수 지정가능 동시간에 v1 v2..

(AWS) Elastic Beanstalk란?

AWS Elastic Beanstalk란? AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker를 사용하여 Apache, Nginx, Passenger, IIS와 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게 배포하고 조정할 수 있는 서비스입니다. Elastic Beanstalk를 사용하면 코드를 업로드해서 용량 프로비저닝, 로드 밸런싱, 오토 스케일링, 애플리케이션 상태 모니터링, 배포를 자동으로 처리하도록 구성할 수 있습니다. 배포 완료 후 애플리케이션을 실행하는 데 필요한 AWS 리소스를 쉽게 제어할 수 있으며 언제든지 기본 리소스에 액세스할 수 있습니다. 사용법 1. Install the CLI 2...

(AWS) CloudFormation Stack Policy란?

Stack Poilcy란? 스택 업데이트 중 의도치 않게 업데이트되지 않도록 하려는 리소스를 정의합니다. 예를 들어 아래 예시에서 Resources.CriticalSecurityGroup은 업데이트가 되지 않도록 보호하고 싶을때 Stack Policy를 사용하면 좋다. 예시 # Read more here: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html Parameters: VPCId: Description: VPC to create the security group into Type: AWS::EC2::VPC::Id CidrSSH: Type: String Default: "0.0.0.0/..

(AWS) cfn-signal, cfn-get-metadata, cfn-hup 이란?

cfn은 CloudFormation 헬퍼스크립트를 뜻한다. cfn은 CloudFormation을 다루는데 용이한 기능을 제공하는데, CF Stack으로 생성된 EC2 인스턴스내에서 CLI로 실행할 수 있다. 1. cfn-signal이란? cfn-signal 헬퍼 스크립트는 Amazon EC2 인스턴스가 성공적으로 생성 또는 업데이트되었는지 여부를 나타내도록 CloudFormation에 신호를 보냅니다. 예시 AWSTemplateFormatVersion: 2010-09-09 Description: Simple EC2 instance Resources: MyInstance: Type: AWS::EC2::Instance Metadata: 'AWS::CloudFormation::Init': config: fil..

(AWS) CloudFormation Drift Detection, Status Code란?

Drift Detection 이란? Drift Detection은 CF Template이 정의했던 Resource가 실제로는 없거나 다르거나 하는 경우를 탐지하는 것이다. CF로 정의된 Resource를 사용자가 직접 수작업으로 수정하는 경우가 많다보니 이런 케이스가 발생한다. Drift Detection의 상세페이지로 들어가서 [Drifts] 메뉴에 들어간다. 'Detect Stack Drift'버튼을 클릭하면 탐지가 시작된다. Stack에 대한 Status Code 설명 스택 상태설명표 CREATE_COMPLETE 하나 이상의 스택을 성공적으로 생성했습니다. CREATE_IN_PROGRESS 하나 이상의 스택을 생성하고 있습니다. CREATE_FAILED 하나 이상의 스택을 생성하지 못했습니다. 연결..

(AWS) CloudFormation에서 Lambda Function 배포하기

CF에서 Lambda를 배포하는 방법은 다음과 같다. 1. 인라인 방식 : CF Template내에서 Lambda정의하기 템플릿 내에서 Lambda를 정의하는 방법이다. 아래에 보다싶이 Row가 매우 길어진다는 단점이 있다. 배포는 일반 CF Template배포하듯이 하면된다. 특이한점은 Lambda Function이 생성된후에 Lambda콘솔을 들어가 해당 Lambda Function을 보면 '이 Lambda Function은 CloudFormation Stack에 의해 생성된 것'이라고 표시된다. Template 사용 예제 Resources: ListBucketsS3Lambda: Type: "AWS::Lambda::Function" Properties: Handler: "index.handler" R..

(AWS) CloudFormatoin의 Parameter-SSM, Public Parameter-SSM, DependsOn 이란?

Parameter-SSM이란? AWS System Manager의 Parameter저장소를 CF에 연결해보자. SSM을 이용한 Parameter관리는 중앙집중식으로 관리하는데 유용하다. 많은 리소스들이 공통으로 사용하는 Parameter가 있다면 이것을 SSM에 등록해서 일괄 관리하는것은 효율적이다. 사용법 1. SSM Parameter적용된 Template 준비 Parameters: InstanceType: Type: 'AWS::SSM::Parameter::Value' Default: /EC2/InstanceType ImageId: Type: 'AWS::SSM::Parameter::Value' Default: /EC2/AMI_ID 2. [AWS System Manager]-[Parameter Store..

(AWS) CloudFormation의 ChangeSet, DeletionPolicy

ChangeSet ChangeSet은 Stack을 업데이트 하기 전 무엇이 변경되는지 사전에 체크해보기 위해 사용한다. 하지만 이 과정이 Update성공여부를 확인시켜주지는 않는다. 사용법 1. 업데이트 대상 Stack의 [ChangeSets] 메뉴로 들어간다. 2. 'Create Change Set'을 클릭한다. 3. 어떤 Template을 적용할 것인지에 대한 선택지가 나오는데, 필자는 새로운 Template을 적용할 것이므로 'Replace current Template'을 클릭한다. 4. Template을 S3에서 업로드 해도 되고, 직접 Template을 업로드해도 된다. 5. 설정이 완료되면 변경사항이 표시된다. 하단에 내려보면 어떤 변경사항이 발생하는지 요약되어 있다. 6. 'Execute'..

(AWS) CloudFormation Rollback, Nested Stack

Rollback이란? CF템플릿 실행중에 Fail발생시 진행되는 프로세스로 Rollback을 수행하게 되면 동일 템플릿 내 Resource는 모두 삭제된다. Stack Creation Fails 옵션(CF API) Default : 모든것이 삭제(Rollback)됨 로그는 확인가능 OnFailure=ROLLBACK TroubleShoot: Rollback을 비활성화 하고 수동적으로 TroubleShooting OnFailure=DO_NOTHING Delete: Stack 전체 삭제. 어떤것도 유지하지 않음 OnFailure=DELETE Nested Stack 이란? 다른 Stack의 일부로 생성된 Stack입니다. AWS::CloudFormation::Stack리소스를 사용하여 다른 스택 내에 중첩 스택..

(AWS) CloudFormation UserData, cfn-init, cfn-signal 에 대해

UserData 란? AWS 콘솔을 통해 User Data를 EC2 시작시에 적용할 수 있다. 또한 CF를 통해 포함시켜 적용할 수 있다. 중요한것은 모든 Script는 Fn::Base64를 통해서 통과한다는 것이다. UserData는 /var/log/cloud-init-output.log에 로깅된다 사용법 Resources: MyInstances: Properties: AvailabilityZone: us-east-1a UserData: Fn::Base64: | #!/bin/bash -xe yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "Hello world! from user data" ? /va..