Lambda Envoy 확장

Lambda Envoy 확장

Lambda Envoy 확장은 업스트림 종속성의 아웃바운드 트래픽을 구성하여 메시 서비스가 AWS Lambda 함수를 제대로 호출할 수 있게 해요. Lambda 함수는 카탈로그에서 다른 Consul 서비스처럼 나타난답니다.

출처: 문서

본문

Lambda Envoy 확장은 업스트림 종속성의 아웃바운드 트래픽을 구성하여 메시 서비스가 AWS Lambda 함수를 제대로 호출할 수 있게 해줍니다. Lambda 함수는 카탈로그에서 다른 Consul 서비스처럼 나타납니다.

Lambda 확장은 service-defaults를 통해서만 활성화할 수 있습니다. Consul이 Lambda 함수의 카탈로그 이름으로 service-defaults 구성 항목 이름을 사용하기 때문입니다.

구성 사양 (Configuration specifications)

Lambda Envoy 확장에는 다음 인자가 있습니다.

| 인자 | 유형 | 기본값 | 설명 | | ARN | string | 필수 | 서비스의 Lambda에 대한 AWS ARN을 지정합니다. | | InvocationMode | boolean | false | Consul이 Lambda를 synchronous 또는 asynchronous 호출 모드로 호출하도록 구성할지 결정합니다. | | PayloadPassthrough | string | synchronous | Envoy가 받는 본문이 JSON으로 변환되는지 아니면 Lambda에 직접 전달되는지 결정합니다. |

수동 Lambda 등록과 달리 Envoy 확장은 ARN에서 리전을 추론합니다.

워크플로우 (Workflow)

Lambda Envoy 확장을 사용하려면 다음 단계를 완료하세요.

  1. service-defaults를 통해 EnvoyExtensions를 구성합니다.
  2. 구성 항목을 적용합니다.

EnvoyExtensions 구성

Lambda Envoy 확장을 사용하려면 service-defaults 구성 항목을 구성하고 적용해야 합니다. Consul은 Lambda 함수의 Consul 서비스 이름으로 service default의 이름을 사용합니다. 다운스트림 서비스도 이 이름을 사용해 Lambda를 호출합니다.

다음 예시는 메시에서 lambda-1234라는 서비스를 만들어 관련 Lambda 함수를 호출할 수 있도록 Lambda Envoy 확장을 구성합니다.

lambda-envoy-extension.hcl

Kind = "service-defaults"
Name = "lambda-1234"
Protocol  = "http"
EnvoyExtensions {
  Name = "builtin/aws/lambda"
  Arguments = {
    ARN = "arn:aws:lambda:us-west-2:111111111111:function:lambda-1234"
  }
}

EnvoyExtensions의 전체 매개변수 목록은 service-defaults를 참조하세요.

참고

Lambda 확장은 service-defaults를 통해서만 활성화할 수 있습니다. Lambda Envoy 확장의 전체 인자 목록은 Configuration specification 섹션을 참조하세요.

구성 항목 적용

service-defaults 구성 항목을 적용합니다.

$ consul config write lambda-envoy-extension.hcl

예시 (Examples)

다음 예시 구성은 두 리전에서 실행되는 단일 Lambda 함수를 메시에 추가합니다. lambda-1234 서비스 이름을 사용하여 메시의 다른 서비스처럼 호출할 수 있습니다.

lambda-envoy-extension.hcl

Kind = "service-defaults"
Name = "lambda-1234"
Protocol  = "http"
EnvoyExtensions {
  Name = "builtin/aws/lambda"
  
  Arguments = {
    payloadPassthrough: false
    arn: arn:aws:lambda:us-west-2:111111111111:function:lambda-1234
  }
}
EnvoyExtensions {
  Name = "builtin/aws/lambda"

  Arguments = {
    payloadPassthrough: false
    arn: arn:aws:lambda:us-east-1:111111111111:function:lambda-1234
 }
}

더 알아보기 (Learn more)