1. Packages
  2. Alibaba Cloud Provider
  3. API Docs
  4. slb
  5. getRules
Alibaba Cloud v3.76.0 published on Tuesday, Apr 8, 2025 by Pulumi

alicloud.slb.getRules

Explore with Pulumi AI

Alibaba Cloud v3.76.0 published on Tuesday, Apr 8, 2025 by Pulumi

This data source provides the rules associated with a server load balancer listener.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";

const config = new pulumi.Config();
const name = config.get("name") || "slbrulebasicconfig";
const _default = alicloud.getZones({
    availableDiskCategory: "cloud_efficiency",
    availableResourceCreation: "VSwitch",
});
const defaultNetwork = new alicloud.vpc.Network("default", {
    name: name,
    cidrBlock: "172.16.0.0/16",
});
const defaultSwitch = new alicloud.vpc.Switch("default", {
    vpcId: defaultNetwork.id,
    cidrBlock: "172.16.0.0/16",
    zoneId: _default.then(_default => _default.zones?.[0]?.id),
    vswitchName: name,
});
const defaultApplicationLoadBalancer = new alicloud.slb.ApplicationLoadBalancer("default", {
    loadBalancerName: name,
    vswitchId: defaultSwitch.id,
});
const defaultListener = new alicloud.slb.Listener("default", {
    loadBalancerId: defaultApplicationLoadBalancer.id,
    backendPort: 22,
    frontendPort: 22,
    protocol: "http",
    bandwidth: 5,
    healthCheckConnectPort: 20,
});
const defaultServerGroup = new alicloud.slb.ServerGroup("default", {loadBalancerId: defaultApplicationLoadBalancer.id});
const defaultRule = new alicloud.slb.Rule("default", {
    loadBalancerId: defaultApplicationLoadBalancer.id,
    frontendPort: defaultListener.frontendPort,
    name: name,
    domain: "*.aliyun.com",
    url: "/image",
    serverGroupId: defaultServerGroup.id,
});
const sampleDs = defaultApplicationLoadBalancer.id.apply(id => alicloud.slb.getRulesOutput({
    loadBalancerId: id,
    frontendPort: 22,
}));
export const firstSlbRuleId = sampleDs.apply(sampleDs => sampleDs.slbRules?.[0]?.id);
Copy
import pulumi
import pulumi_alicloud as alicloud

config = pulumi.Config()
name = config.get("name")
if name is None:
    name = "slbrulebasicconfig"
default = alicloud.get_zones(available_disk_category="cloud_efficiency",
    available_resource_creation="VSwitch")
default_network = alicloud.vpc.Network("default",
    name=name,
    cidr_block="172.16.0.0/16")
default_switch = alicloud.vpc.Switch("default",
    vpc_id=default_network.id,
    cidr_block="172.16.0.0/16",
    zone_id=default.zones[0].id,
    vswitch_name=name)
default_application_load_balancer = alicloud.slb.ApplicationLoadBalancer("default",
    load_balancer_name=name,
    vswitch_id=default_switch.id)
default_listener = alicloud.slb.Listener("default",
    load_balancer_id=default_application_load_balancer.id,
    backend_port=22,
    frontend_port=22,
    protocol="http",
    bandwidth=5,
    health_check_connect_port=20)
default_server_group = alicloud.slb.ServerGroup("default", load_balancer_id=default_application_load_balancer.id)
default_rule = alicloud.slb.Rule("default",
    load_balancer_id=default_application_load_balancer.id,
    frontend_port=default_listener.frontend_port,
    name=name,
    domain="*.aliyun.com",
    url="/image",
    server_group_id=default_server_group.id)
sample_ds = default_application_load_balancer.id.apply(lambda id: alicloud.slb.get_rules_output(load_balancer_id=id,
    frontend_port=22))
pulumi.export("firstSlbRuleId", sample_ds.slb_rules[0].id)
Copy
package main

