Consul
Manual Lambda Function Registration
This topic describes how to manually register Lambda functions into Consul. Refer to Automate Lambda Function Registration for information about using the Lambda registrator to automate registration.
Requirements
Verify that your environment meets the requirements specified in Lambda Function Registration Requirements.
To manually register Lambda functions so that mesh services can invoke them, you must create and apply a service registration configuration for the Lambda function and write a service defaults configuration entry for the function.
Register a Lambda function
You can manually register Lambda functions if you are unable to automate the process using the Lambda registrator.
Create a configuration for registering the service. You can copy the following example and replace
<SERVICE_NAME>
with your Consul service name for the Lambda function:lambda.json
{ "Node": "lambdas", "SkipNodeUpdate": true, "NodeMeta": { "external-node": "true", "external-probe": "true" }, "Service": { "Service": "<SERVICE_NAME>" } }
Save the configuration to
lambda.json
.Send the configuration to the
catalog/register
API endpoint to register the service, for example:$ curl --request PUT --data @lambda.json localhost:8500/v1/catalog/register
Create the
service-defaults
configuration entry and include the AWS tags used to invoke the Lambda function in theMeta
field (refer to SupportedMeta
fields. The following example creates aservice-defaults
configuration entry namedlambda
:lambda-service-defaults.hcl
Kind = "service-defaults" Name = "lambda" Protocol = "http" Meta = { "serverless.consul.hashicorp.com/v1alpha1/lambda/enabled" = "true" "serverless.consul.hashicorp.com/v1alpha1/lambda/arn" = "<INSERT ARN HERE>" "serverless.consul.hashicorp.com/v1alpha1/lambda/payload-passthrough" = "true" "serverless.consul.hashicorp.com/v1alpha1/lambda/region" = "us-east-2" }
Issue the
consul config write
command to store the configuration entry. For example:$ consul config write lambda-service-defaults.hcl
Supported Meta
fields
The following tags are supported. The path prefix for all tags is serverless.consul.hashicorp.com/v1alpha1/lambda
. For example, specify the following tag to enable Consul to configure the service as an AWS Lambda function:
serverless.consul.hashicorp.com/v1alpha1/lambda/enabled
.
Tag | Description |
---|---|
<prefix-path>/enabled | Determines if Consul configures the service as an AWS Lambda. |
<prefix-path>/payload-passthrough | Determines if the body Envoy receives is converted to JSON or directly passed to Lambda. |
<prefix-path>/arn | Specifies the AWS ARN for the service's Lambda. |
<prefix-path>/invocation-mode | Determines if Consul configures the Lambda to be invoked using the synchronous or asynchronous invocation mode. |
<prefix-path>/region | Specifies the AWS region the Lambda is running in. |