Study/seSAC 금천 4기

클라우드_6일차_241011

지찬씌 2024. 10. 31. 09:21

 

 

VPC 생성

: Public 서브넷 1개와 Private 서브넷 1개로 구성

  => 연결된 라우팅 테이블 생성, public-rt와 연결되는 igw 생성

 

 

 

 

 

 

관리형 관계형 데이터베이스 서비스 생성 (RDS, Relational Database Service)

1. RDS 생성

 

 

 

 

 

- 데이터베이스 생성 후 엔드포인트와 포트 확인

 

 

 

 

 

- 클라이언트 PC에서 RDS로 연결 확인(MYSQL Workbench)

: 퍼블릭 엑세스가 불가능하므로 연결할 수 없다.

 

 

 

2. 베스천 호스트 생성

: 퍼블릭 서브넷에 EC2 인스턴스를 생성

 

 

 

 

3. 베스천 호스트를 통해서 RDS로 연결하도록 설정

 

 

 

 

 

 

 

 

 

 

4. MySQL Workbench를 사용해서 스키마와 테이블 생성

 

 

 

 

 

 

 

 

FastAPI 앱을 EC2에 배포

- Amazon Linux 2023 OS에 python 설치

https://jakpentest.tistory.com/entry/AWS-EC2-Amazon-Linux-2023-%EC%97%90%EC%84%9C-Python-Project-Setting

 

- SFTP를 이용해서 소스 코드를 업로드 (또는 github를 통해서 배포)

 

 

 

 

 

람다 함수 작성

1. 작업 디렉터리 생성 (C:\aws\board)

 

 

 

2. VS Code에서 lambds_function.py 파일 생성 및 람다 함수 실행 소스코드 작성

 

 

 

3. 람다 함수 실행에 필요한 패키치 설치 후 zip 배포 패키지 생성

 

 

 

4. 람다 함수 생성 및 코드 추가

 

 

 

5. 테스트 이벤트를 구성

 

 

 

 

6. 테스트 진행

=> timeout 오류 발생 시 제한 시간 변경 (3초 -> 60초)

 

 

 

 

=> Runtime 오류 발생. 에러 원인은 람다 함수가 mariaDB에 연결할 수 없기 때문으로 나옴

 

 

 

7. RDS에서 람다 함수 연결 설정

=> 연결 설정을 위해서는 RDS와 람다 함수가 같은 VPC에 존재해야 하고

=> VPC 연결을 위해서는 람다 함수의 역할에 AWSLambdaVPCAccessExcutionRole 정책을 연결해야 한다.

 

 

 

 

- 람다 함수에 AWSLambdaVPCAccessExcutionRole 정책 연결

 

 

 

 

- RDS에서 람다 함수 연결

 

 

 

 

- 람다 함수 테스트 및 db에서 확인

 

 

 

 

8. 소스 코드를 수정하여 등록 후 전체 조회 결과를 반환하도록 변경

 

- 코드 수정

 

 

- 새로 압축해서 람다 함수에 업로드하여 구동 확인

 

 

 

 

 

 

API Gateway 설정

https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/welcome.html

 

 

1. REST API 생성 후 배포

 

- REST API 생성

 

 

 

- 리소스 생성

 

 

 

- 메서드 생성

 

 

 

- 테스트

 

 

 

 

 

로그에 표시되는 내용은

API Gateway에서 보내는 로그의 내용이고

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

가운데 Authorization의 ******....

내용은 람다함수에서 보내는 로그 내용이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- API 배포

 

 

 

- 엔드포인트 확인 후 테스트

 

 

 

 

 

 

 

2. API Gateway와 연동하는 리액트 앱을 개발

 

- App.js에 아래 기능 구현

 

  1) 제목, 내용, 글쓴이를 입력할 수 있는 입력창을 제공

  2) 등록 버튼을 클릭하면 API Gateway에 등록한 API를 호출

  3) 호출 결과 성공인 경우, 가져온 데이터를 출력

 

 

 

 

=> CORS 오류 발생

 

 

 

- CORS 오류를 해결하기 위해 API Gateway의 CORS 활성화

 

 

 

 

 

3. 반환받은 데이터를 화면에 출력하는 코드 추가

 

 

 

 

 

4. 리액트 코드를 빌드해서 배포 버전을 생성

 

- npm run build

 

 

 

5. S3 버킷 생성

 

- 버킷 생성

 

 

- 빌드 결과물 (.\build 디렉터리 아래 내용)을 S3 버킷에 업로드

 

 

 

 

- 정적 웹 사이트 호스팅 활성화

 

 

 

=> 정적 웹 사이트 호스팅을 활성화하여 버킷의 웹 사이트 엔드포인트로 접근하였지만 권한 오류가 발생한다.

 

 

 

 

- 객체 소유권을 ACL (Access Control List) 활성화로 변경하고 객체와 버킷 ACL에 대한 퍼블릭 엑세스를 열어준다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Study > seSAC 금천 4기' 카테고리의 다른 글

이노그리드 특강_CI/CD_241023  (0) 2024.10.31
클라우드_7일차_241014  (0) 2024.10.31
AWS 특강_241028  (0) 2024.10.28
DevOps/Scrum 특강_241024~241025  (1) 2024.10.25
이노그리드 CI/CD 특강_241022  (0) 2024.10.23