Consul 서비스 메시에서 AWS Lambda 함수 호출
Consul 서비스 메시에서 AWS Lambda 함수 호출
이 주제에서는 Consul 서비스 메시에서 AWS Lambda 함수를 호출하는 방법을 설명해요. Lambda 함수는 종료 게이트웨이(terminating gateway)를 통해(권장) 또는 서비스 메시 프록시에서 직접 호출할 수 있어요.
출처: 문서
본문
이 주제에서는 Consul 서비스 메시에서 AWS Lambda 함수를 호출하는 방법을 설명합니다.
개요 (Overview)
Consul 서비스 메시에서 종료 게이트웨이(권장)를 통해 또는 서비스 메시 프록시에서 직접 Lambda 함수를 호출할 수 있습니다.
종료 게이트웨이 (Terminating Gateway)
종료 게이트웨이를 통해 Lambda 함수를 호출하는 것을 권장합니다. 이 방법은 교차 데이터센터 통신, 투명 프록시, 의도(intentions), 그리고 다른 모든 Consul 서비스 메시 기능을 지원합니다.
종료 게이트웨이는 함수를 호출하기 위해 적절한 IAM 권한을 갖고 있어야 합니다.
다음 다이어그램은 호출 절차를 보여줍니다.
- 로컬 서비스 메시 프록시에 HTTP 요청을 보냅니다.
- 서비스 메시 프록시가 요청을 종료 게이트웨이로 전달합니다.
- 종료 게이트웨이가 함수를 호출합니다.
서비스 메시 프록시 (Service Mesh Proxy)
서비스의 메시 사이드카 프록시에서 Lambda 함수를 직접 호출할 수도 있습니다. 이 방법에는 다음과 같은 제한 사항이 있습니다.
- 의도(intentions)는 지원되지 않습니다. Consul은 연결을 수신할 때 제시되는 클라이언트 인증서를 검증하여 의도를 적용합니다. Lambda는 클라이언트 인증서 검증을 지원하지 않으므로, Consul은 이 방법으로 의도를 지원할 수 없습니다.
- 투명 프록시는 지원되지 않습니다. Lambda 서비스가 프록시에 등록되어 있지 않기 때문입니다.
이 방법은 Lambda 함수를 호출하려면 AWS IAM 권한이 필요하므로 안전합니다. 또한 Lambda 리소스를 호출할 때 모든 통신은 Amazon TLS로 암호화됩니다.
Envoy 사이드카 프록시는 함수를 호출하기 위해 올바른 AWS IAM 자격 증명을 갖고 있어야 합니다. 자격 증명은 환경 변수, EC2 메타데이터 또는 ECS 태스크 메타데이터에 정의할 수 있습니다.
다음 다이어그램은 호출 절차를 보여줍니다.
- 로컬 서비스 메시 프록시에 HTTP 요청을 보냅니다.
- 서비스 메시 프록시가 Lambda를 호출합니다.
Lambda 함수 호출 (Invoke a Lambda Function)
Lambda 함수를 호출하기 전에 Lambda 함수를 호출하는 데 사용되는 서비스와 Lambda에서 실행되는 서비스를 Consul에 등록하세요(지침은 registration 참조). 함수 호출에 사용되는 서비스는 서비스 메시에 배포되어야 합니다.
- 호출 서비스가 Lambda 서비스를 업스트림으로 사용하도록 업데이트합니다. 다음 예시에서는 호출 서비스(
api)의destination_name이authentication이라는 Lambda 서비스를 가리킵니다.
upstreams {
local_bind_port = 2345
destination_name = "authentication"
}
consul services register명령을 실행하여 구성 정보를 저장합니다.
$ consul services register api-sidecar-proxy.hcl
- 업스트림 서비스를 호출하여 Lambda 함수를 실행합니다. 다음 예시에서는
api서비스가localhost:2345에서authentication서비스를 호출합니다.
$ curl https://localhost:2345