EndpointArgs

data class EndpointArgs(val customNetworkInterfaceName: Output<String>? = null, val ipConfigurations: Output<List<EndpointIpConfigurationArgs>>? = null, val location: Output<String>? = null, val name: Output<String>? = null, val privateDnsZoneGroup: Output<EndpointPrivateDnsZoneGroupArgs>? = null, val privateServiceConnection: Output<EndpointPrivateServiceConnectionArgs>? = null, val resourceGroupName: Output<String>? = null, val subnetId: Output<String>? = null, val tags: Output<Map<String, String>>? = null) : ConvertibleToJava<EndpointArgs>

Manages a Private Endpoint. Azure Private Endpoint is a network interface that connects you privately and securely to a service powered by Azure Private Link. Private Endpoint uses a private IP address from your VNet, effectively bringing the service into your VNet. The service could be an Azure service such as Azure Storage, SQL, etc. or your own Private Link Service.

Example Usage

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.network.VirtualNetwork;
import com.pulumi.azure.network.VirtualNetworkArgs;
import com.pulumi.azure.network.Subnet;
import com.pulumi.azure.network.SubnetArgs;
import com.pulumi.azure.network.PublicIp;
import com.pulumi.azure.network.PublicIpArgs;
import com.pulumi.azure.lb.LoadBalancer;
import com.pulumi.azure.lb.LoadBalancerArgs;
import com.pulumi.azure.lb.inputs.LoadBalancerFrontendIpConfigurationArgs;
import com.pulumi.azure.privatedns.LinkService;
import com.pulumi.azure.privatedns.LinkServiceArgs;
import com.pulumi.azure.privatedns.inputs.LinkServiceNatIpConfigurationArgs;
import com.pulumi.azure.privatelink.Endpoint;
import com.pulumi.azure.privatelink.EndpointArgs;
import com.pulumi.azure.privatelink.inputs.EndpointPrivateServiceConnectionArgs;
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) {
var example = new ResourceGroup("example", ResourceGroupArgs.builder()
.name("example-resources")
.location("West Europe")
.build());
var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
.name("example-network")
.addressSpaces("10.0.0.0/16")
.location(example.location())
.resourceGroupName(example.name())
.build());
var service = new Subnet("service", SubnetArgs.builder()
.name("service")
.resourceGroupName(example.name())
.virtualNetworkName(exampleVirtualNetwork.name())
.addressPrefixes("10.0.1.0/24")
.enforcePrivateLinkServiceNetworkPolicies(true)
.build());
var endpoint = new Subnet("endpoint", SubnetArgs.builder()
.name("endpoint")
.resourceGroupName(example.name())
.virtualNetworkName(exampleVirtualNetwork.name())
.addressPrefixes("10.0.2.0/24")
.enforcePrivateLinkEndpointNetworkPolicies(true)
.build());
var examplePublicIp = new PublicIp("examplePublicIp", PublicIpArgs.builder()
.name("example-pip")
.sku("Standard")
.location(example.location())
.resourceGroupName(example.name())
.allocationMethod("Static")
.build());
var exampleLoadBalancer = new LoadBalancer("exampleLoadBalancer", LoadBalancerArgs.builder()
.name("example-lb")
.sku("Standard")
.location(example.location())
.resourceGroupName(example.name())
.frontendIpConfigurations(LoadBalancerFrontendIpConfigurationArgs.builder()
.name(examplePublicIp.name())
.publicIpAddressId(examplePublicIp.id())
.build())
.build());
var exampleLinkService = new LinkService("exampleLinkService", LinkServiceArgs.builder()
.name("example-privatelink")
.location(example.location())
.resourceGroupName(example.name())
.natIpConfigurations(LinkServiceNatIpConfigurationArgs.builder()
.name(examplePublicIp.name())
.primary(true)
.subnetId(service.id())
.build())
.loadBalancerFrontendIpConfigurationIds(exampleLoadBalancer.frontendIpConfigurations().applyValue(frontendIpConfigurations -> frontendIpConfigurations[0].id()))
.build());
var exampleEndpoint = new Endpoint("exampleEndpoint", EndpointArgs.builder()
.name("example-endpoint")
.location(example.location())
.resourceGroupName(example.name())
.subnetId(endpoint.id())
.privateServiceConnection(EndpointPrivateServiceConnectionArgs.builder()
.name("example-privateserviceconnection")
.privateConnectionResourceId(exampleLinkService.id())
.isManualConnection(false)
.build())
.build());
}
}

Example HCL Configurations

  • How to conneca Private Endpoint to a Application Gateway

  • How to connect a Private Endpoint to a Cosmos MongoDB

  • How to connect a Private Endpoint to a Cosmos PostgreSQL

  • How to connect a Private Endpoint to a PostgreSQL Server

  • How to connect a Private Endpoint to a Private Link Service

  • How to connect a Private Endpoint to a Private DNS Group

  • How to connect a Private Endpoint to a Databricks Workspace

Import

Private Endpoints can be imported using the resource id, e.g.

$ pulumi import azure:privatelink/endpoint:Endpoint example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Network/privateEndpoints/endpoint1

Constructors

Link copied to clipboard
fun EndpointArgs(customNetworkInterfaceName: Output<String>? = null, ipConfigurations: Output<List<EndpointIpConfigurationArgs>>? = null, location: Output<String>? = null, name: Output<String>? = null, privateDnsZoneGroup: Output<EndpointPrivateDnsZoneGroupArgs>? = null, privateServiceConnection: Output<EndpointPrivateServiceConnectionArgs>? = null, resourceGroupName: Output<String>? = null, subnetId: Output<String>? = null, tags: Output<Map<String, String>>? = null)

Functions

Link copied to clipboard
open override fun toJava(): EndpointArgs

Properties

Link copied to clipboard
val customNetworkInterfaceName: Output<String>? = null

The custom name of the network interface attached to the private endpoint. Changing this forces a new resource to be created.

Link copied to clipboard

One or more ip_configuration blocks as defined below. This allows a static IP address to be set for this Private Endpoint, otherwise an address is dynamically allocated from the Subnet.

Link copied to clipboard
val location: Output<String>? = null

The supported Azure location where the resource exists. Changing this forces a new resource to be created.

Link copied to clipboard
val name: Output<String>? = null

Specifies the Name of the Private Endpoint. Changing this forces a new resource to be created.

Link copied to clipboard

A private_dns_zone_group block as defined below.

Link copied to clipboard

A private_service_connection block as defined below.

Link copied to clipboard
val resourceGroupName: Output<String>? = null

Specifies the Name of the Resource Group within which the Private Endpoint should exist. Changing this forces a new resource to be created.

Link copied to clipboard
val subnetId: Output<String>? = null

The ID of the Subnet from which Private IP Addresses will be allocated for this Private Endpoint. Changing this forces a new resource to be created.

Link copied to clipboard
val tags: Output<Map<String, String>>? = null

A mapping of tags to assign to the resource.