import (
	"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud"
	"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/slb"
	"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpc"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		cfg := config.New(ctx, "")
		name := "slbrulebasicconfig"
		if param := cfg.Get("name"); param != "" {
			name = param
		}
		_default, err := alicloud.GetZones(ctx, &alicloud.GetZonesArgs{
			AvailableDiskCategory:     pulumi.StringRef("cloud_efficiency"),
			AvailableResourceCreation: pulumi.StringRef("VSwitch"),
		}, nil)
		if err != nil {
			return err
		}
		defaultNetwork, err := vpc.NewNetwork(ctx, "default", &vpc.NetworkArgs{
			Name:      pulumi.String(name),
			CidrBlock: pulumi.String("172.16.0.0/16"),
		})
		if err != nil {
			return err
		}
		defaultSwitch, err := vpc.NewSwitch(ctx, "default", &vpc.SwitchArgs{
			VpcId:       defaultNetwork.ID(),
			CidrBlock:   pulumi.String("172.16.0.0/16"),
			ZoneId:      pulumi.String(_default.Zones[0].Id),
			VswitchName: pulumi.String(name),
		})
		if err != nil {
			return err
		}
		defaultApplicationLoadBalancer, err := slb.NewApplicationLoadBalancer(ctx, "default", &slb.ApplicationLoadBalancerArgs{
			LoadBalancerName: pulumi.String(name),
			VswitchId:        defaultSwitch.ID(),
		})
		if err != nil {
			return err
		}
		defaultListener, err := slb.NewListener(ctx, "default", &slb.ListenerArgs{
			LoadBalancerId:         defaultApplicationLoadBalancer.ID(),
			BackendPort:            pulumi.Int(22),
			FrontendPort:           pulumi.Int(22),
			Protocol:               pulumi.String("http"),
			Bandwidth:              pulumi.Int(5),
			HealthCheckConnectPort: pulumi.Int(20),
		})
		if err != nil {
			return err
		}
		defaultServerGroup, err := slb.NewServerGroup(ctx, "default", &slb.ServerGroupArgs{
			LoadBalancerId: defaultApplicationLoadBalancer.ID(),
		})
		if err != nil {
			return err
		}
		_, err = slb.NewRule(ctx, "default", &slb.RuleArgs{
			LoadBalancerId: defaultApplicationLoadBalancer.ID(),
			FrontendPort:   defaultListener.FrontendPort,
			Name:           pulumi.String(name),
			Domain:         pulumi.String("*.aliyun.com"),
			Url:            pulumi.String("/image"),
			ServerGroupId:  defaultServerGroup.ID(),
		})
		if err != nil {
			return err
		}
		sampleDs := defaultApplicationLoadBalancer.ID().ApplyT(func(id string) (slb.GetRulesResult, error) {
			return slb.GetRulesResult(interface{}(slb.GetRulesOutput(ctx, slb.GetRulesOutputArgs{
				LoadBalancerId: id,
				FrontendPort:   22,
			}, nil))), nil
		}).(slb.GetRulesResultOutput)
		ctx.Export("firstSlbRuleId", sampleDs.ApplyT(func(sampleDs slb.GetRulesResult) (*string, error) {
			return &sampleDs.SlbRules[0].Id, nil
		}).(pulumi.StringPtrOutput))
		return nil
	})
}
Copy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;

