VpcFlowLogsConfig class
VPC Flow Logs Config is a resource that lets you configure Flow Logs for Networks, Subnets, Interconnect attachments or VPN Tunnels.
Example Usage
Network Management Vpc Flow Logs Config Interconnect Basic
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const project = gcp.organizations.getProject({});
const network = new gcp.compute.Network("network", {name: "basic-interconnect-test-network"});
const router = new gcp.compute.Router("router", {
name: "basic-interconnect-test-router",
network: network.name,
bgp: {
asn: 16550,
},
});
const attachment = new gcp.compute.InterconnectAttachment("attachment", {
name: "basic-interconnect-test-id",
edgeAvailabilityDomain: "AVAILABILITY_DOMAIN_1",
type: "PARTNER",
router: router.id,
mtu: "1500",
});
const interconnect_test = new gcp.networkmanagement.VpcFlowLogsConfig("interconnect-test", {
vpcFlowLogsConfigId: "basic-interconnect-test-id",
location: "global",
interconnectAttachment: pulumi.all([project, attachment.name]).apply(([project, name]) => `projects/${project.number}/regions/us-east4/interconnectAttachments/${name}`),
});
import pulumi
import pulumi_gcp as gcp
project = gcp.organizations.get_project()
network = gcp.compute.Network("network", name="basic-interconnect-test-network")
router = gcp.compute.Router("router",
name="basic-interconnect-test-router",
network=network.name,
bgp={
"asn": 16550,
})
attachment = gcp.compute.InterconnectAttachment("attachment",
name="basic-interconnect-test-id",
edge_availability_domain="AVAILABILITY_DOMAIN_1",
type="PARTNER",
router=router.id,
mtu="1500")
interconnect_test = gcp.networkmanagement.VpcFlowLogsConfig("interconnect-test",
vpc_flow_logs_config_id="basic-interconnect-test-id",
location="global",
interconnect_attachment=attachment.name.apply(lambda name: f"projects/{project.number}/regions/us-east4/interconnectAttachments/{name}"))
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var project = Gcp.Organizations.GetProject.Invoke();
var network = new Gcp.Compute.Network("network", new()
{
Name = "basic-interconnect-test-network",
});
var router = new Gcp.Compute.Router("router", new()
{
Name = "basic-interconnect-test-router",
Network = network.Name,
Bgp = new Gcp.Compute.Inputs.RouterBgpArgs
{
Asn = 16550,
},
});
var attachment = new Gcp.Compute.InterconnectAttachment("attachment", new()
{
Name = "basic-interconnect-test-id",
EdgeAvailabilityDomain = "AVAILABILITY_DOMAIN_1",
Type = "PARTNER",
Router = router.Id,
Mtu = "1500",
});
var interconnect_test = new Gcp.NetworkManagement.VpcFlowLogsConfig("interconnect-test", new()
{
VpcFlowLogsConfigId = "basic-interconnect-test-id",
Location = "global",
InterconnectAttachment = Output.Tuple(project, attachment.Name).Apply(values =>
{
var project = values.Item1;
var name = values.Item2;
return $"projects/{project.Apply(getProjectResult => getProjectResult.Number)}/regions/us-east4/interconnectAttachments/{name}";
}),
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/networkmanagement"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
if err != nil {
return err
}
network, err := compute.NewNetwork(ctx, "network", &compute.NetworkArgs{
Name: pulumi.String("basic-interconnect-test-network"),
})
if err != nil {
return err
}
router, err := compute.NewRouter(ctx, "router", &compute.RouterArgs{
Name: pulumi.String("basic-interconnect-test-router"),
Network: network.Name,
Bgp: &compute.RouterBgpArgs{
Asn: pulumi.Int(16550),
},
})
if err != nil {
return err
}
attachment, err := compute.NewInterconnectAttachment(ctx, "attachment", &compute.InterconnectAttachmentArgs{
Name: pulumi.String("basic-interconnect-test-id"),
EdgeAvailabilityDomain: pulumi.String("AVAILABILITY_DOMAIN_1"),
Type: pulumi.String("PARTNER"),
Router: router.ID().ToIDOutput().ToStringOutput(),
Mtu: pulumi.String("1500"),
})
if err != nil {
return err
}
_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, "interconnect-test", &networkmanagement.VpcFlowLogsConfigArgs{
VpcFlowLogsConfigId: pulumi.String("basic-interconnect-test-id"),
Location: pulumi.String("global"),
InterconnectAttachment: attachment.Name.ApplyT(func(name string) (string, error) {
return fmt.Sprintf("projects/%v/regions/us-east4/interconnectAttachments/%v", project.Number, name), nil
}).(pulumi.StringOutput),
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
data "gcp_organizations_getproject" "project" {
}
resource "gcp_networkmanagement_vpcflowlogsconfig" "interconnect-test" {
vpc_flow_logs_config_id = "basic-interconnect-test-id"
location = "global"
interconnect_attachment ="projects/${data.gcp_organizations_getproject.project.number}/regions/us-east4/interconnectAttachments/${gcp_compute_interconnectattachment.attachment.name}"
}
resource "gcp_compute_network" "network" {
name = "basic-interconnect-test-network"
}
resource "gcp_compute_router" "router" {
name = "basic-interconnect-test-router"
network = gcp_compute_network.network.name
bgp = {
asn = 16550
}
}
resource "gcp_compute_interconnectattachment" "attachment" {
name = "basic-interconnect-test-id"
edge_availability_domain = "AVAILABILITY_DOMAIN_1"
type = "PARTNER"
router = gcp_compute_router.router.id
mtu = 1500
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.organizations.OrganizationsFunctions;
import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
import com.pulumi.gcp.compute.Network;
import com.pulumi.gcp.compute.NetworkArgs;
import com.pulumi.gcp.compute.Router;
import com.pulumi.gcp.compute.RouterArgs;
import com.pulumi.gcp.compute.inputs.RouterBgpArgs;
import com.pulumi.gcp.compute.InterconnectAttachment;
import com.pulumi.gcp.compute.InterconnectAttachmentArgs;
import com.pulumi.gcp.networkmanagement.VpcFlowLogsConfig;
import com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;
import java.util.ArrayList;
import java.util.Arrays;
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 project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
.build());
var network = new Network("network", NetworkArgs.builder()
.name("basic-interconnect-test-network")
.build());
var router = new Router("router", RouterArgs.builder()
.name("basic-interconnect-test-router")
.network(network.name())
.bgp(RouterBgpArgs.builder()
.asn(16550)
.build())
.build());
var attachment = new InterconnectAttachment("attachment", InterconnectAttachmentArgs.builder()
.name("basic-interconnect-test-id")
.edgeAvailabilityDomain("AVAILABILITY_DOMAIN_1")
.type("PARTNER")
.router(router.id())
.mtu("1500")
.build());
var interconnect_test = new VpcFlowLogsConfig("interconnect-test", VpcFlowLogsConfigArgs.builder()
.vpcFlowLogsConfigId("basic-interconnect-test-id")
.location("global")
.interconnectAttachment(attachment.name().applyValue(_name -> String.format("projects/%s/regions/us-east4/interconnectAttachments/%s", project.number(),_name)))
.build());
}
}
resources:
interconnect-test:
type: gcp:networkmanagement:VpcFlowLogsConfig
properties:
vpcFlowLogsConfigId: basic-interconnect-test-id
location: global
interconnectAttachment: projects/${project.number}/regions/us-east4/interconnectAttachments/${attachment.name}
network:
type: gcp:compute:Network
properties:
name: basic-interconnect-test-network
router:
type: gcp:compute:Router
properties:
name: basic-interconnect-test-router
network: ${network.name}
bgp:
asn: 16550
attachment:
type: gcp:compute:InterconnectAttachment
properties:
name: basic-interconnect-test-id
edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1
type: PARTNER
router: ${router.id}
mtu: 1500
variables:
project:
fn::invoke:
function: gcp:organizations:getProject
arguments: {}
Network Management Vpc Flow Logs Config Vpn Basic
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const project = gcp.organizations.getProject({});
const network = new gcp.compute.Network("network", {name: "basic-test-network"});
const targetGateway = new gcp.compute.VPNGateway("target_gateway", {
name: "basic-test-gateway",
network: network.id,
});
const vpnStaticIp = new gcp.compute.Address("vpn_static_ip", {name: "basic-test-address"});
const frEsp = new gcp.compute.ForwardingRule("fr_esp", {
name: "basic-test-fresp",
ipProtocol: "ESP",
ipAddress: vpnStaticIp.address,
target: targetGateway.id,
});
const frUdp500 = new gcp.compute.ForwardingRule("fr_udp500", {
name: "basic-test-fr500",
ipProtocol: "UDP",
portRange: "500",
ipAddress: vpnStaticIp.address,
target: targetGateway.id,
});
const frUdp4500 = new gcp.compute.ForwardingRule("fr_udp4500", {
name: "basic-test-fr4500",
ipProtocol: "UDP",
portRange: "4500",
ipAddress: vpnStaticIp.address,
target: targetGateway.id,
});
const tunnel = new gcp.compute.VPNTunnel("tunnel", {
name: "basic-test-tunnel",
peerIp: "15.0.0.120",
sharedSecret: "a secret message",
targetVpnGateway: targetGateway.id,
}, {
dependsOn: [
frEsp,
frUdp500,
frUdp4500,
],
});
const vpn_test = new gcp.networkmanagement.VpcFlowLogsConfig("vpn-test", {
vpcFlowLogsConfigId: "basic-test-id",
location: "global",
vpnTunnel: pulumi.all([project, tunnel.name]).apply(([project, name]) => `projects/${project.number}/regions/us-central1/vpnTunnels/${name}`),
});
const route = new gcp.compute.Route("route", {
name: "basic-test-route",
network: network.name,
destRange: "15.0.0.0/24",
priority: 1000,
nextHopVpnTunnel: tunnel.id,
});
import pulumi
import pulumi_gcp as gcp
project = gcp.organizations.get_project()
network = gcp.compute.Network("network", name="basic-test-network")
target_gateway = gcp.compute.VPNGateway("target_gateway",
name="basic-test-gateway",
network=network.id)
vpn_static_ip = gcp.compute.Address("vpn_static_ip", name="basic-test-address")
fr_esp = gcp.compute.ForwardingRule("fr_esp",
name="basic-test-fresp",
ip_protocol="ESP",
ip_address=vpn_static_ip.address,
target=target_gateway.id)
fr_udp500 = gcp.compute.ForwardingRule("fr_udp500",
name="basic-test-fr500",
ip_protocol="UDP",
port_range="500",
ip_address=vpn_static_ip.address,
target=target_gateway.id)
fr_udp4500 = gcp.compute.ForwardingRule("fr_udp4500",
name="basic-test-fr4500",
ip_protocol="UDP",
port_range="4500",
ip_address=vpn_static_ip.address,
target=target_gateway.id)
tunnel = gcp.compute.VPNTunnel("tunnel",
name="basic-test-tunnel",
peer_ip="15.0.0.120",
shared_secret="a secret message",
target_vpn_gateway=target_gateway.id,
opts = pulumi.ResourceOptions(depends_on=[
fr_esp,
fr_udp500,
fr_udp4500,
]))
vpn_test = gcp.networkmanagement.VpcFlowLogsConfig("vpn-test",
vpc_flow_logs_config_id="basic-test-id",
location="global",
vpn_tunnel=tunnel.name.apply(lambda name: f"projects/{project.number}/regions/us-central1/vpnTunnels/{name}"))
route = gcp.compute.Route("route",
name="basic-test-route",
network=network.name,
dest_range="15.0.0.0/24",
priority=1000,
next_hop_vpn_tunnel=tunnel.id)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var project = Gcp.Organizations.GetProject.Invoke();
var network = new Gcp.Compute.Network("network", new()
{
Name = "basic-test-network",
});
var targetGateway = new Gcp.Compute.VPNGateway("target_gateway", new()
{
Name = "basic-test-gateway",
Network = network.Id,
});
var vpnStaticIp = new Gcp.Compute.Address("vpn_static_ip", new()
{
Name = "basic-test-address",
});
var frEsp = new Gcp.Compute.ForwardingRule("fr_esp", new()
{
Name = "basic-test-fresp",
IpProtocol = "ESP",
IpAddress = vpnStaticIp.IPAddress,
Target = targetGateway.Id,
});
var frUdp500 = new Gcp.Compute.ForwardingRule("fr_udp500", new()
{
Name = "basic-test-fr500",
IpProtocol = "UDP",
PortRange = "500",
IpAddress = vpnStaticIp.IPAddress,
Target = targetGateway.Id,
});
var frUdp4500 = new Gcp.Compute.ForwardingRule("fr_udp4500", new()
{
Name = "basic-test-fr4500",
IpProtocol = "UDP",
PortRange = "4500",
IpAddress = vpnStaticIp.IPAddress,
Target = targetGateway.Id,
});
var tunnel = new Gcp.Compute.VPNTunnel("tunnel", new()
{
Name = "basic-test-tunnel",
PeerIp = "15.0.0.120",
SharedSecret = "a secret message",
TargetVpnGateway = targetGateway.Id,
}, new CustomResourceOptions
{
DependsOn =
{
frEsp,
frUdp500,
frUdp4500,
},
});
var vpn_test = new Gcp.NetworkManagement.VpcFlowLogsConfig("vpn-test", new()
{
VpcFlowLogsConfigId = "basic-test-id",
Location = "global",
VpnTunnel = Output.Tuple(project, tunnel.Name).Apply(values =>
{
var project = values.Item1;
var name = values.Item2;
return $"projects/{project.Apply(getProjectResult => getProjectResult.Number)}/regions/us-central1/vpnTunnels/{name}";
}),
});
var route = new Gcp.Compute.Route("route", new()
{
Name = "basic-test-route",
Network = network.Name,
DestRange = "15.0.0.0/24",
Priority = 1000,
NextHopVpnTunnel = tunnel.Id,
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/networkmanagement"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
if err != nil {
return err
}
network, err := compute.NewNetwork(ctx, "network", &compute.NetworkArgs{
Name: pulumi.String("basic-test-network"),
})
if err != nil {
return err
}
targetGateway, err := compute.NewVPNGateway(ctx, "target_gateway", &compute.VPNGatewayArgs{
Name: pulumi.String("basic-test-gateway"),
Network: network.ID().ToIDOutput().ToStringOutput(),
})
if err != nil {
return err
}
vpnStaticIp, err := compute.NewAddress(ctx, "vpn_static_ip", &compute.AddressArgs{
Name: pulumi.String("basic-test-address"),
})
if err != nil {
return err
}
frEsp, err := compute.NewForwardingRule(ctx, "fr_esp", &compute.ForwardingRuleArgs{
Name: pulumi.String("basic-test-fresp"),
IpProtocol: pulumi.String("ESP"),
IpAddress: vpnStaticIp.Address,
Target: targetGateway.ID().ToIDOutput().ToStringOutput(),
})
if err != nil {
return err
}
frUdp500, err := compute.NewForwardingRule(ctx, "fr_udp500", &compute.ForwardingRuleArgs{
Name: pulumi.String("basic-test-fr500"),
IpProtocol: pulumi.String("UDP"),
PortRange: pulumi.String("500"),
IpAddress: vpnStaticIp.Address,
Target: targetGateway.ID().ToIDOutput().ToStringOutput(),
})
if err != nil {
return err
}
frUdp4500, err := compute.NewForwardingRule(ctx, "fr_udp4500", &compute.ForwardingRuleArgs{
Name: pulumi.String("basic-test-fr4500"),
IpProtocol: pulumi.String("UDP"),
PortRange: pulumi.String("4500"),
IpAddress: vpnStaticIp.Address,
Target: targetGateway.ID().ToIDOutput().ToStringOutput(),
})
if err != nil {
return err
}
tunnel, err := compute.NewVPNTunnel(ctx, "tunnel", &compute.VPNTunnelArgs{
Name: pulumi.String("basic-test-tunnel"),
PeerIp: pulumi.String("15.0.0.120"),
SharedSecret: pulumi.String("a secret message"),
TargetVpnGateway: targetGateway.ID().ToIDOutput().ToStringOutput(),
}, pulumi.DependsOn([]pulumi.Resource{
frEsp,
frUdp500,
frUdp4500,
}))
if err != nil {
return err
}
_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, "vpn-test", &networkmanagement.VpcFlowLogsConfigArgs{
VpcFlowLogsConfigId: pulumi.String("basic-test-id"),
Location: pulumi.String("global"),
VpnTunnel: tunnel.Name.ApplyT(func(name string) (string, error) {
return fmt.Sprintf("projects/%v/regions/us-central1/vpnTunnels/%v", project.Number, name), nil
}).(pulumi.StringOutput),
})
if err != nil {
return err
}
_, err = compute.NewRoute(ctx, "route", &compute.RouteArgs{
Name: pulumi.String("basic-test-route"),
Network: network.Name,
DestRange: pulumi.String("15.0.0.0/24"),
Priority: pulumi.Int(1000),
NextHopVpnTunnel: tunnel.ID().ToIDOutput().ToStringOutput(),
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
data "gcp_organizations_getproject" "project" {
}
resource "gcp_networkmanagement_vpcflowlogsconfig" "vpn-test" {
vpc_flow_logs_config_id = "basic-test-id"
location = "global"
vpn_tunnel ="projects/${data.gcp_organizations_getproject.project.number}/regions/us-central1/vpnTunnels/${gcp_compute_vpntunnel.tunnel.name}"
}
resource "gcp_compute_vpntunnel" "tunnel" {
depends_on = [gcp_compute_forwardingrule.fr_esp, gcp_compute_forwardingrule.fr_udp500, gcp_compute_forwardingrule.fr_udp4500]
name = "basic-test-tunnel"
peer_ip = "15.0.0.120"
shared_secret = "a secret message"
target_vpn_gateway = gcp_compute_vpngateway.target_gateway.id
}
resource "gcp_compute_vpngateway" "target_gateway" {
name = "basic-test-gateway"
network = gcp_compute_network.network.id
}
resource "gcp_compute_network" "network" {
name = "basic-test-network"
}
resource "gcp_compute_address" "vpn_static_ip" {
name = "basic-test-address"
}
resource "gcp_compute_forwardingrule" "fr_esp" {
name = "basic-test-fresp"
ip_protocol = "ESP"
ip_address = gcp_compute_address.vpn_static_ip.address
target = gcp_compute_vpngateway.target_gateway.id
}
resource "gcp_compute_forwardingrule" "fr_udp500" {
name = "basic-test-fr500"
ip_protocol = "UDP"
port_range = "500"
ip_address = gcp_compute_address.vpn_static_ip.address
target = gcp_compute_vpngateway.target_gateway.id
}
resource "gcp_compute_forwardingrule" "fr_udp4500" {
name = "basic-test-fr4500"
ip_protocol = "UDP"
port_range = "4500"
ip_address = gcp_compute_address.vpn_static_ip.address
target = gcp_compute_vpngateway.target_gateway.id
}
resource "gcp_compute_route" "route" {
name = "basic-test-route"
network = gcp_compute_network.network.name
dest_range = "15.0.0.0/24"
priority = 1000
next_hop_vpn_tunnel = gcp_compute_vpntunnel.tunnel.id
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.organizations.OrganizationsFunctions;
import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
import com.pulumi.gcp.compute.Network;
import com.pulumi.gcp.compute.NetworkArgs;
import com.pulumi.gcp.compute.VPNGateway;
import com.pulumi.gcp.compute.VPNGatewayArgs;
import com.pulumi.gcp.compute.Address;
import com.pulumi.gcp.compute.AddressArgs;
import com.pulumi.gcp.compute.ForwardingRule;
import com.pulumi.gcp.compute.ForwardingRuleArgs;
import com.pulumi.gcp.compute.VPNTunnel;
import com.pulumi.gcp.compute.VPNTunnelArgs;
import com.pulumi.gcp.networkmanagement.VpcFlowLogsConfig;
import com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;
import com.pulumi.gcp.compute.Route;
import com.pulumi.gcp.compute.RouteArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.ArrayList;
import java.util.Arrays;
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 project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
.build());
var network = new Network("network", NetworkArgs.builder()
.name("basic-test-network")
.build());
var targetGateway = new VPNGateway("targetGateway", VPNGatewayArgs.builder()
.name("basic-test-gateway")
.network(network.id())
.build());
var vpnStaticIp = new Address("vpnStaticIp", AddressArgs.builder()
.name("basic-test-address")
.build());
var frEsp = new ForwardingRule("frEsp", ForwardingRuleArgs.builder()
.name("basic-test-fresp")
.ipProtocol("ESP")
.ipAddress(vpnStaticIp.address())
.target(targetGateway.id())
.build());
var frUdp500 = new ForwardingRule("frUdp500", ForwardingRuleArgs.builder()
.name("basic-test-fr500")
.ipProtocol("UDP")
.portRange("500")
.ipAddress(vpnStaticIp.address())
.target(targetGateway.id())
.build());
var frUdp4500 = new ForwardingRule("frUdp4500", ForwardingRuleArgs.builder()
.name("basic-test-fr4500")
.ipProtocol("UDP")
.portRange("4500")
.ipAddress(vpnStaticIp.address())
.target(targetGateway.id())
.build());
var tunnel = new VPNTunnel("tunnel", VPNTunnelArgs.builder()
.name("basic-test-tunnel")
.peerIp("15.0.0.120")
.sharedSecret("a secret message")
.targetVpnGateway(targetGateway.id())
.build(), CustomResourceOptions.builder()
.dependsOn(
frEsp,
frUdp500,
frUdp4500)
.build());
var vpn_test = new VpcFlowLogsConfig("vpn-test", VpcFlowLogsConfigArgs.builder()
.vpcFlowLogsConfigId("basic-test-id")
.location("global")
.vpnTunnel(tunnel.name().applyValue(_name -> String.format("projects/%s/regions/us-central1/vpnTunnels/%s", project.number(),_name)))
.build());
var route = new Route("route", RouteArgs.builder()
.name("basic-test-route")
.network(network.name())
.destRange("15.0.0.0/24")
.priority(1000)
.nextHopVpnTunnel(tunnel.id())
.build());
}
}
resources:
vpn-test:
type: gcp:networkmanagement:VpcFlowLogsConfig
properties:
vpcFlowLogsConfigId: basic-test-id
location: global
vpnTunnel: projects/${project.number}/regions/us-central1/vpnTunnels/${tunnel.name}
tunnel:
type: gcp:compute:VPNTunnel
properties:
name: basic-test-tunnel
peerIp: 15.0.0.120
sharedSecret: a secret message
targetVpnGateway: ${targetGateway.id}
options:
dependsOn:
- ${frEsp}
- ${frUdp500}
- ${frUdp4500}
targetGateway:
type: gcp:compute:VPNGateway
name: target_gateway
properties:
name: basic-test-gateway
network: ${network.id}
network:
type: gcp:compute:Network
properties:
name: basic-test-network
vpnStaticIp:
type: gcp:compute:Address
name: vpn_static_ip
properties:
name: basic-test-address
frEsp:
type: gcp:compute:ForwardingRule
name: fr_esp
properties:
name: basic-test-fresp
ipProtocol: ESP
ipAddress: ${vpnStaticIp.address}
target: ${targetGateway.id}
frUdp500:
type: gcp:compute:ForwardingRule
name: fr_udp500
properties:
name: basic-test-fr500
ipProtocol: UDP
portRange: '500'
ipAddress: ${vpnStaticIp.address}
target: ${targetGateway.id}
frUdp4500:
type: gcp:compute:ForwardingRule
name: fr_udp4500
properties:
name: basic-test-fr4500
ipProtocol: UDP
portRange: '4500'
ipAddress: ${vpnStaticIp.address}
target: ${targetGateway.id}
route:
type: gcp:compute:Route
properties:
name: basic-test-route
network: ${network.name}
destRange: 15.0.0.0/24
priority: 1000
nextHopVpnTunnel: ${tunnel.id}
variables:
project:
fn::invoke:
function: gcp:organizations:getProject
arguments: {}
Network Management Vpc Flow Logs Config Network Basic
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const project = gcp.organizations.getProject({});
const network = new gcp.compute.Network("network", {name: "basic-network-test-network"});
const network_test = new gcp.networkmanagement.VpcFlowLogsConfig("network-test", {
vpcFlowLogsConfigId: "basic-network-test-id",
location: "global",
network: pulumi.all([project, network.name]).apply(([project, name]) => `projects/${project.number}/global/networks/${name}`),
});
import pulumi
import pulumi_gcp as gcp
project = gcp.organizations.get_project()
network = gcp.compute.Network("network", name="basic-network-test-network")
network_test = gcp.networkmanagement.VpcFlowLogsConfig("network-test",
vpc_flow_logs_config_id="basic-network-test-id",
location="global",
network=network.name.apply(lambda name: f"projects/{project.number}/global/networks/{name}"))
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var project = Gcp.Organizations.GetProject.Invoke();
var network = new Gcp.Compute.Network("network", new()
{
Name = "basic-network-test-network",
});
var network_test = new Gcp.NetworkManagement.VpcFlowLogsConfig("network-test", new()
{
VpcFlowLogsConfigId = "basic-network-test-id",
Location = "global",
Network = Output.Tuple(project, network.Name).Apply(values =>
{
var project = values.Item1;
var name = values.Item2;
return $"projects/{project.Apply(getProjectResult => getProjectResult.Number)}/global/networks/{name}";
}),
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/networkmanagement"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
if err != nil {
return err
}
network, err := compute.NewNetwork(ctx, "network", &compute.NetworkArgs{
Name: pulumi.String("basic-network-test-network"),
})
if err != nil {
return err
}
_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, "network-test", &networkmanagement.VpcFlowLogsConfigArgs{
VpcFlowLogsConfigId: pulumi.String("basic-network-test-id"),
Location: pulumi.String("global"),
Network: network.Name.ApplyT(func(name string) (string, error) {
return fmt.Sprintf("projects/%v/global/networks/%v", project.Number, name), nil
}).(pulumi.StringOutput),
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
data "gcp_organizations_getproject" "project" {
}
resource "gcp_networkmanagement_vpcflowlogsconfig" "network-test" {
vpc_flow_logs_config_id = "basic-network-test-id"
location = "global"
network ="projects/${data.gcp_organizations_getproject.project.number}/global/networks/${gcp_compute_network.network.name}"
}
resource "gcp_compute_network" "network" {
name = "basic-network-test-network"
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.organizations.OrganizationsFunctions;
import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
import com.pulumi.gcp.compute.Network;
import com.pulumi.gcp.compute.NetworkArgs;
import com.pulumi.gcp.networkmanagement.VpcFlowLogsConfig;
import com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;
import java.util.ArrayList;
import java.util.Arrays;
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 project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
.build());
var network = new Network("network", NetworkArgs.builder()
.name("basic-network-test-network")
.build());
var network_test = new VpcFlowLogsConfig("network-test", VpcFlowLogsConfigArgs.builder()
.vpcFlowLogsConfigId("basic-network-test-id")
.location("global")
.network(network.name().applyValue(_name -> String.format("projects/%s/global/networks/%s", project.number(),_name)))
.build());
}
}
resources:
network-test:
type: gcp:networkmanagement:VpcFlowLogsConfig
properties:
vpcFlowLogsConfigId: basic-network-test-id
location: global
network: projects/${project.number}/global/networks/${network.name}
network:
type: gcp:compute:Network
properties:
name: basic-network-test-network
variables:
project:
fn::invoke:
function: gcp:organizations:getProject
arguments: {}
Network Management Vpc Flow Logs Config Subnet Basic
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const project = gcp.organizations.getProject({});
const network = new gcp.compute.Network("network", {
name: "basic-subnet-test-network",
autoCreateSubnetworks: false,
});
const subnetwork = new gcp.compute.Subnetwork("subnetwork", {
name: "basic-subnet-test-subnetwork",
ipCidrRange: "10.2.0.0/16",
region: "us-central1",
network: network.id,
});
const subnet_test = new gcp.networkmanagement.VpcFlowLogsConfig("subnet-test", {
vpcFlowLogsConfigId: "basic-subnet-test-id",
location: "global",
subnet: pulumi.all([project, subnetwork.name]).apply(([project, name]) => `projects/${project.number}/regions/us-central1/subnetworks/${name}`),
});
import pulumi
import pulumi_gcp as gcp
project = gcp.organizations.get_project()
network = gcp.compute.Network("network",
name="basic-subnet-test-network",
auto_create_subnetworks=False)
subnetwork = gcp.compute.Subnetwork("subnetwork",
name="basic-subnet-test-subnetwork",
ip_cidr_range="10.2.0.0/16",
region="us-central1",
network=network.id)
subnet_test = gcp.networkmanagement.VpcFlowLogsConfig("subnet-test",
vpc_flow_logs_config_id="basic-subnet-test-id",
location="global",
subnet=subnetwork.name.apply(lambda name: f"projects/{project.number}/regions/us-central1/subnetworks/{name}"))
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var project = Gcp.Organizations.GetProject.Invoke();
var network = new Gcp.Compute.Network("network", new()
{
Name = "basic-subnet-test-network",
AutoCreateSubnetworks = false,
});
var subnetwork = new Gcp.Compute.Subnetwork("subnetwork", new()
{
Name = "basic-subnet-test-subnetwork",
IpCidrRange = "10.2.0.0/16",
Region = "us-central1",
Network = network.Id,
});
var subnet_test = new Gcp.NetworkManagement.VpcFlowLogsConfig("subnet-test", new()
{
VpcFlowLogsConfigId = "basic-subnet-test-id",
Location = "global",
Subnet = Output.Tuple(project, subnetwork.Name).Apply(values =>
{
var project = values.Item1;
var name = values.Item2;
return $"projects/{project.Apply(getProjectResult => getProjectResult.Number)}/regions/us-central1/subnetworks/{name}";
}),
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/networkmanagement"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
if err != nil {
return err
}
network, err := compute.NewNetwork(ctx, "network", &compute.NetworkArgs{
Name: pulumi.String("basic-subnet-test-network"),
AutoCreateSubnetworks: pulumi.Bool(false),
})
if err != nil {
return err
}
subnetwork, err := compute.NewSubnetwork(ctx, "subnetwork", &compute.SubnetworkArgs{
Name: pulumi.String("basic-subnet-test-subnetwork"),
IpCidrRange: pulumi.String("10.2.0.0/16"),
Region: pulumi.String("us-central1"),
Network: network.ID().ToIDOutput().ToStringOutput(),
})
if err != nil {
return err
}
_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, "subnet-test", &networkmanagement.VpcFlowLogsConfigArgs{
VpcFlowLogsConfigId: pulumi.String("basic-subnet-test-id"),
Location: pulumi.String("global"),
Subnet: subnetwork.Name.ApplyT(func(name string) (string, error) {
return fmt.Sprintf("projects/%v/regions/us-central1/subnetworks/%v", project.Number, name), nil
}).(pulumi.StringOutput),
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
data "gcp_organizations_getproject" "project" {
}
resource "gcp_networkmanagement_vpcflowlogsconfig" "subnet-test" {
vpc_flow_logs_config_id = "basic-subnet-test-id"
location = "global"
subnet ="projects/${data.gcp_organizations_getproject.project.number}/regions/us-central1/subnetworks/${gcp_compute_subnetwork.subnetwork.name}"
}
resource "gcp_compute_network" "network" {
name = "basic-subnet-test-network"
auto_create_subnetworks = false
}
resource "gcp_compute_subnetwork" "subnetwork" {
name = "basic-subnet-test-subnetwork"
ip_cidr_range = "10.2.0.0/16"
region = "us-central1"
network = gcp_compute_network.network.id
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.organizations.OrganizationsFunctions;
import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
import com.pulumi.gcp.compute.Network;
import com.pulumi.gcp.compute.NetworkArgs;
import com.pulumi.gcp.compute.Subnetwork;
import com.pulumi.gcp.compute.SubnetworkArgs;
import com.pulumi.gcp.networkmanagement.VpcFlowLogsConfig;
import com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;
import java.util.ArrayList;
import java.util.Arrays;
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 project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
.build());
var network = new Network("network", NetworkArgs.builder()
.name("basic-subnet-test-network")
.autoCreateSubnetworks(false)
.build());
var subnetwork = new Subnetwork("subnetwork", SubnetworkArgs.builder()
.name("basic-subnet-test-subnetwork")
.ipCidrRange("10.2.0.0/16")
.region("us-central1")
.network(network.id())
.build());
var subnet_test = new VpcFlowLogsConfig("subnet-test", VpcFlowLogsConfigArgs.builder()
.vpcFlowLogsConfigId("basic-subnet-test-id")
.location("global")
.subnet(subnetwork.name().applyValue(_name -> String.format("projects/%s/regions/us-central1/subnetworks/%s", project.number(),_name)))
.build());
}
}
resources:
subnet-test:
type: gcp:networkmanagement:VpcFlowLogsConfig
properties:
vpcFlowLogsConfigId: basic-subnet-test-id
location: global
subnet: projects/${project.number}/regions/us-central1/subnetworks/${subnetwork.name}
network:
type: gcp:compute:Network
properties:
name: basic-subnet-test-network
autoCreateSubnetworks: false
subnetwork:
type: gcp:compute:Subnetwork
properties:
name: basic-subnet-test-subnetwork
ipCidrRange: 10.2.0.0/16
region: us-central1
network: ${network.id}
variables:
project:
fn::invoke:
function: gcp:organizations:getProject
arguments: {}
Import
VpcFlowLogsConfig can be imported using any of these accepted formats:
projects/{{project}}/locations/{{location}}/vpcFlowLogsConfigs/{{vpc_flow_logs_config_id}}{{project}}/{{location}}/{{vpc_flow_logs_config_id}}{{location}}/{{vpc_flow_logs_config_id}}
When using the pulumi import command, VpcFlowLogsConfig can be imported using one of the formats above. For example:
$ pulumi import gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig default projects/{{project}}/locations/{{location}}/vpcFlowLogsConfigs/{{vpc_flow_logs_config_id}}
$ pulumi import gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig default {{project}}/{{location}}/{{vpc_flow_logs_config_id}}
$ pulumi import gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig default {{location}}/{{vpc_flow_logs_config_id}}
Constructors
- VpcFlowLogsConfig(String name, {VpcFlowLogsConfigArgs? args, CustomResourceOptions? options})
-
Creates a new VpcFlowLogsConfig.
nameThe Pulumi resource name.argsArguments used to configure this VpcFlowLogsConfig. The set of arguments for VpcFlowLogsConfig.optionsResource options controlling this resource's behavior. - VpcFlowLogsConfig.reference(String urn)
- Creates a typed reference to an existing VpcFlowLogsConfig resource.
Properties
-
aggregationInterval
↔ Output<
String> -
Optional. The aggregation interval for the logs. Default value is
INTERVAL_5_SEC. Possible values: AGGREGATION_INTERVAL_UNSPECIFIED INTERVAL_5_SEC INTERVAL_30_SEC INTERVAL_1_MIN INTERVAL_5_MIN INTERVAL_10_MIN INTERVAL_15_MIN
latefinal
-
childResources
→ Set<
Resource> -
finalinherited
-
completionSources
↔ Map<
String, IOutputCompletionSource> -
latefinalinherited
-
createTime
↔ Output<
String> -
Output only. The time the config was created.
latefinal
-
deletionPolicy
↔ Output<
String> -
Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
When a 'terraform destroy' or 'pulumi up' would delete the resource,
the command will fail if this field is set to "PREVENT" in Terraform state.
When set to "ABANDON", the command will remove the resource from Terraform
management without updating or deleting the resource in the API.
When set to "DELETE", deleting the resource is allowed.
latefinal
-
description
↔ Output<
String?> -
Optional. The user-supplied description of the VPC Flow Logs configuration. Maximum
of 512 characters.
latefinal
-
effectiveLabels
↔ Output<
Map< String, String> > -
All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
latefinal
-
filterExpr
↔ Output<
String?> -
Optional. Export filter used to define which VPC Flow Logs should be logged.
latefinal
-
flowSampling
↔ Output<
double> -
Optional. The value of the field must be in (0, 1]. The sampling rate
of VPC Flow Logs where 1.0 means all collected logs are reported. Setting the
sampling rate to 0.0 is not allowed. If you want to disable VPC Flow Logs, use
the state field instead. Default value is 1.0.
latefinal
- hashCode → int
-
The hash code for this object.
no setterinherited
-
id
↔ Output<
String> -
getter/setter pairinherited
-
interconnectAttachment
↔ Output<
String?> -
Traffic will be logged from the Interconnect Attachment. Format: projects/{project_id}/regions/{region}/interconnectAttachments/{name}
latefinal
- isCustom → bool
-
Returns whether this resource is provider-managed.
no setterinherited
- isProtected → bool
-
Returns whether this resource is protected from deletion.
no setterinherited
- isRemote → bool
-
Whether this resource is registered as remote.
no setterinherited
- isResourceReference → bool
-
Whether this instance represents a resource value returned over RPC.
finalinherited
-
labels
↔ Output<
Map< String, String> ?> -
Optional. Resource labels to represent user-provided metadata.
latefinal
-
location
↔ Output<
String> -
Resource ID segment making up resource
name. It identifies the resource within its parent collection as described in https://google.aip.dev/122. See documentation for resource typenetworkmanagement.googleapis.com/VpcFlowLogsConfig.latefinal -
metadata
↔ Output<
String> -
Optional. Configures whether all, none or a subset of metadata fields
should be added to the reported VPC flow logs. Default value is INCLUDE_ALL_METADATA.
Possible values: METADATA_UNSPECIFIED INCLUDE_ALL_METADATA EXCLUDE_ALL_METADATA CUSTOM_METADATA
latefinal
-
metadataFields
↔ Output<
List< String> ?> -
Optional. Custom metadata fields to include in the reported VPC flow
logs. Can only be specified if "metadata" was set to CUSTOM_METADATA.
latefinal
-
name
↔ Output<
String> -
Identifier. Unique name of the configuration using the form:
projects/{project_id}/locations/global/vpcFlowLogsConfigs/{vpc_flow_logs_config_id}latefinal -
network
↔ Output<
String?> -
Traffic will be logged from VMs, VPN tunnels and Interconnect Attachments within the network. Format: projects/{project_id}/global/networks/{name}
latefinal
-
project
↔ Output<
String> -
The ID of the project in which the resource belongs.
If it is not provided, the provider project is used.
latefinal
-
pulumiLabels
↔ Output<
Map< String, String> > -
The combination of labels configured directly on the resource
and default labels configured on the provider.
latefinal
-
resourceTransforms
→ List<
ResourceTransform> -
Inherited/explicit async transforms.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
state
↔ Output<
String> -
Optional. The state of the VPC Flow Log configuration. Default value
is ENABLED. When creating a new configuration, it must be enabled.
Possible values: STATE_UNSPECIFIED ENABLED DISABLED
latefinal
-
subnet
↔ Output<
String?> -
Traffic will be logged from VMs within the subnetwork. Format: projects/{project_id}/regions/{region}/subnetworks/{name}
latefinal
-
targetResourceState
↔ Output<
String> -
Describes the state of the configured target resource for diagnostic
purposes.
Possible values:
TARGET_RESOURCE_STATE_UNSPECIFIED
TARGET_RESOURCE_EXISTS
TARGET_RESOURCE_DOES_NOT_EXIST
latefinal
-
transformations
→ List<
ResourceTransformation> -
Inherited/explicit legacy transformations.
no setterinherited
-
updateTime
↔ Output<
String> -
Output only. The time the config was updated.
latefinal
-
urn
↔ Output<
String> -
latefinalinherited
-
vpcFlowLogsConfigId
↔ Output<
String> -
Required. ID of the
VpcFlowLogsConfig.latefinal -
vpnTunnel
↔ Output<
String?> -
Traffic will be logged from the VPN Tunnel. Format: projects/{project_id}/regions/{region}/vpnTunnels/{name}
latefinal
Methods
-
failId(
Object error) → void -
Completes this resource ID with an error when registration fails.
inherited
-
failOutputs(
Object error) → void -
Completes all output properties with
error.inherited -
failUrn(
Object error) → void -
Completes this resource URN with an error when registration fails.
inherited
-
getProvider(
String moduleMember) → ProviderResource? -
Returns provider for
moduleMember's package, if configured.inherited -
getResourceName(
) → String -
Returns this resource's logical name.
inherited
-
getResourceType(
) → String -
Returns this resource's Pulumi type token.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
registerOutput<
T> (String propertyName, {Object? decoder(Object?)?, bool isSecret = false}) → Output< T> -
Registers a dynamic output property for this resource.
inherited
-
resolveId(
String? value, {required bool isKnown}) → void -
Resolves the provider-assigned ID for this resource.
inherited
-
resolveOutputs(
Struct outputs) → void -
Resolves all output properties from a monitor response payload.
inherited
-
resolveUrn(
String value) → void -
Resolves this resource's URN once assigned by the engine.
inherited
-
serializeProperties(
Map< String, dynamic> properties) → Future<Struct> -
Serializes resource properties for RPC transmission.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
get(
String name, Input< String> id, {VpcFlowLogsConfigState? state, CustomResourceOptions? options}) → VpcFlowLogsConfig -
Gets an existing VpcFlowLogsConfig resource's state with the given
nameandid.