본문 바로가기

Cloud/Oracle Cloud Infrastructure (OCI)

OCI API Gateway와 Function을 이용한 서버리스 웹 어플리케이션 샘플 - #4 API Gateway 생성/배포/테스트

총 네개의 시리즈로 OCI API Gateway와 Function을 이용한 서버리스 웹 어플리케이션 샘플 구성 방법을 살펴보겠습니다.

이전 글:

2022.05.23 - [Cloud/Oracle Cloud Infrastructure (OCI)] - OCI API Gateway와 Function을 이용한 서버리스 웹 어플리케이션 샘플 - #3 DB 구성 및 Function 코드 준비

 

API Gateway 생성/배포/테스트

API Gateway 서비스를 사용하면 네트워크 내에서 액세스할 수 있는 프라이빗 엔드포인트가 있는 API를 게시할 수 있으며, 인터넷 트래픽을 허용하려는 경우 퍼블릭 IP 주소로 노출할 수 있습니다. 또한 API 유효성 검사, 요청 및 응답 변환, CORS, 인증 및 권한 부여, 요청 제한을 지원합니다.

API Gateway 서비스를 사용하여 리전 서브넷에 하나 이상의 API Gateway를 생성하여 API 클라이언트의 트래픽을 처리하고 이를 백엔드 서비스로 라우팅합니다. 단일 API 게이트웨이를 사용하여 여러 백엔드 서비스(예: 로드 밸런서, 컴퓨트 인스턴스 및 Oracle Functions)를 단일 통합 API 엔드포인트에 연결할 수 있습니다.

이제 지금까지 만든 “demo-hr”, “demo-fi” Function을 경로 기반으로 라우팅을 하는 API Gateway를 만들어 보겠습니다.

API Gateway를 만들기 전에 아래와 같은 정책을 추가해서 API Gateway가 Fuction을 실행할 수 있는 권한을 부여합니다.

ALLOW any-user to use functions-family in compartment demo-compart
where ALL {
  request.principal.type= 'ApiGateway',
  request.resource.compartment.id = 'ocid1.compartment.oc1..aaaaaaaaj6i7rqd4rornviojw4uyn5uoprkesc4hhsibpz3bjxbu3e43ciiq'
}

 

API Gateway의 Function에 대한 실행 권한을 부여한 다음, Developer Services > API Management > Gateways 화면으로 이동하여 Create Gateway를 클릭해서 API Gateway를 새로 만듭니다.

APT Gateway의 이름과 컴파트먼트, 타입, 네트웍 설정을 합니다. 여기에서는 “Public” 타입으로 퍼블릭 서브넷에 API Gateway를 생성했고, API Gateway에 퍼블릭 IP가 할당되게 됩니다.

 

API Gateway가 만들어졌습니다. 이제 앞서 만든 Function으로 라우팅하는 API를 배포할 차례입니다. Resource 아래 Deployments 화면으로 이동해서 Create Deployment를 클릭합니다.

 

Create Deployment 화면의 From Scratch를 선택하고 배포할 이름, 경로 Prefix, 컴파트먼트를 입력 및 선택합니다. 여기에서는 각각 “demo”, “v1” 으로 입력했습니다. 나머지 API Request Policies 는 별도로 설정하지 않았습니다. 입력 후, Next를 클릭합니다.

 

라우트 정보화면에서 아래 두개의 라우트 내용을 입력합니다.

첫번째 라우트 섹션에서는 앞서 만든 “demo-app” 어플리케이션의 “demo-hr”Fuction을 라우팅합니다. Path는 “/demo-hr”, Method는 “GET”, “Type”은 Oracle Functions를 선택했습니다.

+ Another Route를 클릭해서 라우트를 하나 더 추가합니다. 두번째 라우트 섹션에서는 앞서 만든 “demo-app” 어플리케이션의 “demo-fi” Fuction”을 라우팅합니다. Path는 “/demo-fi”, Method는 “GET”, “Type”은 Oracle Functions를 선택했습니다.

두개의 라우트 정보 입력 후, 하단의 Next를 클릭합니다.

 

입력/선택한 내용을 확인하고 Create을 클릭합니다.

 

API 배포가 완료되었습니다.

 

배포 상세 화면으로 이동하면 API의 엔드포인트를 확인할 수 있습니다. 해당 엔드포인트를 복사해서 정상 작동 여부를 확인합니다.

 

먼저 터미널에서 curl 명령으로 확인해 봅니다.

[opc@demo demo-fi]$ curl -k -X GET <https://jakjpxcbbryz6trg4r6aj6gtoq.apigateway.us-ashburn-1.oci.customer-oci.com/v1/demo-hr>
[["d009", "Customer Service"], ["d005", "Development"], ["d002", "Finance"], ["d003", "Human Resources"], ["d001", "Marketing"], ["d004", "Production"], ["d006", "Quality Management"], ["d008", "Research"], ["d007", "Sales"]]
[opc@demo demo-fi]$ curl -k -X GET <https://jakjpxcbbryz6trg4r6aj6gtoq.apigateway.us-ashburn-1.oci.customer-oci.com/v1/demo-fi>
[[10001, 60117], [10001, 62102], [10001, 66074], [10001, 66596], [10001, 66961], [10001, 71046], [10001, 74333], [10001, 75286], [10001, 75994], [10001, 76884]]

 

웹 브라우저에서도 경로에 따라 다른 Function을 호출하는 것을 확인할 수 있습니다.

 

API Gateway도 Fuction과 마찬가지로 로그를 확인할 수 있는데, API Gateway 로그는 접속 로그와 실행 로그로 나뉘어져 있습니다. 설정은 API Gateway > Gateway > Gateway Details > Deployment Details 화면의 Resouces 아래 Logs에서 하며, 방법은 Function에서와 동일하게 Enable Log만 해 주면 됩니다.

 

아래는 실행 로그 내용입니다.

 

API Gateway의 모니터링은 Gateway 레벨과 배포 레벨에서 이루어집니다. 아래는 Gateway 레벨에서의 모니터링 화면입니다.

 

아래는 배포 레벨에서의 모니터링 화면입니다.

 

<END>