return await Deployment.RunAsync(() => 
{
    var config = new Config();
    var name = config.Get("name") ?? "slbrulebasicconfig";
    var @default = AliCloud.GetZones.Invoke(new()
    {
        AvailableDiskCategory = "cloud_efficiency",
        AvailableResourceCreation = "VSwitch",
    });

    var defaultNetwork = new AliCloud.Vpc.Network("default", new()
    {
        Name = name,
        CidrBlock = "172.16.0.0/16",
    });

    var defaultSwitch = new AliCloud.Vpc.Switch("default", new()
    {
        VpcId = defaultNetwork.Id,
        CidrBlock = "172.16.0.0/16",
        ZoneId = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id)),
        VswitchName = name,
    });

    var defaultApplicationLoadBalancer = new AliCloud.Slb.ApplicationLoadBalancer("default", new()
    {
        LoadBalancerName = name,
        VswitchId = defaultSwitch.Id,
    });

    var defaultListener = new AliCloud.Slb.Listener("default", new()
    {
        LoadBalancerId = defaultApplicationLoadBalancer.Id,
        BackendPort = 22,
        FrontendPort = 22,
        Protocol = "http",
        Bandwidth = 5,
        HealthCheckConnectPort = 20,
    });

    var defaultServerGroup = new AliCloud.Slb.ServerGroup("default", new()
    {
        LoadBalancerId = defaultApplicationLoadBalancer.Id,
    });

    var defaultRule = new AliCloud.Slb.Rule("default", new()
    {
        LoadBalancerId = defaultApplicationLoadBalancer.Id,
        FrontendPort = defaultListener.FrontendPort,
        Name = name,
        Domain = "*.aliyun.com",
        Url = "/image",
        ServerGroupId = defaultServerGroup.Id,
    });

    var sampleDs = AliCloud.Slb.GetRules.Invoke(new()
    {
        LoadBalancerId = defaultApplicationLoadBalancer.Id,
        FrontendPort = 22,
    });

    return new Dictionary<string, object?>
    {
        ["firstSlbRuleId"] = sampleDs.Apply(getRulesResult => getRulesResult.SlbRules[0]?.Id),
    };
});
Copy
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.slb.ApplicationLoadBalancer;
import com.pulumi.alicloud.slb.ApplicationLoadBalancerArgs;
import com.pulumi.alicloud.slb.Listener;
import com.pulumi.alicloud.slb.ListenerArgs;
import com.pulumi.alicloud.slb.ServerGroup;
import com.pulumi.alicloud.slb.ServerGroupArgs;
import com.pulumi.alicloud.slb.Rule;
import com.pulumi.alicloud.slb.RuleArgs;
import com.pulumi.alicloud.slb.SlbFunctions;
import com.pulumi.alicloud.slb.inputs.GetRulesArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var config = ctx.config();
        final var name = config.get("name").orElse("slbrulebasicconfig");
        final var default = AlicloudFunctions.getZones(GetZonesArgs.builder()
            .availableDiskCategory("cloud_efficiency")
            .availableResourceCreation("VSwitch")
            .build());

        var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
            .name(name)
            .cidrBlock("172.16.0.0/16")
            .build());

        var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
            .vpcId(defaultNetwork.id())
            .cidrBlock("172.16.0.0/16")
            .zoneId(default_.zones()[0].id())
            .vswitchName(name)
            .build());

        var defaultApplicationLoadBalancer = new ApplicationLoadBalancer("defaultApplicationLoadBalancer", ApplicationLoadBalancerArgs.builder()
            .loadBalancerName(name)
            .vswitchId(defaultSwitch.id())
            .build());

        var defaultListener = new Listener("defaultListener", ListenerArgs.builder()
            .loadBalancerId(defaultApplicationLoadBalancer.id())
            .backendPort(22)
            .frontendPort(22)
            .protocol("http")
            .bandwidth(5)
            .healthCheckConnectPort("20")
            .build());

        var defaultServerGroup = new ServerGroup("defaultServerGroup", ServerGroupArgs.builder()
            .loadBalancerId(defaultApplicationLoadBalancer.id())
            .build());

        var defaultRule = new Rule("defaultRule", RuleArgs.builder()
            .loadBalancerId(defaultApplicationLoadBalancer.id())
            .frontendPort(defaultListener.frontendPort())
            .name(name)
            .domain("*.aliyun.com")
            .url("/image")
            .serverGroupId(defaultServerGroup.id())
            .build());

        final var sampleDs = SlbFunctions.getRules(GetRulesArgs.builder()
            .loadBalancerId(defaultApplicationLoadBalancer.id())
            .frontendPort(22)
            .build());

        ctx.export("firstSlbRuleId", sampleDs.applyValue(getRulesResult -> getRulesResult).applyValue(sampleDs -> sampleDs.applyValue(getRulesResult -> getRulesResult.slbRules()[0].id())));
    }
}
Copy
configuration:
  name:
    type: string
    default: slbrulebasicconfig
resources:
  defaultNetwork:
    type: alicloud:vpc:Network
    name: default
    properties:
      name: ${name}
      cidrBlock: 172.16.0.0/16
  defaultSwitch:
    type: alicloud:vpc:Switch
    name: default
    properties:
      vpcId: ${defaultNetwork.id}
      cidrBlock: 172.16.0.0/16
      zoneId: ${default.zones[0].id}
      vswitchName: ${name}
  defaultApplicationLoadBalancer:
    type: alicloud:slb:ApplicationLoadBalancer
    name: default
    properties:
      loadBalancerName: ${name}
      vswitchId: ${defaultSwitch.id}
  defaultListener:
    type: alicloud:slb:Listener
    name: default
    properties:
      loadBalancerId: ${defaultApplicationLoadBalancer.id}
      backendPort: 22
      frontendPort: 22
      protocol: http
      bandwidth: 5
      healthCheckConnectPort: '20'
  defaultServerGroup:
    type: alicloud:slb:ServerGroup
    name: default
    properties:
      loadBalancerId: ${defaultApplicationLoadBalancer.id}
  defaultRule:
    type: alicloud:slb:Rule
    name: default
    properties:
      loadBalancerId: ${defaultApplicationLoadBalancer.id}
      frontendPort: ${defaultListener.frontendPort}
      name: ${name}
      domain: '*.aliyun.com'
      url: /image
      serverGroupId: ${defaultServerGroup.id}
