This topic describes how to specify a function from Function Compute as a backend server of Application Load Balancer (ALB). The function is used to distribute requests. You can also create a server group of the Function Compute type for your ALB instance. After you add a function to an ALB server group, requests to ALB are forwarded to Function Compute and invoke the function. After Function Compute runs the function, the responses are returned to the requesters.
ALB server groups of the Function Compute type support Function Compute 2.0. Function Compute 3.0 is not supported.
The functions used in this topic are from Function Compute 2.0.
Background information
Alibaba Cloud Function Compute is a fully managed event-driven compute service. It allows you to focus on writing and uploading code without the need to manage infrastructure resources such as servers. Function Compute allocates computing resources, runs code in an elastic and reliable way, and provides features such as log query, performance monitoring, and alerting. Function Compute is an event-driven computing service that uses a serverless architecture. Function Compute allows you to write and upload code without the need to manage infrastructure resources. With Function Compute, you can quickly create any type of applications and services and only pay for the resources actually consumed when you run your code.
After you create a function, you can specify the function as a backend server of ALB by configuring a listener and a server group. When ALB receives a request, the request is forwarded to Function Compute and invokes the function. After Function Compute runs the function, the response is returned to the requester.
You must activate Function Compute before you can use it.
Limits
The ALB instance and function must be in the same region.
Take note of the following limits when you specify a function as a backend server of ALB:
You can add only a function that processes HTTP requests.
The Date header must be included in the requests that are forwarded to Function Compute. The Date header specifies the time when a request is sent.
Each server group of the Function Compute type supports only one function.
Step 1: Create a Function Compute service
Log on to the Function Compute console.
ImportantIf you are redirected to the console of Function Compute 3.0, click Back to Function Compute 2.0 in the upper-left corner to go to the console of Function Compute 2.0.
In the left-side navigation pane, click Services and Functions.
In the top navigation bar, select the region where you want to create the Function Compute service. In this example, China (Hangzhou) is selected.
On the Services page, click Create Service to create a service.
In the Create Service panel, set the following parameters and click OK. Parameters that are not listed in the following table can use the default values.
Parameter
Description
Name
Enter a name for the Function Compute service.
The name must be 1 to 128 characters in length, and can contain letters, digits, underscores (_), and hyphens (-). It cannot start with a digit or a hyphen (-).
Description
Enter a description for the Function Compute service.
Logging
Specify whether to enable the logging feature. In this example, Enable is selected.
Enable: After you enable the logging feature, Function Compute automatically creates a project and a Logstore and delivers the logs of the function to the Logstore.
In this case, Function Compute grants the service the
AliyunFCDefaultRole
role, which is the minimum permission required for the service to access Simple Log Service. For more information about the Resource Access Management (RAM) roles of Function Compute, see Grant Function Compute permissions to access other Alibaba Cloud services.Disable: If you select this option, you cannot use Simple Log Service to store or query the logs of the function.
NoteMake sure that Simple Log Service is activated. Otherwise, you cannot enable the logging feature.
Step 2: Create a function
On the Services page, find the service that you want to manage and click Functions in the Actions column.
On the Functions page, click Create Function.
On the Create Function page, select a method to create a function based on your business requirements.
In this example, Use Built-in Runtime is selected.
In the Basic Settings, Code, and Trigger Configurations sections, set the following parameters and click Create.
The following table describes only the key parameters. Use the default values for other parameters.
Parameter
Description
Basic Settings
Function Name
Enter a name for the function.
Handler Type
Select a handler type. In this example, HTTP Handler is selected.
Handler Type: specifies that the function processes HTTP requests or WebSocket requests.
NoteALB supports only HTTP handlers.
Code
Runtime
Select a runtime environment. In this example, Node.js 14 is selected.
For more information about runtime environments supported by Function Compute, see Manage functions.
Code Upload Method
Select a method to upload the function code to Function Compute.
In this example, Use Sample Code is selected.
Trigger Configurations
Trigger Type
The selected type of trigger is displayed. In this example, HTTP Trigger is used.
A trigger specifies how a function is invoked.
Name
Enter a name for the trigger.
Request Method
Select the request methods that can be used to invoke the function. In this example, GET and POST are selected.
Authentication Method
In this example, Signature Authentication is selected. For more information, see Signature authentication.
Click the Code tab and modify the code in the code editor.
The following code block is used as an example:
varparams={ path : req.path, queries : req.queries, headers : req.headers, method : req.method, requestURI : req.url, clientIP : req.clientIP, log : ("Hello World.This is FC!"), }
On the Code tab, click Deployment Code in the upper-left corner and click Test Function.
You can view the result in the Response section after Function Compute runs the function. For more information, see Quickly create a function.
Step 3: Create a server group of the Function type
- Log on to the ALB console.
In the top navigation bar, select the region where you want to create the server group. In this example, China (Hangzhou) is selected.
In the left-side navigation pane, choose .
On the Server Group page, click Create Server Group, set the following parameters, and then click Create.
Parameter
Description
Server Group Type
Select the type of server group that you want to create. In this example, Function Compute is selected.
Server Group Name
Enter a name for the server group.
Health Check Settings
Health Check
Specify whether to enable health checks. In this example, health checks are disabled. This is the default setting.
On the Server Groups page, find the server group that you want to manage and click Modify Backend Server in the Actions column.
On the Backend Servers tab, click Add Function.
In the Add Backend Server panel, use one of the following methods to add a function and click OK.
Add a function by specifying a service
Parameter
Description
Configuration Method
Select Service.
Service
Select the Function Compute service created in Step 1.
Version
Select LATEST. By default, a newly created service runs only the LATEST version.
Function
Select the function that you created from the drop-down list. If no function is available, click Create a function to create a function. For more information, see Manage functions.
Description
Enter a description.
Add a function by specifying an Alibaba Cloud Resource Name (ARN)
Parameter
Description
Configuration Method
Select ARN from the drop-down list.
ARN
Enter the ARN of the function that you want to add.
You can copy the ARN of a function on the details page of the function in the Function Compute console. For more information, see Obtain the ARN of a function.
Description
Enter a description.
Step 4: Create an ALB instance and configure a listener
- Log on to the ALB console.
In the top navigation bar, select the region where you want to create the ALB instance. In this example, China (Hangzhou) is selected.
On the Instances page, click Create ALB.
On the Application Load Balancer buy page, set the parameters and click Buy Now.
The following section describes only the parameters that are relevant to this topic. For more information about the other parameters, see Create an ALB instance.
Region: the region in which you want to create the ALB instance. In this example, China (Hangzhou) is selected.
Network Type: the network type of the ALB instance. In this example, Internet-facing is selected.
On the Instances page, find the ALB instance that you created and click Create Listener in the Actions column.
In the Configure Listener step, configure the following parameters and click Next.
Parameter
Description
Select a listener protocol.
Select a listener protocol. In this example, HTTP is selected.
Listener Port
Enter the port on which the ALB instance listens. The ALB instance listens for requests on the specified port and then forwards the requests to backend servers. Valid values: 1 to 65535. In this example, 80 is used.
Listener Name
Enter a name for the listener.
Health Check Settings
In this example, the default advanced settings are used.
In the Server Group step, select Function Compute from the Server Group drop-down list, select the backend server group created in Step 3, and then click Next.
In the Configuration Review step, confirm the configurations and click Submit.
Step 5: Create a DNS record
In actual business scenarios, we recommend that you use CNAME records to map custom domain names to the domain name of your ALB instance.
In the left-side navigation pane, choose
.On the Instances page, copy the domain name of the ALB instance.
Perform the following steps to create a CNAME record:
NoteIf your domain name is not registered by using Alibaba Cloud Domains, you must add your domain name to Alibaba Cloud DNS before you can configure a DNS record. For more information, see Manage domain names.
Log on to the Alibaba Cloud DNS console.
On the Authoritative DNS Resolution page, find your domain name and click DNS Settings in the Actions column.
On the DNS Settings tab of the domain name details page, click Add DNS Record.
In the Add DNS Record panel, configure the parameters and click OK. The following table describes the parameters.
Parameter
Description
Record Type
Select CNAME from the drop-down list.
Hostname
Enter the prefix of the domain name. In this example, @ is entered.
NoteIf you use a root domain name, enter
@
.DNS Request Source
Select Default.
Record Value
Enter the CNAME, which is the domain name of the ALB instance.
TTL
Select a time-to-live (TTL) value for the CNAME record to be cached on the DNS server. In this example, the default value is used.
Step 6: Test network connectivity
After you complete the preceding steps, ALB is connected to Function Compute. You can perform the following operations to test the network connectivity between ALB and Function Compute.
Open the command-line interface (CLI) and run the
curl -v <Domain name>
command to query the Date header.The Date header must be included in HTTP requests to be processed by Function Compute.
Run the
curl -H "Date header" <Domain name>
command.If you receive an echo reply packet, it indicates that the ALB instance can forward requests to Function Compute and invoke the function, as shown in the following figure.
References
Function Compute 2.0 documentation:
For more information about Function Compute, see What is Function Compute?
For more information about how to update a function, see Manage functions.
For more information about how to delete a function, see Manage functions.
For more information about how to modify a Function Compute service, see Update a service.
For more information about how to delete a Function Compute service, see Manage services.
ALB documentation:
For more information about how to release an ALB instance, see Release an ALB instance.
For more information about how to delete an ALB server group, see Delete a server group.