인프라/AWS

AWS 인프라를 담당하고 있는 서비스에서 개발서버 테스트 중 메모리와 CPU를 프리티어 급 (cpu 0.25, 메모리 512mb)으로 잡아놨더니 사용률이 90프로가 넘어갔다. ECS의 작업정의 -> 새 개정 생성으로 컨테이너 성능을 스케일 업 한 후 서비스 업데이트 처리하여 스케일 업하여 정상 범위로 돌아올 수 있었고, 다시 테스트를 진행할 수 있었다.
mac/linux 기준으로 ~/.aws/credentials windows 기준으로 %USERPROFILE%\.aws\credentials 파일을 수정하여 아래와 같이 프로필을 추가한다. [default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [user1] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY mac&Linux 기준으로 ~/.aws/config windows 기준으로 %USERPROFILE%\.aws\config 파일을..
ACM에서 생성한 인증서는 각 LB에서 등록할 수 있다. AWS 검색창 > 로드 밸런서 > 로드 밸런서 선택 > 리스너 체크 > 편집 > 443에 대한 인증서 교체 로 인증서를 변경할 수 있음
AWS Client VPN 이용 시 AWS에서 제공하는 VPN Client로 접속하려 하면, Driver 문제인지 정상동작하지 않음. 맥에서는 AWS VPN Client를 이용하고, 윈도우 환경에서는 OpenVPN을 이용하면 정상 동작된다.
AWS에 개발환경 구축 시 작업자 간 동일한 개발 DB를 이용해 개발하고 싶으나, AWS RDS의 권장사항은 퍼블릭엑세스를 허용하지 않는다. 따라서 작업자 간 동일한 DB를 이용해 개발하려면 AWS Client VPN을 사용하여 VPC 내부에서 개발 및 테스트할 수 있다. ( 다만, 비용이 발생함. ) Client VPN 엔드포인트를 설정하고 보안그룹 및 권한부여 규칙 추가 등 모든 설정을 했음에도 불구하고 VPN 연결 후 RDS에 접근할 수 없었다. 신기하게도 REDIS는 접근이 가능하여, RDS 쪽 설정을 확인하다가 퍼블릭 엑세스가 "예"로 되어있는 것을 확인 해당 옵션을 "아니오"로 바꿔주니 정상적으로 접근할 수 있었다. 정확한 원인은 모르지만, AWS Client VPN 의 분할 터널을 사용하고,..
배포 스펙 소스관리 : github (기왕이면 AWS에서 제공하는 CodeCommit을 쓰는게 나을 것 같다) 빌드 : buildspec.yml 파일 (빌드하는 과정을 정할 수 있다.) 배포 : aws code deploy에서 ecs 서비스로 배포 배포 시나리오 1. AWS CodeBuild를 통해 github repository에서 소스를 가져오고 buildspec.yml에 작성된 빌드 순서에 따라 이미지로 빌드 (spring boot 2.3 이후 부터 추가 된 gradle의 bootBuildImage task를 이용하여 Dockerfile 없이 Dockerizing 2. 빌드 된 이미지의 태그에 빌드 번호를 붙여준다. 3. 이미지를 ECR에 푸시 및 ECS 배포를 위한 컨테이너 이름 및 이미지 저장소..
https통신을 하기 위해서는 발급기관에서 발급받은 인증서가 필요하다. 보통 서버의 경우 웹 서버에 기관에서 발급받은 인증서를 등록하는 방식으로 처리되나, AWS rounte 53 네임서버에 도메인을 옮겨온 경우, AWS가 알아서 다 해준다. 인증서 요청 > 퍼블릭 인증서 > *.example.com 으로 생성 > DNS 검증 > 생성 된 인증서 상세 > Route 53에서 DNS 생성을 하면 Route53에 CNAME 레코드가 생성되어 검증 될 때 까지 기다리면 됨.
버킷명은 꼭 Route 53 도메인에 라우팅할 도메인과 똑같이 생성할 것 AWS S3 콘솔로 이동 > 버킷 만들기 > 모든 퍼블릭 엑세스 차단 체크 해제 > 버킷 생성 생성된 버킷 클릭 > 버킷에 정적파일 업로드 생성된 버킷 클릭 > 속성 > 정적 웹 사이트 호스팅 > index.html 페이지 설정 *** 두 개의 레코드에 대해 같은 버킷으로 호스팅하고 싶다면, example.com으로 주 버킷을 만들고 정적 웹 사이트 호스팅을 설정하고 www.example.com 으로 새로운 버킷을 만들어 정적 웹사이트 호스팅 > 객체에 대한 요청 리디렉션 > example.com > http 선택 후 2개의 버킷을 생성한다. 레코드 생성 시 각각 버킷을 라우팅 대상으로 선택하면 됨! 생성된 버킷 클릭 > 권한 > ..
생성 순서 1. ALB 생성 및 대상 그룹 생성 2. ECS 클러스터 생성 3. ECS 작업 생성 4. ECS 서비스 생성, health check 확인 1. ALB 생성 및 대상 그룹 생성 (0). 대상 그룹 생성 > ECS에 적용하려면 인스턴스가 아닌 IP Address로 생성 > health check 는 status 200을 응답해 줄 수 있는 health check용 url을 하나 만들어 등록, spring boot actuator를 사용하면 /actuator/health 를 path로 입력하면 됨. (1). console > 보안 그룹 > 로드 밸런서용 보안 그룹 추가 모든 소스( 0.0.0.0/0 ) 에 대해 80, 443 포트를 허용한다. (2). console > 로드밸런서 메뉴 > 로드..
aws ecr get-login-password --region $REGION | docker login -u AWS --password-stdin $REPOSITORY_URI $REGION을 본인 REGION으로 치환 $REPOSITORY_URI를 ECR Repository 메뉴를 누르면 나오는 Repository URI로 치환 명령어 실행 후 Login Succeeded 라고나오면 docker push $IMAGE:$TAG $IMAGE 를 빌드된 이미지 명으로 치환 push를 위해 ECR URI/이미지명 으로 되어있어야 함 $TAG 를 빌드된 태그로 치환 latest면 생략가능
infitry
'인프라/AWS' 카테고리의 글 목록