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 설치
- 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 |