이 블로그 에서는 지금까지 서버리스 애플리케이션에 대해 다음과 같은 개념을 설명했습니다:

서버리스 시리즈의 세 번째 블로그에서는 Amazon API Gateway, AWS Lambda, 그리고 다음을 사용하여 간단한 마이크로서비스를 만드는 방법을 설명합니다. 카우치베이스. 읽기 이전 블로그 를 참조하세요. Amazon API 게이트웨이 는 개발자가 규모에 관계없이 API를 쉽게 생성, 게시, 유지 관리, 모니터링 및 보호할 수 있는 완전 관리형 서비스입니다. Amazon API Gateway는 트래픽 관리, 권한 부여 및 액세스 제어, 모니터링, API 버전 관리 등 최대 수십만 개의 동시 API 호출을 수락하고 처리하는 데 관련된 모든 작업을 처리합니다. 다음은 이 아키텍처의 주요 구성 요소입니다:
serverless-microservice

  • 클라이언트는 curl, AWS CLI, Postman 클라이언트 또는 REST 엔드포인트를 호출할 수 있는 기타 도구/API가 될 수 있습니다.
  • API 게이트웨이는 API를 프로비저닝하는 데 사용됩니다. 최상위 리소스는 경로에서 사용할 수 있습니다. /책. HTTP GET 그리고 POST 메소드가 리소스에 대해 게시됩니다.
  • 각 API는 람다 함수를 트리거합니다. 두 개의 람다 함수가 생성됩니다, 도서 목록 함수를 사용하여 사용 가능한 모든 책을 나열하고 책 만들기 함수를 사용하여 새 책을 만들 수 있습니다.
  • Couchbase는 EC2에서 지속성 저장소로 사용됩니다. 모든 JSON 문서는 이 데이터베이스에서 저장 및 검색됩니다.

시작해보자!

IAM 역할 만들기

IAM 역할에는 API 게이트웨이에서 이 역할을 사용하고 Lambda 기능을 실행할 수 있는 정책 및 신뢰 관계가 있습니다. 새 IAM 역할을 만들어 보겠습니다:

--역할-정책-문서 가정하기 엔티티에 역할을 맡을 수 있는 권한을 부여하는 신뢰 관계 정책 문서를 정의합니다. trust.json 에 있습니다. github.com/arun-gupta/serverless/blob/master/aws/microservice/trust.json 처럼 보입니다:

이 신뢰 관계를 통해 Lambda 함수와 API 게이트웨이가 실행 중에 이 역할을 맡을 수 있습니다. 정책을 이 역할에 다음과 같이 연결합니다:

policy.json 에 있습니다. github.com/arun-gupta/serverless/blob/master/aws/microservice/policy.json 처럼 보입니다:

이 관대한 정책은 모든 리소스에 대해 CloudWatch에서 생성된 로그에 대한 모든 권한을 허용합니다. 또한 모든 리소스에 대한 모든 Lambda 및 API 게이트웨이 권한을 허용합니다. 일반적으로 특정 리소스에는 필요한 정책만 부여됩니다.

람다 함수 만들기

람다 함수를 만드는 자세한 단계는 다음 문서에 설명되어 있습니다. AWS Lambda 및 Java를 사용한 서버리스 FaaS. 이 사례에 필요한 두 개의 람다 함수를 만들어 보겠습니다:

이 기능에서 주목해야 할 몇 가지 주요 항목은 다음과 같습니다:

  • IAM 역할 마이크로서비스 역할 이전 단계에서 생성된 것이 여기에 명시적으로 지정됩니다.
  • 핸들러는 org.sample.serverless.aws.couchbase.BucketGetAll 클래스입니다. 이 클래스는 다음을 사용하여 정의된 카우치베이스 데이터베이스를 쿼리합니다. COUCHBASE_HOST 환경 변수입니다.

두 번째 람다 함수를 만듭니다:

이 함수의 핸들러는 org.sample.serverless.aws.couchbase.BucketPost 클래스입니다. 이 클래스는 다음과 같이 식별되는 Couchbase 데이터베이스에 새 JSON 문서를 생성합니다. COUCHBASE_HOST 환경 변수를 사용할 수 있습니다. 이러한 클래스의 전체 소스 코드는 다음 링크에서 확인할 수 있습니다. github.com/arun-gupta/serverless/tree/master/aws/microservice/microservice-http-endpoint.

API 게이트웨이 리소스

Amazon API 게이트웨이를 사용하여 API 생성 및 테스트하기 그리고 람다 함수를 노출하는 API 빌드하기 에서 API 게이트웨이와 람다 함수를 사용하여 강력한 백엔드 시스템을 구축하는 방법에 대한 자세한 단계와 설명을 제공합니다. 이 블로그에서는 단계를 간략하게 요약하여 설명합니다. API 게이트웨이 리소스를 만들어 보겠습니다.

  1. 첫 번째 단계는 API를 만드는 것입니다:

    출력은 다음과 같이 표시됩니다:

    의 값은 id 속성은 API ID입니다. 우리의 경우, 이것은 lb2qgujjif.
  2. 다음 AWS CLI 호출에 필요하므로 생성된 API의 ROOT ID를 찾습니다:

    출력 결과가 표시됩니다:

    가치 id 속성은 ROOT ID입니다. 이는 최상위 리소스에 대한 PARENT ID이기도 합니다.
  3. 리소스 만들기

    출력 결과가 표시됩니다:

    가치 id 속성은 리소스 ID입니다.

