Vpc Peering Connection Args
Provides a resource to manage a VPC peering connection.
NOTE on VPC Peering Connections and VPC Peering Connection Options: This provider provides both a standalone VPC Peering Connection Options and a VPC Peering Connection resource with
accepter
andrequester
attributes. Do not manage options for the same VPC peering connection in both a VPC Peering Connection resource and a VPC Peering Connection Options resource. Doing so will cause a conflict of options and will overwrite the options. Using a VPC Peering Connection Options resource decouples management of the connection options from management of the VPC Peering Connection and allows options to be set correctly in cross-account scenarios. Note: For cross-account (requester's AWS account differs from the accepter's AWS account) or inter-region VPC Peering Connections use theaws.ec2.VpcPeeringConnection
resource to manage the requester's side of the connection and use theaws.ec2.VpcPeeringConnectionAccepter
resource to manage the accepter's side of the connection. Note: Creating multipleaws.ec2.VpcPeeringConnection
resources with the samepeer_vpc_id
andvpc_id
will not produce an error. Instead, AWS will return the connectionid
that already exists, resulting in multipleaws.ec2.VpcPeeringConnection
resources with the sameid
.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const foo = new aws.ec2.VpcPeeringConnection("foo", {
peerOwnerId: peerOwnerId,
peerVpcId: bar.id,
vpcId: fooAwsVpc.id,
});
import pulumi
import pulumi_aws as aws
foo = aws.ec2.VpcPeeringConnection("foo",
peer_owner_id=peer_owner_id,
peer_vpc_id=bar["id"],
vpc_id=foo_aws_vpc["id"])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var foo = new Aws.Ec2.VpcPeeringConnection("foo", new()
{
PeerOwnerId = peerOwnerId,
PeerVpcId = bar.Id,
VpcId = fooAwsVpc.Id,
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := ec2.NewVpcPeeringConnection(ctx, "foo", &ec2.VpcPeeringConnectionArgs{
PeerOwnerId: pulumi.Any(peerOwnerId),
PeerVpcId: pulumi.Any(bar.Id),
VpcId: pulumi.Any(fooAwsVpc.Id),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.VpcPeeringConnection;
import com.pulumi.aws.ec2.VpcPeeringConnectionArgs;
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 foo = new VpcPeeringConnection("foo", VpcPeeringConnectionArgs.builder()
.peerOwnerId(peerOwnerId)
.peerVpcId(bar.id())
.vpcId(fooAwsVpc.id())
.build());
}
}
resources:
foo:
type: aws:ec2:VpcPeeringConnection
properties:
peerOwnerId: ${peerOwnerId}
peerVpcId: ${bar.id}
vpcId: ${fooAwsVpc.id}
Basic usage with connection options:
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const foo = new aws.ec2.VpcPeeringConnection("foo", {
peerOwnerId: peerOwnerId,
peerVpcId: bar.id,
vpcId: fooAwsVpc.id,
accepter: {
allowRemoteVpcDnsResolution: true,
},
requester: {
allowRemoteVpcDnsResolution: true,
},
});
import pulumi
import pulumi_aws as aws
foo = aws.ec2.VpcPeeringConnection("foo",
peer_owner_id=peer_owner_id,
peer_vpc_id=bar["id"],
vpc_id=foo_aws_vpc["id"],
accepter={
"allow_remote_vpc_dns_resolution": True,
},
requester={
"allow_remote_vpc_dns_resolution": True,
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var foo = new Aws.Ec2.VpcPeeringConnection("foo", new()
{
PeerOwnerId = peerOwnerId,
PeerVpcId = bar.Id,
VpcId = fooAwsVpc.Id,
Accepter = new Aws.Ec2.Inputs.VpcPeeringConnectionAccepterArgs
{
AllowRemoteVpcDnsResolution = true,
},
Requester = new Aws.Ec2.Inputs.VpcPeeringConnectionRequesterArgs
{
AllowRemoteVpcDnsResolution = true,
},
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := ec2.NewVpcPeeringConnection(ctx, "foo", &ec2.VpcPeeringConnectionArgs{
PeerOwnerId: pulumi.Any(peerOwnerId),
PeerVpcId: pulumi.Any(bar.Id),
VpcId: pulumi.Any(fooAwsVpc.Id),
Accepter: &ec2.VpcPeeringConnectionAccepterTypeArgs{
AllowRemoteVpcDnsResolution: pulumi.Bool(true),
},
Requester: &ec2.VpcPeeringConnectionRequesterArgs{
AllowRemoteVpcDnsResolution: pulumi.Bool(true),
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.VpcPeeringConnection;
import com.pulumi.aws.ec2.VpcPeeringConnectionArgs;
import com.pulumi.aws.ec2.inputs.VpcPeeringConnectionAccepterArgs;
import com.pulumi.aws.ec2.inputs.VpcPeeringConnectionRequesterArgs;
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 foo = new VpcPeeringConnection("foo", VpcPeeringConnectionArgs.builder()
.peerOwnerId(peerOwnerId)
.peerVpcId(bar.id())
.vpcId(fooAwsVpc.id())
.accepter(VpcPeeringConnectionAccepterArgs.builder()
.allowRemoteVpcDnsResolution(true)
.build())
.requester(VpcPeeringConnectionRequesterArgs.builder()
.allowRemoteVpcDnsResolution(true)
.build())
.build());
}
}
resources:
foo:
type: aws:ec2:VpcPeeringConnection
properties:
peerOwnerId: ${peerOwnerId}
peerVpcId: ${bar.id}
vpcId: ${fooAwsVpc.id}
accepter:
allowRemoteVpcDnsResolution: true
requester:
allowRemoteVpcDnsResolution: true
Basic usage with tags:
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const fooVpc = new aws.ec2.Vpc("foo", {cidrBlock: "10.1.0.0/16"});
const bar = new aws.ec2.Vpc("bar", {cidrBlock: "10.2.0.0/16"});
const foo = new aws.ec2.VpcPeeringConnection("foo", {
peerOwnerId: peerOwnerId,
peerVpcId: bar.id,
vpcId: fooVpc.id,
autoAccept: true,
tags: {
Name: "VPC Peering between foo and bar",
},
});
import pulumi
import pulumi_aws as aws
foo_vpc = aws.ec2.Vpc("foo", cidr_block="10.1.0.0/16")
bar = aws.ec2.Vpc("bar", cidr_block="10.2.0.0/16")
foo = aws.ec2.VpcPeeringConnection("foo",
peer_owner_id=peer_owner_id,
peer_vpc_id=bar.id,
vpc_id=foo_vpc.id,
auto_accept=True,
tags={
"Name": "VPC Peering between foo and bar",
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var fooVpc = new Aws.Ec2.Vpc("foo", new()
{
CidrBlock = "10.1.0.0/16",
});
var bar = new Aws.Ec2.Vpc("bar", new()
{
CidrBlock = "10.2.0.0/16",
});
var foo = new Aws.Ec2.VpcPeeringConnection("foo", new()
{
PeerOwnerId = peerOwnerId,
PeerVpcId = bar.Id,
VpcId = fooVpc.Id,
AutoAccept = true,
Tags =
{
{ "Name", "VPC Peering between foo and bar" },
},
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
fooVpc, err := ec2.NewVpc(ctx, "foo", &ec2.VpcArgs{
CidrBlock: pulumi.String("10.1.0.0/16"),
})
if err != nil {
return err
}
bar, err := ec2.NewVpc(ctx, "bar", &ec2.VpcArgs{
CidrBlock: pulumi.String("10.2.0.0/16"),
})
if err != nil {
return err
}
_, err = ec2.NewVpcPeeringConnection(ctx, "foo", &ec2.VpcPeeringConnectionArgs{
PeerOwnerId: pulumi.Any(peerOwnerId),
PeerVpcId: bar.ID(),
VpcId: fooVpc.ID(),
AutoAccept: pulumi.Bool(true),
Tags: pulumi.StringMap{
"Name": pulumi.String("VPC Peering between foo and bar"),
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.Vpc;
import com.pulumi.aws.ec2.VpcArgs;
import com.pulumi.aws.ec2.VpcPeeringConnection;
import com.pulumi.aws.ec2.VpcPeeringConnectionArgs;
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 fooVpc = new Vpc("fooVpc", VpcArgs.builder()
.cidrBlock("10.1.0.0/16")
.build());
var bar = new Vpc("bar", VpcArgs.builder()
.cidrBlock("10.2.0.0/16")
.build());
var foo = new VpcPeeringConnection("foo", VpcPeeringConnectionArgs.builder()
.peerOwnerId(peerOwnerId)
.peerVpcId(bar.id())
.vpcId(fooVpc.id())
.autoAccept(true)
.tags(Map.of("Name", "VPC Peering between foo and bar"))
.build());
}
}
resources:
foo:
type: aws:ec2:VpcPeeringConnection
properties:
peerOwnerId: ${peerOwnerId}
peerVpcId: ${bar.id}
vpcId: ${fooVpc.id}
autoAccept: true
tags:
Name: VPC Peering between foo and bar
fooVpc:
type: aws:ec2:Vpc
name: foo
properties:
cidrBlock: 10.1.0.0/16
bar:
type: aws:ec2:Vpc
properties:
cidrBlock: 10.2.0.0/16
Basic usage with region:
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const fooVpc = new aws.ec2.Vpc("foo", {cidrBlock: "10.1.0.0/16"});
const bar = new aws.ec2.Vpc("bar", {cidrBlock: "10.2.0.0/16"});
const foo = new aws.ec2.VpcPeeringConnection("foo", {
peerOwnerId: peerOwnerId,
peerVpcId: bar.id,
vpcId: fooVpc.id,
peerRegion: "us-east-1",
});
import pulumi
import pulumi_aws as aws
foo_vpc = aws.ec2.Vpc("foo", cidr_block="10.1.0.0/16")
bar = aws.ec2.Vpc("bar", cidr_block="10.2.0.0/16")
foo = aws.ec2.VpcPeeringConnection("foo",
peer_owner_id=peer_owner_id,
peer_vpc_id=bar.id,
vpc_id=foo_vpc.id,
peer_region="us-east-1")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var fooVpc = new Aws.Ec2.Vpc("foo", new()
{
CidrBlock = "10.1.0.0/16",
});
var bar = new Aws.Ec2.Vpc("bar", new()
{
CidrBlock = "10.2.0.0/16",
});
var foo = new Aws.Ec2.VpcPeeringConnection("foo", new()
{
PeerOwnerId = peerOwnerId,
PeerVpcId = bar.Id,
VpcId = fooVpc.Id,
PeerRegion = "us-east-1",
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
fooVpc, err := ec2.NewVpc(ctx, "foo", &ec2.VpcArgs{
CidrBlock: pulumi.String("10.1.0.0/16"),
})
if err != nil {
return err
}
bar, err := ec2.NewVpc(ctx, "bar", &ec2.VpcArgs{
CidrBlock: pulumi.String("10.2.0.0/16"),
})
if err != nil {
return err
}
_, err = ec2.NewVpcPeeringConnection(ctx, "foo", &ec2.VpcPeeringConnectionArgs{
PeerOwnerId: pulumi.Any(peerOwnerId),
PeerVpcId: bar.ID(),
VpcId: fooVpc.ID(),
PeerRegion: pulumi.String("us-east-1"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.Vpc;
import com.pulumi.aws.ec2.VpcArgs;
import com.pulumi.aws.ec2.VpcPeeringConnection;
import com.pulumi.aws.ec2.VpcPeeringConnectionArgs;
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 fooVpc = new Vpc("fooVpc", VpcArgs.builder()
.cidrBlock("10.1.0.0/16")
.build());
var bar = new Vpc("bar", VpcArgs.builder()
.cidrBlock("10.2.0.0/16")
.build());
var foo = new VpcPeeringConnection("foo", VpcPeeringConnectionArgs.builder()
.peerOwnerId(peerOwnerId)
.peerVpcId(bar.id())
.vpcId(fooVpc.id())
.peerRegion("us-east-1")
.build());
}
}
resources:
foo:
type: aws:ec2:VpcPeeringConnection
properties:
peerOwnerId: ${peerOwnerId}
peerVpcId: ${bar.id}
vpcId: ${fooVpc.id}
peerRegion: us-east-1
fooVpc:
type: aws:ec2:Vpc
name: foo
properties:
cidrBlock: 10.1.0.0/16
bar:
type: aws:ec2:Vpc
properties:
cidrBlock: 10.2.0.0/16
Notes
If both VPCs are not in the same AWS account and region do not enable the auto_accept
attribute. The accepter can manage its side of the connection using the aws.ec2.VpcPeeringConnectionAccepter
resource or accept the connection manually using the AWS Management Console, AWS CLI, through SDKs, etc.
Import
Using pulumi import
, import VPC Peering resources using the VPC peering id
. For example:
$ pulumi import aws:ec2/vpcPeeringConnection:VpcPeeringConnection test_connection pcx-111aaa111
Constructors
Properties
An optional configuration block that allows for VPC Peering Connection options to be set for the VPC that accepts the peering connection (a maximum of one).
Accept the peering (both VPCs need to be in the same AWS account and region).
The AWS account ID of the target peer VPC. Defaults to the account ID the 1 is currently connected to, so must be managed if connecting cross-account.
The region of the accepter VPC of the VPC Peering Connection. auto_accept
must be false
, and use the aws.ec2.VpcPeeringConnectionAccepter
to manage the accepter side.
A optional configuration block that allows for VPC Peering Connection options to be set for the VPC that requests the peering connection (a maximum of one).