getSnatEntries

This data source provides a list of Snat Entries owned by an Alibaba Cloud account.

NOTE: Available since 1.37.0+.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";
const config = new pulumi.Config();
const name = config.get("name") || "snat-entry-example-name";
const _default = alicloud.getZones({
availableResourceCreation: "VSwitch",
});
const fooNetwork = new alicloud.vpc.Network("foo", {
name: name,
cidrBlock: "172.16.0.0/12",
});
const fooSwitch = new alicloud.vpc.Switch("foo", {
vpcId: fooNetwork.id,
cidrBlock: "172.16.0.0/21",
availabilityZone: _default.then(_default => _default.zones?.[0]?.id),
vswitchName: name,
});
const fooNatGateway = new alicloud.vpc.NatGateway("foo", {
vpcId: fooNetwork.id,
specification: "Small",
name: name,
});
const fooEipAddress = new alicloud.ecs.EipAddress("foo", {addressName: name});
const fooEipAssociation = new alicloud.ecs.EipAssociation("foo", {
allocationId: fooEipAddress.id,
instanceId: fooNatGateway.id,
});
const fooSnatEntry = new alicloud.vpc.SnatEntry("foo", {
snatTableId: fooNatGateway.snatTableIds,
sourceVswitchId: fooSwitch.id,
snatIp: fooEipAddress.ipAddress,
});
const foo = alicloud.vpc.getSnatEntriesOutput({
snatTableId: fooSnatEntry.snatTableId,
});
import pulumi
import pulumi_alicloud as alicloud
config = pulumi.Config()
name = config.get("name")
if name is None:
name = "snat-entry-example-name"
default = alicloud.get_zones(available_resource_creation="VSwitch")
foo_network = alicloud.vpc.Network("foo",
name=name,
cidr_block="172.16.0.0/12")
foo_switch = alicloud.vpc.Switch("foo",
vpc_id=foo_network.id,
cidr_block="172.16.0.0/21",
availability_zone=default.zones[0].id,
vswitch_name=name)
foo_nat_gateway = alicloud.vpc.NatGateway("foo",
vpc_id=foo_network.id,
specification="Small",
name=name)
foo_eip_address = alicloud.ecs.EipAddress("foo", address_name=name)
foo_eip_association = alicloud.ecs.EipAssociation("foo",
allocation_id=foo_eip_address.id,
instance_id=foo_nat_gateway.id)
foo_snat_entry = alicloud.vpc.SnatEntry("foo",
snat_table_id=foo_nat_gateway.snat_table_ids,
source_vswitch_id=foo_switch.id,
snat_ip=foo_eip_address.ip_address)
foo = alicloud.vpc.get_snat_entries_output(snat_table_id=foo_snat_entry.snat_table_id)
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") ?? "snat-entry-example-name";
var @default = AliCloud.GetZones.Invoke(new()
{
AvailableResourceCreation = "VSwitch",
});
var fooNetwork = new AliCloud.Vpc.Network("foo", new()
{
Name = name,
CidrBlock = "172.16.0.0/12",
});
var fooSwitch = new AliCloud.Vpc.Switch("foo", new()
{
VpcId = fooNetwork.Id,
CidrBlock = "172.16.0.0/21",
AvailabilityZone = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id)),
VswitchName = name,
});
var fooNatGateway = new AliCloud.Vpc.NatGateway("foo", new()
{
VpcId = fooNetwork.Id,
Specification = "Small",
Name = name,
});
var fooEipAddress = new AliCloud.Ecs.EipAddress("foo", new()
{
AddressName = name,
});
var fooEipAssociation = new AliCloud.Ecs.EipAssociation("foo", new()
{
AllocationId = fooEipAddress.Id,
InstanceId = fooNatGateway.Id,
});
var fooSnatEntry = new AliCloud.Vpc.SnatEntry("foo", new()
{
SnatTableId = fooNatGateway.SnatTableIds,
SourceVswitchId = fooSwitch.Id,
SnatIp = fooEipAddress.IpAddress,
});
var foo = AliCloud.Vpc.GetSnatEntries.Invoke(new()
{
SnatTableId = fooSnatEntry.SnatTableId,
});
});
package main
import (
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ecs"
"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 := "snat-entry-example-name"
if param := cfg.Get("name"); param != "" {
name = param
}
_default, err := alicloud.GetZones(ctx, &alicloud.GetZonesArgs{
AvailableResourceCreation: pulumi.StringRef("VSwitch"),
}, nil)
if err != nil {
return err
}
fooNetwork, err := vpc.NewNetwork(ctx, "foo", &vpc.NetworkArgs{
Name: pulumi.String(name),
CidrBlock: pulumi.String("172.16.0.0/12"),
})
if err != nil {
return err
}
fooSwitch, err := vpc.NewSwitch(ctx, "foo", &vpc.SwitchArgs{
VpcId: fooNetwork.ID(),
CidrBlock: pulumi.String("172.16.0.0/21"),
AvailabilityZone: pulumi.String(_default.Zones[0].Id),
VswitchName: pulumi.String(name),
})
if err != nil {
return err
}
fooNatGateway, err := vpc.NewNatGateway(ctx, "foo", &vpc.NatGatewayArgs{
VpcId: fooNetwork.ID(),
Specification: pulumi.String("Small"),
Name: pulumi.String(name),
})
if err != nil {
return err
}
fooEipAddress, err := ecs.NewEipAddress(ctx, "foo", &ecs.EipAddressArgs{
AddressName: pulumi.String(name),
})
if err != nil {
return err
}
_, err = ecs.NewEipAssociation(ctx, "foo", &ecs.EipAssociationArgs{
AllocationId: fooEipAddress.ID(),
InstanceId: fooNatGateway.ID(),
})
if err != nil {
return err
}
fooSnatEntry, err := vpc.NewSnatEntry(ctx, "foo", &vpc.SnatEntryArgs{
SnatTableId: fooNatGateway.SnatTableIds,
SourceVswitchId: fooSwitch.ID(),
SnatIp: fooEipAddress.IpAddress,
})
if err != nil {
return err
}
_ = vpc.GetSnatEntriesOutput(ctx, vpc.GetSnatEntriesOutputArgs{
SnatTableId: fooSnatEntry.SnatTableId,
}, nil)
return nil
})
}
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.vpc.NatGateway;
import com.pulumi.alicloud.vpc.NatGatewayArgs;
import com.pulumi.alicloud.ecs.EipAddress;
import com.pulumi.alicloud.ecs.EipAddressArgs;
import com.pulumi.alicloud.ecs.EipAssociation;
import com.pulumi.alicloud.ecs.EipAssociationArgs;
import com.pulumi.alicloud.vpc.SnatEntry;
import com.pulumi.alicloud.vpc.SnatEntryArgs;
import com.pulumi.alicloud.vpc.VpcFunctions;
import com.pulumi.alicloud.vpc.inputs.GetSnatEntriesArgs;
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("snat-entry-example-name");
final var default = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableResourceCreation("VSwitch")
.build());
var fooNetwork = new Network("fooNetwork", NetworkArgs.builder()
.name(name)
.cidrBlock("172.16.0.0/12")
.build());
var fooSwitch = new Switch("fooSwitch", SwitchArgs.builder()
.vpcId(fooNetwork.id())
.cidrBlock("172.16.0.0/21")
.availabilityZone(default_.zones()[0].id())
.vswitchName(name)
.build());
var fooNatGateway = new NatGateway("fooNatGateway", NatGatewayArgs.builder()
.vpcId(fooNetwork.id())
.specification("Small")
.name(name)
.build());
var fooEipAddress = new EipAddress("fooEipAddress", EipAddressArgs.builder()
.addressName(name)
.build());
var fooEipAssociation = new EipAssociation("fooEipAssociation", EipAssociationArgs.builder()
.allocationId(fooEipAddress.id())
.instanceId(fooNatGateway.id())
.build());
var fooSnatEntry = new SnatEntry("fooSnatEntry", SnatEntryArgs.builder()
.snatTableId(fooNatGateway.snatTableIds())
.sourceVswitchId(fooSwitch.id())
.snatIp(fooEipAddress.ipAddress())
.build());
final var foo = VpcFunctions.getSnatEntries(GetSnatEntriesArgs.builder()
.snatTableId(fooSnatEntry.snatTableId())
.build());
}
}
configuration:
name:
type: string
default: snat-entry-example-name
resources:
fooNetwork:
type: alicloud:vpc:Network
name: foo
properties:
name: ${name}
cidrBlock: 172.16.0.0/12
fooSwitch:
type: alicloud:vpc:Switch
name: foo
properties:
vpcId: ${fooNetwork.id}
cidrBlock: 172.16.0.0/21
availabilityZone: ${default.zones[0].id}
vswitchName: ${name}
fooNatGateway:
type: alicloud:vpc:NatGateway
name: foo
properties:
vpcId: ${fooNetwork.id}
specification: Small
name: ${name}
fooEipAddress:
type: alicloud:ecs:EipAddress
name: foo
properties:
addressName: ${name}
fooEipAssociation:
type: alicloud:ecs:EipAssociation
name: foo
properties:
allocationId: ${fooEipAddress.id}
instanceId: ${fooNatGateway.id}
fooSnatEntry:
type: alicloud:vpc:SnatEntry
name: foo
properties:
snatTableId: ${fooNatGateway.snatTableIds}
sourceVswitchId: ${fooSwitch.id}
snatIp: ${fooEipAddress.ipAddress}
variables:
default:
fn::invoke:
function: alicloud:getZones
arguments:
availableResourceCreation: VSwitch
foo:
fn::invoke:
function: alicloud:vpc:getSnatEntries
arguments:
snatTableId: ${fooSnatEntry.snatTableId}

Return

A collection of values returned by getSnatEntries.

Parameters

argument

A collection of arguments for invoking getSnatEntries.


suspend fun getSnatEntries(ids: List<String>? = null, nameRegex: String? = null, outputFile: String? = null, snatEntryName: String? = null, snatIp: String? = null, snatTableId: String, sourceCidr: String? = null, sourceVswitchId: String? = null, status: String? = null): GetSnatEntriesResult

Return

A collection of values returned by getSnatEntries.

Parameters

ids

A list of Snat Entries IDs.

nameRegex

A regex string to filter results by the resource name.

outputFile

File name where to save data source results (after running pulumi preview).

snatEntryName

The name of snat entry.

snatIp

The public IP of the Snat Entry.

snatTableId

The ID of the Snat table.

sourceCidr

The source CIDR block of the Snat Entry.

sourceVswitchId

The source vswitch ID.

status

The status of the Snat Entry. Valid values: Available, Deleting and Pending.

See also


Return

A collection of values returned by getSnatEntries.

Parameters

argument

Builder for com.pulumi.alicloud.vpc.kotlin.inputs.GetSnatEntriesPlainArgs.

See also