variables:
  default:
    fn::invoke:
      function: alicloud:getZones
      arguments:
        availableDiskCategory: cloud_efficiency
        availableResourceCreation: VSwitch
  sampleDs:
    fn::invoke:
      function: alicloud:slb:getRules
      arguments:
        loadBalancerId: ${defaultApplicationLoadBalancer.id}
        frontendPort: 22
outputs:
  firstSlbRuleId: ${sampleDs.slbRules[0].id}
Copy

Using getRules

Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.

function getRules(args: GetRulesArgs, opts?: InvokeOptions): Promise<GetRulesResult>
function getRulesOutput(args: GetRulesOutputArgs, opts?: InvokeOptions): Output<GetRulesResult>
Copy
def get_rules(frontend_port: Optional[int] = None,
              ids: Optional[Sequence[str]] = None,
              load_balancer_id: Optional[str] = None,
              name_regex: Optional[str] = None,
              output_file: Optional[str] = None,
              opts: Optional[InvokeOptions] = None) -> GetRulesResult
def get_rules_output(frontend_port: Optional[pulumi.Input[int]] = None,
              ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
              load_balancer_id: Optional[pulumi.Input[str]] = None,
              name_regex: Optional[pulumi.Input[str]] = None,
              output_file: Optional[pulumi.Input[str]] = None,
              opts: Optional[InvokeOptions] = None) -> Output[GetRulesResult]
Copy
func GetRules(ctx *Context, args *GetRulesArgs, opts ...InvokeOption) (*GetRulesResult, error)
func GetRulesOutput(ctx *Context, args *GetRulesOutputArgs, opts ...InvokeOption) GetRulesResultOutput
Copy

> Note: This function is named GetRules in the Go SDK.

public static class GetRules 
{
    public static Task<GetRulesResult> InvokeAsync(GetRulesArgs args, InvokeOptions? opts = null)
    public static Output<GetRulesResult> Invoke(GetRulesInvokeArgs args, InvokeOptions? opts = null)
}
Copy
public static CompletableFuture<GetRulesResult> getRules(GetRulesArgs args, InvokeOptions options)
public static Output<GetRulesResult> getRules(GetRulesArgs args, InvokeOptions options)
Copy
fn::invoke:
  function: alicloud:slb/getRules:getRules
  arguments:
    # arguments dictionary
Copy

The following arguments are supported:

FrontendPort This property is required. int
SLB listener port.
LoadBalancerId This property is required. string
ID of the SLB with listener rules.
Ids Changes to this property will trigger replacement. List<string>
A list of rules IDs to filter results.
NameRegex Changes to this property will trigger replacement. string
A regex string to filter results by rule name.
OutputFile string
File name where to save data source results (after running pulumi preview).
FrontendPort This property is required. int
SLB listener port.
LoadBalancerId This property is required. string
ID of the SLB with listener rules.
Ids Changes to this property will trigger replacement. []string
A list of rules IDs to filter results.
NameRegex Changes to this property will trigger replacement. string
A regex string to filter results by rule name.
OutputFile string
File name where to save data source results (after running pulumi preview).
frontendPort This property is required. Integer
SLB listener port.
loadBalancerId This property is required. String
ID of the SLB with listener rules.
ids Changes to this property will trigger replacement. List<String>
A list of rules IDs to filter results.
nameRegex Changes to this property will trigger replacement. String
A regex string to filter results by rule name.
outputFile String
File name where to save data source results (after running pulumi preview).
frontendPort This property is required. number
SLB listener port.
loadBalancerId This property is required. string
ID of the SLB with listener rules.
ids Changes to this property will trigger replacement. string[]
A list of rules IDs to filter results.
nameRegex Changes to this property will trigger replacement. string
A regex string to filter results by rule name.
outputFile string
File name where to save data source results (after running pulumi preview).
frontend_port This property is required. int
SLB listener port.
load_balancer_id This property is required. str
ID of the SLB with listener rules.
ids Changes to this property will trigger replacement. Sequence[str]
A list of rules IDs to filter results.
name_regex Changes to this property will trigger replacement. str
A regex string to filter results by rule name.
output_file str
File name where to save data source results (after running pulumi preview).
frontendPort This property is required. Number
SLB listener port.
loadBalancerId This property is required. String
ID of the SLB with listener rules.
ids Changes to this property will trigger replacement. List<String>
A list of rules IDs to filter results.
nameRegex Changes to this property will trigger replacement. String
A regex string to filter results by rule name.
outputFile String
File name where to save data source results (after running pulumi preview).

