get Snat Entries
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
A collection of arguments for invoking getSnatEntries.
Return
A collection of values returned by getSnatEntries.
Parameters
A list of Snat Entries IDs.
A regex string to filter results by the resource name.
File name where to save data source results (after running pulumi preview
).
The name of snat entry.
The public IP of the Snat Entry.
The ID of the Snat table.
The source CIDR block of the Snat Entry.
The source vswitch ID.
The status of the Snat Entry. Valid values: Available
, Deleting
and Pending
.
See also
Return
A collection of values returned by getSnatEntries.
Parameters
Builder for com.pulumi.alicloud.vpc.kotlin.inputs.GetSnatEntriesPlainArgs.