0

서로 통신해야하는 몇 가지 서비스 (Serverless Framework에서 생성)가 있습니다. 데이터는 민감하며 인증이 필요합니다.Serverless - 서비스 간 통신 옵션?

내 현재 전략은 아래 토큰과 같은 json 웹 토큰을 사용하여 서비스 간 통신하는 각 서비스에 대한 API를 만드는 것입니다.

fM61kaav8l3y_aLC/3ZZF7nlQGyYJsZVpLLiux5d84UnAoHOqLPu4dw3W7MiGwPiyN 

서비스 간 통신을위한 다른 옵션은 무엇입니까? 이 접근법에 단점이 있습니까? 다시 말하면 요청을 인증하고 중요한 데이터를 적절히 처리해야합니다.

답변

1

동기화 또는 비동기 통신이 필요합니까? aws-lambda는 이벤트 기반 시스템으로 설계되었으므로 좋은 접근 방법은 이벤트를 사용하는 것입니다. 따라서 서비스를 분리하려면 SNS 또는 SQS을 사용할 수 있습니다.

한 서비스에서 다른 서비스로 전화를 걸려면 aws-sdk see docs을 통해 직접 람다 기능을 호출 할 수 있습니다. 따라서 API 게이트웨이 엔드 포인트를 추가하지 않으면 람다가 비공개로 유지됩니다.

귀하의 질문에 대한 더 나은 이해를 돕기 위해 귀하의 신청서에 대한 간략한 설명과 귀하가내는 전화 간호 서비스의 예를 제공해야합니다.

+0

감사합니다. 그건 의미가 있습니다. 통신은 비동기입니다. 간단한 예는 작업을 수행하는 하나의 서비스와 전자 메일을 보내는 다른 서비스입니다 (그러나 인증 된 서버 만 전자 메일을 보내는 기능을 트리거 할 수 있음). – samcorcos

+1

@samcorcos는 당신이 그 의존성을 돌리고 싶어하는 것처럼 들립니다. 전자 메일 서비스가 중단되어 전자 메일을 보내지 않으려는 경우 이 경우에 지연되기를 원합니다. 그래서 한가지 해결책은 SQS에 SendEmail 명령을 넣고 람다가 그것들을 경청하는 것입니다. 그런 식으로 람다가 오프라인 일 경우 쌓여서 보낼 전자 메일은 람다가 다시 온라인 상태 일 때 전송됩니다. – doorstuck

0

내가 알기에 당신은 주어진 서비스에서 다양한 기능을 비공개로 만들려고합니다. 이렇게하면 각 서비스에는 다음과 같은 serverless.yml 파일이있을 가능성이 높습니다. Image shows the setup for api keys used with a serverless framework rest api

이 방법이 적합하지만 ** 맞춤 인증 기관 **을 ​​사용하는 것보다 덜 바람직합니다.

맞춤형 인증 프로그램을 사용하면 타겟팅 된 AWS 람다 함수보다 먼저 AWS 람다 함수를 실행할 수 있습니다. 이것은 Microservice Architectures 또는 비즈니스 로직을 실행하기 전에 일부 권한 부여를 원할 때 유용합니다.

ReactRouter를 사용할 때 onEnter 기능에 익숙하면 Custom Authorizers 간의 논리가 비슷합니다.

구현과 관련하여 다양한 기능을 구현하기 위해 다양한 서비스가 활용되므로 기능을 AWS에 배포하고 람다 기능의 ARN을 기록하는 것을 고려하십시오. 이 링크를 따라 사용자 정의 권한 부여 프로그램에 대한 적절한 설정을보십시오.

These images show the serverless.yml file for using custom authorizers when the authorizers are not part of the service but rather deployed on lambda already

다음 GitHub의 프로젝트 AWS-노드 auth0 - 사용자 지정 권한 부여 프로그램-API/프론트 엔드

는 권한 부여의 funciton 민간 기능과 동일 서비스에있을 때 사용자 권한 부여 프로그램을 구현하는 방법의 좋은 예입니다. 상황이 약간 다르지만 권한 부여 함수 논리가 simliar라고 예상해야합니다. 프로젝트 구조 만 달라야합니다.