getRules Result

The following output properties are available:

FrontendPort int
Id string
The provider-assigned unique ID for this managed resource.
Ids List<string>
A list of SLB listener rules IDs.
LoadBalancerId string
Names List<string>
A list of SLB listener rules names.
SlbRules List<Pulumi.AliCloud.Slb.Outputs.GetRulesSlbRule>
A list of SLB listener rules. Each element contains the following attributes:
NameRegex string
OutputFile string
FrontendPort int
Id string
The provider-assigned unique ID for this managed resource.
Ids []string
A list of SLB listener rules IDs.
LoadBalancerId string
Names []string
A list of SLB listener rules names.
SlbRules []GetRulesSlbRule
A list of SLB listener rules. Each element contains the following attributes:
NameRegex string
OutputFile string
frontendPort Integer
id String
The provider-assigned unique ID for this managed resource.
ids List<String>
A list of SLB listener rules IDs.
loadBalancerId String
names List<String>
A list of SLB listener rules names.
slbRules List<GetRulesSlbRule>
A list of SLB listener rules. Each element contains the following attributes:
nameRegex String
outputFile String
frontendPort number
id string
The provider-assigned unique ID for this managed resource.
ids string[]
A list of SLB listener rules IDs.
loadBalancerId string
names string[]
A list of SLB listener rules names.
slbRules GetRulesSlbRule[]
A list of SLB listener rules. Each element contains the following attributes:
nameRegex string
outputFile string
frontend_port int
id str
The provider-assigned unique ID for this managed resource.
ids Sequence[str]
A list of SLB listener rules IDs.
load_balancer_id str
names Sequence[str]
A list of SLB listener rules names.
slb_rules Sequence[GetRulesSlbRule]
A list of SLB listener rules. Each element contains the following attributes:
name_regex str
output_file str
frontendPort Number
id String
The provider-assigned unique ID for this managed resource.
ids List<String>
A list of SLB listener rules IDs.
loadBalancerId String
names List<String>
A list of SLB listener rules names.
slbRules List<Property Map>
A list of SLB listener rules. Each element contains the following attributes:
nameRegex String
outputFile String

Supporting Types

GetRulesSlbRule

Domain This property is required. string
Domain name in the HTTP request where the rule applies (e.g. "*.aliyun.com").
Id This property is required. string
Rule ID.
Name This property is required. string
Rule name.
ServerGroupId This property is required. string
ID of the linked VServer group.
Url This property is required. string
Path in the HTTP request where the rule applies (e.g. "/image").
Domain This property is required. string
Domain name in the HTTP request where the rule applies (e.g. "*.aliyun.com").
Id This property is required. string
Rule ID.
Name This property is required. string
Rule name.
ServerGroupId This property is required. string
ID of the linked VServer group.
Url This property is required. string
Path in the HTTP request where the rule applies (e.g. "/image").
domain This property is required. String
Domain name in the HTTP request where the rule applies (e.g. "*.aliyun.com").
id This property is required. String
Rule ID.
name This property is required. String
Rule name.
serverGroupId This property is required. String
ID of the linked VServer group.
url This property is required. String
Path in the HTTP request where the rule applies (e.g. "/image").
domain This property is required. string
Domain name in the HTTP request where the rule applies (e.g. "*.aliyun.com").
id This property is required. string
Rule ID.
name This property is required. string
Rule name.
serverGroupId This property is required. string
ID of the linked VServer group.
url This property is required. string
Path in the HTTP request where the rule applies (e.g. "/image").
domain This property is required. str
Domain name in the HTTP request where the rule applies (e.g. "*.aliyun.com").
id This property is required. str
Rule ID.
name This property is required. str
Rule name.
server_group_id This property is required. str
ID of the linked VServer group.
url This property is required. str
Path in the HTTP request where the rule applies (e.g. "/image").
domain This property is required. String
Domain name in the HTTP request where the rule applies (e.g. "*.aliyun.com").
id This property is required. String
Rule ID.
name This property is required. String
Rule name.
serverGroupId This property is required. String
ID of the linked VServer group.
url This property is required. String
Path in the HTTP request where the rule applies (e.g. "/image").

Package Details

Repository
Alibaba Cloud pulumi/pulumi-alicloud
License
Apache-2.0
Notes
This Pulumi package is based on the alicloud Terraform Provider.
Alibaba Cloud v3.76.0 published on Tuesday, Apr 8, 2025 by Pulumi