공부/AWS

    [AWS] [3] codepipeline으로 Github+ CodeBuild + CodeDeploy  생성하기, AWS CI/CD 구축하기

    [AWS] [3] codepipeline으로 Github+ CodeBuild + CodeDeploy 생성하기, AWS CI/CD 구축하기

    Codepipeline 생성하기 step1 파이프라인 이름과 서비스 역할을 설정한다. step2 소스는 Github(버전2) 를 사용한다. 아래 이미지에 보이는 GitHub에 연결 이라는 버튼을 통해서 연결한다. 연결된 깃허브 내용은 왼쪽 사이드바에서 설정 -> 연결 에서 확인할 수 있다. step3 빌드 공급자에서 CodeBuild를 선택하고 CodeBuild에 만들어 두었던 프로젝트 이름을 선택해준다. step4 배포 공급자에서 CodeDeploy 를 선택하고 CodeDeploy 에 만들어 두었던 프로젝트 이름을 선택해준다. 검토 후에 파이프라인을 생성한다.

    [AWS] [4] CodeDeploy 에서 Blue/Green으로 배포하기, AWS CI/CD 구축하기

    [AWS] [4] CodeDeploy 에서 Blue/Green으로 배포하기, AWS CI/CD 구축하기

    CodeDeploy 에서 일반 배포가 아닌 Blue/Green으로 배포하는 방법이다. 시작템플릿 생성하기 Auto Scaling에서 사용할 시작 템플릿을 만든다. EC2에 접속해 왼쪽 사이드 바에 인스턴스 아래에 시작 템플릿 이라고 있다. 시작 템플릿 생성하기를 클릭해준다. AMI의 경우 나는 만들어 둔 것으로 대체했다. 본인이 개발하고자 하는 환경에 맞게끔 인스턴스 유형과 키 페어를 선택해준다. 네트워크에는 생성되어 있는 보안그룹을 선택해준다. 고급 세부 정보를 클릭해 IAM 설정과 제일 아래로 내리면 사용자 데이터 부분에 인스턴스를 실행할 때 실행하고자 하는 명령어를 적어주면 된다. #!/bin/bash 를 제일 상단에 적어주어야하며 디폴트로 root로 실행된다. Auto Scaling IAM Aut..

    [AWS] CodeDeploy BlockTraffic 로딩 시간 지연

    [AWS] CodeDeploy BlockTraffic 로딩 시간 지연

    BlockTraffic 이 배포 수명 주기 이벤트 중에는 트래픽을 현재 제공하고 있는 인스턴스에 액세스할 수 없도록 인터넷 트래픽이 차단된다. 이 이벤트는 CodeDeploy 에이전트에 예약되어 있으므로 스크립트 실행에 사용할 수 없다. BlockTraffic 에 걸리는 시간이 오래 걸린다 생각된다면 EC2 -> 대상그룹 -> 로드밸런서 -> Attributes 로 이동해 Deregistration delay 의 시간을 변경하면 된다. ex ) 300 -> 60

    [AWS] [2] codepipeline으로 Github+ CodeBuild + CodeDeploy  생성하기, AWS CI/CD 구축하기

    [AWS] [2] codepipeline으로 Github+ CodeBuild + CodeDeploy 생성하기, AWS CI/CD 구축하기

    [2] codedeploy 생성하기 EC2 에 CodeDeploy -agent 설치 aws-cli 를 설치 sudo yum install -y aws-cli home 으로 이동해서 cli 설정을 진행한다. cd /home/ec2-user sudo aws configure Access Key, Secret Access Key : aws 로그인 정보 region name : ap-northeast-2 output format : json codedeploy-agent 설치 codedeploy-agent에 필요한 ruby와 codedeploy-agent를 설치해준다. codedeploy-agent는 CodeDeploy 앱이 배포 명령을 내리는 것을 수신하고 작업을 수행하는 역할을 하는 프로그램인듯하다. 이 친..

    [AWS] [1] codepipeline으로 Github+ CodeBuild + CodeDeploy  생성하기, AWS CI/CD 구축하기

    [AWS] [1] codepipeline으로 Github+ CodeBuild + CodeDeploy 생성하기, AWS CI/CD 구축하기

    GitHub 에 코드가 변경될 때마다 CodeBuild가 실행될 수 있도록 Github+ CodeBuild를 연결한다. 빌드 생성하기 깃허브를 연결해서 사용하고자 하는 깃 레포지토리를 연결해준다. Webhook 의 경우 필요하다면 추가한다. 나의 경우 pull request merge 가 이루어질 때 CodeBuild가 진행될 수 있도록 했다. 특정 브랜치에서 시작하길 원한다면 BASE_REF 에 브랜치 이름을 작성해주면 된다. ex) release 브랜치일 때 환경에서는 Amazon Linux 2 와 Ubuntu 에서 본인이 사용하는 환경을 선택해서 사용하면 된다. 이미지는 여기 에서 이미지별 버전 확인해서 사용한다. 프로젝트 파일에는 buildspec.yml 이름을 가진 파일이 있어야 한다. 빌드 상..

    [AWS] Codedeploy AllowTraffic 에서 무한 로딩 후 배포 실패

    [AWS] Codedeploy AllowTraffic 에서 무한 로딩 후 배포 실패

    AllowTraffic 이 배포 수명 주기 이벤트 중에는 배포 후 인터넷 트래픽이 인스턴스에 액세스할 수 있도록 허용된다. 이 이벤트는 CodeDeploy 에이전트에 예약되어 있으므로 스크립트 실행에 사용할 수 없다. 대상그룹 Healthy 확인 AllowTraffic 에서 상태가 보류중으로 뜨며 오랜 시간이 지나도 진행이 안되는 문제가 있다. 대상 그룹에서 Healthy 로 되어 있어야 AllowTraffic 이 진행된다. 대상 그룹의 Health status의 경우 로드밸런서를 생성할 때 Listeners and routing 에서 타겟 그룹을 선택하는데 사용하는 타켓 그룹의 Health checks에 지정되어 있는 프로토콜 경로가 본인이 사용하는 프로토콜 경로가 맞는지 확인해준다.

    [AWS] Codepipeline으로 Github+ CodeBuild + CodeDeploy 사용하기, AWS CI/CD 구축하기

    [AWS] Codepipeline으로 Github+ CodeBuild + CodeDeploy 사용하기, AWS CI/CD 구축하기

    CodePipeline 사용해 Github 에 있는 코드를 배포하는 내용을 정리해 보았다. 일단 서비스를 배포하기 위해 필요한 ec2와 IAM을 생성한다. Github, CodeBuild, CodeDeploy 사용을 위한 내용을 아래 순서로 정리해 두었다. 필요한 부분을 참고해서 보면 될 것 같다. [1] GitHub 와 연결해 CodeBuild 생성하기 [2] Codedeploy 생성하기 [3] Codepipeline 생성하기 [4] CodeDeploy Blue/Green 으로 배포하기 해당 이미지는 내가 사용하고자 하는 AWS 아키텍처를 그려보았다.

    [AWS]  EC2 메모리 부족 현상 - swap 생성

    [AWS] EC2 메모리 부족 현상 - swap 생성

    AWS 프리티어를 사용하는데 t2.micro 의 램이 1GB 밖에 되지 않아 여러 프로젝트를 동시에 돌리면 램 초과로 서버가 폭발한다. RAM 메모리가 부족한 경우를 대비해 swap 메모리를 지정해준다. swap은 RAM이 부족할 경우 HDD의 일정 공간을 RAM 처럼 사용하는 것이다. swap 공간 크기 계산 * swap 은 32MB 미만이 되면 안된다. t2.micro 에서 진행하면 사용할 수 있는 RAM은 1GB 이므로. swap 으로 2GB 정도를 생각하고 잡으면 된다. swap 생성하기 스왑 파일은 4GB(128MB x 32) sudo dd if=/dev/zero of=/swapfile bs=128M count=32 스왑 파일은 2GB(128MB x 16) sudo dd if=/dev/zero ..

    [AWS] Codepipeline The provided role does not have sufficient permissions.

    codepipeline 에서 codedeploy를 실행하는데 다음과 같은 에러가 나오면서 codedeploy 가 진행되지 않았다. buildspec.yml 파일에 아티팩트 구문이 포함되어 있어야 한다. version: 0.2 artifacts: files: - '**/*' If you change the buildspec.yml version to 0.2 then the shell keeps its settings. In version: 0.1 you get a clean shell for each command.

    [AWS] CodeDeploy Error - The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.

    [AWS] CodeDeploy Error - The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.

    CodeDeploy 사용 시 Install 단계에서 다음과 같은 에러가 나면서 더이상 진행되지 않았다. The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems. 공식 홈페이지에서는 codedeploy-agent 가 실행되고 있는지 확인해보라고 나와있다. sudo service codedeploy-agent status codedeploy-agent 는 작동을 잘하고 있었기 때문에 이에 ..