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에 개발환경 구축 시 작업자 간 동일한 개발 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의 RDS, Elasticache에 접근하려면, VPC 보안그룹에 해당 포트들에 모든 IP에대한 접근을 허용해야 한다. 이런 방식으로 접근을 허용하게 된다면, 외부로 부터 접근이 용이하여 보안에 취약해지기 마련인데, 접근하는 팀원들이 항상 같은 곳에서 접근하는 것도 아니라 특정 IP에서만 해당하는 포트들을 열어줄수 없고 모든 팀원들이 어디서든 접근해야한다면 SSH 터널링으로 접근을 한 단계 강화할 수 밖에 없어 SSH 터널링을 통한 접근만 허용 해당 RDS, Elasticache 포트를 모두 허용하는게 아닌, SSH 터널링 용 EC2 인스턴스를 터널링을 통해 접근할 수 있다. VPC로의 접근은 SSH 22번 포트만 모든 IP에 대해 허용해놓고 (일종의 통로) 해당 EC2 인스턴스를 통한 VPC 내부..
infitry
'AWS' 태그의 글 목록