API ID와 RESOURCE ID는 이후 AWS CLI 호출에 사용됩니다.

API 게이트웨이 POST 방법

이제 리소스가 생성되었으므로 HTTP를 생성해 보겠습니다. POST 메서드에 대해 설명합니다.

  1. 만들기 POST 메서드

    를 클릭해 응답을 확인합니다:
  2. 람다 함수를 POST 메서드의 대상으로 설정합니다:

    다음을 교체해야 합니다. 에 AWS 계정 ID를 입력합니다. 여기에서도 이전 섹션의 API ID와 리소스 ID가 사용됩니다. --uri 는 통합 입력의 URI를 지정하는 데 사용됩니다. URI의 형식은 고정되어 있습니다. 이 CLI는 결과를 다음과 같이 표시합니다:
  3. 설정 콘텐츠 유형 POST 메소드 응답의 비율입니다:

    를 클릭해 응답을 확인합니다:
  4. 설정 콘텐츠 유형 POST 방식 통합 응답의 비율입니다:

    를 클릭해 응답을 확인합니다:
  5. API 배포

    를 클릭하여 응답을 확인합니다.
  6. API 게이트웨이가 람다 함수를 호출할 수 있는 권한을 부여합니다:

    또한 배포된 API에 권한을 부여합니다:
  7. API 메소드를 테스트합니다:

    를 클릭해 응답을 확인합니다:

    가치 상태 속성이 200이면 호출이 성공했음을 나타냅니다. 의 값 로그 속성은 CloudWatch 로그의 로그 문을 보여줍니다. 자세한 로그는 다음을 사용하여 얻을 수도 있습니다. aws logs filter-log-events --log-group /aws/lambda/MicroservicePost.
  8. 이 명령은 Couchbase에 단일 JSON 문서를 저장합니다. 이것은 쉽게 확인할 수 있습니다. Couchbase CLI 도구 cbq로 Couchbase 서버에 연결합니다:

    다음에 기본 인덱스를 만듭니다. 기본값 버킷을 쿼리하는 데 필요하므로 절 없이 버킷을 쿼리해야 합니다:
  9. 쓰기 N1QL 쿼리를 사용하여 데이터에 액세스합니다:

    결과에는 람다 함수에 의해 저장된 JSON 문서가 표시됩니다.

API 게이트웨이 GET 메서드

HTTP를 만들어 보겠습니다. GET 메서드를 호출합니다:

  1. 만들기 GET 메서드를 사용합니다:
  2. 올바른 람다 함수를 GET의 대상으로 설정합니다:
  3. 설정 콘텐츠 유형 GET 메서드 응답을 반환합니다:
  4. 설정 콘텐츠 유형 GET 메서드 통합 응답의 비율입니다:
  5. API 게이트웨이가 람다 함수를 호출할 수 있는 권한을 부여합니다.
  6. 배포된 API에 권한을 부여합니다:
  7. 방법을 테스트합니다:

    를 클릭하여 출력을 확인합니다:

    다시 한 번 200 상태 코드는 호출이 성공했음을 나타냅니다. 자세한 로그는 다음을 사용하여 얻을 수 있습니다. aws logs filter-log-events --log-group /aws/lambda/MicroservicePost.

이 블로그에서는 간단한 POST와 GET 메서드 하나만 설명합니다. 다른 HTTP 메서드도 이 마이크로서비스에 매우 쉽게 포함할 수 있습니다.

API 게이트웨이 및 람다 참조

작성자

게시자 Arun Gupta, 개발자 지원 부문 부사장, Couchbase

아룬 굽타는 Couchbase의 개발자 지원 담당 부사장입니다. 그는 Sun, Oracle, Red Hat에서 10년 이상 개발자 커뮤니티를 구축하고 이끌었습니다. 그는 콘텐츠, 마케팅 캠페인 및 프로그램의 전략, 계획 및 실행을 개발 및 실행하는 교차 기능 팀을 이끄는 데 있어 깊은 전문성을 보유하고 있습니다. 그 전에는 Sun에서 엔지니어링 팀을 이끌었으며 Java EE 팀의 창립 멤버입니다. Gupta는 기술에 관한 블로그 게시물을 2,000개 이상 작성했습니다. 40여 개국에서 수많은 주제에 대해 광범위한 강연 경험을 가지고 있으며, 3년 연속 JavaOne Rock Star로 선정되었습니다. 또한 미국에서 Devoxx4Kids 지부를 설립하여 어린이를 대상으로 한 기술 교육을 지속적으로 장려하고 있습니다. 기술에 관한 여러 권의 책을 저술했으며, 열렬한 마라토너이자 지구를 횡단하는 사람, Java 챔피언, JUG 리더, NetBeans 드림팀 멤버, Docker 캡틴이기도 한 그는 @arungupta에서 쉽게 만나볼 수 있습니다.

댓글 하나

  1. 안녕하세요 @Arun,

    람다와 함께 Couchbase NodeJs V2.6.3 SDK를 사용할 수 있나요?

    최신 SDK로 시도할 때 다음과 같은 오류가 발생합니다.

    "오류 메시지": "/var/lang/lib/libstdc++.so.6: 버전 `CXXABI_1.3.9`를 찾을 수 없습니다(/var/task/node_modules/couchbase/build/Release/couchbase_impl.node에서 필요).",

댓글 남기기