Hyun's Wonderwall

[AWS] EC2, 탄력적 IP, RDS 옮기기! 본문

Study/Java, Spring

[AWS] EC2, 탄력적 IP, RDS 옮기기!

Hyun_! 2024. 10. 1. 19:48

사용하던 AWS 계정이 프리티어가 만료되었는데, 프로젝트를 12월까지 올려놓기로 해서 새 AWS 계정으로 리소스들을 이전하는 절차를 진행하였다.
(프로젝트 구경하기 ➡ https://songpin.kr/)
통째로 옮기는 방식이 아니고, 백업본을 다운로드받아 다시 올리는 식이다.
열심히 작성했었는데 글을 날려버려서 간단하게 적고, 참고한 글들 링크를 아래에 달아둔다.
 
A계정에서 B계정으로 리소스들을 옮기고자 한다. (*VPC는 새로 세팅했다.)

EC2 AMI로 옮기고, 탄력적 IP 전송하기

1. A계정에서 EC2를 AMI로 만들어 B계정에 AMI 공유를 해주고, B계정에서 AMI로 인스턴스 생성한다.
2. A계정에서 탄력적 IP "전송 활성화"를 하고 B계정에서 탄력적 IP "전송 수락", 새로 만든 인스턴스에 연결한다.
3. B계정에 원본 EC2 인스턴스, VPC 사용하던 대로 보안 그룹 설정을 해준다.
위 과정을 완료하고 인스턴스에 연결해 NGINX가 잘 돌아가는 것을 확인했다. sudo docker ps도 했는데, 도커 컴포즈 파일에 자동 재시작 설정(restart: always)을 걸어놓아서 컨테이너들이 바로 자동으로 실행된 것을 확인했다.

RDS 스냅샷으로 옮기기

1. A계정의 RDS를 스냅샷을 만든다. 나는 RDS를 default 키로 생성했었어서 KMS 설정이 필요했다.
2. KMS(Key Management Service)에서 고객 관리형 키를 만들어야 한다. IAM 사용자를 추가하는 것이 있는데 진행하고 " 다른 AWS 계정 추가" 에 B계정을 ID로 추가한다.
3. A계정의 스냅샷 메뉴에서 "스냅샷 복사"를 하는데 이때 2번에서 만든 키로 생성한다.
4. 3번의 복사된 스냅샷을 "스냅샷 공유" 해 B계정을 ID로 추가한다.
5. B계정의 스냅샷 메뉴 [스냅샷]>[나와 공유됨] 에서 A계정이 공유해준 스냅샷이 보이는데, 그것을 또다시 "스냅샷 복사"한다. 복사한 결과 [스냅샷]>[수동]메뉴에 떠야 한다. 이때 키는 꼭 만든 키 안 써도 되길래 디폴트 키를 썼다.
6. B계정에서 스냅샷으로 데이터베이스를 만들고, 마찬가지로 원본 RDS 쓰던 것처럼 보안 그룹 설정을 해준다.
7. GitHub Actions등 CICD를 진행하는 곳에 배포용 application.yml 파일을 수정해서 재배포해준다.
비밀번호는 이전 RDS와 동일하게 사용된다.
 
5번에서, 옮기려는 계정에서 공유받은 스냅샷을 또다시 복사를 해줘야 하는지 몰라서 헤맸다.
"Restoring db instance from cross account storage encrypted snapshot is not supported." 에러를 5번 과정을 통해 해결할 수 있었다.
도움받은 글들 링크를 남긴다
https://sw-ing.tistory.com/188
https://onu0624.tistory.com/49#google_vignette