awsec2

package
v2.258.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2026 License: Apache-2.0 Imports: 21 Imported by: 158

README

Amazon EC2 Construct Library

The aws-cdk-lib/aws-ec2 package contains primitives for setting up networking and instances.

import ec2 "github.com/aws/aws-cdk-go/awscdk"

VPC

Most projects need a Virtual Private Cloud to provide security by means of network partitioning. This is achieved by creating an instance of Vpc:

vpc := ec2.NewVpc(this, jsii.String("VPC"))

All default constructs require EC2 instances to be launched inside a VPC, so you should generally start by defining a VPC whenever you need to launch instances for your project.

Subnet Types

A VPC consists of one or more subnets that instances can be placed into. CDK distinguishes three different subnet types:

  • Public (SubnetType.PUBLIC) - public subnets connect directly to the Internet using an Internet Gateway. If you want your instances to have a public IP address and be directly reachable from the Internet, you must place them in a public subnet.
  • Private with Internet Access (SubnetType.PRIVATE_WITH_EGRESS) - instances in private subnets are not directly routable from the Internet, and you must provide a way to connect out to the Internet. By default, a NAT gateway is created in every public subnet for maximum availability. Be aware that you will be charged for NAT gateways. Alternatively you can set natGateways:0 and provide your own egress configuration (i.e through Transit Gateway)
  • Isolated (SubnetType.PRIVATE_ISOLATED) - isolated subnets do not route from or to the Internet, and as such do not require NAT gateways. They can only connect to or be connected to from other instances in the same VPC. A default VPC configuration will not include isolated subnets,

A default VPC configuration will create public and private subnets. However, if natGateways:0 and subnetConfiguration is undefined, default VPC configuration will create public and isolated subnets. See Advanced Subnet Configuration below for information on how to change the default subnet configuration.

Constructs using the VPC will "launch instances" (or more accurately, create Elastic Network Interfaces) into one or more of the subnets. They all accept a property called subnetSelection (sometimes called vpcSubnets) to allow you to select in what subnet to place the ENIs, usually defaulting to private subnets if the property is omitted.

If you would like to save on the cost of NAT gateways, you can use isolated subnets instead of private subnets (as described in Advanced Subnet Configuration). If you need private instances to have internet connectivity, another option is to reduce the number of NAT gateways created by setting the natGateways property to a lower value (the default is one NAT gateway per availability zone). Be aware that this may have availability implications for your application.

Read more about subnets.

Control over availability zones

By default, a VPC will spread over at most 3 Availability Zones available to it. To change the number of Availability Zones that the VPC will spread over, specify the maxAzs property when defining it.

The number of Availability Zones that are available depends on the region and account of the Stack containing the VPC. If the region and account are specified on the Stack, the CLI will look up the existing Availability Zones and get an accurate count. The result of this operation will be written to a file called cdk.context.json. You must commit this file to source control so that the lookup values are available in non-privileged environments such as CI build steps, and to ensure your template builds are repeatable.

If region and account are not specified, the stack could be deployed anywhere and it will have to make a safe choice, limiting itself to 2 Availability Zones.

Therefore, to get the VPC to spread over 3 or more availability zones, you must specify the environment where the stack will be deployed.

You can gain full control over the availability zones selection strategy by overriding the Stack's get availabilityZones() method:

// This example is only available in TypeScript

class MyStack extends Stack {

  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    // ...
  }

  get availabilityZones(): string[] {
    return ['us-west-2a', 'us-west-2b'];
  }

}

Note that overriding the get availabilityZones() method will override the default behavior for all constructs defined within the Stack.

Choosing subnets for resources

When creating resources that create Elastic Network Interfaces (such as databases or instances), there is an option to choose which subnets to place them in. For example, a VPC endpoint by default is placed into a subnet in every availability zone, but you can override which subnets to use. The property is typically called one of subnets, vpcSubnets or subnetSelection.

The example below will place the endpoint into two AZs (us-east-1a and us-east-1c), in Isolated subnets:

var vpc Vpc


ec2.NewInterfaceVpcEndpoint(this, jsii.String("VPC Endpoint"), &InterfaceVpcEndpointProps{
	Vpc: Vpc,
	Service: ec2.NewInterfaceVpcEndpointService(jsii.String("com.amazonaws.vpce.us-east-1.vpce-svc-uuddlrlrbastrtsvc"), jsii.Number(443)),
	Subnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_ISOLATED,
		AvailabilityZones: []*string{
			jsii.String("us-east-1a"),
			jsii.String("us-east-1c"),
		},
	},
})

You can also specify specific subnet objects for granular control:

var vpc Vpc
var subnet1 Subnet
var subnet2 Subnet


ec2.NewInterfaceVpcEndpoint(this, jsii.String("VPC Endpoint"), &InterfaceVpcEndpointProps{
	Vpc: Vpc,
	Service: ec2.NewInterfaceVpcEndpointService(jsii.String("com.amazonaws.vpce.us-east-1.vpce-svc-uuddlrlrbastrtsvc"), jsii.Number(443)),
	Subnets: &SubnetSelection{
		Subnets: []ISubnet{
			subnet1,
			subnet2,
		},
	},
})

Which subnets are selected is evaluated as follows:

  • subnets: if specific subnet objects are supplied, these are selected, and no other logic is used.

  • subnetType/subnetGroupName: otherwise, a set of subnets is selected by supplying either type or name:

    • subnetType will select all subnets of the given type.
    • subnetGroupName should be used to distinguish between multiple groups of subnets of the same type (for example, you may want to separate your application instances and your RDS instances into two distinct groups of Isolated subnets).
    • If neither are given, the first available subnet group of a given type that exists in the VPC will be used, in this order: Private, then Isolated, then Public. In short: by default ENIs will preferentially be placed in subnets not connected to the Internet.
  • availabilityZones/onePerAz: finally, some availability-zone based filtering may be done. This filtering by availability zones will only be possible if the VPC has been created or looked up in a non-environment agnostic stack (so account and region have been set and availability zones have been looked up).

    • availabilityZones: only the specific subnets from the selected subnet groups that are in the given availability zones will be returned.
    • onePerAz: per availability zone, a maximum of one subnet will be returned (Useful for resource types that do not allow creating two ENIs in the same availability zone).
  • subnetFilters: additional filtering on subnets using any number of user-provided filters which extend SubnetFilter. The following methods on the SubnetFilter class can be used to create a filter:

    • byIds: chooses subnets from a list of ids
    • availabilityZones: chooses subnets in the provided list of availability zones
    • onePerAz: chooses at most one subnet per availability zone
    • containsIpAddresses: chooses a subnet which contains any of the listed ip addresses
    • byCidrMask: chooses subnets that have the provided CIDR netmask
    • byCidrRanges: chooses subnets which are inside any of the specified CIDR ranges
Using NAT instances

By default, the Vpc construct will create NAT gateways for you, which are managed by AWS. If you would prefer to use your own managed NAT instances instead, specify a different value for the natGatewayProvider property, as follows:

The construct will automatically selects the latest version of Amazon Linux 2023. If you prefer to use a custom AMI, use machineImage: MachineImage.genericLinux({ ... }) and configure the right AMI ID for the regions you want to deploy to.

Warning The NAT instances created using this method will be unmonitored. They are not part of an Auto Scaling Group, and if they become unavailable or are terminated for any reason, will not be restarted or replaced.

By default, the NAT instances will route all traffic. To control what traffic gets routed, pass a custom value for defaultAllowedTraffic and access the NatInstanceProvider.connections member after having passed the NAT provider to the VPC:

var instanceType InstanceType


provider := ec2.NatProvider_InstanceV2(&NatInstanceProps{
	InstanceType: InstanceType,
	DefaultAllowedTraffic: ec2.NatTrafficDirection_OUTBOUND_ONLY,
})
ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	NatGatewayProvider: provider,
})
provider.connections.AllowFrom(ec2.Peer_Ipv4(jsii.String("1.2.3.4/8")), ec2.Port_HTTP())

You can also customize the characteristics of your NAT instances, including their security group, as well as their initialization scripts:

var bucket Bucket


userData := ec2.UserData_ForLinux()
userData.AddCommands(
(SpreadElement ...ec2.NatInstanceProviderV2.DEFAULT_USER_DATA_COMMANDS
		ec2.NatInstanceProviderV2_DEFAULT_USER_DATA_COMMANDS()), jsii.String("echo \"hello world!\" > hello.txt"),
fmt.Sprintf("aws s3 cp hello.txt s3://%v", bucket.bucketName))

provider := ec2.NatProvider_InstanceV2(&NatInstanceProps{
	InstanceType: ec2.NewInstanceType(jsii.String("t3.small")),
	CreditSpecification: ec2.CpuCredits_UNLIMITED,
	DefaultAllowedTraffic: ec2.NatTrafficDirection_NONE,
})

vpc := ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	NatGatewayProvider: provider,
	NatGateways: jsii.Number(2),
})

securityGroup := ec2.NewSecurityGroup(this, jsii.String("SecurityGroup"), &SecurityGroupProps{
	Vpc: Vpc,
})
securityGroup.AddEgressRule(ec2.Peer_AnyIpv4(), ec2.Port_Tcp(jsii.Number(443)))
for _, gateway := range provider.gatewayInstances {
	bucket.grants.Write(gateway)
	gateway.AddSecurityGroup(securityGroup)
}
// Configure the `natGatewayProvider` when defining a Vpc
natGatewayProvider := ec2.NatProvider_Instance(&NatInstanceProps{
	InstanceType: ec2.NewInstanceType(jsii.String("t3.small")),
})

vpc := ec2.NewVpc(this, jsii.String("MyVpc"), &VpcProps{
	NatGatewayProvider: NatGatewayProvider,

	// The 'natGateways' parameter now controls the number of NAT instances
	NatGateways: jsii.Number(2),
})

The V1 NatProvider.instance construct will use the AWS official NAT instance AMI, which has already reached EOL on Dec 31, 2023. For more information, see the following blog post: Amazon Linux AMI end of life.

var instanceType InstanceType


provider := ec2.NatProvider_Instance(&NatInstanceProps{
	InstanceType: InstanceType,
	DefaultAllowedTraffic: ec2.NatTrafficDirection_OUTBOUND_ONLY,
})
ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	NatGatewayProvider: provider,
})
provider.connections.AllowFrom(ec2.Peer_Ipv4(jsii.String("1.2.3.4/8")), ec2.Port_HTTP())
Associate Public IP Address to NAT Instance

You can choose to associate public IP address to a NAT instance V2 by specifying associatePublicIpAddress like the following:

natGatewayProvider := ec2.NatProvider_InstanceV2(&NatInstanceProps{
	InstanceType: ec2.NewInstanceType(jsii.String("t3.small")),
	AssociatePublicIpAddress: jsii.Boolean(true),
})

In certain scenarios where the public subnet has set mapPublicIpOnLaunch to false, NAT instances does not get public IP addresses assigned which would result in non-working NAT instance as NAT instance requires a public IP address to enable outbound internet connectivity. Users can specify associatePublicIpAddress to true to solve this problem.

Ip Address Management

The VPC spans a supernet IP range, which contains the non-overlapping IPs of its contained subnets. Possible sources for this IP range are:

  • You specify an IP range directly by specifying a CIDR
  • You allocate an IP range of a given size automatically from AWS IPAM

By default the Vpc will allocate the 10.0.0.0/16 address range which will be exhaustively spread across all subnets in the subnet configuration. This behavior can be changed by passing an object that implements IIpAddresses to the ipAddress property of a Vpc. See the subsequent sections for the options.

Be aware that if you don't explicitly reserve subnet groups in subnetConfiguration, the address space will be fully allocated! If you predict you may need to add more subnet groups later, add them early on and set reserved: true (see the "Advanced Subnet Configuration" section for more information).

Specifying a CIDR directly

Use IpAddresses.cidr to define a Cidr range for your Vpc directly in code:

import "github.com/aws/aws-cdk-go/awscdk"


ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	IpAddresses: awscdk.IpAddresses_Cidr(jsii.String("10.0.1.0/20")),
})

Space will be allocated to subnets in the following order:

  • First, spaces is allocated for all subnets groups that explicitly have a cidrMask set as part of their configuration (including reserved subnets).
  • Afterwards, any remaining space is divided evenly between the rest of the subnets (if any).

The argument to IpAddresses.cidr may not be a token, and concrete Cidr values are generated in the synthesized CloudFormation template.

Allocating an IP range from AWS IPAM

Amazon VPC IP Address Manager (IPAM) manages a large IP space, from which chunks can be allocated for use in the Vpc. For information on Amazon VPC IP Address Manager please see the official documentation. An example of allocating from AWS IPAM looks like this:

import "github.com/aws/aws-cdk-go/awscdk"

var pool CfnIPAMPool


ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	IpAddresses: awscdk.IpAddresses_AwsIpamAllocation(&AwsIpamProps{
		Ipv4IpamPoolId: pool.ref,
		Ipv4NetmaskLength: jsii.Number(18),
		DefaultSubnetIpv4NetmaskLength: jsii.Number(24),
	}),
})

IpAddresses.awsIpamAllocation requires the following:

  • ipv4IpamPoolId, the id of an IPAM Pool from which the VPC range should be allocated.
  • ipv4NetmaskLength, the size of the IP range that will be requested from the Pool at deploy time.
  • defaultSubnetIpv4NetmaskLength, the size of subnets in groups that don't have cidrMask set.

With this method of IP address management, no attempt is made to guess at subnet group sizes or to exhaustively allocate the IP range. All subnet groups must have an explicit cidrMask set as part of their subnet configuration, or defaultSubnetIpv4NetmaskLength must be set for a default size. If not, synthesis will fail and you must provide one or the other.

Dual Stack configuration

To allocate both IPv4 and IPv6 addresses in your VPC, you can configure your VPC to have a dual stack protocol.

ec2.NewVpc(this, jsii.String("DualStackVpc"), &VpcProps{
	IpProtocol: ec2.IpProtocol_DUAL_STACK,
})

By default, a dual stack VPC will create an Amazon provided IPv6 /56 CIDR block associated to the VPC. It will then assign /64 portions of the block to each subnet. For each subnet, auto-assigning an IPv6 address will be enabled, and auto-asigning a public IPv4 address will be disabled. An egress only internet gateway will be created for PRIVATE_WITH_EGRESS subnets, and IPv6 routes will be added for IGWs and EIGWs.

Disabling the auto-assigning of a public IPv4 address by default can avoid the cost of public IPv4 addresses starting 2/1/2024. For use cases that need an IPv4 address, the mapPublicIpOnLaunch property in subnetConfiguration can be set to auto-assign the IPv4 address. Note that private IPv4 address allocation will not be changed.

See Advanced Subnet Configuration for all IPv6 specific properties.

Reserving availability zones

There are situations where the IP space for availability zones will need to be reserved. This is useful in situations where availability zones would need to be added after the vpc is originally deployed, without causing IP renumbering for availability zones subnets. The IP space for reserving n availability zones can be done by setting the reservedAzs to n in vpc props, as shown below:

vpc := ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	Cidr: jsii.String("10.0.0.0/21"),
	MaxAzs: jsii.Number(3),
	ReservedAzs: jsii.Number(1),
})

In the example above, the subnets for reserved availability zones is not actually provisioned but its IP space is still reserved. If, in the future, new availability zones needs to be provisioned, then we would decrement the value of reservedAzs and increment the maxAzs or availabilityZones accordingly. This action would not cause the IP address of subnets to get renumbered, but rather the IP space that was previously reserved will be used for the new availability zones subnets.

Advanced Subnet Configuration

If the default VPC configuration (public and private subnets spanning the size of the VPC) don't suffice for you, you can configure what subnets to create by specifying the subnetConfiguration property. It allows you to configure the number and size of all subnets. Specifying an advanced subnet configuration could look like this:

vpc := ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	// 'IpAddresses' configures the IP range and size of the entire VPC.
	// The IP space will be divided based on configuration for the subnets.
	IpAddresses: ec2.IpAddresses_Cidr(jsii.String("10.0.0.0/21")),

	// 'maxAzs' configures the maximum number of availability zones to use.
	// If you want to specify the exact availability zones you want the VPC
	// to use, use `availabilityZones` instead.
	MaxAzs: jsii.Number(3),

	// 'subnetConfiguration' specifies the "subnet groups" to create.
	// Every subnet group will have a subnet for each AZ, so this
	// configuration will create `3 groups × 3 AZs = 9` subnets.
	SubnetConfiguration: []SubnetConfiguration{
		&SubnetConfiguration{
			// 'subnetType' controls Internet access, as described above.
			SubnetType: ec2.SubnetType_PUBLIC,

			// 'name' is used to name this particular subnet group. You will have to
			// use the name for subnet selection if you have more than one subnet
			// group of the same type.
			Name: jsii.String("Ingress"),

			// 'cidrMask' specifies the IP addresses in the range of individual
			// subnets in the group. Each of the subnets in this group will contain
			// `2^(32 address bits - 24 subnet bits) - 2 reserved addresses = 254`
			// usable IP addresses.
			//
			// If 'cidrMask' is left out the available address space is evenly
			// divided across the remaining subnet groups.
			CidrMask: jsii.Number(24),
		},
		&SubnetConfiguration{
			CidrMask: jsii.Number(24),
			Name: jsii.String("Application"),
			SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
		},
		&SubnetConfiguration{
			CidrMask: jsii.Number(28),
			Name: jsii.String("Database"),
			SubnetType: ec2.SubnetType_PRIVATE_ISOLATED,

			// 'reserved' can be used to reserve IP address space. No resources will
			// be created for this subnet, but the IP range will be kept available for
			// future creation of this subnet, or even for future subdivision.
			Reserved: jsii.Boolean(true),
		},
	},
})

The example above is one possible configuration, but the user can use the constructs above to implement many other network configurations.

The Vpc from the above configuration in a Region with three availability zones will be the following:

Subnet Name Type IP Block AZ Features
IngressSubnet1 PUBLIC 10.0.0.0/24 #1 NAT Gateway
IngressSubnet2 PUBLIC 10.0.1.0/24 #2 NAT Gateway
IngressSubnet3 PUBLIC 10.0.2.0/24 #3 NAT Gateway
ApplicationSubnet1 PRIVATE 10.0.3.0/24 #1 Route to NAT in IngressSubnet1
ApplicationSubnet2 PRIVATE 10.0.4.0/24 #2 Route to NAT in IngressSubnet2
ApplicationSubnet3 PRIVATE 10.0.5.0/24 #3 Route to NAT in IngressSubnet3
DatabaseSubnet1 ISOLATED 10.0.6.0/28 #1 Only routes within the VPC
DatabaseSubnet2 ISOLATED 10.0.6.16/28 #2 Only routes within the VPC
DatabaseSubnet3 ISOLATED 10.0.6.32/28 #3 Only routes within the VPC
Dual Stack Configurations

Here is a break down of IPv4 and IPv6 specific subnetConfiguration properties in a dual stack VPC:

vpc := ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	IpProtocol: ec2.IpProtocol_DUAL_STACK,

	SubnetConfiguration: []SubnetConfiguration{
		&SubnetConfiguration{
			// general properties
			Name: jsii.String("Public"),
			SubnetType: ec2.SubnetType_PUBLIC,
			Reserved: jsii.Boolean(false),

			// IPv4 specific properties
			MapPublicIpOnLaunch: jsii.Boolean(true),
			CidrMask: jsii.Number(24),

			// new IPv6 specific property
			Ipv6AssignAddressOnCreation: jsii.Boolean(true),
		},
	},
})

The property mapPublicIpOnLaunch controls if a public IPv4 address will be assigned. This defaults to false for dual stack VPCs to avoid inadvertant costs of having the public address. However, a public IP must be enabled (or otherwise configured with BYOIP or IPAM) in order for services that rely on the address to function.

The ipv6AssignAddressOnCreation property controls the same behavior for the IPv6 address. It defaults to true.

Using IPv6 specific properties in an IPv4 only VPC will result in errors.

Accessing the Internet Gateway

If you need access to the internet gateway, you can get its ID like so:

var vpc Vpc


igwId := vpc.InternetGatewayId

For a VPC with only ISOLATED subnets, this value will be undefined.

This is only supported for VPCs created in the stack - currently you're unable to get the ID for imported VPCs. To do that you'd have to specifically look up the Internet Gateway by name, which would require knowing the name beforehand.

This can be useful for configuring routing using a combination of gateways: for more information see Routing below.

Disabling the creation of the default internet gateway

If you need to control the creation of the internet gateway explicitly, you can disable the creation of the default one using the createInternetGateway property:

vpc := ec2.NewVpc(this, jsii.String("VPC"), &VpcProps{
	CreateInternetGateway: jsii.Boolean(false),
	SubnetConfiguration: []SubnetConfiguration{
		&SubnetConfiguration{
			SubnetType: ec2.SubnetType_PUBLIC,
			Name: jsii.String("Public"),
		},
	},
})
Routing

It's possible to add routes to any subnets using the addRoute() method. If for example you want an isolated subnet to have a static route via the default Internet Gateway created for the public subnet - perhaps for routing a VPN connection - you can do so like this:

vpc := ec2.NewVpc(this, jsii.String("VPC"), &VpcProps{
	SubnetConfiguration: []SubnetConfiguration{
		&SubnetConfiguration{
			SubnetType: ec2.SubnetType_PUBLIC,
			Name: jsii.String("Public"),
		},
		&SubnetConfiguration{
			SubnetType: ec2.SubnetType_PRIVATE_ISOLATED,
			Name: jsii.String("Isolated"),
		},
	},
})

(vpc.IsolatedSubnets[0].(Subnet)).AddRoute(jsii.String("StaticRoute"), &AddRouteOptions{
	RouterId: vpc.InternetGatewayId,
	RouterType: ec2.RouterType_GATEWAY,
	DestinationCidrBlock: jsii.String("8.8.8.8/32"),
})

Note that we cast to Subnet here because the list of subnets only returns an ISubnet.

Reserving subnet IP space

There are situations where the IP space for a subnet or number of subnets will need to be reserved. This is useful in situations where subnets would need to be added after the vpc is originally deployed, without causing IP renumbering for existing subnets. The IP space for a subnet may be reserved by setting the reserved subnetConfiguration property to true, as shown below:

vpc := ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	NatGateways: jsii.Number(1),
	SubnetConfiguration: []SubnetConfiguration{
		&SubnetConfiguration{
			CidrMask: jsii.Number(26),
			Name: jsii.String("Public"),
			SubnetType: ec2.SubnetType_PUBLIC,
		},
		&SubnetConfiguration{
			CidrMask: jsii.Number(26),
			Name: jsii.String("Application1"),
			SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
		},
		&SubnetConfiguration{
			CidrMask: jsii.Number(26),
			Name: jsii.String("Application2"),
			SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
			Reserved: jsii.Boolean(true),
		},
		&SubnetConfiguration{
			CidrMask: jsii.Number(27),
			Name: jsii.String("Database"),
			SubnetType: ec2.SubnetType_PRIVATE_ISOLATED,
		},
	},
})

In the example above, the subnet for Application2 is not actually provisioned but its IP space is still reserved. If in the future this subnet needs to be provisioned, then the reserved: true property should be removed. Reserving parts of the IP space prevents the other subnets from getting renumbered.

Sharing VPCs between stacks

If you are creating multiple Stacks inside the same CDK application, you can reuse a VPC defined in one Stack in another by simply passing the VPC instance around:

/**
 * Stack1 creates the VPC
 */
type stack1 struct {
	Stack
	vpc Vpc
}

func newStack1(scope App, id *string, props StackProps) *stack1 {
	this := &stack1{}
	cdk.NewStack_Override(this, scope, id, props)

	this.vpc = ec2.NewVpc(this, jsii.String("VPC"))
	return this
}

type stack2Props struct {
	StackProps
	vpc IVpc
}

/**
 * Stack2 consumes the VPC
 */
type stack2 struct {
	Stack
}

func newStack2(scope App, id *string, props stack2Props) *stack2 {
	this := &stack2{}
	cdk.NewStack_Override(this, scope, id, props)

	// Pass the VPC to a construct that needs it
	// Pass the VPC to a construct that needs it
	NewConstructThatTakesAVpc(this, jsii.String("Construct"), &constructThatTakesAVpcProps{
		vpc: props.vpc,
	})
	return this
}

stack1 := NewStack1(app, jsii.String("Stack1"))
stack2 := NewStack2(app, jsii.String("Stack2"), &stack2Props{
	vpc: stack1.vpc,
})

Note: If you encounter an error like "Delete canceled. Cannot delete export ..." when using a cross-stack reference to a VPC, it's likely due to CloudFormation export/import constraints. In such cases, it's safer to use Vpc.fromLookup() in the consuming stack instead of directly referencing the VPC object, more details is provided in Importing an existing VPC. This avoids creating CloudFormation exports and gives more flexibility, especially when stacks need to be deleted or updated independently.

Importing an existing VPC

If your VPC is created outside your CDK app, you can use Vpc.fromLookup(). The CDK CLI will search for the specified VPC in the stack's region and account, and import the subnet configuration. Looking up can be done by VPC ID, but more flexibly by searching for a specific tag on the VPC.

Subnet types will be determined from the aws-cdk:subnet-type tag on the subnet if it exists, or the presence of a route to an Internet Gateway otherwise. Subnet names will be determined from the aws-cdk:subnet-name tag on the subnet if it exists, or will mirror the subnet type otherwise (i.e. a public subnet will have the name "Public").

The result of the Vpc.fromLookup() operation will be written to a file called cdk.context.json. You must commit this file to source control so that the lookup values are available in non-privileged environments such as CI build steps, and to ensure your template builds are repeatable.

Here's how Vpc.fromLookup() can be used:

vpc := ec2.Vpc_FromLookup(stack, jsii.String("VPC"), &VpcLookupOptions{
	// This imports the default VPC but you can also
	// specify a 'vpcName' or 'tags'.
	IsDefault: jsii.Boolean(true),
})

Vpc.fromLookup is the recommended way to import VPCs. If for whatever reason you do not want to use the context mechanism to look up a VPC at synthesis time, you can also use Vpc.fromVpcAttributes. This has the following limitations:

  • Every subnet group in the VPC must have a subnet in each availability zone (for example, each AZ must have both a public and private subnet). Asymmetric VPCs are not supported.
  • All VpcId, SubnetId, RouteTableId, ... parameters must either be known at synthesis time, or they must come from deploy-time list parameters whose deploy-time lengths are known at synthesis time.

Using Vpc.fromVpcAttributes() looks like this:

vpc := ec2.Vpc_FromVpcAttributes(this, jsii.String("VPC"), &VpcAttributes{
	VpcId: jsii.String("vpc-1234"),
	AvailabilityZones: []*string{
		jsii.String("us-east-1a"),
		jsii.String("us-east-1b"),
	},

	// Either pass literals for all IDs
	PublicSubnetIds: []*string{
		jsii.String("s-12345"),
		jsii.String("s-67890"),
	},

	// OR: import a list of known length
	PrivateSubnetIds: awscdk.Fn_ImportListValue(jsii.String("PrivateSubnetIds"), jsii.Number(2)),

	// OR: split an imported string to a list of known length
	IsolatedSubnetIds: awscdk.Fn_Split(jsii.String(","), ssm.StringParameter_ValueForStringParameter(this, jsii.String("MyParameter")), jsii.Number(2)),
})

For each subnet group the import function accepts optional parameters for subnet names, route table ids and IPv4 CIDR blocks. When supplied, the length of these lists are required to match the length of the list of subnet ids, allowing the lists to be zipped together to form ISubnet instances.

Public subnet group example (for private or isolated subnet groups, use the properties with the respective prefix):

vpc := ec2.Vpc_FromVpcAttributes(this, jsii.String("VPC"), &VpcAttributes{
	VpcId: jsii.String("vpc-1234"),
	AvailabilityZones: []*string{
		jsii.String("us-east-1a"),
		jsii.String("us-east-1b"),
		jsii.String("us-east-1c"),
	},
	PublicSubnetIds: []*string{
		jsii.String("s-12345"),
		jsii.String("s-34567"),
		jsii.String("s-56789"),
	},
	PublicSubnetNames: []*string{
		jsii.String("Subnet A"),
		jsii.String("Subnet B"),
		jsii.String("Subnet C"),
	},
	PublicSubnetRouteTableIds: []*string{
		jsii.String("rt-12345"),
		jsii.String("rt-34567"),
		jsii.String("rt-56789"),
	},
	PublicSubnetIpv4CidrBlocks: []*string{
		jsii.String("10.0.0.0/24"),
		jsii.String("10.0.1.0/24"),
		jsii.String("10.0.2.0/24"),
	},
})

The above example will create an IVpc instance with three public subnets:

| Subnet id | Availability zone | Subnet name | Route table id | IPv4 CIDR | | --------- | ----------------- | ----------- | -------------- | ----------- | | s-12345 | us-east-1a | Subnet A | rt-12345 | 10.0.0.0/24 | | s-34567 | us-east-1b | Subnet B | rt-34567 | 10.0.1.0/24 | | s-56789 | us-east-1c | Subnet B | rt-56789 | 10.0.2.0/24 |

Restricting access to the VPC default security group

AWS Security best practices recommend that the VPC default security group should not allow inbound and outbound traffic. When the @aws-cdk/aws-ec2:restrictDefaultSecurityGroup feature flag is set to true (default for new projects) this will be enabled by default. If you do not have this feature flag set you can either set the feature flag or you can set the restrictDefaultSecurityGroup property to true.

ec2.NewVpc(this, jsii.String("VPC"), &VpcProps{
	RestrictDefaultSecurityGroup: jsii.Boolean(true),
})

If you set this property to true and then later remove it or set it to false the default ingress/egress will be restored on the default security group.

Allowing Connections

In AWS, all network traffic in and out of Elastic Network Interfaces (ENIs) is controlled by Security Groups. You can think of Security Groups as a firewall with a set of rules. By default, Security Groups allow no incoming (ingress) traffic and all outgoing (egress) traffic. You can add ingress rules to them to allow incoming traffic streams. To exert fine-grained control over egress traffic, set allowAllOutbound: false on the SecurityGroup, after which you can add egress traffic rules.

You can manipulate Security Groups directly:

mySecurityGroup := ec2.NewSecurityGroup(this, jsii.String("SecurityGroup"), &SecurityGroupProps{
	Vpc: Vpc,
	Description: jsii.String("Allow ssh access to ec2 instances"),
	AllowAllOutbound: jsii.Boolean(true),
})
mySecurityGroup.AddIngressRule(ec2.Peer_AnyIpv4(), ec2.Port_Tcp(jsii.Number(22)), jsii.String("allow ssh access from the world"))

All constructs that create ENIs on your behalf (typically constructs that create EC2 instances or other VPC-connected resources) will all have security groups automatically assigned. Those constructs have an attribute called connections, which is an object that makes it convenient to update the security groups. If you want to allow connections between two constructs that have security groups, you have to add an Egress rule to one Security Group, and an Ingress rule to the other. The connections object will automatically take care of this for you:

var loadBalancer ApplicationLoadBalancer
var appFleet AutoScalingGroup
var dbFleet AutoScalingGroup


// Allow connections from anywhere
loadBalancer.Connections.AllowFromAnyIpv4(ec2.Port_HTTPS(), jsii.String("Allow inbound HTTPS"))

// The same, but an explicit IP address
loadBalancer.Connections.AllowFrom(ec2.Peer_Ipv4(jsii.String("1.2.3.4/32")), ec2.Port_HTTPS(), jsii.String("Allow inbound HTTPS"))

// Allow connection between AutoScalingGroups
appFleet.connections.AllowTo(dbFleet, ec2.Port_HTTPS(), jsii.String("App can call database"))
Connection Peers

There are various classes that implement the connection peer part:

var appFleet AutoScalingGroup
var dbFleet AutoScalingGroup


// Simple connection peers
peer := ec2.Peer_Ipv4(jsii.String("10.0.0.0/16"))
peer = ec2.Peer_AnyIpv4()
peer = ec2.Peer_Ipv6(jsii.String("::0/0"))
peer = ec2.Peer_AnyIpv6()
appFleet.connections.AllowTo(peer, ec2.Port_HTTPS(), jsii.String("Allow outbound HTTPS"))

Any object that has a security group can itself be used as a connection peer:

var fleet1 AutoScalingGroup
var fleet2 AutoScalingGroup
var appFleet AutoScalingGroup


// These automatically create appropriate ingress and egress rules in both security groups
fleet1.connections.AllowTo(fleet2, ec2.Port_HTTP(), jsii.String("Allow between fleets"))

appFleet.connections.AllowFromAnyIpv4(ec2.Port_HTTP(), jsii.String("Allow from load balancer"))

A managed prefix list is also a connection peer:

var appFleet AutoScalingGroup


prefixList := ec2.NewPrefixList(this, jsii.String("PrefixList"), &PrefixListProps{
	MaxEntries: jsii.Number(10),
})
appFleet.connections.AllowFrom(prefixList, ec2.Port_HTTPS())
Rule Configuration Interfaces

The IPeer interface provides type-safe methods for generating security group rule configurations. The toIngressRuleConfig() and toEgressRuleConfig() methods return strongly-typed interfaces instead of any, enabling better IDE autocompletion and compile-time type checking:

  • IngressRuleConfig: Configuration for ingress rules with properties like cidrIp, cidrIpv6, sourcePrefixListId, sourceSecurityGroupId, and sourceSecurityGroupOwnerId
  • EgressRuleConfig: Configuration for egress rules with properties like cidrIp, cidrIpv6, destinationPrefixListId, and destinationSecurityGroupId
Port Ranges

The connections that are allowed are specified by port ranges. A number of classes provide the connection specifier:

ec2.Port_Tcp(jsii.Number(80))
ec2.Port_HTTPS()
ec2.Port_TcpRange(jsii.Number(60000), jsii.Number(65535))
ec2.Port_AllTcp()
ec2.Port_AllIcmp()
ec2.Port_AllIcmpV6()
ec2.Port_AllTraffic()

NOTE: Not all protocols have corresponding helper methods. In the absence of a helper method, you can instantiate Port yourself with your own settings. You are also welcome to contribute new helper methods.

Default Ports

Some Constructs have default ports associated with them. For example, the listener of a load balancer does (it's the public port), or instances of an RDS database (it's the port the database is accepting connections on).

If the object you're calling the peering method on has a default port associated with it, you can call allowDefaultPortFrom() and omit the port specifier. If the argument has an associated default port, call allowDefaultPortTo().

For example:

var listener ApplicationListener
var appFleet AutoScalingGroup
var rdsDatabase DatabaseCluster


// Port implicit in listener
listener.Connections.AllowDefaultPortFromAnyIpv4(jsii.String("Allow public"))

// Port implicit in peer
appFleet.connections.AllowDefaultPortTo(rdsDatabase, jsii.String("Fleet can access database"))
Security group rules

By default, security group wills be added inline to the security group in the output cloud formation template, if applicable. This includes any static rules by ip address and port range. This optimization helps to minimize the size of the template.

In some environments this is not desirable, for example if your security group access is controlled via tags. You can disable inline rules per security group or globally via the context key @aws-cdk/aws-ec2.securityGroupDisableInlineRules.

mySecurityGroupWithoutInlineRules := ec2.NewSecurityGroup(this, jsii.String("SecurityGroup"), &SecurityGroupProps{
	Vpc: Vpc,
	Description: jsii.String("Allow ssh access to ec2 instances"),
	AllowAllOutbound: jsii.Boolean(true),
	DisableInlineRules: jsii.Boolean(true),
})
//This will add the rule as an external cloud formation construct
mySecurityGroupWithoutInlineRules.AddIngressRule(ec2.Peer_AnyIpv4(), ec2.Port_SSH(), jsii.String("allow ssh access from the world"))
Importing an existing security group

If you know the ID and the configuration of the security group to import, you can use SecurityGroup.fromSecurityGroupId:

sg := ec2.SecurityGroup_FromSecurityGroupId(this, jsii.String("SecurityGroupImport"), jsii.String("sg-1234"), &SecurityGroupImportOptions{
	AllowAllOutbound: jsii.Boolean(true),
})

Alternatively, use lookup methods to import security groups if you do not know the ID or the configuration details. Method SecurityGroup.fromLookupByName looks up a security group if the security group ID is unknown.

sg := ec2.SecurityGroup_FromLookupByName(this, jsii.String("SecurityGroupLookup"), jsii.String("security-group-name"), vpc)

If the security group ID is known and configuration details are unknown, use method SecurityGroup.fromLookupById instead. This method will lookup property allowAllOutbound from the current configuration of the security group.

sg := ec2.SecurityGroup_FromLookupById(this, jsii.String("SecurityGroupLookup"), jsii.String("sg-1234"))

The result of SecurityGroup.fromLookupByName and SecurityGroup.fromLookupById operations will be written to a file called cdk.context.json. You must commit this file to source control so that the lookup values are available in non-privileged environments such as CI build steps, and to ensure your template builds are repeatable.

Cross Stack Connections

If you are attempting to add a connection from a peer in one stack to a peer in a different stack, sometimes it is necessary to ensure that you are making the connection in a specific stack in order to avoid a cyclic reference. If there are no other dependencies between stacks then it will not matter in which stack you make the connection, but if there are existing dependencies (i.e. stack1 already depends on stack2), then it is important to make the connection in the dependent stack (i.e. stack1).

Whenever you make a connections function call, the ingress and egress security group rules will be added to the stack that the calling object exists in. So if you are doing something like peer1.connections.allowFrom(peer2), then the security group rules (both ingress and egress) will be created in peer1's Stack.

As an example, if we wanted to allow a connection from a security group in one stack (egress) to a security group in a different stack (ingress), we would make the connection like:

If Stack1 depends on Stack2

// Stack 1
var stack1 Stack
var stack2 Stack


sg1 := ec2.NewSecurityGroup(stack1, jsii.String("SG1"), &SecurityGroupProps{
	AllowAllOutbound: jsii.Boolean(false),
	 // if this is `true` then no egress rule will be created
	Vpc: Vpc,
})

// Stack 2
sg2 := ec2.NewSecurityGroup(stack2, jsii.String("SG2"), &SecurityGroupProps{
	AllowAllOutbound: jsii.Boolean(false),
	 // if this is `true` then no egress rule will be created
	Vpc: Vpc,
})

// `connections.allowTo` on `sg1` since we want the
// rules to be created in Stack1
sg1.connections.AllowTo(sg2, ec2.Port_Tcp(jsii.Number(3333)))

In this case both the Ingress Rule for sg2 and the Egress Rule for sg1 will both be created in Stack 1 which avoids the cyclic reference.

If Stack2 depends on Stack1

// Stack 1
var stack1 Stack
var stack2 Stack


sg1 := ec2.NewSecurityGroup(stack1, jsii.String("SG1"), &SecurityGroupProps{
	AllowAllOutbound: jsii.Boolean(false),
	 // if this is `true` then no egress rule will be created
	Vpc: Vpc,
})

// Stack 2
sg2 := ec2.NewSecurityGroup(stack2, jsii.String("SG2"), &SecurityGroupProps{
	AllowAllOutbound: jsii.Boolean(false),
	 // if this is `true` then no egress rule will be created
	Vpc: Vpc,
})

// `connections.allowFrom` on `sg2` since we want the
// rules to be created in Stack2
sg2.connections.AllowFrom(sg1, ec2.Port_Tcp(jsii.Number(3333)))

In this case both the Ingress Rule for sg2 and the Egress Rule for sg1 will both be created in Stack 2 which avoids the cyclic reference.

Machine Images (AMIs)

AMIs control the OS that gets launched when you start your EC2 instance. The EC2 library contains constructs to select the AMI you want to use.

Depending on the type of AMI, you select it a different way. Here are some examples of images you might want to use:

// Pick the right Amazon Linux edition. All arguments shown are optional
// and will default to these values when omitted.
amznLinux := ec2.MachineImage_LatestAmazonLinux(&AmazonLinuxImageProps{
	Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX,
	Edition: ec2.AmazonLinuxEdition_STANDARD,
	Virtualization: ec2.AmazonLinuxVirt_HVM,
	Storage: ec2.AmazonLinuxStorage_GENERAL_PURPOSE,
	CpuType: ec2.AmazonLinuxCpuType_X86_64,
})

// Pick a Windows edition to use
windows := ec2.MachineImage_LatestWindows(ec2.WindowsVersion_WINDOWS_SERVER_2019_ENGLISH_FULL_BASE)

// Read AMI id from SSM parameter store
ssm := ec2.MachineImage_FromSsmParameter(jsii.String("/my/ami"), &SsmParameterImageOptions{
	Os: ec2.OperatingSystemType_LINUX,
})

// Look up the most recent image matching a set of AMI filters.
// In this case, look up the NAT instance AMI, by using a wildcard
// in the 'name' field:
natAmi := ec2.MachineImage_Lookup(&LookupMachineImageProps{
	Name: jsii.String("amzn-ami-vpc-nat-*"),
	Owners: []*string{
		jsii.String("amazon"),
	},
})

// For other custom (Linux) images, instantiate a `GenericLinuxImage` with
// a map giving the AMI to in for each region:
linux := ec2.MachineImage_GenericLinux(map[string]*string{
	"us-east-1": jsii.String("ami-97785bed"),
	"eu-west-1": jsii.String("ami-12345678"),
})

// For other custom (Windows) images, instantiate a `GenericWindowsImage` with
// a map giving the AMI to in for each region:
genericWindows := ec2.MachineImage_GenericWindows(map[string]*string{
	"us-east-1": jsii.String("ami-97785bed"),
	"eu-west-1": jsii.String("ami-12345678"),
})

NOTE: The AMIs selected by MachineImage.lookup() will be cached in cdk.context.json, so that your AutoScalingGroup instances aren't replaced while you are making unrelated changes to your CDK app.

To query for the latest AMI again, remove the relevant cache entry from cdk.context.json, or use the cdk context command. For more information, see Runtime Context in the CDK developer guide.

To customize the cache key, use the additionalCacheKey parameter. This allows you to have multiple lookups with the same parameters cache their values separately. This can be useful if you want to scope the context variable to a construct (ie, using additionalCacheKey: this.node.path), so that if the value in the cache needs to be updated, it does not need to be updated for all constructs at the same time.

MachineImage.genericLinux(), MachineImage.genericWindows() will use CfnMapping in an agnostic stack.

Special VPC configurations

VPN connections to a VPC

Create your VPC with VPN connections by specifying the vpnConnections props (keys are construct ids):

import "github.com/aws/aws-cdk-go/awscdk"


vpc := ec2.NewVpc(this, jsii.String("MyVpc"), &VpcProps{
	VpnConnections: map[string]VpnConnectionOptions{
		"dynamic": &VpnConnectionOptions{
			 // Dynamic routing (BGP)
			"ip": jsii.String("1.2.3.4"),
			"tunnelOptions": []VpnTunnelOption{
				&VpnTunnelOption{
					"preSharedKeySecret": awscdk.SecretValue_unsafePlainText(jsii.String("secretkey1234")),
				},
				&VpnTunnelOption{
					"preSharedKeySecret": awscdk.SecretValue_unsafePlainText(jsii.String("secretkey5678")),
				},
			},
		},
		"static": &VpnConnectionOptions{
			 // Static routing
			"ip": jsii.String("4.5.6.7"),
			"staticRoutes": []*string{
				jsii.String("192.168.10.0/24"),
				jsii.String("192.168.20.0/24"),
			},
		},
	},
})

To create a VPC that can accept VPN connections, set vpnGateway to true:

vpc := ec2.NewVpc(this, jsii.String("MyVpc"), &VpcProps{
	VpnGateway: jsii.Boolean(true),
})

VPN connections can then be added:

vpc.addVpnConnection(jsii.String("Dynamic"), &VpnConnectionOptions{
	Ip: jsii.String("1.2.3.4"),
})

By default, routes will be propagated on the route tables associated with the private subnets. If no private subnets exist, isolated subnets are used. If no isolated subnets exist, public subnets are used. Use the Vpc property vpnRoutePropagation to customize this behavior.

VPN connections expose metrics (cloudwatch.Metric) across all tunnels in the account/region and per connection:

// Across all tunnels in the account/region
allDataOut := ec2.VpnConnection_MetricAllTunnelDataOut()

// For a specific vpn connection
vpnConnection := vpc.addVpnConnection(jsii.String("Dynamic"), &VpnConnectionOptions{
	Ip: jsii.String("1.2.3.4"),
})
state := vpnConnection.metricTunnelState()
VPC endpoints

A VPC endpoint enables you to privately connect your VPC to supported AWS services and VPC endpoint services powered by PrivateLink without requiring an internet gateway, NAT device, VPN connection, or AWS Direct Connect connection. Instances in your VPC do not require public IP addresses to communicate with resources in the service. Traffic between your VPC and the other service does not leave the Amazon network.

Endpoints are virtual devices. They are horizontally scaled, redundant, and highly available VPC components that allow communication between instances in your VPC and services without imposing availability risks or bandwidth constraints on your network traffic.

// Add gateway endpoints when creating the VPC
vpc := ec2.NewVpc(this, jsii.String("MyVpc"), &VpcProps{
	GatewayEndpoints: map[string]GatewayVpcEndpointOptions{
		"S3": &GatewayVpcEndpointOptions{
			"service": ec2.GatewayVpcEndpointAwsService_S3(),
		},
	},
})

// Alternatively gateway endpoints can be added on the VPC
dynamoDbEndpoint := vpc.addGatewayEndpoint(jsii.String("DynamoDbEndpoint"), &GatewayVpcEndpointOptions{
	Service: ec2.GatewayVpcEndpointAwsService_DYNAMODB(),
})

// This allows to customize the endpoint policy
dynamoDbEndpoint.AddToPolicy(
iam.NewPolicyStatement(&PolicyStatementProps{
	 // Restrict to listing and describing tables
	Principals: []IPrincipal{
		iam.NewAnyPrincipal(),
	},
	Actions: []*string{
		jsii.String("dynamodb:DescribeTable"),
		jsii.String("dynamodb:ListTables"),
	},
	Resources: []*string{
		jsii.String("*"),
	},
}))

// Add an interface endpoint
vpc.addInterfaceEndpoint(jsii.String("EcrDockerEndpoint"), &InterfaceVpcEndpointOptions{
	Service: ec2.InterfaceVpcEndpointAwsService_ECR_DOCKER(),
})

By default, CDK will place a VPC endpoint in one subnet per AZ. If you wish to override the AZs CDK places the VPC endpoint in, use the subnets parameter as follows:

var vpc Vpc


ec2.NewInterfaceVpcEndpoint(this, jsii.String("VPC Endpoint"), &InterfaceVpcEndpointProps{
	Vpc: Vpc,
	Service: ec2.NewInterfaceVpcEndpointService(jsii.String("com.amazonaws.vpce.us-east-1.vpce-svc-uuddlrlrbastrtsvc"), jsii.Number(443)),
	// Choose which availability zones to place the VPC endpoint in, based on
	// available AZs
	Subnets: &SubnetSelection{
		AvailabilityZones: []*string{
			jsii.String("us-east-1a"),
			jsii.String("us-east-1c"),
		},
	},
})

Per the AWS documentation, not all VPC endpoint services are available in all AZs. If you specify the parameter lookupSupportedAzs, CDK attempts to discover which AZs an endpoint service is available in, and will ensure the VPC endpoint is not placed in a subnet that doesn't match those AZs. These AZs will be stored in cdk.context.json.

var vpc Vpc


ec2.NewInterfaceVpcEndpoint(this, jsii.String("VPC Endpoint"), &InterfaceVpcEndpointProps{
	Vpc: Vpc,
	Service: ec2.NewInterfaceVpcEndpointService(jsii.String("com.amazonaws.vpce.us-east-1.vpce-svc-uuddlrlrbastrtsvc"), jsii.Number(443)),
	// Choose which availability zones to place the VPC endpoint in, based on
	// available AZs
	LookupSupportedAzs: jsii.Boolean(true),
})

Pre-defined AWS services are defined in the InterfaceVpcEndpointAwsService class, and can be used to create VPC endpoints without having to configure name, ports, etc. For example, a Keyspaces endpoint can be created for use in your VPC:

var vpc Vpc


ec2.NewInterfaceVpcEndpoint(this, jsii.String("VPC Endpoint"), &InterfaceVpcEndpointProps{
	Vpc: Vpc,
	Service: ec2.InterfaceVpcEndpointAwsService_KEYSPACES(),
})

For cross-region VPC endpoints, specify the serviceRegion parameter:

var vpc Vpc


ec2.NewInterfaceVpcEndpoint(this, jsii.String("CrossRegionEndpoint"), &InterfaceVpcEndpointProps{
	Vpc: Vpc,
	Service: ec2.NewInterfaceVpcEndpointService(jsii.String("com.amazonaws.vpce.us-east-1.vpce-svc-123456"), jsii.Number(443)),
	ServiceRegion: jsii.String("us-east-1"),
})
Security groups for interface VPC endpoints

By default, interface VPC endpoints create a new security group and all traffic to the endpoint from within the VPC will be automatically allowed.

Use the connections object to allow other traffic to flow to the endpoint:

var myEndpoint InterfaceVpcEndpoint


myEndpoint.Connections.AllowDefaultPortFromAnyIpv4()

Alternatively, existing security groups can be used by specifying the securityGroups prop.

IPv6 and Dualstack support

As IPv4 addresses are running out, many AWS services are adding support for IPv6 or Dualstack (IPv4 and IPv6 support) for their VPC Endpoints.

IPv6 and Dualstack address types can be configured by using:

vpc.addInterfaceEndpoint(jsii.String("ExampleEndpoint"), &InterfaceVpcEndpointOptions{
	Service: ec2.InterfaceVpcEndpointAwsService_ECR(),
	IpAddressType: ec2.VpcEndpointIpAddressType_IPV6,
	DnsRecordIpType: ec2.VpcEndpointDnsRecordIpType_IPV6,
})

The possible values for ipAddressType are:

  • IPV4 This option is supported only if all selected subnets have IPv4 address ranges and the endpoint service accepts IPv4 requests.
  • IPV6 This option is supported only if all selected subnets are IPv6 only subnets and the endpoint service accepts IPv6 requests.
  • DUALSTACK Assign both IPv4 and IPv6 addresses to the endpoint network interfaces. This option is supported only if all selected subnets have both IPv4 and IPv6 address ranges and the endpoint service accepts both IPv4 and IPv6 requests. The possible values for dnsRecordIpType are:
  • IPV4 Create A records for the private, Regional, and zonal DNS names. ipAddressType MUST be IPV4 or DUALSTACK
  • IPV6 Create AAAA records for the private, Regional, and zonal DNS names. ipAddressType MUST be IPV6 or DUALSTACK
  • DUALSTACK Create A and AAAA records for the private, Regional, and zonal DNS names. ipAddressType MUST be DUALSTACK
  • SERVICE_DEFINED Create A records for the private, Regional, and zonal DNS names and AAAA records for the Regional and zonal DNS names. ipAddressType MUST be DUALSTACK We can only configure dnsRecordIpType when ipAddressType is specified and private DNS must be enabled to use any DNS related features. To avoid complications, it is recommended to always set privateDnsEnabled to true (defaults to true) and set the ipAddressType and dnsRecordIpType explicitly when needing specific IP type behavior. Furthermore, check that the VPC being used supports the IP address type that is being configued. More documentation on compatibility and specifications can be found here
VPC endpoint services

A VPC endpoint service enables you to expose a Network Load Balancer(s) as a provider service to consumers, who connect to your service over a VPC endpoint. You can restrict access to your service via allowed principals (anything that extends ArnPrincipal), and require that new connections be manually accepted. You can also enable Contributor Insight rules.

var networkLoadBalancer1 NetworkLoadBalancer
var networkLoadBalancer2 NetworkLoadBalancer


ec2.NewVpcEndpointService(this, jsii.String("EndpointService"), &VpcEndpointServiceProps{
	VpcEndpointServiceLoadBalancers: []IVpcEndpointServiceLoadBalancer{
		networkLoadBalancer1,
		networkLoadBalancer2,
	},
	AcceptanceRequired: jsii.Boolean(true),
	AllowedPrincipals: []ArnPrincipal{
		iam.NewArnPrincipal(jsii.String("arn:aws:iam::123456789012:root")),
	},
	ContributorInsights: jsii.Boolean(true),
})

You can also include a service principal in the allowedPrincipals property by specifying it as a parameter to the ArnPrincipal constructor. The resulting VPC endpoint will have an allowlisted principal of type Service, instead of Arn for that item in the list.

var networkLoadBalancer NetworkLoadBalancer


ec2.NewVpcEndpointService(this, jsii.String("EndpointService"), &VpcEndpointServiceProps{
	VpcEndpointServiceLoadBalancers: []IVpcEndpointServiceLoadBalancer{
		networkLoadBalancer,
	},
	AllowedPrincipals: []ArnPrincipal{
		iam.NewArnPrincipal(jsii.String("ec2.amazonaws.com")),
	},
})

You can specify which IP address types (IPv4, IPv6, or both) are supported for your VPC endpoint service:

var networkLoadBalancer NetworkLoadBalancer


ec2.NewVpcEndpointService(this, jsii.String("EndpointService"), &VpcEndpointServiceProps{
	VpcEndpointServiceLoadBalancers: []IVpcEndpointServiceLoadBalancer{
		networkLoadBalancer,
	},
	// Support both IPv4 and IPv6 connections to the endpoint service
	SupportedIpAddressTypes: []IpAddressType{
		ec2.IpAddressType_IPV4,
		ec2.IpAddressType_IPV6,
	},
})

You can restrict access to your endpoint service to specific AWS regions:

var networkLoadBalancer NetworkLoadBalancer


ec2.NewVpcEndpointService(this, jsii.String("EndpointService"), &VpcEndpointServiceProps{
	VpcEndpointServiceLoadBalancers: []IVpcEndpointServiceLoadBalancer{
		networkLoadBalancer,
	},
	// Allow service consumers from these regions only
	AllowedRegions: []*string{
		jsii.String("us-east-1"),
		jsii.String("eu-west-1"),
	},
})

Endpoint services support private DNS, which makes it easier for clients to connect to your service by automatically setting up DNS in their VPC. You can enable private DNS on an endpoint service like so:

import "github.com/aws/aws-cdk-go/awscdk"
var zone PublicHostedZone
var vpces VpcEndpointService


awscdk.NewVpcEndpointServiceDomainName(this, jsii.String("EndpointDomain"), &VpcEndpointServiceDomainNameProps{
	EndpointService: vpces,
	DomainName: jsii.String("my-stuff.aws-cdk.dev"),
	PublicHostedZone: zone,
})

Note: The domain name must be owned (registered through Route53) by the account the endpoint service is in, or delegated to the account. The VpcEndpointServiceDomainName will handle the AWS side of domain verification, the process for which can be found here

Client VPN endpoint

AWS Client VPN is a managed client-based VPN service that enables you to securely access your AWS resources and resources in your on-premises network. With Client VPN, you can access your resources from any location using an OpenVPN-based VPN client.

Use the addClientVpnEndpoint() method to add a client VPN endpoint to a VPC:

vpc.addClientVpnEndpoint(jsii.String("Endpoint"), &ClientVpnEndpointOptions{
	Cidr: jsii.String("10.100.0.0/16"),
	ServerCertificateArn: jsii.String("arn:aws:acm:us-east-1:123456789012:certificate/server-certificate-id"),
	// Mutual authentication
	ClientCertificateArn: jsii.String("arn:aws:acm:us-east-1:123456789012:certificate/client-certificate-id"),
	// User-based authentication
	UserBasedAuthentication: ec2.ClientVpnUserBasedAuthentication_Federated(samlProvider),
})

The endpoint must use at least one authentication method:

  • Mutual authentication with a client certificate
  • User-based authentication (directory or federated)

If user-based authentication is used, the self-service portal URL is made available via a CloudFormation output.

By default, a new security group is created, and logging is enabled. Moreover, a rule to authorize all users to the VPC CIDR is created.

To customize authorization rules, set the authorizeAllUsersToVpcCidr prop to false and use addAuthorizationRule():

endpoint := vpc.addClientVpnEndpoint(jsii.String("Endpoint"), &ClientVpnEndpointOptions{
	Cidr: jsii.String("10.100.0.0/16"),
	ServerCertificateArn: jsii.String("arn:aws:acm:us-east-1:123456789012:certificate/server-certificate-id"),
	UserBasedAuthentication: ec2.ClientVpnUserBasedAuthentication_Federated(samlProvider),
	AuthorizeAllUsersToVpcCidr: jsii.Boolean(false),
})

endpoint.AddAuthorizationRule(jsii.String("Rule"), &ClientVpnAuthorizationRuleOptions{
	Cidr: jsii.String("10.0.10.0/32"),
	GroupId: jsii.String("group-id"),
})

Use addRoute() to configure network routes:

endpoint := vpc.addClientVpnEndpoint(jsii.String("Endpoint"), &ClientVpnEndpointOptions{
	Cidr: jsii.String("10.100.0.0/16"),
	ServerCertificateArn: jsii.String("arn:aws:acm:us-east-1:123456789012:certificate/server-certificate-id"),
	UserBasedAuthentication: ec2.ClientVpnUserBasedAuthentication_Federated(samlProvider),
})

// Client-to-client access
endpoint.AddRoute(jsii.String("Route"), &ClientVpnRouteOptions{
	Cidr: jsii.String("10.100.0.0/16"),
	Target: ec2.ClientVpnRouteTarget_Local(),
})

Use the connections object of the endpoint to allow traffic to other security groups.

To enable client route enforcement, configure the clientRouteEnforcementOptions.enforced prop to true:

endpoint := vpc.addClientVpnEndpoint(jsii.String("Endpoint"), &ClientVpnEndpointOptions{
	Cidr: jsii.String("10.100.0.0/16"),
	ServerCertificateArn: jsii.String("arn:aws:acm:us-east-1:123456789012:certificate/server-certificate-id"),
	ClientCertificateArn: jsii.String("arn:aws:acm:us-east-1:123456789012:certificate/client-certificate-id"),
	ClientRouteEnforcementOptions: &ClientRouteEnforcementOptions{
		Enforced: jsii.Boolean(true),
	},
})

To control whether clients are automatically disconnected when the maximum session duration is reached, use the disconnectOnSessionTimeout prop. By default (true), clients are disconnected and must manually reconnect. Set to false to allow automatic reconnection attempts:

endpoint := vpc.addClientVpnEndpoint(jsii.String("Endpoint"), &ClientVpnEndpointOptions{
	Cidr: jsii.String("10.100.0.0/16"),
	ServerCertificateArn: jsii.String("arn:aws:acm:us-east-1:123456789012:certificate/server-certificate-id"),
	ClientCertificateArn: jsii.String("arn:aws:acm:us-east-1:123456789012:certificate/client-certificate-id"),
	DisconnectOnSessionTimeout: jsii.Boolean(false),
})

Detail information about maximum VPN session duration timeout can be found in the AWS documentation.

Instances

You can use the Instance class to start up a single EC2 instance. For production setups, we recommend you use an AutoScalingGroup from the aws-autoscaling module instead, as AutoScalingGroups will take care of restarting your instance if it ever fails.

var vpc Vpc
var instanceType InstanceType


// Amazon Linux 2
// Amazon Linux 2
ec2.NewInstance(this, jsii.String("Instance2"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2(),
})

// Amazon Linux 2 with kernel 5.x
// Amazon Linux 2 with kernel 5.x
ec2.NewInstance(this, jsii.String("Instance3"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_*LatestAmazonLinux2(&AmazonLinux2ImageSsmParameterProps{
		Kernel: ec2.AmazonLinux2Kernel_KERNEL_5_10(),
	}),
})

// Amazon Linux 2023
// Amazon Linux 2023
ec2.NewInstance(this, jsii.String("Instance4"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
})

// Graviton 3 Processor
// Graviton 3 Processor
ec2.NewInstance(this, jsii.String("Instance5"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_*LatestAmazonLinux2023(&AmazonLinux2023ImageSsmParameterProps{
		CpuType: ec2.AmazonLinuxCpuType_ARM_64,
	}),
})
Latest Amazon Linux Images

Rather than specifying a specific AMI ID to use, it is possible to specify a SSM Parameter that contains the AMI ID. AWS publishes a set of public parameters that contain the latest Amazon Linux AMIs. To make it easier to query a particular image parameter, the CDK provides a couple of constructs AmazonLinux2ImageSsmParameter, AmazonLinux2022ImageSsmParameter, & AmazonLinux2023SsmParameter. For example to use the latest al2023 image:

var vpc Vpc


ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
})

Warning Since this retrieves the value from an SSM parameter at deployment time, the value will be resolved each time the stack is deployed. This means that if the parameter contains a different value on your next deployment, the instance will be replaced.

It is also possible to perform the lookup once at synthesis time and then cache the value in CDK context. This way the value will not change on future deployments unless you manually refresh the context.

var vpc Vpc


ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(&AmazonLinux2023ImageSsmParameterProps{
		CachedInContext: jsii.Boolean(true),
	}),
})

// or
// or
ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	// context cache is turned on by default
	MachineImage: ec2.NewAmazonLinux2023ImageSsmParameter(),
})

// or
// or
ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_*LatestAmazonLinux2023(&AmazonLinux2023ImageSsmParameterProps{
		CachedInContext: jsii.Boolean(true),
		// creates a distinct context variable for this image, instead of resolving to the same
		// value anywhere this lookup is done in your app
		AdditionalCacheKey: this.Node.path,
	}),
})

// or
// or
ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	// context cache is turned on by default
	MachineImage: ec2.NewAmazonLinux2023ImageSsmParameter(&AmazonLinux2023ImageSsmParameterProps{
		// creates a distinct context variable for this image, instead of resolving to the same
		// value anywhere this lookup is done in your app
		AdditionalCacheKey: this.*Node.path,
	}),
})
Kernel Versions

Each Amazon Linux AMI uses a specific kernel version. Most Amazon Linux generations come with an AMI using the "default" kernel and then 1 or more AMIs using a specific kernel version, which may or may not be different from the default kernel version.

For example, Amazon Linux 2 has two different AMIs available from the SSM parameters.

  • /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-ebs

    • This is the "default" kernel which uses kernel-4.14
  • /aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-x86_64-ebs

If a new Amazon Linux generation AMI is published with a new kernel version, then a new SSM parameter will be created with the new version (e.g. /aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.15-hvm-x86_64-ebs), but the "default" AMI may or may not be updated.

If you would like to make sure you always have the latest kernel version, then either specify the specific latest kernel version or opt-in to using the CDK latest kernel version.

var vpc Vpc


ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	// context cache is turned on by default
	MachineImage: ec2.NewAmazonLinux2023ImageSsmParameter(&AmazonLinux2023ImageSsmParameterProps{
		Kernel: ec2.AmazonLinux2023Kernel_KERNEL_6_1(),
	}),
})

CDK managed latest

var vpc Vpc


ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	// context cache is turned on by default
	MachineImage: ec2.NewAmazonLinux2023ImageSsmParameter(&AmazonLinux2023ImageSsmParameterProps{
		Kernel: ec2.AmazonLinux2023Kernel_CDK_LATEST(),
	}),
})

// or

// or
ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
})

When using the CDK managed latest version, when a new kernel version is made available the LATEST will be updated to point to the new kernel version. You then would be required to update the newest CDK version for it to take effect.

Configuring Instances using CloudFormation Init (cfn-init)

CloudFormation Init allows you to configure your instances by writing files to them, installing software packages, starting services and running arbitrary commands. By default, if any of the instance setup commands throw an error; the deployment will fail and roll back to the previously known good state. The following documentation also applies to AutoScalingGroups.

For the full set of capabilities of this system, see the documentation for AWS::CloudFormation::Init. Here is an example of applying some configuration to an instance:

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage


ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,

	// Showing the most complex setup, if you have simpler requirements
	// you can use `CloudFormationInit.fromElements()`.
	Init: ec2.CloudFormationInit_FromConfigSets(&ConfigSetProps{
		ConfigSets: map[string][]*string{
			// Applies the configs below in this order
			"default": []*string{
				jsii.String("yumPreinstall"),
				jsii.String("config"),
			},
		},
		Configs: map[string]InitConfig{
			"yumPreinstall": ec2.NewInitConfig([]InitElement{
				ec2.InitPackage_yum(jsii.String("git")),
			}),
			"config": ec2.NewInitConfig([]InitElement{
				ec2.InitFile_fromObject(jsii.String("/etc/stack.json"), map[string]interface{}{
					"stackId": awscdk.*stack_of(this).stackId,
					"stackName": awscdk.*stack_of(this).stackName,
					"region": awscdk.*stack_of(this).region,
				}),
				ec2.InitGroup_fromName(jsii.String("my-group")),
				ec2.InitUser_fromName(jsii.String("my-user")),
				ec2.InitPackage_rpm(jsii.String("http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/r/rubygem-git-1.5.0-2.el8.noarch.rpm")),
			}),
		},
	}),
	InitOptions: &ApplyCloudFormationInitOptions{
		// Optional, which configsets to activate (['default'] by default)
		ConfigSets: []*string{
			jsii.String("default"),
		},

		// Optional, how long the installation is expected to take (5 minutes by default)
		Timeout: awscdk.Duration_Minutes(jsii.Number(30)),

		// Optional, whether to include the --url argument when running cfn-init and cfn-signal commands (false by default)
		IncludeUrl: jsii.Boolean(true),

		// Optional, whether to include the --role argument when running cfn-init and cfn-signal commands (false by default)
		IncludeRole: jsii.Boolean(true),
	},
})

InitCommand can not be used to start long-running processes. At deploy time, cfn-init will always wait for the process to exit before continuing, causing the CloudFormation deployment to fail because the signal hasn't been received within the expected timeout.

Instead, you should install a service configuration file onto your machine InitFile, and then use InitService to start it.

If your Linux OS is using SystemD (like Amazon Linux 2 or higher), the CDK has helpers to create a long-running service using CFN Init. You can create a SystemD-compatible config file using InitService.systemdConfigFile(), and start it immediately. The following examples shows how to start a trivial Python 3 web server:

var vpc Vpc
var instanceType InstanceType


ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),

	Init: ec2.CloudFormationInit_FromElements(ec2.InitService_SystemdConfigFile(jsii.String("simpleserver"), &SystemdConfigFileOptions{
		Command: jsii.String("/usr/bin/python3 -m http.server 8080"),
		Cwd: jsii.String("/var/www/html"),
	}), ec2.InitService_Enable(jsii.String("simpleserver"), &InitServiceOptions{
		ServiceManager: ec2.ServiceManager_SYSTEMD,
	}), ec2.InitFile_FromString(jsii.String("/var/www/html/index.html"), jsii.String("Hello! It's working!"))),
})

You can have services restarted after the init process has made changes to the system. To do that, instantiate an InitServiceRestartHandle and pass it to the config elements that need to trigger the restart and the service itself. For example, the following config writes a config file for nginx, extracts an archive to the root directory, and then restarts nginx so that it picks up the new config and files:

var myBucket Bucket


handle := ec2.NewInitServiceRestartHandle()

ec2.CloudFormationInit_FromElements(ec2.InitFile_FromString(jsii.String("/etc/nginx/nginx.conf"), jsii.String("..."), &InitFileOptions{
	ServiceRestartHandles: []InitServiceRestartHandle{
		handle,
	},
}), ec2.InitSource_FromS3Object(jsii.String("/var/www/html"), myBucket, jsii.String("html.zip"), &InitSourceOptions{
	ServiceRestartHandles: []InitServiceRestartHandle{
		handle,
	},
}), ec2.InitService_Enable(jsii.String("nginx"), &InitServiceOptions{
	ServiceRestartHandle: handle,
}))

You can use the environmentVariables or environmentFiles parameters to specify environment variables for your services:

ec2.NewInitConfig([]InitElement{
	ec2.InitFile_FromString(jsii.String("/myvars.env"), jsii.String("VAR_FROM_FILE=\"VAR_FROM_FILE\"")),
	ec2.InitService_SystemdConfigFile(jsii.String("myapp"), &SystemdConfigFileOptions{
		Command: jsii.String("/usr/bin/python3 -m http.server 8080"),
		Cwd: jsii.String("/var/www/html"),
		EnvironmentVariables: map[string]*string{
			"MY_VAR": jsii.String("MY_VAR"),
		},
		EnvironmentFiles: []*string{
			jsii.String("/myvars.env"),
		},
	}),
})
Bastion Hosts

A bastion host functions as an instance used to access servers and resources in a VPC without open up the complete VPC on a network level. You can use bastion hosts using a standard SSH connection targeting port 22 on the host. As an alternative, you can connect the SSH connection feature of AWS Systems Manager Session Manager, which does not need an opened security group. (https://aws.amazon.com/about-aws/whats-new/2019/07/session-manager-launches-tunneling-support-for-ssh-and-scp/)

A default bastion host for use via SSM can be configured like:

host := ec2.NewBastionHostLinux(this, jsii.String("BastionHost"), &BastionHostLinuxProps{
	Vpc: Vpc,
})

If you want to connect from the internet using SSH, you need to place the host into a public subnet. You can then configure allowed source hosts.

host := ec2.NewBastionHostLinux(this, jsii.String("BastionHost"), &BastionHostLinuxProps{
	Vpc: Vpc,
	SubnetSelection: &SubnetSelection{
		SubnetType: ec2.SubnetType_PUBLIC,
	},
})
host.AllowSshAccessFrom(ec2.Peer_Ipv4(jsii.String("1.2.3.4/32")))

As there are no SSH public keys deployed on this machine, you need to use EC2 Instance Connect with the command aws ec2-instance-connect send-ssh-public-key to provide your SSH public key.

EBS volume for the bastion host can be encrypted like:

host := ec2.NewBastionHostLinux(this, jsii.String("BastionHost"), &BastionHostLinuxProps{
	Vpc: Vpc,
	BlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/sdh"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(10), &EbsDeviceOptions{
				Encrypted: jsii.Boolean(true),
			}),
		},
	},
})

It's recommended to set the @aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault feature flag to true to use Amazon Linux 2023 as the bastion host AMI. Without this flag set, the bastion host will default to Amazon Linux 2, which will be unsupported in June 2025.

{
  "context": {
    "@aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault": true
  }
}
Placement Group

Specify placementGroup to enable the placement group support:

var instanceType InstanceType


pg := ec2.NewPlacementGroup(this, jsii.String("test-pg"), &PlacementGroupProps{
	Strategy: ec2.PlacementGroupStrategy_SPREAD,
})

ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
	PlacementGroup: pg,
})
Block Devices

To add EBS block device mappings, specify the blockDevices property. The following example sets the EBS-backed root device (/dev/sda1) size to 50 GiB, and adds another EBS-backed device mapped to /dev/sdm that is 100 GiB in size:

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage


ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,

	// ...

	BlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/sda1"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(50)),
		},
		&BlockDevice{
			DeviceName: jsii.String("/dev/sdm"),
			Volume: ec2.BlockDeviceVolume_*Ebs(jsii.Number(100)),
		},
	},
})

It is also possible to encrypt the block devices. In this example we will create an customer managed key encrypted EBS-backed root device:

import "github.com/aws/aws-cdk-go/awscdk"

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage


kmsKey := awscdk.NewKey(this, jsii.String("KmsKey"))

ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,

	// ...

	BlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/sda1"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(50), &EbsDeviceOptions{
				Encrypted: jsii.Boolean(true),
				KmsKey: kmsKey,
			}),
		},
	},
})

To specify the throughput value for gp3 volumes, use the throughput property:

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage


ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,

	// ...

	BlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/sda1"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(100), &EbsDeviceOptions{
				VolumeType: ec2.EbsDeviceVolumeType_GP3,
				Throughput: jsii.Number(250),
			}),
		},
	},
})
EBS Optimized Instances

An Amazon EBS–optimized instance uses an optimized configuration stack and provides additional, dedicated capacity for Amazon EBS I/O. This optimization provides the best performance for your EBS volumes by minimizing contention between Amazon EBS I/O and other traffic from your instance.

Depending on the instance type, this features is enabled by default while others require explicit activation. Please refer to the documentation for details.

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage


ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,
	EbsOptimized: jsii.Boolean(true),
	BlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/xvda"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(8)),
		},
	},
})
Volumes

Whereas a BlockDeviceVolume is an EBS volume that is created and destroyed as part of the creation and destruction of a specific instance. A Volume is for when you want an EBS volume separate from any particular instance. A Volume is an EBS block device that can be attached to, or detached from, any instance at any time. Some types of Volumes can also be attached to multiple instances at the same time to allow you to have shared storage between those instances.

A notable restriction is that a Volume can only be attached to instances in the same availability zone as the Volume itself.

The following demonstrates how to create a 500 GiB encrypted Volume in the us-west-2a availability zone, and give a role the ability to attach that Volume to a specific instance:

var instance Instance
var role Role


volume := ec2.NewVolume(this, jsii.String("Volume"), &VolumeProps{
	AvailabilityZone: jsii.String("us-west-2a"),
	Size: awscdk.Size_Gibibytes(jsii.Number(500)),
	Encrypted: jsii.Boolean(true),
})

volume.grantAttachVolume(role, []IInstanceRef{
	instance,
})
Instances Attaching Volumes to Themselves

If you need to grant an instance the ability to attach/detach an EBS volume to/from itself, then using grantAttachVolume and grantDetachVolume as outlined above will lead to an unresolvable circular reference between the instance role and the instance. In this case, use grantAttachVolumeByResourceTag and grantDetachVolumeByResourceTag as follows:

var instance Instance
var volume Volume


attachGrant := volume.grantAttachVolumeByResourceTag(instance.GrantPrincipal, []Construct{
	instance,
})
detachGrant := volume.grantDetachVolumeByResourceTag(instance.GrantPrincipal, []Construct{
	instance,
})
Attaching Volumes

The Amazon EC2 documentation for Linux Instances and Windows Instances contains information on how to attach and detach your Volumes to/from instances, and how to format them for use.

The following is a sample skeleton of EC2 UserData that can be used to attach a Volume to the Linux instance that it is running on:

var instance Instance
var volume Volume


volume.grantAttachVolumeByResourceTag(instance.GrantPrincipal, []Construct{
	instance,
})
targetDevice := "/dev/xvdz"
instance.UserData.AddCommands(jsii.String("TOKEN=$(curl -SsfX PUT \"http://169.254.169.254/latest/api/token\" -H \"X-aws-ec2-metadata-token-ttl-seconds: 21600\")"), jsii.String("INSTANCE_ID=$(curl -SsfH \"X-aws-ec2-metadata-token: $TOKEN\" http://169.254.169.254/latest/meta-data/instance-id)"),
// Attach the volume to /dev/xvdz
fmt.Sprintf("aws --region %v ec2 attach-volume --volume-id %v --instance-id $INSTANCE_ID --device %v", awscdk.stack_Of(this).Region, volume.VolumeId, targetDevice),
// Wait until the volume has attached
fmt.Sprintf("while ! test -e %v; do sleep 1; done", targetDevice))
Tagging Volumes

You can configure tag propagation on volume creation.

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage


ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	MachineImage: MachineImage,
	InstanceType: InstanceType,
	PropagateTagsToVolumeOnCreation: jsii.Boolean(true),
})
Throughput on GP3 Volumes

You can specify the throughput of a GP3 volume from 125 (default) to 2000.

ec2.NewVolume(this, jsii.String("Volume"), &VolumeProps{
	AvailabilityZone: jsii.String("us-east-1a"),
	Size: awscdk.Size_Gibibytes(jsii.Number(125)),
	VolumeType: ec2.EbsDeviceVolumeType_GP3,
	Throughput: jsii.Number(125),
})
Volume initialization rate

When creating an EBS volume from a snapshot, you can specify the volume initialization rate at which the snapshot blocks are downloaded from Amazon S3 to the volume. Specifying a volume initialization rate ensures that the volume is initialized at a predictable and consistent rate after creation.

ec2.NewVolume(this, jsii.String("Volume"), &VolumeProps{
	AvailabilityZone: jsii.String("us-east-1a"),
	Size: awscdk.Size_Gibibytes(jsii.Number(500)),
	SnapshotId: jsii.String("snap-1234567890abcdef0"),
	VolumeInitializationRate: awscdk.Size_Mebibytes(jsii.Number(250)),
})

The volumeInitializationRate must be:

  • Between 100 and 300 MiB/s
  • Only specified when creating a volume from a snapshot
Configuring Instance Metadata Service (IMDS)
Comprehensive Metadata Options

You can configure EC2 Instance Metadata Service options using individual properties. This provides comprehensive control over all metadata service settings:

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage


// Example 1: Enforce IMDSv2 with comprehensive options
// Example 1: Enforce IMDSv2 with comprehensive options
ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,
	HttpEndpoint: jsii.Boolean(true),
	HttpProtocolIpv6: jsii.Boolean(false),
	HttpPutResponseHopLimit: jsii.Number(2),
	HttpTokens: ec2.HttpTokens_REQUIRED,
	InstanceMetadataTags: jsii.Boolean(true),
})

// Example 2: Enforce IMDSv2 with minimal configuration
// Example 2: Enforce IMDSv2 with minimal configuration
ec2.NewInstance(this, jsii.String("SecureInstance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,
	HttpTokens: ec2.HttpTokens_REQUIRED,
})
Simple IMDSv2 Enforcement

For simple IMDSv2 enforcement without additional configuration, you can use the requireImdsv2 property:

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage


ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,

	// Simple IMDSv2 enforcement
	RequireImdsv2: jsii.Boolean(true),
})
Applying to Multiple Instances

You can also use the either the InstanceRequireImdsv2Aspect for EC2 instances or the LaunchTemplateRequireImdsv2Aspect for EC2 launch templates to apply the operation to multiple instances or launch templates, respectively.

The following example demonstrates how to use the InstanceRequireImdsv2Aspect to require IMDSv2 for all EC2 instances in a stack:

aspect := ec2.NewInstanceRequireImdsv2Aspect()
awscdk.Aspects_Of(this).Add(aspect)
Associating a Public IP Address with an Instance

All subnets have an attribute that determines whether instances launched into that subnet are assigned a public IPv4 address. This attribute is set to true by default for default public subnets. Thus, an EC2 instance launched into a default public subnet will be assigned a public IPv4 address. Nondefault public subnets have this attribute set to false by default and any EC2 instance launched into a nondefault public subnet will not be assigned a public IPv4 address automatically. To automatically assign a public IPv4 address to an instance launched into a nondefault public subnet, you can set the associatePublicIpAddress property on the Instance construct to true. Alternatively, to not automatically assign a public IPv4 address to an instance launched into a default public subnet, you can set associatePublicIpAddress to false. Including this property, removing this property, or updating the value of this property on an existing instance will result in replacement of the instance.

vpc := ec2.NewVpc(this, jsii.String("VPC"), &VpcProps{
	Cidr: jsii.String("10.0.0.0/16"),
	NatGateways: jsii.Number(0),
	MaxAzs: jsii.Number(3),
	SubnetConfiguration: []SubnetConfiguration{
		&SubnetConfiguration{
			Name: jsii.String("public-subnet-1"),
			SubnetType: ec2.SubnetType_PUBLIC,
			CidrMask: jsii.Number(24),
		},
	},
})

instance := ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	VpcSubnets: &SubnetSelection{
		SubnetGroupName: jsii.String("public-subnet-1"),
	},
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_T3, ec2.InstanceSize_NANO),
	MachineImage: ec2.NewAmazonLinuxImage(&AmazonLinuxImageProps{
		Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX_2,
	}),
	DetailedMonitoring: jsii.Boolean(true),
	AssociatePublicIpAddress: jsii.Boolean(true),
})
Specifying a key pair

To allow SSH access to an EC2 instance by default, a Key Pair must be specified. Key pairs can be provided with the keyPair property to instances and launch templates. You can create a key pair for an instance like this:

var vpc Vpc
var instanceType InstanceType


keyPair := ec2.NewKeyPair(this, jsii.String("KeyPair"), &KeyPairProps{
	Type: ec2.KeyPairType_ED25519,
	Format: ec2.KeyPairFormat_PEM,
})
instance := ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
	// Use the custom key pair
	KeyPair: KeyPair,
})

When a new EC2 Key Pair is created (without imported material), the private key material is automatically stored in Systems Manager Parameter Store. This can be retrieved from the key pair construct:

keyPair := ec2.NewKeyPair(this, jsii.String("KeyPair"))
privateKey := keyPair.privateKey

If you already have an SSH key that you wish to use in EC2, that can be provided when constructing the KeyPair. If public key material is provided, the key pair is considered "imported" and there will not be any data automatically stored in Systems Manager Parameter Store and the type property cannot be specified for the key pair.

keyPair := ec2.NewKeyPair(this, jsii.String("KeyPair"), &KeyPairProps{
	PublicKeyMaterial: jsii.String("ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB7jpNzG+YG0s+xIGWbxrxIZiiozHOEuzIJacvASP0mq"),
})
Using an existing EC2 Key Pair

If you already have an EC2 Key Pair created outside of the CDK, you can import that key to your CDK stack.

You can import it purely by name:

keyPair := ec2.KeyPair_FromKeyPairName(this, jsii.String("KeyPair"), jsii.String("the-keypair-name"))

Or by specifying additional attributes:

keyPair := ec2.KeyPair_FromKeyPairAttributes(this, jsii.String("KeyPair"), &KeyPairAttributes{
	KeyPairName: jsii.String("the-keypair-name"),
	Type: ec2.KeyPairType_RSA,
})
Using IPv6 IPs

Instances can be given IPv6 IPs by launching them into a subnet of a dual stack VPC.

vpc := ec2.NewVpc(this, jsii.String("Ip6VpcDualStack"), &VpcProps{
	IpProtocol: ec2.IpProtocol_DUAL_STACK,
	SubnetConfiguration: []SubnetConfiguration{
		&SubnetConfiguration{
			Name: jsii.String("Public"),
			SubnetType: ec2.SubnetType_PUBLIC,
			MapPublicIpOnLaunch: jsii.Boolean(true),
		},
		&SubnetConfiguration{
			Name: jsii.String("Private"),
			SubnetType: ec2.SubnetType_PRIVATE_ISOLATED,
		},
	},
})

instance := ec2.NewInstance(this, jsii.String("MyInstance"), &InstanceProps{
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_T2, ec2.InstanceSize_MICRO),
	MachineImage: ec2.MachineImage_LatestAmazonLinux2(),
	Vpc: vpc,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PUBLIC,
	},
	AllowAllIpv6Outbound: jsii.Boolean(true),
})

instance.Connections.AllowFrom(ec2.Peer_AnyIpv6(), ec2.Port_AllIcmpV6(), jsii.String("allow ICMPv6"))

Note to set mapPublicIpOnLaunch to true in the subnetConfiguration.

Additionally, IPv6 support varies by instance type. Most instance types have IPv6 support with exception of m1-m3, c1, g2, and t1.micro. A full list can be found here: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI.

Specifying the IPv6 Address

If you want to specify the number of IPv6 addresses to assign to the instance, you can use the ipv6AddresseCount property:

// dual stack VPC
var vpc Vpc


instance := ec2.NewInstance(this, jsii.String("MyInstance"), &InstanceProps{
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_M5, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_LatestAmazonLinux2(),
	Vpc: vpc,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PUBLIC,
	},
	// Assign 2 IPv6 addresses to the instance
	Ipv6AddressCount: jsii.Number(2),
})
Credit configuration modes for burstable instances

You can set the credit configuration mode for burstable instances (T2, T3, T3a and T4g instance types):

var vpc Vpc


instance := ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_T3, ec2.InstanceSize_MICRO),
	MachineImage: ec2.MachineImage_LatestAmazonLinux2(),
	Vpc: vpc,
	CreditSpecification: ec2.CpuCredits_STANDARD,
})

It is also possible to set the credit configuration mode for NAT instances.

natInstanceProvider := ec2.NatProvider_Instance(&NatInstanceProps{
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_T4G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.NewAmazonLinuxImage(),
	CreditSpecification: ec2.CpuCredits_UNLIMITED,
})
ec2.NewVpc(this, jsii.String("VPC"), &VpcProps{
	NatGatewayProvider: natInstanceProvider,
})

Note: CpuCredits.UNLIMITED mode is not supported for T3 instances that are launched on a Dedicated Host.

Shutdown behavior

You can specify the behavior of the instance when you initiate shutdown from the instance (using the operating system command for system shutdown).

var vpc Vpc


ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_T3, ec2.InstanceSize_NANO),
	MachineImage: ec2.NewAmazonLinuxImage(&AmazonLinuxImageProps{
		Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX_2,
	}),
	InstanceInitiatedShutdownBehavior: ec2.InstanceInitiatedShutdownBehavior_TERMINATE,
})
Enabling Nitro Enclaves

You can enable AWS Nitro Enclaves for your EC2 instances by setting the enclaveEnabled property to true. Nitro Enclaves is a feature of AWS Nitro System that enables creating isolated and highly constrained CPU environments known as enclaves.

var vpc Vpc


instance := ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_M5, ec2.InstanceSize_XLARGE),
	MachineImage: ec2.NewAmazonLinuxImage(),
	Vpc: vpc,
	EnclaveEnabled: jsii.Boolean(true),
})

NOTE: You must use an instance type and operating system that support Nitro Enclaves. For more information, see Requirements.

Enabling Termination Protection

You can enable Termination Protection for your EC2 instances by setting the disableApiTermination property to true. Termination Protection controls whether the instance can be terminated using the AWS Management Console, AWS Command Line Interface (AWS CLI), or API.

var vpc Vpc


instance := ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_M5, ec2.InstanceSize_XLARGE),
	MachineImage: ec2.NewAmazonLinuxImage(),
	Vpc: vpc,
	DisableApiTermination: jsii.Boolean(true),
})
Enabling Instance Hibernation

You can enable Instance Hibernation for your EC2 instances by setting the hibernationEnabled property to true. Instance Hibernation saves the instance's in-memory (RAM) state when an instance is stopped, and restores that state when the instance is started.

var vpc Vpc


instance := ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_M5, ec2.InstanceSize_XLARGE),
	MachineImage: ec2.NewAmazonLinuxImage(),
	Vpc: vpc,
	HibernationEnabled: jsii.Boolean(true),
	BlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/xvda"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(30), &EbsDeviceOptions{
				VolumeType: ec2.EbsDeviceVolumeType_GP3,
				Encrypted: jsii.Boolean(true),
				DeleteOnTermination: jsii.Boolean(true),
			}),
		},
	},
})

NOTE: You must use an instance and a volume that meet the requirements for hibernation. For more information, see Prerequisites for Amazon EC2 instance hibernation.

VPC Flow Logs

VPC Flow Logs is a feature that enables you to capture information about the IP traffic going to and from network interfaces in your VPC. Flow log data can be published to Amazon CloudWatch Logs and Amazon S3. After you've created a flow log, you can retrieve and view its data in the chosen destination. (https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html).

By default, a flow log will be created with CloudWatch Logs as the destination.

You can create a flow log like this:

var vpc Vpc


ec2.NewFlowLog(this, jsii.String("FlowLog"), &FlowLogProps{
	ResourceType: ec2.FlowLogResourceType_FromVpc(vpc),
})

Or you can add a Flow Log to a VPC by using the addFlowLog method like this:

vpc := ec2.NewVpc(this, jsii.String("Vpc"))

vpc.addFlowLog(jsii.String("FlowLog"))

You can also add multiple flow logs with different destinations.

vpc := ec2.NewVpc(this, jsii.String("Vpc"))

vpc.addFlowLog(jsii.String("FlowLogS3"), &FlowLogOptions{
	Destination: ec2.FlowLogDestination_ToS3(),
})

// Only reject traffic and interval every minute.
vpc.addFlowLog(jsii.String("FlowLogCloudWatch"), &FlowLogOptions{
	TrafficType: ec2.FlowLogTrafficType_REJECT,
	MaxAggregationInterval: ec2.FlowLogMaxAggregationInterval_ONE_MINUTE,
})

To create a Transit Gateway flow log, you can use the fromTransitGatewayId method:

var tgw CfnTransitGateway


ec2.NewFlowLog(this, jsii.String("TransitGatewayFlowLog"), &FlowLogProps{
	ResourceType: ec2.FlowLogResourceType_FromTransitGatewayId(tgw.ref),
})

To create a Transit Gateway Attachment flow log, you can use the fromTransitGatewayAttachmentId method:

var tgwAttachment CfnTransitGatewayAttachment


ec2.NewFlowLog(this, jsii.String("TransitGatewayAttachmentFlowLog"), &FlowLogProps{
	ResourceType: ec2.FlowLogResourceType_FromTransitGatewayAttachmentId(tgwAttachment.ref),
})

For flow logs targeting TransitGateway and TransitGatewayAttachment, specifying the trafficType is not possible.

Custom Formatting

You can also custom format flow logs.

vpc := ec2.NewVpc(this, jsii.String("Vpc"))

vpc.addFlowLog(jsii.String("FlowLog"), &FlowLogOptions{
	LogFormat: []LogFormat{
		ec2.LogFormat_DST_PORT(),
		ec2.LogFormat_SRC_PORT(),
	},
})

// If you just want to add a field to the default field
vpc.addFlowLog(jsii.String("FlowLog"), &FlowLogOptions{
	LogFormat: []LogFormat{
		ec2.LogFormat_VERSION(),
		ec2.LogFormat_ALL_DEFAULT_FIELDS(),
	},
})

// If AWS CDK does not support the new fields
vpc.addFlowLog(jsii.String("FlowLog"), &FlowLogOptions{
	LogFormat: []LogFormat{
		ec2.LogFormat_SRC_PORT(),
		ec2.LogFormat_Custom(jsii.String("${new-field}")),
	},
})

By default, the CDK will create the necessary resources for the destination. For the CloudWatch Logs destination it will create a CloudWatch Logs Log Group as well as the IAM role with the necessary permissions to publish to the log group. In the case of an S3 destination, it will create the S3 bucket.

If you want to customize any of the destination resources you can provide your own as part of the destination.

CloudWatch Logs

var vpc Vpc


logGroup := logs.NewLogGroup(this, jsii.String("MyCustomLogGroup"))

role := iam.NewRole(this, jsii.String("MyCustomRole"), &RoleProps{
	AssumedBy: iam.NewServicePrincipal(jsii.String("vpc-flow-logs.amazonaws.com")),
})

ec2.NewFlowLog(this, jsii.String("FlowLog"), &FlowLogProps{
	ResourceType: ec2.FlowLogResourceType_FromVpc(vpc),
	Destination: ec2.FlowLogDestination_ToCloudWatchLogs(logGroup, role),
})

S3

var vpc Vpc


bucket := s3.NewBucket(this, jsii.String("MyCustomBucket"))

ec2.NewFlowLog(this, jsii.String("FlowLog"), &FlowLogProps{
	ResourceType: ec2.FlowLogResourceType_FromVpc(vpc),
	Destination: ec2.FlowLogDestination_ToS3(bucket),
})

ec2.NewFlowLog(this, jsii.String("FlowLogWithKeyPrefix"), &FlowLogProps{
	ResourceType: ec2.FlowLogResourceType_*FromVpc(vpc),
	Destination: ec2.FlowLogDestination_*ToS3(bucket, jsii.String("prefix/")),
})

Amazon Data Firehose

import firehose "github.com/aws/aws-cdk-go/awscdk"

var vpc Vpc
var deliveryStream IDeliveryStream


vpc.addFlowLog(jsii.String("FlowLogsFirehose"), &FlowLogOptions{
	Destination: ec2.FlowLogDestination_ToFirehose(deliveryStream),
})

When the S3 destination is configured, AWS will automatically create an S3 bucket policy that allows the service to write logs to the bucket. This makes it impossible to later update that bucket policy. To have CDK create the bucket policy so that future updates can be made, the @aws-cdk/aws-s3:createDefaultLoggingPolicy feature flag can be used. This can be set in the cdk.json file.

{
  "context": {
    "@aws-cdk/aws-s3:createDefaultLoggingPolicy": true
  }
}

User Data

User data enables you to run a script when your instances start up. In order to configure these scripts you can add commands directly to the script or you can use the UserData's convenience functions to aid in the creation of your script.

A user data could be configured to run a script found in an asset through the following:

import "github.com/aws/aws-cdk-go/awscdk"

var instance Instance


asset := awscdk.NewAsset(this, jsii.String("Asset"), &AssetProps{
	Path: jsii.String("./configure.sh"),
})

localPath := instance.UserData.AddS3DownloadCommand(&S3DownloadOptions{
	Bucket: asset.Bucket,
	BucketKey: asset.S3ObjectKey,
	Region: jsii.String("us-east-1"),
})
instance.UserData.AddExecuteFileCommand(&ExecuteFileOptions{
	FilePath: localPath,
	Arguments: jsii.String("--verbose -y"),
})
asset.GrantRead(instance.Role)
Persisting user data

By default, EC2 UserData is run once on only the first time that an instance is started. It is possible to make the user data script run on every start of the instance.

When creating a Windows UserData you can use the persist option to set whether or not to add <persist>true</persist> to the user data script. it can be used as follows:

windowsUserData := ec2.UserData_ForWindows(&WindowsUserDataOptions{
	Persist: jsii.Boolean(true),
})

For a Linux instance, this can be accomplished by using a Multipart user data to configure cloud-config as detailed in: https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/

Multipart user data

In addition, to above the MultipartUserData can be used to change instance startup behavior. Multipart user data are composed from separate parts forming archive. The most common parts are scripts executed during instance set-up. However, there are other kinds, too.

The advantage of multipart archive is in flexibility when it's needed to add additional parts or to use specialized parts to fine tune instance startup. Some services (like AWS Batch) support only MultipartUserData.

The parts can be executed at different moment of instance start-up and can serve a different purpose. This is controlled by contentType property. For common scripts, text/x-shellscript; charset="utf-8" can be used as content type.

In order to create archive the MultipartUserData has to be instantiated. Than, user can add parts to multipart archive using addPart. The MultipartBody contains methods supporting creation of body parts.

If the very custom part is required, it can be created using MultipartUserData.fromRawBody, in this case full control over content type, transfer encoding, and body properties is given to the user.

Below is an example for creating multipart user data with single body part responsible for installing awscli and configuring maximum size of storage used by Docker containers:

bootHookConf := ec2.UserData_ForLinux()
bootHookConf.AddCommands(jsii.String("cloud-init-per once docker_options echo 'OPTIONS=\"${OPTIONS} --storage-opt dm.basesize=40G\"' >> /etc/sysconfig/docker"))

setupCommands := ec2.UserData_ForLinux()
setupCommands.AddCommands(jsii.String("sudo yum install awscli && echo Packages installed らと > /var/tmp/setup"))

multipartUserData := ec2.NewMultipartUserData()
// The docker has to be configured at early stage, so content type is overridden to boothook
multipartUserData.AddPart(ec2.MultipartBody_FromUserData(bootHookConf, jsii.String("text/cloud-boothook; charset=\"us-ascii\"")))
// Execute the rest of setup
multipartUserData.AddPart(ec2.MultipartBody_FromUserData(setupCommands))

ec2.NewLaunchTemplate(this, jsii.String(""), &LaunchTemplateProps{
	UserData: multipartUserData,
	BlockDevices: []BlockDevice{
	},
})

For more information see Specifying Multiple User Data Blocks Using a MIME Multi Part Archive

Using add*Command on MultipartUserData

To use the add*Command methods, that are inherited from the UserData interface, on MultipartUserData you must add a part to the MultipartUserData and designate it as the receiver for these methods. This is accomplished by using the addUserDataPart() method on MultipartUserData with the makeDefault argument set to true:

multipartUserData := ec2.NewMultipartUserData()
commandsUserData := ec2.UserData_ForLinux()
multipartUserData.AddUserDataPart(commandsUserData, ec2.MultipartBody_SHELL_SCRIPT(), jsii.Boolean(true))

// Adding commands to the multipartUserData adds them to commandsUserData, and vice-versa.
multipartUserData.AddCommands(jsii.String("touch /root/multi.txt"))
commandsUserData.AddCommands(jsii.String("touch /root/userdata.txt"))

When used on an EC2 instance, the above multipartUserData will create both multi.txt and userdata.txt in /root.

Importing existing subnet

To import an existing Subnet, call Subnet.fromSubnetAttributes() or Subnet.fromSubnetId(). Only if you supply the subnet's Availability Zone and Route Table Ids when calling Subnet.fromSubnetAttributes() will you be able to use the CDK features that use these values (such as selecting one subnet per AZ).

Importing an existing subnet looks like this:

// Supply all properties
subnet1 := ec2.Subnet_FromSubnetAttributes(this, jsii.String("SubnetFromAttributes"), &SubnetAttributes{
	SubnetId: jsii.String("s-1234"),
	AvailabilityZone: jsii.String("pub-az-4465"),
	RouteTableId: jsii.String("rt-145"),
})

// Supply only subnet id
subnet2 := ec2.Subnet_FromSubnetId(this, jsii.String("SubnetFromId"), jsii.String("s-1234"))

Launch Templates

A Launch Template is a standardized template that contains the configuration information to launch an instance. They can be used when launching instances on their own, through Amazon EC2 Auto Scaling, EC2 Fleet, and Spot Fleet. Launch templates enable you to store launch parameters so that you do not have to specify them every time you launch an instance. For information on Launch Templates please see the official documentation.

The following demonstrates how to create a launch template with an Amazon Machine Image, security group, and an instance profile.

var vpc Vpc


role := iam.NewRole(this, jsii.String("Role"), &RoleProps{
	AssumedBy: iam.NewServicePrincipal(jsii.String("ec2.amazonaws.com")),
})
instanceProfile := iam.NewInstanceProfile(this, jsii.String("InstanceProfile"), &InstanceProfileProps{
	Role: Role,
})

template := ec2.NewLaunchTemplate(this, jsii.String("LaunchTemplate"), &LaunchTemplateProps{
	LaunchTemplateName: jsii.String("MyTemplateV1"),
	VersionDescription: jsii.String("This is my v1 template"),
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
	SecurityGroup: ec2.NewSecurityGroup(this, jsii.String("LaunchTemplateSG"), &SecurityGroupProps{
		Vpc: vpc,
	}),
	InstanceProfile: InstanceProfile,
})

And the following demonstrates how to enable metadata options support.

ec2.NewLaunchTemplate(this, jsii.String("LaunchTemplate"), &LaunchTemplateProps{
	HttpEndpoint: jsii.Boolean(true),
	HttpProtocolIpv6: jsii.Boolean(true),
	HttpPutResponseHopLimit: jsii.Number(1),
	HttpTokens: ec2.LaunchTemplateHttpTokens_REQUIRED,
	InstanceMetadataTags: jsii.Boolean(true),
})

And the following demonstrates how to add one or more security groups to launch template.

var vpc Vpc


sg1 := ec2.NewSecurityGroup(this, jsii.String("sg1"), &SecurityGroupProps{
	Vpc: vpc,
})
sg2 := ec2.NewSecurityGroup(this, jsii.String("sg2"), &SecurityGroupProps{
	Vpc: vpc,
})

launchTemplate := ec2.NewLaunchTemplate(this, jsii.String("LaunchTemplate"), &LaunchTemplateProps{
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
	SecurityGroup: sg1,
})

launchTemplate.AddSecurityGroup(sg2)

To use AWS Systems Manager parameters instead of AMI IDs in launch templates and resolve the AMI IDs at instance launch time:

launchTemplate := ec2.NewLaunchTemplate(this, jsii.String("LaunchTemplate"), &LaunchTemplateProps{
	MachineImage: ec2.MachineImage_ResolveSsmParameterAtLaunch(jsii.String("parameterName")),
})
Placement Group

Specify placementGroup to enable the placement group support:

var instanceType InstanceType


pg := ec2.NewPlacementGroup(this, jsii.String("test-pg"), &PlacementGroupProps{
	Strategy: ec2.PlacementGroupStrategy_SPREAD,
})

ec2.NewLaunchTemplate(this, jsii.String("LaunchTemplate"), &LaunchTemplateProps{
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
	PlacementGroup: pg,
})

Please note this feature does not support Launch Configurations.

Detailed Monitoring

The following demonstrates how to enable Detailed Monitoring for an EC2 instance. Keep in mind that Detailed Monitoring results in additional charges.

var vpc Vpc
var instanceType InstanceType


ec2.NewInstance(this, jsii.String("Instance1"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
	DetailedMonitoring: jsii.Boolean(true),
})

Connecting to your instances using SSM Session Manager

SSM Session Manager makes it possible to connect to your instances from the AWS Console, without preparing SSH keys.

To do so, you need to:

If these conditions are met, you can connect to the instance from the EC2 Console. Example:

var vpc Vpc
var instanceType InstanceType


ec2.NewInstance(this, jsii.String("Instance1"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,

	// Amazon Linux 2023 comes with SSM Agent by default
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),

	// Turn on SSM
	SsmSessionPermissions: jsii.Boolean(true),
})

Managed Prefix Lists

Create and manage customer-managed prefix lists. If you don't specify anything in this construct, it will manage IPv4 addresses.

You can also create an empty Prefix List with only the maximum number of entries specified, as shown in the following code. If nothing is specified, maxEntries=1.

ec2.NewPrefixList(this, jsii.String("EmptyPrefixList"), &PrefixListProps{
	MaxEntries: jsii.Number(100),
})

maxEntries can also be omitted as follows. In this case maxEntries: 2, will be set.

ec2.NewPrefixList(this, jsii.String("PrefixList"), &PrefixListProps{
	Entries: []EntryProperty{
		&EntryProperty{
			Cidr: jsii.String("10.0.0.1/32"),
		},
		&EntryProperty{
			Cidr: jsii.String("10.0.0.2/32"),
			Description: jsii.String("sample1"),
		},
	},
})

To import AWS-managed prefix list, you can use PrefixList.fromLookup().

ec2.PrefixList_FromLookup(this, jsii.String("PrefixListFromName"), &PrefixListLookupOptions{
	PrefixListName: jsii.String("com.amazonaws.global.cloudfront.origin-facing"),
})

For more information see Work with customer-managed prefix lists.

IAM instance profile

Use instanceProfile to apply specific IAM Instance Profile. Cannot be used with role

var instanceType InstanceType
var vpc Vpc


role := iam.NewRole(this, jsii.String("Role"), &RoleProps{
	AssumedBy: iam.NewServicePrincipal(jsii.String("ec2.amazonaws.com")),
})
instanceProfile := iam.NewInstanceProfile(this, jsii.String("InstanceProfile"), &InstanceProfileProps{
	Role: Role,
})

ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
	InstanceProfile: InstanceProfile,
})

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AmazonLinux2ImageSsmParameter_SsmParameterName added in v2.76.0

func AmazonLinux2ImageSsmParameter_SsmParameterName(props *AmazonLinux2ImageSsmParameterProps) *string

Generates a SSM Parameter name for a specific amazon linux 2 AMI.

Example values:

"/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-ebs",
"/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
"/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-x86_64-ebs",
"/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-arm64-gp2",
"/aws/service/ami-amazon-linux-latest/amzn2-ami-minimal-hvm-arm64-ebs",
"/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-arm64-gp2",
"/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-x86_64-gp2",

"/aws/service/ami-amazon-linux-latest/amzn2-ami-minimal-hvm-x86_64-ebs".

func AmazonLinux2022ImageSsmParameter_SsmParameterName added in v2.76.0

func AmazonLinux2022ImageSsmParameter_SsmParameterName(props *AmazonLinux2022ImageSsmParameterProps) *string

Generates a SSM Parameter name for a specific amazon linux 2022 AMI.

Example values:

"/aws/service/ami-amazon-linux-latest/al2022-ami-kernel-5.15-x86_64",
"/aws/service/ami-amazon-linux-latest/al2022-ami-kernel-default-x86_64",
"/aws/service/ami-amazon-linux-latest/al2022-ami-minimal-kernel-5.15-arm64",
"/aws/service/ami-amazon-linux-latest/al2022-ami-minimal-kernel-5.15-x86_64",
"/aws/service/ami-amazon-linux-latest/al2022-ami-kernel-5.15-arm64",
"/aws/service/ami-amazon-linux-latest/al2022-ami-minimal-kernel-default-arm64",
"/aws/service/ami-amazon-linux-latest/al2022-ami-minimal-kernel-default-x86_64",

"/aws/service/ami-amazon-linux-latest/al2022-ami-kernel-default-arm64",.

func AmazonLinux2023ImageSsmParameter_SsmParameterName added in v2.76.0

func AmazonLinux2023ImageSsmParameter_SsmParameterName(props *AmazonLinux2023ImageSsmParameterProps) *string

Generates a SSM Parameter name for a specific amazon linux 2023 AMI.

Example values:

"/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64",
"/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64",
"/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-6.1-arm64",
"/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-6.1-x86_64",
"/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-default-arm64",
"/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64",
"/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-default-x86_64",

"/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64",.

func AmazonLinuxImage_SsmParameterName

func AmazonLinuxImage_SsmParameterName(props *AmazonLinuxImageProps) *string

Return the SSM parameter name that will contain the Amazon Linux image with the given attributes.

func BastionHostLinux_IsConstruct

func BastionHostLinux_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func BastionHostLinux_IsOwnedResource added in v2.32.0

func BastionHostLinux_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func BastionHostLinux_IsResource

func BastionHostLinux_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func BastionHostLinux_PROPERTY_INJECTION_ID added in v2.196.0

func BastionHostLinux_PROPERTY_INJECTION_ID() *string

func CfnCapacityManagerDataExport_ArnForCapacityManagerDataExport added in v2.227.0

func CfnCapacityManagerDataExport_ArnForCapacityManagerDataExport(resource interfacesawsec2.ICapacityManagerDataExportRef) *string

func CfnCapacityManagerDataExport_CFN_RESOURCE_TYPE_NAME added in v2.223.0

func CfnCapacityManagerDataExport_CFN_RESOURCE_TYPE_NAME() *string

func CfnCapacityManagerDataExport_FromCapacityManagerDataExportId added in v2.224.0

func CfnCapacityManagerDataExport_FromCapacityManagerDataExportId(scope constructs.Construct, id *string, capacityManagerDataExportId *string) interfacesawsec2.ICapacityManagerDataExportRef

Creates a new ICapacityManagerDataExportRef from a capacityManagerDataExportId.

func CfnCapacityManagerDataExport_IsCfnCapacityManagerDataExport added in v2.231.0

func CfnCapacityManagerDataExport_IsCfnCapacityManagerDataExport(x interface{}) *bool

Checks whether the given object is a CfnCapacityManagerDataExport.

func CfnCapacityManagerDataExport_IsCfnElement added in v2.223.0

func CfnCapacityManagerDataExport_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnCapacityManagerDataExport_IsCfnResource added in v2.223.0

func CfnCapacityManagerDataExport_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnCapacityManagerDataExport_IsConstruct added in v2.223.0

func CfnCapacityManagerDataExport_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnCapacityReservationFleet_ArnForCapacityReservationFleet added in v2.227.0

func CfnCapacityReservationFleet_ArnForCapacityReservationFleet(resource interfacesawsec2.ICapacityReservationFleetRef) *string

func CfnCapacityReservationFleet_CFN_RESOURCE_TYPE_NAME

func CfnCapacityReservationFleet_CFN_RESOURCE_TYPE_NAME() *string

func CfnCapacityReservationFleet_FromCapacityReservationFleetId added in v2.218.0

func CfnCapacityReservationFleet_FromCapacityReservationFleetId(scope constructs.Construct, id *string, capacityReservationFleetId *string) interfacesawsec2.ICapacityReservationFleetRef

Creates a new ICapacityReservationFleetRef from a capacityReservationFleetId.

func CfnCapacityReservationFleet_IsCfnCapacityReservationFleet added in v2.231.0

func CfnCapacityReservationFleet_IsCfnCapacityReservationFleet(x interface{}) *bool

Checks whether the given object is a CfnCapacityReservationFleet.

func CfnCapacityReservationFleet_IsCfnElement

func CfnCapacityReservationFleet_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnCapacityReservationFleet_IsCfnResource

func CfnCapacityReservationFleet_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnCapacityReservationFleet_IsConstruct

func CfnCapacityReservationFleet_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnCapacityReservation_ArnForCapacityReservation added in v2.227.0

func CfnCapacityReservation_ArnForCapacityReservation(resource interfacesawsec2.ICapacityReservationRef) *string

func CfnCapacityReservation_CFN_RESOURCE_TYPE_NAME

func CfnCapacityReservation_CFN_RESOURCE_TYPE_NAME() *string

func CfnCapacityReservation_FromCapacityReservationArn added in v2.218.0

func CfnCapacityReservation_FromCapacityReservationArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.ICapacityReservationRef

Creates a new ICapacityReservationRef from an ARN.

func CfnCapacityReservation_FromCapacityReservationId added in v2.218.0

func CfnCapacityReservation_FromCapacityReservationId(scope constructs.Construct, id *string, capacityReservationId *string) interfacesawsec2.ICapacityReservationRef

Creates a new ICapacityReservationRef from a capacityReservationId.

func CfnCapacityReservation_IsCfnCapacityReservation added in v2.231.0

func CfnCapacityReservation_IsCfnCapacityReservation(x interface{}) *bool

Checks whether the given object is a CfnCapacityReservation.

func CfnCapacityReservation_IsCfnElement

func CfnCapacityReservation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnCapacityReservation_IsCfnResource

func CfnCapacityReservation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnCapacityReservation_IsConstruct

func CfnCapacityReservation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnCarrierGateway_ArnForCarrierGateway added in v2.227.0

func CfnCarrierGateway_ArnForCarrierGateway(resource interfacesawsec2.ICarrierGatewayRef) *string

func CfnCarrierGateway_CFN_RESOURCE_TYPE_NAME

func CfnCarrierGateway_CFN_RESOURCE_TYPE_NAME() *string

func CfnCarrierGateway_FromCarrierGatewayId added in v2.218.0

func CfnCarrierGateway_FromCarrierGatewayId(scope constructs.Construct, id *string, carrierGatewayId *string) interfacesawsec2.ICarrierGatewayRef

Creates a new ICarrierGatewayRef from a carrierGatewayId.

func CfnCarrierGateway_IsCfnCarrierGateway added in v2.231.0

func CfnCarrierGateway_IsCfnCarrierGateway(x interface{}) *bool

Checks whether the given object is a CfnCarrierGateway.

func CfnCarrierGateway_IsCfnElement

func CfnCarrierGateway_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnCarrierGateway_IsCfnResource

func CfnCarrierGateway_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnCarrierGateway_IsConstruct

func CfnCarrierGateway_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnClientVpnAuthorizationRule_CFN_RESOURCE_TYPE_NAME

func CfnClientVpnAuthorizationRule_CFN_RESOURCE_TYPE_NAME() *string

func CfnClientVpnAuthorizationRule_IsCfnClientVpnAuthorizationRule added in v2.231.0

func CfnClientVpnAuthorizationRule_IsCfnClientVpnAuthorizationRule(x interface{}) *bool

Checks whether the given object is a CfnClientVpnAuthorizationRule.

func CfnClientVpnAuthorizationRule_IsCfnElement

func CfnClientVpnAuthorizationRule_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnClientVpnAuthorizationRule_IsCfnResource

func CfnClientVpnAuthorizationRule_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnClientVpnAuthorizationRule_IsConstruct

func CfnClientVpnAuthorizationRule_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnClientVpnEndpoint_ArnForClientVpnEndpoint added in v2.227.0

func CfnClientVpnEndpoint_ArnForClientVpnEndpoint(resource interfacesawsec2.IClientVpnEndpointRef) *string

func CfnClientVpnEndpoint_CFN_RESOURCE_TYPE_NAME

func CfnClientVpnEndpoint_CFN_RESOURCE_TYPE_NAME() *string

func CfnClientVpnEndpoint_FromClientVpnEndpointId added in v2.218.0

func CfnClientVpnEndpoint_FromClientVpnEndpointId(scope constructs.Construct, id *string, clientVpnEndpointId *string) interfacesawsec2.IClientVpnEndpointRef

Creates a new IClientVpnEndpointRef from a clientVpnEndpointId.

func CfnClientVpnEndpoint_IsCfnClientVpnEndpoint added in v2.231.0

func CfnClientVpnEndpoint_IsCfnClientVpnEndpoint(x interface{}) *bool

Checks whether the given object is a CfnClientVpnEndpoint.

func CfnClientVpnEndpoint_IsCfnElement

func CfnClientVpnEndpoint_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnClientVpnEndpoint_IsCfnResource

func CfnClientVpnEndpoint_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnClientVpnEndpoint_IsConstruct

func CfnClientVpnEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnClientVpnRoute_CFN_RESOURCE_TYPE_NAME

func CfnClientVpnRoute_CFN_RESOURCE_TYPE_NAME() *string

func CfnClientVpnRoute_IsCfnClientVpnRoute added in v2.231.0

func CfnClientVpnRoute_IsCfnClientVpnRoute(x interface{}) *bool

Checks whether the given object is a CfnClientVpnRoute.

func CfnClientVpnRoute_IsCfnElement

func CfnClientVpnRoute_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnClientVpnRoute_IsCfnResource

func CfnClientVpnRoute_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnClientVpnRoute_IsConstruct

func CfnClientVpnRoute_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnClientVpnTargetNetworkAssociation_CFN_RESOURCE_TYPE_NAME

func CfnClientVpnTargetNetworkAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnClientVpnTargetNetworkAssociation_IsCfnClientVpnTargetNetworkAssociation added in v2.231.0

func CfnClientVpnTargetNetworkAssociation_IsCfnClientVpnTargetNetworkAssociation(x interface{}) *bool

Checks whether the given object is a CfnClientVpnTargetNetworkAssociation.

func CfnClientVpnTargetNetworkAssociation_IsCfnElement

func CfnClientVpnTargetNetworkAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnClientVpnTargetNetworkAssociation_IsCfnResource

func CfnClientVpnTargetNetworkAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnClientVpnTargetNetworkAssociation_IsConstruct

func CfnClientVpnTargetNetworkAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnCustomerGateway_ArnForCustomerGateway added in v2.227.0

func CfnCustomerGateway_ArnForCustomerGateway(resource interfacesawsec2.ICustomerGatewayRef) *string

func CfnCustomerGateway_CFN_RESOURCE_TYPE_NAME

func CfnCustomerGateway_CFN_RESOURCE_TYPE_NAME() *string

func CfnCustomerGateway_FromCustomerGatewayId added in v2.218.0

func CfnCustomerGateway_FromCustomerGatewayId(scope constructs.Construct, id *string, customerGatewayId *string) interfacesawsec2.ICustomerGatewayRef

Creates a new ICustomerGatewayRef from a customerGatewayId.

func CfnCustomerGateway_IsCfnCustomerGateway added in v2.231.0

func CfnCustomerGateway_IsCfnCustomerGateway(x interface{}) *bool

Checks whether the given object is a CfnCustomerGateway.

func CfnCustomerGateway_IsCfnElement

func CfnCustomerGateway_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnCustomerGateway_IsCfnResource

func CfnCustomerGateway_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnCustomerGateway_IsConstruct

func CfnCustomerGateway_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDHCPOptions_ArnForDHCPOptions added in v2.227.0

func CfnDHCPOptions_ArnForDHCPOptions(resource interfacesawsec2.IDHCPOptionsRef) *string

func CfnDHCPOptions_CFN_RESOURCE_TYPE_NAME

func CfnDHCPOptions_CFN_RESOURCE_TYPE_NAME() *string

func CfnDHCPOptions_FromDhcpOptionsId added in v2.218.0

func CfnDHCPOptions_FromDhcpOptionsId(scope constructs.Construct, id *string, dhcpOptionsId *string) interfacesawsec2.IDHCPOptionsRef

Creates a new IDHCPOptionsRef from a dhcpOptionsId.

func CfnDHCPOptions_IsCfnDHCPOptions added in v2.231.0

func CfnDHCPOptions_IsCfnDHCPOptions(x interface{}) *bool

Checks whether the given object is a CfnDHCPOptions.

func CfnDHCPOptions_IsCfnElement

func CfnDHCPOptions_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDHCPOptions_IsCfnResource

func CfnDHCPOptions_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDHCPOptions_IsConstruct

func CfnDHCPOptions_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnEC2Fleet_ArnForEC2Fleet added in v2.227.0

func CfnEC2Fleet_ArnForEC2Fleet(resource interfacesawsec2.IEC2FleetRef) *string

func CfnEC2Fleet_CFN_RESOURCE_TYPE_NAME

func CfnEC2Fleet_CFN_RESOURCE_TYPE_NAME() *string

func CfnEC2Fleet_FromFleetId added in v2.218.0

func CfnEC2Fleet_FromFleetId(scope constructs.Construct, id *string, fleetId *string) interfacesawsec2.IEC2FleetRef

Creates a new IEC2FleetRef from a fleetId.

func CfnEC2Fleet_IsCfnEC2Fleet added in v2.231.0

func CfnEC2Fleet_IsCfnEC2Fleet(x interface{}) *bool

Checks whether the given object is a CfnEC2Fleet.

func CfnEC2Fleet_IsCfnElement

func CfnEC2Fleet_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnEC2Fleet_IsCfnResource

func CfnEC2Fleet_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnEC2Fleet_IsConstruct

func CfnEC2Fleet_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnEIPAssociation_CFN_RESOURCE_TYPE_NAME

func CfnEIPAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnEIPAssociation_IsCfnEIPAssociation added in v2.231.0

func CfnEIPAssociation_IsCfnEIPAssociation(x interface{}) *bool

Checks whether the given object is a CfnEIPAssociation.

func CfnEIPAssociation_IsCfnElement

func CfnEIPAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnEIPAssociation_IsCfnResource

func CfnEIPAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnEIPAssociation_IsConstruct

func CfnEIPAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnEIP_ArnForEIP added in v2.238.0

func CfnEIP_ArnForEIP(resource interfacesawsec2.IEIPRef) *string

func CfnEIP_CFN_RESOURCE_TYPE_NAME

func CfnEIP_CFN_RESOURCE_TYPE_NAME() *string

func CfnEIP_IsCfnEIP added in v2.231.0

func CfnEIP_IsCfnEIP(x interface{}) *bool

Checks whether the given object is a CfnEIP.

func CfnEIP_IsCfnElement

func CfnEIP_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnEIP_IsCfnResource

func CfnEIP_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnEIP_IsConstruct

func CfnEIP_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnEgressOnlyInternetGateway_ArnForEgressOnlyInternetGateway added in v2.227.0

func CfnEgressOnlyInternetGateway_ArnForEgressOnlyInternetGateway(resource interfacesawsec2.IEgressOnlyInternetGatewayRef) *string

func CfnEgressOnlyInternetGateway_CFN_RESOURCE_TYPE_NAME

func CfnEgressOnlyInternetGateway_CFN_RESOURCE_TYPE_NAME() *string

func CfnEgressOnlyInternetGateway_FromEgressOnlyInternetGatewayId added in v2.218.0

func CfnEgressOnlyInternetGateway_FromEgressOnlyInternetGatewayId(scope constructs.Construct, id *string, egressOnlyInternetGatewayId *string) interfacesawsec2.IEgressOnlyInternetGatewayRef

Creates a new IEgressOnlyInternetGatewayRef from a egressOnlyInternetGatewayId.

func CfnEgressOnlyInternetGateway_IsCfnEgressOnlyInternetGateway added in v2.231.0

func CfnEgressOnlyInternetGateway_IsCfnEgressOnlyInternetGateway(x interface{}) *bool

Checks whether the given object is a CfnEgressOnlyInternetGateway.

func CfnEgressOnlyInternetGateway_IsCfnElement

func CfnEgressOnlyInternetGateway_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnEgressOnlyInternetGateway_IsCfnResource

func CfnEgressOnlyInternetGateway_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnEgressOnlyInternetGateway_IsConstruct

func CfnEgressOnlyInternetGateway_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnEnclaveCertificateIamRoleAssociation_CFN_RESOURCE_TYPE_NAME

func CfnEnclaveCertificateIamRoleAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnEnclaveCertificateIamRoleAssociation_IsCfnElement

func CfnEnclaveCertificateIamRoleAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnEnclaveCertificateIamRoleAssociation_IsCfnEnclaveCertificateIamRoleAssociation added in v2.231.0

func CfnEnclaveCertificateIamRoleAssociation_IsCfnEnclaveCertificateIamRoleAssociation(x interface{}) *bool

Checks whether the given object is a CfnEnclaveCertificateIamRoleAssociation.

func CfnEnclaveCertificateIamRoleAssociation_IsCfnResource

func CfnEnclaveCertificateIamRoleAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnEnclaveCertificateIamRoleAssociation_IsConstruct

func CfnEnclaveCertificateIamRoleAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnFlowLog_ArnForFlowLog added in v2.227.0

func CfnFlowLog_ArnForFlowLog(resource interfacesawsec2.IFlowLogRef) *string

func CfnFlowLog_CFN_RESOURCE_TYPE_NAME

func CfnFlowLog_CFN_RESOURCE_TYPE_NAME() *string

func CfnFlowLog_FromFlowLogId added in v2.218.0

func CfnFlowLog_FromFlowLogId(scope constructs.Construct, id *string, flowLogId *string) interfacesawsec2.IFlowLogRef

Creates a new IFlowLogRef from a flowLogId.

func CfnFlowLog_IsCfnElement

func CfnFlowLog_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnFlowLog_IsCfnFlowLog added in v2.231.0

func CfnFlowLog_IsCfnFlowLog(x interface{}) *bool

Checks whether the given object is a CfnFlowLog.

func CfnFlowLog_IsCfnResource

func CfnFlowLog_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnFlowLog_IsConstruct

func CfnFlowLog_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnGatewayRouteTableAssociation_CFN_RESOURCE_TYPE_NAME

func CfnGatewayRouteTableAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnGatewayRouteTableAssociation_IsCfnElement

func CfnGatewayRouteTableAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnGatewayRouteTableAssociation_IsCfnGatewayRouteTableAssociation added in v2.231.0

func CfnGatewayRouteTableAssociation_IsCfnGatewayRouteTableAssociation(x interface{}) *bool

Checks whether the given object is a CfnGatewayRouteTableAssociation.

func CfnGatewayRouteTableAssociation_IsCfnResource

func CfnGatewayRouteTableAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnGatewayRouteTableAssociation_IsConstruct

func CfnGatewayRouteTableAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnHost_CFN_RESOURCE_TYPE_NAME

func CfnHost_CFN_RESOURCE_TYPE_NAME() *string

func CfnHost_IsCfnElement

func CfnHost_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnHost_IsCfnHost added in v2.231.0

func CfnHost_IsCfnHost(x interface{}) *bool

Checks whether the given object is a CfnHost.

func CfnHost_IsCfnResource

func CfnHost_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnHost_IsConstruct

func CfnHost_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIPAMAllocation_CFN_RESOURCE_TYPE_NAME added in v2.2.0

func CfnIPAMAllocation_CFN_RESOURCE_TYPE_NAME() *string

func CfnIPAMAllocation_IsCfnElement added in v2.2.0

func CfnIPAMAllocation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIPAMAllocation_IsCfnIPAMAllocation added in v2.231.0

func CfnIPAMAllocation_IsCfnIPAMAllocation(x interface{}) *bool

Checks whether the given object is a CfnIPAMAllocation.

func CfnIPAMAllocation_IsCfnResource added in v2.2.0

func CfnIPAMAllocation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIPAMAllocation_IsConstruct added in v2.2.0

func CfnIPAMAllocation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIPAMPoolCidr_CFN_RESOURCE_TYPE_NAME added in v2.64.0

func CfnIPAMPoolCidr_CFN_RESOURCE_TYPE_NAME() *string

func CfnIPAMPoolCidr_IsCfnElement added in v2.64.0

func CfnIPAMPoolCidr_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIPAMPoolCidr_IsCfnIPAMPoolCidr added in v2.231.0

func CfnIPAMPoolCidr_IsCfnIPAMPoolCidr(x interface{}) *bool

Checks whether the given object is a CfnIPAMPoolCidr.

func CfnIPAMPoolCidr_IsCfnResource added in v2.64.0

func CfnIPAMPoolCidr_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIPAMPoolCidr_IsConstruct added in v2.64.0

func CfnIPAMPoolCidr_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIPAMPool_ArnForIPAMPool added in v2.227.0

func CfnIPAMPool_ArnForIPAMPool(resource interfacesawsec2.IIPAMPoolRef) *string

func CfnIPAMPool_CFN_RESOURCE_TYPE_NAME added in v2.2.0

func CfnIPAMPool_CFN_RESOURCE_TYPE_NAME() *string

func CfnIPAMPool_FromIPAMPoolArn added in v2.218.0

func CfnIPAMPool_FromIPAMPoolArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IIPAMPoolRef

Creates a new IIPAMPoolRef from an ARN.

func CfnIPAMPool_FromIpamPoolId added in v2.218.0

func CfnIPAMPool_FromIpamPoolId(scope constructs.Construct, id *string, ipamPoolId *string) interfacesawsec2.IIPAMPoolRef

Creates a new IIPAMPoolRef from a ipamPoolId.

func CfnIPAMPool_IsCfnElement added in v2.2.0

func CfnIPAMPool_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIPAMPool_IsCfnIPAMPool added in v2.231.0

func CfnIPAMPool_IsCfnIPAMPool(x interface{}) *bool

Checks whether the given object is a CfnIPAMPool.

func CfnIPAMPool_IsCfnResource added in v2.2.0

func CfnIPAMPool_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIPAMPool_IsConstruct added in v2.2.0

func CfnIPAMPool_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIPAMPrefixListResolverTarget_ArnForIPAMPrefixListResolverTarget added in v2.245.0

func CfnIPAMPrefixListResolverTarget_ArnForIPAMPrefixListResolverTarget(resource interfacesawsec2.IIPAMPrefixListResolverTargetRef) *string

func CfnIPAMPrefixListResolverTarget_CFN_RESOURCE_TYPE_NAME added in v2.245.0

func CfnIPAMPrefixListResolverTarget_CFN_RESOURCE_TYPE_NAME() *string

func CfnIPAMPrefixListResolverTarget_FromIPAMPrefixListResolverTargetArn added in v2.247.0

func CfnIPAMPrefixListResolverTarget_FromIPAMPrefixListResolverTargetArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IIPAMPrefixListResolverTargetRef

Creates a new IIPAMPrefixListResolverTargetRef from an ARN.

func CfnIPAMPrefixListResolverTarget_FromIpamPrefixListResolverTargetId added in v2.247.0

func CfnIPAMPrefixListResolverTarget_FromIpamPrefixListResolverTargetId(scope constructs.Construct, id *string, ipamPrefixListResolverTargetId *string) interfacesawsec2.IIPAMPrefixListResolverTargetRef

Creates a new IIPAMPrefixListResolverTargetRef from a ipamPrefixListResolverTargetId.

func CfnIPAMPrefixListResolverTarget_IsCfnElement added in v2.245.0

func CfnIPAMPrefixListResolverTarget_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIPAMPrefixListResolverTarget_IsCfnIPAMPrefixListResolverTarget added in v2.245.0

func CfnIPAMPrefixListResolverTarget_IsCfnIPAMPrefixListResolverTarget(x interface{}) *bool

Checks whether the given object is a CfnIPAMPrefixListResolverTarget.

func CfnIPAMPrefixListResolverTarget_IsCfnResource added in v2.245.0

func CfnIPAMPrefixListResolverTarget_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIPAMPrefixListResolverTarget_IsConstruct added in v2.245.0

func CfnIPAMPrefixListResolverTarget_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIPAMPrefixListResolver_ArnForIPAMPrefixListResolver added in v2.241.0

func CfnIPAMPrefixListResolver_ArnForIPAMPrefixListResolver(resource interfacesawsec2.IIPAMPrefixListResolverRef) *string

func CfnIPAMPrefixListResolver_CFN_RESOURCE_TYPE_NAME added in v2.241.0

func CfnIPAMPrefixListResolver_CFN_RESOURCE_TYPE_NAME() *string

func CfnIPAMPrefixListResolver_FromIPAMPrefixListResolverArn added in v2.241.0

func CfnIPAMPrefixListResolver_FromIPAMPrefixListResolverArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IIPAMPrefixListResolverRef

Creates a new IIPAMPrefixListResolverRef from an ARN.

func CfnIPAMPrefixListResolver_FromIpamPrefixListResolverId added in v2.241.0

func CfnIPAMPrefixListResolver_FromIpamPrefixListResolverId(scope constructs.Construct, id *string, ipamPrefixListResolverId *string) interfacesawsec2.IIPAMPrefixListResolverRef

Creates a new IIPAMPrefixListResolverRef from a ipamPrefixListResolverId.

func CfnIPAMPrefixListResolver_IsCfnElement added in v2.241.0

func CfnIPAMPrefixListResolver_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIPAMPrefixListResolver_IsCfnIPAMPrefixListResolver added in v2.241.0

func CfnIPAMPrefixListResolver_IsCfnIPAMPrefixListResolver(x interface{}) *bool

Checks whether the given object is a CfnIPAMPrefixListResolver.

func CfnIPAMPrefixListResolver_IsCfnResource added in v2.241.0

func CfnIPAMPrefixListResolver_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIPAMPrefixListResolver_IsConstruct added in v2.241.0

func CfnIPAMPrefixListResolver_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIPAMResourceDiscoveryAssociation_ArnForIPAMResourceDiscoveryAssociation added in v2.227.0

func CfnIPAMResourceDiscoveryAssociation_ArnForIPAMResourceDiscoveryAssociation(resource interfacesawsec2.IIPAMResourceDiscoveryAssociationRef) *string

func CfnIPAMResourceDiscoveryAssociation_CFN_RESOURCE_TYPE_NAME added in v2.64.0

func CfnIPAMResourceDiscoveryAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnIPAMResourceDiscoveryAssociation_FromIPAMResourceDiscoveryAssociationArn added in v2.231.0

func CfnIPAMResourceDiscoveryAssociation_FromIPAMResourceDiscoveryAssociationArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IIPAMResourceDiscoveryAssociationRef

Creates a new IIPAMResourceDiscoveryAssociationRef from an ARN.

func CfnIPAMResourceDiscoveryAssociation_FromIpamResourceDiscoveryAssociationId added in v2.218.0

func CfnIPAMResourceDiscoveryAssociation_FromIpamResourceDiscoveryAssociationId(scope constructs.Construct, id *string, ipamResourceDiscoveryAssociationId *string) interfacesawsec2.IIPAMResourceDiscoveryAssociationRef

Creates a new IIPAMResourceDiscoveryAssociationRef from a ipamResourceDiscoveryAssociationId.

func CfnIPAMResourceDiscoveryAssociation_IsCfnElement added in v2.64.0

func CfnIPAMResourceDiscoveryAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIPAMResourceDiscoveryAssociation_IsCfnIPAMResourceDiscoveryAssociation added in v2.231.0

func CfnIPAMResourceDiscoveryAssociation_IsCfnIPAMResourceDiscoveryAssociation(x interface{}) *bool

Checks whether the given object is a CfnIPAMResourceDiscoveryAssociation.

func CfnIPAMResourceDiscoveryAssociation_IsCfnResource added in v2.64.0

func CfnIPAMResourceDiscoveryAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIPAMResourceDiscoveryAssociation_IsConstruct added in v2.64.0

func CfnIPAMResourceDiscoveryAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIPAMResourceDiscovery_ArnForIPAMResourceDiscovery added in v2.227.0

func CfnIPAMResourceDiscovery_ArnForIPAMResourceDiscovery(resource interfacesawsec2.IIPAMResourceDiscoveryRef) *string

func CfnIPAMResourceDiscovery_CFN_RESOURCE_TYPE_NAME added in v2.64.0

func CfnIPAMResourceDiscovery_CFN_RESOURCE_TYPE_NAME() *string

func CfnIPAMResourceDiscovery_FromIPAMResourceDiscoveryArn added in v2.231.0

func CfnIPAMResourceDiscovery_FromIPAMResourceDiscoveryArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IIPAMResourceDiscoveryRef

Creates a new IIPAMResourceDiscoveryRef from an ARN.

func CfnIPAMResourceDiscovery_FromIpamResourceDiscoveryId added in v2.218.0

func CfnIPAMResourceDiscovery_FromIpamResourceDiscoveryId(scope constructs.Construct, id *string, ipamResourceDiscoveryId *string) interfacesawsec2.IIPAMResourceDiscoveryRef

Creates a new IIPAMResourceDiscoveryRef from a ipamResourceDiscoveryId.

func CfnIPAMResourceDiscovery_IsCfnElement added in v2.64.0

func CfnIPAMResourceDiscovery_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIPAMResourceDiscovery_IsCfnIPAMResourceDiscovery added in v2.231.0

func CfnIPAMResourceDiscovery_IsCfnIPAMResourceDiscovery(x interface{}) *bool

Checks whether the given object is a CfnIPAMResourceDiscovery.

func CfnIPAMResourceDiscovery_IsCfnResource added in v2.64.0

func CfnIPAMResourceDiscovery_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIPAMResourceDiscovery_IsConstruct added in v2.64.0

func CfnIPAMResourceDiscovery_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIPAMScope_ArnForIPAMScope added in v2.227.0

func CfnIPAMScope_ArnForIPAMScope(resource interfacesawsec2.IIPAMScopeRef) *string

func CfnIPAMScope_CFN_RESOURCE_TYPE_NAME added in v2.2.0

func CfnIPAMScope_CFN_RESOURCE_TYPE_NAME() *string

func CfnIPAMScope_FromIPAMScopeArn added in v2.218.0

func CfnIPAMScope_FromIPAMScopeArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IIPAMScopeRef

Creates a new IIPAMScopeRef from an ARN.

func CfnIPAMScope_FromIpamScopeId added in v2.218.0

func CfnIPAMScope_FromIpamScopeId(scope constructs.Construct, id *string, ipamScopeId *string) interfacesawsec2.IIPAMScopeRef

Creates a new IIPAMScopeRef from a ipamScopeId.

func CfnIPAMScope_IsCfnElement added in v2.2.0

func CfnIPAMScope_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIPAMScope_IsCfnIPAMScope added in v2.231.0

func CfnIPAMScope_IsCfnIPAMScope(x interface{}) *bool

Checks whether the given object is a CfnIPAMScope.

func CfnIPAMScope_IsCfnResource added in v2.2.0

func CfnIPAMScope_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIPAMScope_IsConstruct added in v2.2.0

func CfnIPAMScope_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIPAM_ArnForIPAM added in v2.227.0

func CfnIPAM_ArnForIPAM(resource interfacesawsec2.IIPAMRef) *string

func CfnIPAM_CFN_RESOURCE_TYPE_NAME added in v2.2.0

func CfnIPAM_CFN_RESOURCE_TYPE_NAME() *string

func CfnIPAM_FromIPAMArn added in v2.218.0

func CfnIPAM_FromIPAMArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IIPAMRef

Creates a new IIPAMRef from an ARN.

func CfnIPAM_FromIpamId added in v2.218.0

func CfnIPAM_FromIpamId(scope constructs.Construct, id *string, ipamId *string) interfacesawsec2.IIPAMRef

Creates a new IIPAMRef from a ipamId.

func CfnIPAM_IsCfnElement added in v2.2.0

func CfnIPAM_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIPAM_IsCfnIPAM added in v2.231.0

func CfnIPAM_IsCfnIPAM(x interface{}) *bool

Checks whether the given object is a CfnIPAM.

func CfnIPAM_IsCfnResource added in v2.2.0

func CfnIPAM_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIPAM_IsConstruct added in v2.2.0

func CfnIPAM_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnInstanceConnectEndpoint_ArnForInstanceConnectEndpoint added in v2.227.0

func CfnInstanceConnectEndpoint_ArnForInstanceConnectEndpoint(resource interfacesawsec2.IInstanceConnectEndpointRef) *string

func CfnInstanceConnectEndpoint_CFN_RESOURCE_TYPE_NAME added in v2.97.0

func CfnInstanceConnectEndpoint_CFN_RESOURCE_TYPE_NAME() *string

func CfnInstanceConnectEndpoint_FromInstanceConnectEndpointArn added in v2.245.0

func CfnInstanceConnectEndpoint_FromInstanceConnectEndpointArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IInstanceConnectEndpointRef

Creates a new IInstanceConnectEndpointRef from an ARN.

func CfnInstanceConnectEndpoint_FromInstanceConnectEndpointId added in v2.218.0

func CfnInstanceConnectEndpoint_FromInstanceConnectEndpointId(scope constructs.Construct, id *string, instanceConnectEndpointId *string) interfacesawsec2.IInstanceConnectEndpointRef

Creates a new IInstanceConnectEndpointRef from a instanceConnectEndpointId.

func CfnInstanceConnectEndpoint_IsCfnElement added in v2.97.0

func CfnInstanceConnectEndpoint_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnInstanceConnectEndpoint_IsCfnInstanceConnectEndpoint added in v2.231.0

func CfnInstanceConnectEndpoint_IsCfnInstanceConnectEndpoint(x interface{}) *bool

Checks whether the given object is a CfnInstanceConnectEndpoint.

func CfnInstanceConnectEndpoint_IsCfnResource added in v2.97.0

func CfnInstanceConnectEndpoint_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnInstanceConnectEndpoint_IsConstruct added in v2.97.0

func CfnInstanceConnectEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnInstance_ArnForInstance added in v2.227.0

func CfnInstance_ArnForInstance(resource interfacesawsec2.IInstanceRef) *string

func CfnInstance_CFN_RESOURCE_TYPE_NAME

func CfnInstance_CFN_RESOURCE_TYPE_NAME() *string

func CfnInstance_FromInstanceId added in v2.218.0

func CfnInstance_FromInstanceId(scope constructs.Construct, id *string, instanceId *string) interfacesawsec2.IInstanceRef

Creates a new IInstanceRef from a instanceId.

func CfnInstance_IsCfnElement

func CfnInstance_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnInstance_IsCfnInstance added in v2.231.0

func CfnInstance_IsCfnInstance(x interface{}) *bool

Checks whether the given object is a CfnInstance.

func CfnInstance_IsCfnResource

func CfnInstance_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnInstance_IsConstruct

func CfnInstance_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnInternetGateway_ArnForInternetGateway added in v2.227.0

func CfnInternetGateway_ArnForInternetGateway(resource interfacesawsec2.IInternetGatewayRef) *string

func CfnInternetGateway_CFN_RESOURCE_TYPE_NAME

func CfnInternetGateway_CFN_RESOURCE_TYPE_NAME() *string

func CfnInternetGateway_FromInternetGatewayId added in v2.218.0

func CfnInternetGateway_FromInternetGatewayId(scope constructs.Construct, id *string, internetGatewayId *string) interfacesawsec2.IInternetGatewayRef

Creates a new IInternetGatewayRef from a internetGatewayId.

func CfnInternetGateway_IsCfnElement

func CfnInternetGateway_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnInternetGateway_IsCfnInternetGateway added in v2.231.0

func CfnInternetGateway_IsCfnInternetGateway(x interface{}) *bool

Checks whether the given object is a CfnInternetGateway.

func CfnInternetGateway_IsCfnResource

func CfnInternetGateway_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnInternetGateway_IsConstruct

func CfnInternetGateway_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnIpPoolRouteTableAssociation_CFN_RESOURCE_TYPE_NAME added in v2.212.0

func CfnIpPoolRouteTableAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnIpPoolRouteTableAssociation_IsCfnElement added in v2.212.0

func CfnIpPoolRouteTableAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnIpPoolRouteTableAssociation_IsCfnIpPoolRouteTableAssociation added in v2.231.0

func CfnIpPoolRouteTableAssociation_IsCfnIpPoolRouteTableAssociation(x interface{}) *bool

Checks whether the given object is a CfnIpPoolRouteTableAssociation.

func CfnIpPoolRouteTableAssociation_IsCfnResource added in v2.212.0

func CfnIpPoolRouteTableAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnIpPoolRouteTableAssociation_IsConstruct added in v2.212.0

func CfnIpPoolRouteTableAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnKeyPair_CFN_RESOURCE_TYPE_NAME added in v2.25.0

func CfnKeyPair_CFN_RESOURCE_TYPE_NAME() *string

func CfnKeyPair_IsCfnElement added in v2.25.0

func CfnKeyPair_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnKeyPair_IsCfnKeyPair added in v2.231.0

func CfnKeyPair_IsCfnKeyPair(x interface{}) *bool

Checks whether the given object is a CfnKeyPair.

func CfnKeyPair_IsCfnResource added in v2.25.0

func CfnKeyPair_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnKeyPair_IsConstruct added in v2.25.0

func CfnKeyPair_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnLaunchTemplate_ArnForLaunchTemplate added in v2.227.0

func CfnLaunchTemplate_ArnForLaunchTemplate(resource interfacesawsec2.ILaunchTemplateRef) *string

func CfnLaunchTemplate_CFN_RESOURCE_TYPE_NAME

func CfnLaunchTemplate_CFN_RESOURCE_TYPE_NAME() *string

func CfnLaunchTemplate_FromLaunchTemplateId added in v2.218.0

func CfnLaunchTemplate_FromLaunchTemplateId(scope constructs.Construct, id *string, launchTemplateId *string) interfacesawsec2.ILaunchTemplateRef

Creates a new ILaunchTemplateRef from a launchTemplateId.

func CfnLaunchTemplate_IsCfnElement

func CfnLaunchTemplate_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnLaunchTemplate_IsCfnLaunchTemplate added in v2.231.0

func CfnLaunchTemplate_IsCfnLaunchTemplate(x interface{}) *bool

Checks whether the given object is a CfnLaunchTemplate.

func CfnLaunchTemplate_IsCfnResource

func CfnLaunchTemplate_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnLaunchTemplate_IsConstruct

func CfnLaunchTemplate_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnLocalGatewayRouteTableVPCAssociation_ArnForLocalGatewayRouteTableVPCAssociation added in v2.227.0

func CfnLocalGatewayRouteTableVPCAssociation_ArnForLocalGatewayRouteTableVPCAssociation(resource interfacesawsec2.ILocalGatewayRouteTableVPCAssociationRef) *string

func CfnLocalGatewayRouteTableVPCAssociation_CFN_RESOURCE_TYPE_NAME

func CfnLocalGatewayRouteTableVPCAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnLocalGatewayRouteTableVPCAssociation_FromLocalGatewayRouteTableVpcAssociationId added in v2.218.0

func CfnLocalGatewayRouteTableVPCAssociation_FromLocalGatewayRouteTableVpcAssociationId(scope constructs.Construct, id *string, localGatewayRouteTableVpcAssociationId *string) interfacesawsec2.ILocalGatewayRouteTableVPCAssociationRef

Creates a new ILocalGatewayRouteTableVPCAssociationRef from a localGatewayRouteTableVpcAssociationId.

func CfnLocalGatewayRouteTableVPCAssociation_IsCfnElement

func CfnLocalGatewayRouteTableVPCAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnLocalGatewayRouteTableVPCAssociation_IsCfnLocalGatewayRouteTableVPCAssociation added in v2.231.0

func CfnLocalGatewayRouteTableVPCAssociation_IsCfnLocalGatewayRouteTableVPCAssociation(x interface{}) *bool

Checks whether the given object is a CfnLocalGatewayRouteTableVPCAssociation.

func CfnLocalGatewayRouteTableVPCAssociation_IsCfnResource

func CfnLocalGatewayRouteTableVPCAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnLocalGatewayRouteTableVPCAssociation_IsConstruct

func CfnLocalGatewayRouteTableVPCAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_ArnForLocalGatewayRouteTableVirtualInterfaceGroupAssociation added in v2.227.0

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_ArnForLocalGatewayRouteTableVirtualInterfaceGroupAssociation(resource interfacesawsec2.ILocalGatewayRouteTableVirtualInterfaceGroupAssociationRef) *string

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_CFN_RESOURCE_TYPE_NAME added in v2.70.0

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_FromLocalGatewayRouteTableVirtualInterfaceGroupAssociationId added in v2.218.0

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_FromLocalGatewayRouteTableVirtualInterfaceGroupAssociationId(scope constructs.Construct, id *string, localGatewayRouteTableVirtualInterfaceGroupAssociationId *string) interfacesawsec2.ILocalGatewayRouteTableVirtualInterfaceGroupAssociationRef

Creates a new ILocalGatewayRouteTableVirtualInterfaceGroupAssociationRef from a localGatewayRouteTableVirtualInterfaceGroupAssociationId.

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_IsCfnElement added in v2.70.0

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_IsCfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation added in v2.231.0

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_IsCfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation(x interface{}) *bool

Checks whether the given object is a CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation.

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_IsCfnResource added in v2.70.0

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_IsConstruct added in v2.70.0

func CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnLocalGatewayRouteTable_ArnForLocalGatewayRouteTable added in v2.227.0

func CfnLocalGatewayRouteTable_ArnForLocalGatewayRouteTable(resource interfacesawsec2.ILocalGatewayRouteTableRef) *string

func CfnLocalGatewayRouteTable_CFN_RESOURCE_TYPE_NAME added in v2.70.0

func CfnLocalGatewayRouteTable_CFN_RESOURCE_TYPE_NAME() *string

func CfnLocalGatewayRouteTable_IsCfnElement added in v2.70.0

func CfnLocalGatewayRouteTable_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnLocalGatewayRouteTable_IsCfnLocalGatewayRouteTable added in v2.231.0

func CfnLocalGatewayRouteTable_IsCfnLocalGatewayRouteTable(x interface{}) *bool

Checks whether the given object is a CfnLocalGatewayRouteTable.

func CfnLocalGatewayRouteTable_IsCfnResource added in v2.70.0

func CfnLocalGatewayRouteTable_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnLocalGatewayRouteTable_IsConstruct added in v2.70.0

func CfnLocalGatewayRouteTable_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnLocalGatewayRoute_CFN_RESOURCE_TYPE_NAME

func CfnLocalGatewayRoute_CFN_RESOURCE_TYPE_NAME() *string

func CfnLocalGatewayRoute_IsCfnElement

func CfnLocalGatewayRoute_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnLocalGatewayRoute_IsCfnLocalGatewayRoute added in v2.231.0

func CfnLocalGatewayRoute_IsCfnLocalGatewayRoute(x interface{}) *bool

Checks whether the given object is a CfnLocalGatewayRoute.

func CfnLocalGatewayRoute_IsCfnResource

func CfnLocalGatewayRoute_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnLocalGatewayRoute_IsConstruct

func CfnLocalGatewayRoute_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnLocalGatewayVirtualInterfaceGroup_ArnForLocalGatewayVirtualInterfaceGroup added in v2.227.0

func CfnLocalGatewayVirtualInterfaceGroup_ArnForLocalGatewayVirtualInterfaceGroup(resource interfacesawsec2.ILocalGatewayVirtualInterfaceGroupRef) *string

func CfnLocalGatewayVirtualInterfaceGroup_CFN_RESOURCE_TYPE_NAME added in v2.219.0

func CfnLocalGatewayVirtualInterfaceGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnLocalGatewayVirtualInterfaceGroup_FromLocalGatewayVirtualInterfaceGroupArn added in v2.219.0

func CfnLocalGatewayVirtualInterfaceGroup_FromLocalGatewayVirtualInterfaceGroupArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.ILocalGatewayVirtualInterfaceGroupRef

Creates a new ILocalGatewayVirtualInterfaceGroupRef from an ARN.

func CfnLocalGatewayVirtualInterfaceGroup_FromLocalGatewayVirtualInterfaceGroupId added in v2.219.0

func CfnLocalGatewayVirtualInterfaceGroup_FromLocalGatewayVirtualInterfaceGroupId(scope constructs.Construct, id *string, localGatewayVirtualInterfaceGroupId *string) interfacesawsec2.ILocalGatewayVirtualInterfaceGroupRef

Creates a new ILocalGatewayVirtualInterfaceGroupRef from a localGatewayVirtualInterfaceGroupId.

func CfnLocalGatewayVirtualInterfaceGroup_IsCfnElement added in v2.219.0

func CfnLocalGatewayVirtualInterfaceGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnLocalGatewayVirtualInterfaceGroup_IsCfnLocalGatewayVirtualInterfaceGroup added in v2.231.0

func CfnLocalGatewayVirtualInterfaceGroup_IsCfnLocalGatewayVirtualInterfaceGroup(x interface{}) *bool

Checks whether the given object is a CfnLocalGatewayVirtualInterfaceGroup.

func CfnLocalGatewayVirtualInterfaceGroup_IsCfnResource added in v2.219.0

func CfnLocalGatewayVirtualInterfaceGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnLocalGatewayVirtualInterfaceGroup_IsConstruct added in v2.219.0

func CfnLocalGatewayVirtualInterfaceGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnLocalGatewayVirtualInterface_ArnForLocalGatewayVirtualInterface added in v2.227.0

func CfnLocalGatewayVirtualInterface_ArnForLocalGatewayVirtualInterface(resource interfacesawsec2.ILocalGatewayVirtualInterfaceRef) *string

func CfnLocalGatewayVirtualInterface_CFN_RESOURCE_TYPE_NAME added in v2.219.0

func CfnLocalGatewayVirtualInterface_CFN_RESOURCE_TYPE_NAME() *string

func CfnLocalGatewayVirtualInterface_FromLocalGatewayVirtualInterfaceId added in v2.219.0

func CfnLocalGatewayVirtualInterface_FromLocalGatewayVirtualInterfaceId(scope constructs.Construct, id *string, localGatewayVirtualInterfaceId *string) interfacesawsec2.ILocalGatewayVirtualInterfaceRef

Creates a new ILocalGatewayVirtualInterfaceRef from a localGatewayVirtualInterfaceId.

func CfnLocalGatewayVirtualInterface_IsCfnElement added in v2.219.0

func CfnLocalGatewayVirtualInterface_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnLocalGatewayVirtualInterface_IsCfnLocalGatewayVirtualInterface added in v2.231.0

func CfnLocalGatewayVirtualInterface_IsCfnLocalGatewayVirtualInterface(x interface{}) *bool

Checks whether the given object is a CfnLocalGatewayVirtualInterface.

func CfnLocalGatewayVirtualInterface_IsCfnResource added in v2.219.0

func CfnLocalGatewayVirtualInterface_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnLocalGatewayVirtualInterface_IsConstruct added in v2.219.0

func CfnLocalGatewayVirtualInterface_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNatGateway_ArnForNatGateway added in v2.227.0

func CfnNatGateway_ArnForNatGateway(resource interfacesawsec2.INatGatewayRef) *string

func CfnNatGateway_CFN_RESOURCE_TYPE_NAME

func CfnNatGateway_CFN_RESOURCE_TYPE_NAME() *string

func CfnNatGateway_FromNatGatewayId added in v2.218.0

func CfnNatGateway_FromNatGatewayId(scope constructs.Construct, id *string, natGatewayId *string) interfacesawsec2.INatGatewayRef

Creates a new INatGatewayRef from a natGatewayId.

func CfnNatGateway_IsCfnElement

func CfnNatGateway_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNatGateway_IsCfnNatGateway added in v2.231.0

func CfnNatGateway_IsCfnNatGateway(x interface{}) *bool

Checks whether the given object is a CfnNatGateway.

func CfnNatGateway_IsCfnResource

func CfnNatGateway_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNatGateway_IsConstruct

func CfnNatGateway_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkAclEntry_CFN_RESOURCE_TYPE_NAME

func CfnNetworkAclEntry_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkAclEntry_IsCfnElement

func CfnNetworkAclEntry_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkAclEntry_IsCfnNetworkAclEntry added in v2.231.0

func CfnNetworkAclEntry_IsCfnNetworkAclEntry(x interface{}) *bool

Checks whether the given object is a CfnNetworkAclEntry.

func CfnNetworkAclEntry_IsCfnResource

func CfnNetworkAclEntry_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkAclEntry_IsConstruct

func CfnNetworkAclEntry_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkAcl_CFN_RESOURCE_TYPE_NAME

func CfnNetworkAcl_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkAcl_IsCfnElement

func CfnNetworkAcl_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkAcl_IsCfnNetworkAcl added in v2.231.0

func CfnNetworkAcl_IsCfnNetworkAcl(x interface{}) *bool

Checks whether the given object is a CfnNetworkAcl.

func CfnNetworkAcl_IsCfnResource

func CfnNetworkAcl_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkAcl_IsConstruct

func CfnNetworkAcl_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkInsightsAccessScopeAnalysis_ArnForNetworkInsightsAccessScopeAnalysis added in v2.227.0

func CfnNetworkInsightsAccessScopeAnalysis_ArnForNetworkInsightsAccessScopeAnalysis(resource interfacesawsec2.INetworkInsightsAccessScopeAnalysisRef) *string

func CfnNetworkInsightsAccessScopeAnalysis_CFN_RESOURCE_TYPE_NAME added in v2.9.0

func CfnNetworkInsightsAccessScopeAnalysis_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkInsightsAccessScopeAnalysis_FromNetworkInsightsAccessScopeAnalysisArn added in v2.218.0

func CfnNetworkInsightsAccessScopeAnalysis_FromNetworkInsightsAccessScopeAnalysisArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.INetworkInsightsAccessScopeAnalysisRef

Creates a new INetworkInsightsAccessScopeAnalysisRef from an ARN.

func CfnNetworkInsightsAccessScopeAnalysis_FromNetworkInsightsAccessScopeAnalysisId added in v2.218.0

func CfnNetworkInsightsAccessScopeAnalysis_FromNetworkInsightsAccessScopeAnalysisId(scope constructs.Construct, id *string, networkInsightsAccessScopeAnalysisId *string) interfacesawsec2.INetworkInsightsAccessScopeAnalysisRef

Creates a new INetworkInsightsAccessScopeAnalysisRef from a networkInsightsAccessScopeAnalysisId.

func CfnNetworkInsightsAccessScopeAnalysis_IsCfnElement added in v2.9.0

func CfnNetworkInsightsAccessScopeAnalysis_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkInsightsAccessScopeAnalysis_IsCfnNetworkInsightsAccessScopeAnalysis added in v2.231.0

func CfnNetworkInsightsAccessScopeAnalysis_IsCfnNetworkInsightsAccessScopeAnalysis(x interface{}) *bool

Checks whether the given object is a CfnNetworkInsightsAccessScopeAnalysis.

func CfnNetworkInsightsAccessScopeAnalysis_IsCfnResource added in v2.9.0

func CfnNetworkInsightsAccessScopeAnalysis_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkInsightsAccessScopeAnalysis_IsConstruct added in v2.9.0

func CfnNetworkInsightsAccessScopeAnalysis_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkInsightsAccessScope_ArnForNetworkInsightsAccessScope added in v2.227.0

func CfnNetworkInsightsAccessScope_ArnForNetworkInsightsAccessScope(resource interfacesawsec2.INetworkInsightsAccessScopeRef) *string

func CfnNetworkInsightsAccessScope_CFN_RESOURCE_TYPE_NAME added in v2.9.0

func CfnNetworkInsightsAccessScope_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkInsightsAccessScope_FromNetworkInsightsAccessScopeArn added in v2.218.0

func CfnNetworkInsightsAccessScope_FromNetworkInsightsAccessScopeArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.INetworkInsightsAccessScopeRef

Creates a new INetworkInsightsAccessScopeRef from an ARN.

func CfnNetworkInsightsAccessScope_FromNetworkInsightsAccessScopeId added in v2.218.0

func CfnNetworkInsightsAccessScope_FromNetworkInsightsAccessScopeId(scope constructs.Construct, id *string, networkInsightsAccessScopeId *string) interfacesawsec2.INetworkInsightsAccessScopeRef

Creates a new INetworkInsightsAccessScopeRef from a networkInsightsAccessScopeId.

func CfnNetworkInsightsAccessScope_IsCfnElement added in v2.9.0

func CfnNetworkInsightsAccessScope_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkInsightsAccessScope_IsCfnNetworkInsightsAccessScope added in v2.231.0

func CfnNetworkInsightsAccessScope_IsCfnNetworkInsightsAccessScope(x interface{}) *bool

Checks whether the given object is a CfnNetworkInsightsAccessScope.

func CfnNetworkInsightsAccessScope_IsCfnResource added in v2.9.0

func CfnNetworkInsightsAccessScope_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkInsightsAccessScope_IsConstruct added in v2.9.0

func CfnNetworkInsightsAccessScope_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkInsightsAnalysis_ArnForNetworkInsightsAnalysis added in v2.227.0

func CfnNetworkInsightsAnalysis_ArnForNetworkInsightsAnalysis(resource interfacesawsec2.INetworkInsightsAnalysisRef) *string

func CfnNetworkInsightsAnalysis_CFN_RESOURCE_TYPE_NAME

func CfnNetworkInsightsAnalysis_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkInsightsAnalysis_FromNetworkInsightsAnalysisArn added in v2.218.0

func CfnNetworkInsightsAnalysis_FromNetworkInsightsAnalysisArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.INetworkInsightsAnalysisRef

Creates a new INetworkInsightsAnalysisRef from an ARN.

func CfnNetworkInsightsAnalysis_FromNetworkInsightsAnalysisId added in v2.218.0

func CfnNetworkInsightsAnalysis_FromNetworkInsightsAnalysisId(scope constructs.Construct, id *string, networkInsightsAnalysisId *string) interfacesawsec2.INetworkInsightsAnalysisRef

Creates a new INetworkInsightsAnalysisRef from a networkInsightsAnalysisId.

func CfnNetworkInsightsAnalysis_IsCfnElement

func CfnNetworkInsightsAnalysis_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkInsightsAnalysis_IsCfnNetworkInsightsAnalysis added in v2.231.0

func CfnNetworkInsightsAnalysis_IsCfnNetworkInsightsAnalysis(x interface{}) *bool

Checks whether the given object is a CfnNetworkInsightsAnalysis.

func CfnNetworkInsightsAnalysis_IsCfnResource

func CfnNetworkInsightsAnalysis_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkInsightsAnalysis_IsConstruct

func CfnNetworkInsightsAnalysis_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkInsightsPath_ArnForNetworkInsightsPath added in v2.227.0

func CfnNetworkInsightsPath_ArnForNetworkInsightsPath(resource interfacesawsec2.INetworkInsightsPathRef) *string

func CfnNetworkInsightsPath_CFN_RESOURCE_TYPE_NAME

func CfnNetworkInsightsPath_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkInsightsPath_FromNetworkInsightsPathArn added in v2.218.0

func CfnNetworkInsightsPath_FromNetworkInsightsPathArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.INetworkInsightsPathRef

Creates a new INetworkInsightsPathRef from an ARN.

func CfnNetworkInsightsPath_FromNetworkInsightsPathId added in v2.218.0

func CfnNetworkInsightsPath_FromNetworkInsightsPathId(scope constructs.Construct, id *string, networkInsightsPathId *string) interfacesawsec2.INetworkInsightsPathRef

Creates a new INetworkInsightsPathRef from a networkInsightsPathId.

func CfnNetworkInsightsPath_IsCfnElement

func CfnNetworkInsightsPath_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkInsightsPath_IsCfnNetworkInsightsPath added in v2.231.0

func CfnNetworkInsightsPath_IsCfnNetworkInsightsPath(x interface{}) *bool

Checks whether the given object is a CfnNetworkInsightsPath.

func CfnNetworkInsightsPath_IsCfnResource

func CfnNetworkInsightsPath_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkInsightsPath_IsConstruct

func CfnNetworkInsightsPath_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkInterfaceAttachment_CFN_RESOURCE_TYPE_NAME

func CfnNetworkInterfaceAttachment_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkInterfaceAttachment_IsCfnElement

func CfnNetworkInterfaceAttachment_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkInterfaceAttachment_IsCfnNetworkInterfaceAttachment added in v2.231.0

func CfnNetworkInterfaceAttachment_IsCfnNetworkInterfaceAttachment(x interface{}) *bool

Checks whether the given object is a CfnNetworkInterfaceAttachment.

func CfnNetworkInterfaceAttachment_IsCfnResource

func CfnNetworkInterfaceAttachment_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkInterfaceAttachment_IsConstruct

func CfnNetworkInterfaceAttachment_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkInterfacePermission_CFN_RESOURCE_TYPE_NAME

func CfnNetworkInterfacePermission_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkInterfacePermission_IsCfnElement

func CfnNetworkInterfacePermission_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkInterfacePermission_IsCfnNetworkInterfacePermission added in v2.231.0

func CfnNetworkInterfacePermission_IsCfnNetworkInterfacePermission(x interface{}) *bool

Checks whether the given object is a CfnNetworkInterfacePermission.

func CfnNetworkInterfacePermission_IsCfnResource

func CfnNetworkInterfacePermission_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkInterfacePermission_IsConstruct

func CfnNetworkInterfacePermission_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkInterface_ArnForNetworkInterface added in v2.227.0

func CfnNetworkInterface_ArnForNetworkInterface(resource interfacesawsec2.INetworkInterfaceRef) *string

func CfnNetworkInterface_CFN_RESOURCE_TYPE_NAME

func CfnNetworkInterface_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkInterface_FromNetworkInterfaceId added in v2.218.0

func CfnNetworkInterface_FromNetworkInterfaceId(scope constructs.Construct, id *string, networkInterfaceId *string) interfacesawsec2.INetworkInterfaceRef

Creates a new INetworkInterfaceRef from a networkInterfaceId.

func CfnNetworkInterface_IsCfnElement

func CfnNetworkInterface_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkInterface_IsCfnNetworkInterface added in v2.231.0

func CfnNetworkInterface_IsCfnNetworkInterface(x interface{}) *bool

Checks whether the given object is a CfnNetworkInterface.

func CfnNetworkInterface_IsCfnResource

func CfnNetworkInterface_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkInterface_IsConstruct

func CfnNetworkInterface_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnNetworkPerformanceMetricSubscription_CFN_RESOURCE_TYPE_NAME added in v2.55.0

func CfnNetworkPerformanceMetricSubscription_CFN_RESOURCE_TYPE_NAME() *string

func CfnNetworkPerformanceMetricSubscription_IsCfnElement added in v2.55.0

func CfnNetworkPerformanceMetricSubscription_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnNetworkPerformanceMetricSubscription_IsCfnNetworkPerformanceMetricSubscription added in v2.231.0

func CfnNetworkPerformanceMetricSubscription_IsCfnNetworkPerformanceMetricSubscription(x interface{}) *bool

Checks whether the given object is a CfnNetworkPerformanceMetricSubscription.

func CfnNetworkPerformanceMetricSubscription_IsCfnResource added in v2.55.0

func CfnNetworkPerformanceMetricSubscription_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnNetworkPerformanceMetricSubscription_IsConstruct added in v2.55.0

func CfnNetworkPerformanceMetricSubscription_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnPlacementGroup_CFN_RESOURCE_TYPE_NAME

func CfnPlacementGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnPlacementGroup_IsCfnElement

func CfnPlacementGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnPlacementGroup_IsCfnPlacementGroup added in v2.231.0

func CfnPlacementGroup_IsCfnPlacementGroup(x interface{}) *bool

Checks whether the given object is a CfnPlacementGroup.

func CfnPlacementGroup_IsCfnResource

func CfnPlacementGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnPlacementGroup_IsConstruct

func CfnPlacementGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnPrefixList_ArnForPrefixList added in v2.227.0

func CfnPrefixList_ArnForPrefixList(resource interfacesawsec2.IPrefixListRef) *string

func CfnPrefixList_CFN_RESOURCE_TYPE_NAME

func CfnPrefixList_CFN_RESOURCE_TYPE_NAME() *string

func CfnPrefixList_FromPrefixListArn added in v2.218.0

func CfnPrefixList_FromPrefixListArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IPrefixListRef

Creates a new IPrefixListRef from an ARN.

func CfnPrefixList_FromPrefixListId added in v2.218.0

func CfnPrefixList_FromPrefixListId(scope constructs.Construct, id *string, prefixListId *string) interfacesawsec2.IPrefixListRef

Creates a new IPrefixListRef from a prefixListId.

func CfnPrefixList_IsCfnElement

func CfnPrefixList_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnPrefixList_IsCfnPrefixList added in v2.231.0

func CfnPrefixList_IsCfnPrefixList(x interface{}) *bool

Checks whether the given object is a CfnPrefixList.

func CfnPrefixList_IsCfnResource

func CfnPrefixList_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnPrefixList_IsConstruct

func CfnPrefixList_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnRouteServerAssociation_CFN_RESOURCE_TYPE_NAME added in v2.188.0

func CfnRouteServerAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnRouteServerAssociation_IsCfnElement added in v2.188.0

func CfnRouteServerAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnRouteServerAssociation_IsCfnResource added in v2.188.0

func CfnRouteServerAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnRouteServerAssociation_IsCfnRouteServerAssociation added in v2.231.0

func CfnRouteServerAssociation_IsCfnRouteServerAssociation(x interface{}) *bool

Checks whether the given object is a CfnRouteServerAssociation.

func CfnRouteServerAssociation_IsConstruct added in v2.188.0

func CfnRouteServerAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnRouteServerEndpoint_ArnForRouteServerEndpoint added in v2.227.0

func CfnRouteServerEndpoint_ArnForRouteServerEndpoint(resource interfacesawsec2.IRouteServerEndpointRef) *string

func CfnRouteServerEndpoint_CFN_RESOURCE_TYPE_NAME added in v2.188.0

func CfnRouteServerEndpoint_CFN_RESOURCE_TYPE_NAME() *string

func CfnRouteServerEndpoint_FromRouteServerEndpointArn added in v2.218.0

func CfnRouteServerEndpoint_FromRouteServerEndpointArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IRouteServerEndpointRef

Creates a new IRouteServerEndpointRef from an ARN.

func CfnRouteServerEndpoint_FromRouteServerEndpointId added in v2.218.0

func CfnRouteServerEndpoint_FromRouteServerEndpointId(scope constructs.Construct, id *string, routeServerEndpointId *string) interfacesawsec2.IRouteServerEndpointRef

Creates a new IRouteServerEndpointRef from a routeServerEndpointId.

func CfnRouteServerEndpoint_IsCfnElement added in v2.188.0

func CfnRouteServerEndpoint_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnRouteServerEndpoint_IsCfnResource added in v2.188.0

func CfnRouteServerEndpoint_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnRouteServerEndpoint_IsCfnRouteServerEndpoint added in v2.231.0

func CfnRouteServerEndpoint_IsCfnRouteServerEndpoint(x interface{}) *bool

Checks whether the given object is a CfnRouteServerEndpoint.

func CfnRouteServerEndpoint_IsConstruct added in v2.188.0

func CfnRouteServerEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnRouteServerPeer_ArnForRouteServerPeer added in v2.227.0

func CfnRouteServerPeer_ArnForRouteServerPeer(resource interfacesawsec2.IRouteServerPeerRef) *string

func CfnRouteServerPeer_CFN_RESOURCE_TYPE_NAME added in v2.188.0

func CfnRouteServerPeer_CFN_RESOURCE_TYPE_NAME() *string

func CfnRouteServerPeer_FromRouteServerPeerArn added in v2.218.0

func CfnRouteServerPeer_FromRouteServerPeerArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IRouteServerPeerRef

Creates a new IRouteServerPeerRef from an ARN.

func CfnRouteServerPeer_FromRouteServerPeerId added in v2.218.0

func CfnRouteServerPeer_FromRouteServerPeerId(scope constructs.Construct, id *string, routeServerPeerId *string) interfacesawsec2.IRouteServerPeerRef

Creates a new IRouteServerPeerRef from a routeServerPeerId.

func CfnRouteServerPeer_IsCfnElement added in v2.188.0

func CfnRouteServerPeer_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnRouteServerPeer_IsCfnResource added in v2.188.0

func CfnRouteServerPeer_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnRouteServerPeer_IsCfnRouteServerPeer added in v2.231.0

func CfnRouteServerPeer_IsCfnRouteServerPeer(x interface{}) *bool

Checks whether the given object is a CfnRouteServerPeer.

func CfnRouteServerPeer_IsConstruct added in v2.188.0

func CfnRouteServerPeer_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnRouteServerPropagation_CFN_RESOURCE_TYPE_NAME added in v2.188.0

func CfnRouteServerPropagation_CFN_RESOURCE_TYPE_NAME() *string

func CfnRouteServerPropagation_IsCfnElement added in v2.188.0

func CfnRouteServerPropagation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnRouteServerPropagation_IsCfnResource added in v2.188.0

func CfnRouteServerPropagation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnRouteServerPropagation_IsCfnRouteServerPropagation added in v2.231.0

func CfnRouteServerPropagation_IsCfnRouteServerPropagation(x interface{}) *bool

Checks whether the given object is a CfnRouteServerPropagation.

func CfnRouteServerPropagation_IsConstruct added in v2.188.0

func CfnRouteServerPropagation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnRouteServer_ArnForRouteServer added in v2.227.0

func CfnRouteServer_ArnForRouteServer(resource interfacesawsec2.IRouteServerRef) *string

func CfnRouteServer_CFN_RESOURCE_TYPE_NAME added in v2.188.0

func CfnRouteServer_CFN_RESOURCE_TYPE_NAME() *string

func CfnRouteServer_FromRouteServerArn added in v2.218.0

func CfnRouteServer_FromRouteServerArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IRouteServerRef

Creates a new IRouteServerRef from an ARN.

func CfnRouteServer_FromRouteServerId added in v2.218.0

func CfnRouteServer_FromRouteServerId(scope constructs.Construct, id *string, routeServerId *string) interfacesawsec2.IRouteServerRef

Creates a new IRouteServerRef from a routeServerId.

func CfnRouteServer_IsCfnElement added in v2.188.0

func CfnRouteServer_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnRouteServer_IsCfnResource added in v2.188.0

func CfnRouteServer_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnRouteServer_IsCfnRouteServer added in v2.231.0

func CfnRouteServer_IsCfnRouteServer(x interface{}) *bool

Checks whether the given object is a CfnRouteServer.

func CfnRouteServer_IsConstruct added in v2.188.0

func CfnRouteServer_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnRouteTable_ArnForRouteTable added in v2.227.0

func CfnRouteTable_ArnForRouteTable(resource interfacesawsec2.IRouteTableRef) *string

func CfnRouteTable_CFN_RESOURCE_TYPE_NAME

func CfnRouteTable_CFN_RESOURCE_TYPE_NAME() *string

func CfnRouteTable_FromRouteTableId added in v2.218.0

func CfnRouteTable_FromRouteTableId(scope constructs.Construct, id *string, routeTableId *string) interfacesawsec2.IRouteTableRef

Creates a new IRouteTableRef from a routeTableId.

func CfnRouteTable_IsCfnElement

func CfnRouteTable_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnRouteTable_IsCfnResource

func CfnRouteTable_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnRouteTable_IsCfnRouteTable added in v2.231.0

func CfnRouteTable_IsCfnRouteTable(x interface{}) *bool

Checks whether the given object is a CfnRouteTable.

func CfnRouteTable_IsConstruct

func CfnRouteTable_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnRoute_CFN_RESOURCE_TYPE_NAME

func CfnRoute_CFN_RESOURCE_TYPE_NAME() *string

func CfnRoute_IsCfnElement

func CfnRoute_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnRoute_IsCfnResource

func CfnRoute_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnRoute_IsCfnRoute added in v2.231.0

func CfnRoute_IsCfnRoute(x interface{}) *bool

Checks whether the given object is a CfnRoute.

func CfnRoute_IsConstruct

func CfnRoute_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSecurityGroupEgress_CFN_RESOURCE_TYPE_NAME

func CfnSecurityGroupEgress_CFN_RESOURCE_TYPE_NAME() *string

func CfnSecurityGroupEgress_IsCfnElement

func CfnSecurityGroupEgress_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSecurityGroupEgress_IsCfnResource

func CfnSecurityGroupEgress_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSecurityGroupEgress_IsCfnSecurityGroupEgress added in v2.231.0

func CfnSecurityGroupEgress_IsCfnSecurityGroupEgress(x interface{}) *bool

Checks whether the given object is a CfnSecurityGroupEgress.

func CfnSecurityGroupEgress_IsConstruct

func CfnSecurityGroupEgress_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSecurityGroupIngress_CFN_RESOURCE_TYPE_NAME

func CfnSecurityGroupIngress_CFN_RESOURCE_TYPE_NAME() *string

func CfnSecurityGroupIngress_IsCfnElement

func CfnSecurityGroupIngress_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSecurityGroupIngress_IsCfnResource

func CfnSecurityGroupIngress_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSecurityGroupIngress_IsCfnSecurityGroupIngress added in v2.231.0

func CfnSecurityGroupIngress_IsCfnSecurityGroupIngress(x interface{}) *bool

Checks whether the given object is a CfnSecurityGroupIngress.

func CfnSecurityGroupIngress_IsConstruct

func CfnSecurityGroupIngress_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSecurityGroupVpcAssociation_CFN_RESOURCE_TYPE_NAME added in v2.167.0

func CfnSecurityGroupVpcAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnSecurityGroupVpcAssociation_IsCfnElement added in v2.167.0

func CfnSecurityGroupVpcAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSecurityGroupVpcAssociation_IsCfnResource added in v2.167.0

func CfnSecurityGroupVpcAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSecurityGroupVpcAssociation_IsCfnSecurityGroupVpcAssociation added in v2.231.0

func CfnSecurityGroupVpcAssociation_IsCfnSecurityGroupVpcAssociation(x interface{}) *bool

Checks whether the given object is a CfnSecurityGroupVpcAssociation.

func CfnSecurityGroupVpcAssociation_IsConstruct added in v2.167.0

func CfnSecurityGroupVpcAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSecurityGroup_ArnForSecurityGroup added in v2.227.0

func CfnSecurityGroup_ArnForSecurityGroup(resource interfacesawsec2.ISecurityGroupRef) *string

func CfnSecurityGroup_CFN_RESOURCE_TYPE_NAME

func CfnSecurityGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnSecurityGroup_FromSecurityGroupId added in v2.218.0

func CfnSecurityGroup_FromSecurityGroupId(scope constructs.Construct, id *string, securityGroupId *string) interfacesawsec2.ISecurityGroupRef

Creates a new ISecurityGroupRef from a securityGroupId.

func CfnSecurityGroup_IsCfnElement

func CfnSecurityGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSecurityGroup_IsCfnResource

func CfnSecurityGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSecurityGroup_IsCfnSecurityGroup added in v2.231.0

func CfnSecurityGroup_IsCfnSecurityGroup(x interface{}) *bool

Checks whether the given object is a CfnSecurityGroup.

func CfnSecurityGroup_IsConstruct

func CfnSecurityGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSnapshotBlockPublicAccess_CFN_RESOURCE_TYPE_NAME added in v2.116.0

func CfnSnapshotBlockPublicAccess_CFN_RESOURCE_TYPE_NAME() *string

func CfnSnapshotBlockPublicAccess_IsCfnElement added in v2.116.0

func CfnSnapshotBlockPublicAccess_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSnapshotBlockPublicAccess_IsCfnResource added in v2.116.0

func CfnSnapshotBlockPublicAccess_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSnapshotBlockPublicAccess_IsCfnSnapshotBlockPublicAccess added in v2.231.0

func CfnSnapshotBlockPublicAccess_IsCfnSnapshotBlockPublicAccess(x interface{}) *bool

Checks whether the given object is a CfnSnapshotBlockPublicAccess.

func CfnSnapshotBlockPublicAccess_IsConstruct added in v2.116.0

func CfnSnapshotBlockPublicAccess_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSpotFleet_CFN_RESOURCE_TYPE_NAME

func CfnSpotFleet_CFN_RESOURCE_TYPE_NAME() *string

func CfnSpotFleet_IsCfnElement

func CfnSpotFleet_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSpotFleet_IsCfnResource

func CfnSpotFleet_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSpotFleet_IsCfnSpotFleet added in v2.231.0

func CfnSpotFleet_IsCfnSpotFleet(x interface{}) *bool

Checks whether the given object is a CfnSpotFleet.

func CfnSpotFleet_IsConstruct

func CfnSpotFleet_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSqlHaStandbyDetectedInstance_CFN_RESOURCE_TYPE_NAME added in v2.247.0

func CfnSqlHaStandbyDetectedInstance_CFN_RESOURCE_TYPE_NAME() *string

func CfnSqlHaStandbyDetectedInstance_IsCfnElement added in v2.247.0

func CfnSqlHaStandbyDetectedInstance_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSqlHaStandbyDetectedInstance_IsCfnResource added in v2.247.0

func CfnSqlHaStandbyDetectedInstance_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSqlHaStandbyDetectedInstance_IsCfnSqlHaStandbyDetectedInstance added in v2.247.0

func CfnSqlHaStandbyDetectedInstance_IsCfnSqlHaStandbyDetectedInstance(x interface{}) *bool

Checks whether the given object is a CfnSqlHaStandbyDetectedInstance.

func CfnSqlHaStandbyDetectedInstance_IsConstruct added in v2.247.0

func CfnSqlHaStandbyDetectedInstance_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSubnetCidrBlock_CFN_RESOURCE_TYPE_NAME

func CfnSubnetCidrBlock_CFN_RESOURCE_TYPE_NAME() *string

func CfnSubnetCidrBlock_IsCfnElement

func CfnSubnetCidrBlock_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSubnetCidrBlock_IsCfnResource

func CfnSubnetCidrBlock_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSubnetCidrBlock_IsCfnSubnetCidrBlock added in v2.231.0

func CfnSubnetCidrBlock_IsCfnSubnetCidrBlock(x interface{}) *bool

Checks whether the given object is a CfnSubnetCidrBlock.

func CfnSubnetCidrBlock_IsConstruct

func CfnSubnetCidrBlock_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSubnetNetworkAclAssociation_CFN_RESOURCE_TYPE_NAME

func CfnSubnetNetworkAclAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnSubnetNetworkAclAssociation_IsCfnElement

func CfnSubnetNetworkAclAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSubnetNetworkAclAssociation_IsCfnResource

func CfnSubnetNetworkAclAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSubnetNetworkAclAssociation_IsCfnSubnetNetworkAclAssociation added in v2.231.0

func CfnSubnetNetworkAclAssociation_IsCfnSubnetNetworkAclAssociation(x interface{}) *bool

Checks whether the given object is a CfnSubnetNetworkAclAssociation.

func CfnSubnetNetworkAclAssociation_IsConstruct

func CfnSubnetNetworkAclAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSubnetRouteTableAssociation_CFN_RESOURCE_TYPE_NAME

func CfnSubnetRouteTableAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnSubnetRouteTableAssociation_IsCfnElement

func CfnSubnetRouteTableAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSubnetRouteTableAssociation_IsCfnResource

func CfnSubnetRouteTableAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSubnetRouteTableAssociation_IsCfnSubnetRouteTableAssociation added in v2.231.0

func CfnSubnetRouteTableAssociation_IsCfnSubnetRouteTableAssociation(x interface{}) *bool

Checks whether the given object is a CfnSubnetRouteTableAssociation.

func CfnSubnetRouteTableAssociation_IsConstruct

func CfnSubnetRouteTableAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSubnet_ArnForSubnet added in v2.227.0

func CfnSubnet_ArnForSubnet(resource interfacesawsec2.ISubnetRef) *string

func CfnSubnet_CFN_RESOURCE_TYPE_NAME

func CfnSubnet_CFN_RESOURCE_TYPE_NAME() *string

func CfnSubnet_FromSubnetId added in v2.218.0

func CfnSubnet_FromSubnetId(scope constructs.Construct, id *string, subnetId *string) interfacesawsec2.ISubnetRef

Creates a new ISubnetRef from a subnetId.

func CfnSubnet_IsCfnElement

func CfnSubnet_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSubnet_IsCfnResource

func CfnSubnet_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnSubnet_IsCfnSubnet added in v2.231.0

func CfnSubnet_IsCfnSubnet(x interface{}) *bool

Checks whether the given object is a CfnSubnet.

func CfnSubnet_IsConstruct

func CfnSubnet_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTrafficMirrorFilterRule_ArnForTrafficMirrorFilterRule added in v2.227.0

func CfnTrafficMirrorFilterRule_ArnForTrafficMirrorFilterRule(resource interfacesawsec2.ITrafficMirrorFilterRuleRef) *string

func CfnTrafficMirrorFilterRule_CFN_RESOURCE_TYPE_NAME

func CfnTrafficMirrorFilterRule_CFN_RESOURCE_TYPE_NAME() *string

func CfnTrafficMirrorFilterRule_FromTrafficMirrorFilterRuleId added in v2.218.0

func CfnTrafficMirrorFilterRule_FromTrafficMirrorFilterRuleId(scope constructs.Construct, id *string, trafficMirrorFilterRuleId *string) interfacesawsec2.ITrafficMirrorFilterRuleRef

Creates a new ITrafficMirrorFilterRuleRef from a trafficMirrorFilterRuleId.

func CfnTrafficMirrorFilterRule_IsCfnElement

func CfnTrafficMirrorFilterRule_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTrafficMirrorFilterRule_IsCfnResource

func CfnTrafficMirrorFilterRule_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTrafficMirrorFilterRule_IsCfnTrafficMirrorFilterRule added in v2.231.0

func CfnTrafficMirrorFilterRule_IsCfnTrafficMirrorFilterRule(x interface{}) *bool

Checks whether the given object is a CfnTrafficMirrorFilterRule.

func CfnTrafficMirrorFilterRule_IsConstruct

func CfnTrafficMirrorFilterRule_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTrafficMirrorFilter_ArnForTrafficMirrorFilter added in v2.227.0

func CfnTrafficMirrorFilter_ArnForTrafficMirrorFilter(resource interfacesawsec2.ITrafficMirrorFilterRef) *string

func CfnTrafficMirrorFilter_CFN_RESOURCE_TYPE_NAME

func CfnTrafficMirrorFilter_CFN_RESOURCE_TYPE_NAME() *string

func CfnTrafficMirrorFilter_FromTrafficMirrorFilterId added in v2.218.0

func CfnTrafficMirrorFilter_FromTrafficMirrorFilterId(scope constructs.Construct, id *string, trafficMirrorFilterId *string) interfacesawsec2.ITrafficMirrorFilterRef

Creates a new ITrafficMirrorFilterRef from a trafficMirrorFilterId.

func CfnTrafficMirrorFilter_IsCfnElement

func CfnTrafficMirrorFilter_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTrafficMirrorFilter_IsCfnResource

func CfnTrafficMirrorFilter_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTrafficMirrorFilter_IsCfnTrafficMirrorFilter added in v2.231.0

func CfnTrafficMirrorFilter_IsCfnTrafficMirrorFilter(x interface{}) *bool

Checks whether the given object is a CfnTrafficMirrorFilter.

func CfnTrafficMirrorFilter_IsConstruct

func CfnTrafficMirrorFilter_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTrafficMirrorSession_ArnForTrafficMirrorSession added in v2.227.0

func CfnTrafficMirrorSession_ArnForTrafficMirrorSession(resource interfacesawsec2.ITrafficMirrorSessionRef) *string

func CfnTrafficMirrorSession_CFN_RESOURCE_TYPE_NAME

func CfnTrafficMirrorSession_CFN_RESOURCE_TYPE_NAME() *string

func CfnTrafficMirrorSession_FromTrafficMirrorSessionId added in v2.218.0

func CfnTrafficMirrorSession_FromTrafficMirrorSessionId(scope constructs.Construct, id *string, trafficMirrorSessionId *string) interfacesawsec2.ITrafficMirrorSessionRef

Creates a new ITrafficMirrorSessionRef from a trafficMirrorSessionId.

func CfnTrafficMirrorSession_IsCfnElement

func CfnTrafficMirrorSession_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTrafficMirrorSession_IsCfnResource

func CfnTrafficMirrorSession_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTrafficMirrorSession_IsCfnTrafficMirrorSession added in v2.231.0

func CfnTrafficMirrorSession_IsCfnTrafficMirrorSession(x interface{}) *bool

Checks whether the given object is a CfnTrafficMirrorSession.

func CfnTrafficMirrorSession_IsConstruct

func CfnTrafficMirrorSession_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTrafficMirrorTarget_ArnForTrafficMirrorTarget added in v2.227.0

func CfnTrafficMirrorTarget_ArnForTrafficMirrorTarget(resource interfacesawsec2.ITrafficMirrorTargetRef) *string

func CfnTrafficMirrorTarget_CFN_RESOURCE_TYPE_NAME

func CfnTrafficMirrorTarget_CFN_RESOURCE_TYPE_NAME() *string

func CfnTrafficMirrorTarget_FromTrafficMirrorTargetId added in v2.218.0

func CfnTrafficMirrorTarget_FromTrafficMirrorTargetId(scope constructs.Construct, id *string, trafficMirrorTargetId *string) interfacesawsec2.ITrafficMirrorTargetRef

Creates a new ITrafficMirrorTargetRef from a trafficMirrorTargetId.

func CfnTrafficMirrorTarget_IsCfnElement

func CfnTrafficMirrorTarget_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTrafficMirrorTarget_IsCfnResource

func CfnTrafficMirrorTarget_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTrafficMirrorTarget_IsCfnTrafficMirrorTarget added in v2.231.0

func CfnTrafficMirrorTarget_IsCfnTrafficMirrorTarget(x interface{}) *bool

Checks whether the given object is a CfnTrafficMirrorTarget.

func CfnTrafficMirrorTarget_IsConstruct

func CfnTrafficMirrorTarget_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayAttachment_ArnForTransitGatewayAttachment added in v2.227.0

func CfnTransitGatewayAttachment_ArnForTransitGatewayAttachment(resource interfacesawsec2.ITransitGatewayAttachmentRef) *string

func CfnTransitGatewayAttachment_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayAttachment_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayAttachment_FromTransitGatewayAttachmentId added in v2.218.0

func CfnTransitGatewayAttachment_FromTransitGatewayAttachmentId(scope constructs.Construct, id *string, transitGatewayAttachmentId *string) interfacesawsec2.ITransitGatewayAttachmentRef

Creates a new ITransitGatewayAttachmentRef from a transitGatewayAttachmentId.

func CfnTransitGatewayAttachment_IsCfnElement

func CfnTransitGatewayAttachment_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayAttachment_IsCfnResource

func CfnTransitGatewayAttachment_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayAttachment_IsCfnTransitGatewayAttachment added in v2.231.0

func CfnTransitGatewayAttachment_IsCfnTransitGatewayAttachment(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayAttachment.

func CfnTransitGatewayAttachment_IsConstruct

func CfnTransitGatewayAttachment_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayConnectPeer_ArnForTransitGatewayConnectPeer added in v2.227.0

func CfnTransitGatewayConnectPeer_ArnForTransitGatewayConnectPeer(resource interfacesawsec2.ITransitGatewayConnectPeerRef) *string

func CfnTransitGatewayConnectPeer_CFN_RESOURCE_TYPE_NAME added in v2.211.0

func CfnTransitGatewayConnectPeer_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayConnectPeer_FromTransitGatewayConnectPeerId added in v2.218.0

func CfnTransitGatewayConnectPeer_FromTransitGatewayConnectPeerId(scope constructs.Construct, id *string, transitGatewayConnectPeerId *string) interfacesawsec2.ITransitGatewayConnectPeerRef

Creates a new ITransitGatewayConnectPeerRef from a transitGatewayConnectPeerId.

func CfnTransitGatewayConnectPeer_IsCfnElement added in v2.211.0

func CfnTransitGatewayConnectPeer_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayConnectPeer_IsCfnResource added in v2.211.0

func CfnTransitGatewayConnectPeer_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayConnectPeer_IsCfnTransitGatewayConnectPeer added in v2.231.0

func CfnTransitGatewayConnectPeer_IsCfnTransitGatewayConnectPeer(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayConnectPeer.

func CfnTransitGatewayConnectPeer_IsConstruct added in v2.211.0

func CfnTransitGatewayConnectPeer_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayConnect_ArnForTransitGatewayConnect added in v2.254.0

func CfnTransitGatewayConnect_ArnForTransitGatewayConnect(resource interfacesawsec2.ITransitGatewayConnectRef) *string

func CfnTransitGatewayConnect_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayConnect_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayConnect_FromTransitGatewayAttachmentId added in v2.254.0

func CfnTransitGatewayConnect_FromTransitGatewayAttachmentId(scope constructs.Construct, id *string, transitGatewayAttachmentId *string) interfacesawsec2.ITransitGatewayConnectRef

Creates a new ITransitGatewayConnectRef from a transitGatewayAttachmentId.

func CfnTransitGatewayConnect_IsCfnElement

func CfnTransitGatewayConnect_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayConnect_IsCfnResource

func CfnTransitGatewayConnect_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayConnect_IsCfnTransitGatewayConnect added in v2.231.0

func CfnTransitGatewayConnect_IsCfnTransitGatewayConnect(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayConnect.

func CfnTransitGatewayConnect_IsConstruct

func CfnTransitGatewayConnect_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayMeteringPolicyEntry_CFN_RESOURCE_TYPE_NAME added in v2.230.0

func CfnTransitGatewayMeteringPolicyEntry_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayMeteringPolicyEntry_IsCfnElement added in v2.230.0

func CfnTransitGatewayMeteringPolicyEntry_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayMeteringPolicyEntry_IsCfnResource added in v2.230.0

func CfnTransitGatewayMeteringPolicyEntry_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayMeteringPolicyEntry_IsCfnTransitGatewayMeteringPolicyEntry added in v2.231.0

func CfnTransitGatewayMeteringPolicyEntry_IsCfnTransitGatewayMeteringPolicyEntry(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayMeteringPolicyEntry.

func CfnTransitGatewayMeteringPolicyEntry_IsConstruct added in v2.230.0

func CfnTransitGatewayMeteringPolicyEntry_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayMeteringPolicy_ArnForTransitGatewayMeteringPolicy added in v2.234.0

func CfnTransitGatewayMeteringPolicy_ArnForTransitGatewayMeteringPolicy(resource interfacesawsec2.ITransitGatewayMeteringPolicyRef) *string

func CfnTransitGatewayMeteringPolicy_CFN_RESOURCE_TYPE_NAME added in v2.230.0

func CfnTransitGatewayMeteringPolicy_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayMeteringPolicy_FromTransitGatewayMeteringPolicyId added in v2.234.0

func CfnTransitGatewayMeteringPolicy_FromTransitGatewayMeteringPolicyId(scope constructs.Construct, id *string, transitGatewayMeteringPolicyId *string) interfacesawsec2.ITransitGatewayMeteringPolicyRef

Creates a new ITransitGatewayMeteringPolicyRef from a transitGatewayMeteringPolicyId.

func CfnTransitGatewayMeteringPolicy_IsCfnElement added in v2.230.0

func CfnTransitGatewayMeteringPolicy_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayMeteringPolicy_IsCfnResource added in v2.230.0

func CfnTransitGatewayMeteringPolicy_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayMeteringPolicy_IsCfnTransitGatewayMeteringPolicy added in v2.231.0

func CfnTransitGatewayMeteringPolicy_IsCfnTransitGatewayMeteringPolicy(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayMeteringPolicy.

func CfnTransitGatewayMeteringPolicy_IsConstruct added in v2.230.0

func CfnTransitGatewayMeteringPolicy_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayMulticastDomainAssociation_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayMulticastDomainAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayMulticastDomainAssociation_IsCfnElement

func CfnTransitGatewayMulticastDomainAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayMulticastDomainAssociation_IsCfnResource

func CfnTransitGatewayMulticastDomainAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayMulticastDomainAssociation_IsCfnTransitGatewayMulticastDomainAssociation added in v2.231.0

func CfnTransitGatewayMulticastDomainAssociation_IsCfnTransitGatewayMulticastDomainAssociation(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayMulticastDomainAssociation.

func CfnTransitGatewayMulticastDomainAssociation_IsConstruct

func CfnTransitGatewayMulticastDomainAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayMulticastDomain_ArnForTransitGatewayMulticastDomain added in v2.227.0

func CfnTransitGatewayMulticastDomain_ArnForTransitGatewayMulticastDomain(resource interfacesawsec2.ITransitGatewayMulticastDomainRef) *string

func CfnTransitGatewayMulticastDomain_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayMulticastDomain_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayMulticastDomain_FromTransitGatewayMulticastDomainArn added in v2.218.0

func CfnTransitGatewayMulticastDomain_FromTransitGatewayMulticastDomainArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.ITransitGatewayMulticastDomainRef

Creates a new ITransitGatewayMulticastDomainRef from an ARN.

func CfnTransitGatewayMulticastDomain_FromTransitGatewayMulticastDomainId added in v2.218.0

func CfnTransitGatewayMulticastDomain_FromTransitGatewayMulticastDomainId(scope constructs.Construct, id *string, transitGatewayMulticastDomainId *string) interfacesawsec2.ITransitGatewayMulticastDomainRef

Creates a new ITransitGatewayMulticastDomainRef from a transitGatewayMulticastDomainId.

func CfnTransitGatewayMulticastDomain_IsCfnElement

func CfnTransitGatewayMulticastDomain_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayMulticastDomain_IsCfnResource

func CfnTransitGatewayMulticastDomain_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayMulticastDomain_IsCfnTransitGatewayMulticastDomain added in v2.231.0

func CfnTransitGatewayMulticastDomain_IsCfnTransitGatewayMulticastDomain(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayMulticastDomain.

func CfnTransitGatewayMulticastDomain_IsConstruct

func CfnTransitGatewayMulticastDomain_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayMulticastGroupMember_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayMulticastGroupMember_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayMulticastGroupMember_IsCfnElement

func CfnTransitGatewayMulticastGroupMember_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayMulticastGroupMember_IsCfnResource

func CfnTransitGatewayMulticastGroupMember_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayMulticastGroupMember_IsCfnTransitGatewayMulticastGroupMember added in v2.231.0

func CfnTransitGatewayMulticastGroupMember_IsCfnTransitGatewayMulticastGroupMember(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayMulticastGroupMember.

func CfnTransitGatewayMulticastGroupMember_IsConstruct

func CfnTransitGatewayMulticastGroupMember_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayMulticastGroupSource_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayMulticastGroupSource_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayMulticastGroupSource_IsCfnElement

func CfnTransitGatewayMulticastGroupSource_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayMulticastGroupSource_IsCfnResource

func CfnTransitGatewayMulticastGroupSource_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayMulticastGroupSource_IsCfnTransitGatewayMulticastGroupSource added in v2.231.0

func CfnTransitGatewayMulticastGroupSource_IsCfnTransitGatewayMulticastGroupSource(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayMulticastGroupSource.

func CfnTransitGatewayMulticastGroupSource_IsConstruct

func CfnTransitGatewayMulticastGroupSource_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayPeeringAttachment_ArnForTransitGatewayPeeringAttachment added in v2.227.0

func CfnTransitGatewayPeeringAttachment_ArnForTransitGatewayPeeringAttachment(resource interfacesawsec2.ITransitGatewayPeeringAttachmentRef) *string

func CfnTransitGatewayPeeringAttachment_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayPeeringAttachment_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayPeeringAttachment_FromTransitGatewayAttachmentId added in v2.218.0

func CfnTransitGatewayPeeringAttachment_FromTransitGatewayAttachmentId(scope constructs.Construct, id *string, transitGatewayAttachmentId *string) interfacesawsec2.ITransitGatewayPeeringAttachmentRef

Creates a new ITransitGatewayPeeringAttachmentRef from a transitGatewayAttachmentId.

func CfnTransitGatewayPeeringAttachment_IsCfnElement

func CfnTransitGatewayPeeringAttachment_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayPeeringAttachment_IsCfnResource

func CfnTransitGatewayPeeringAttachment_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayPeeringAttachment_IsCfnTransitGatewayPeeringAttachment added in v2.231.0

func CfnTransitGatewayPeeringAttachment_IsCfnTransitGatewayPeeringAttachment(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayPeeringAttachment.

func CfnTransitGatewayPeeringAttachment_IsConstruct

func CfnTransitGatewayPeeringAttachment_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayRouteTableAssociation_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayRouteTableAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayRouteTableAssociation_IsCfnElement

func CfnTransitGatewayRouteTableAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayRouteTableAssociation_IsCfnResource

func CfnTransitGatewayRouteTableAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayRouteTableAssociation_IsCfnTransitGatewayRouteTableAssociation added in v2.231.0

func CfnTransitGatewayRouteTableAssociation_IsCfnTransitGatewayRouteTableAssociation(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayRouteTableAssociation.

func CfnTransitGatewayRouteTableAssociation_IsConstruct

func CfnTransitGatewayRouteTableAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayRouteTablePropagation_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayRouteTablePropagation_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayRouteTablePropagation_IsCfnElement

func CfnTransitGatewayRouteTablePropagation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayRouteTablePropagation_IsCfnResource

func CfnTransitGatewayRouteTablePropagation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayRouteTablePropagation_IsCfnTransitGatewayRouteTablePropagation added in v2.231.0

func CfnTransitGatewayRouteTablePropagation_IsCfnTransitGatewayRouteTablePropagation(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayRouteTablePropagation.

func CfnTransitGatewayRouteTablePropagation_IsConstruct

func CfnTransitGatewayRouteTablePropagation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayRouteTable_ArnForTransitGatewayRouteTable added in v2.227.0

func CfnTransitGatewayRouteTable_ArnForTransitGatewayRouteTable(resource interfacesawsec2.ITransitGatewayRouteTableRef) *string

func CfnTransitGatewayRouteTable_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayRouteTable_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayRouteTable_FromTransitGatewayRouteTableId added in v2.218.0

func CfnTransitGatewayRouteTable_FromTransitGatewayRouteTableId(scope constructs.Construct, id *string, transitGatewayRouteTableId *string) interfacesawsec2.ITransitGatewayRouteTableRef

Creates a new ITransitGatewayRouteTableRef from a transitGatewayRouteTableId.

func CfnTransitGatewayRouteTable_IsCfnElement

func CfnTransitGatewayRouteTable_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayRouteTable_IsCfnResource

func CfnTransitGatewayRouteTable_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayRouteTable_IsCfnTransitGatewayRouteTable added in v2.231.0

func CfnTransitGatewayRouteTable_IsCfnTransitGatewayRouteTable(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayRouteTable.

func CfnTransitGatewayRouteTable_IsConstruct

func CfnTransitGatewayRouteTable_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayRoute_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayRoute_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayRoute_IsCfnElement

func CfnTransitGatewayRoute_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayRoute_IsCfnResource

func CfnTransitGatewayRoute_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayRoute_IsCfnTransitGatewayRoute added in v2.231.0

func CfnTransitGatewayRoute_IsCfnTransitGatewayRoute(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayRoute.

func CfnTransitGatewayRoute_IsConstruct

func CfnTransitGatewayRoute_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGatewayVpcAttachment_CFN_RESOURCE_TYPE_NAME

func CfnTransitGatewayVpcAttachment_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGatewayVpcAttachment_IsCfnElement

func CfnTransitGatewayVpcAttachment_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGatewayVpcAttachment_IsCfnResource

func CfnTransitGatewayVpcAttachment_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGatewayVpcAttachment_IsCfnTransitGatewayVpcAttachment added in v2.231.0

func CfnTransitGatewayVpcAttachment_IsCfnTransitGatewayVpcAttachment(x interface{}) *bool

Checks whether the given object is a CfnTransitGatewayVpcAttachment.

func CfnTransitGatewayVpcAttachment_IsConstruct

func CfnTransitGatewayVpcAttachment_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnTransitGateway_ArnForTransitGateway added in v2.227.0

func CfnTransitGateway_ArnForTransitGateway(resource interfacesawsec2.ITransitGatewayRef) *string

func CfnTransitGateway_CFN_RESOURCE_TYPE_NAME

func CfnTransitGateway_CFN_RESOURCE_TYPE_NAME() *string

func CfnTransitGateway_FromTransitGatewayArn added in v2.218.0

func CfnTransitGateway_FromTransitGatewayArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.ITransitGatewayRef

Creates a new ITransitGatewayRef from an ARN.

func CfnTransitGateway_FromTransitGatewayId added in v2.218.0

func CfnTransitGateway_FromTransitGatewayId(scope constructs.Construct, id *string, transitGatewayId *string) interfacesawsec2.ITransitGatewayRef

Creates a new ITransitGatewayRef from a transitGatewayId.

func CfnTransitGateway_IsCfnElement

func CfnTransitGateway_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnTransitGateway_IsCfnResource

func CfnTransitGateway_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnTransitGateway_IsCfnTransitGateway added in v2.231.0

func CfnTransitGateway_IsCfnTransitGateway(x interface{}) *bool

Checks whether the given object is a CfnTransitGateway.

func CfnTransitGateway_IsConstruct

func CfnTransitGateway_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCBlockPublicAccessExclusion_CFN_RESOURCE_TYPE_NAME added in v2.172.0

func CfnVPCBlockPublicAccessExclusion_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCBlockPublicAccessExclusion_IsCfnElement added in v2.172.0

func CfnVPCBlockPublicAccessExclusion_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCBlockPublicAccessExclusion_IsCfnResource added in v2.172.0

func CfnVPCBlockPublicAccessExclusion_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCBlockPublicAccessExclusion_IsCfnVPCBlockPublicAccessExclusion added in v2.231.0

func CfnVPCBlockPublicAccessExclusion_IsCfnVPCBlockPublicAccessExclusion(x interface{}) *bool

Checks whether the given object is a CfnVPCBlockPublicAccessExclusion.

func CfnVPCBlockPublicAccessExclusion_IsConstruct added in v2.172.0

func CfnVPCBlockPublicAccessExclusion_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCBlockPublicAccessOptions_CFN_RESOURCE_TYPE_NAME added in v2.172.0

func CfnVPCBlockPublicAccessOptions_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCBlockPublicAccessOptions_IsCfnElement added in v2.172.0

func CfnVPCBlockPublicAccessOptions_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCBlockPublicAccessOptions_IsCfnResource added in v2.172.0

func CfnVPCBlockPublicAccessOptions_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCBlockPublicAccessOptions_IsCfnVPCBlockPublicAccessOptions added in v2.231.0

func CfnVPCBlockPublicAccessOptions_IsCfnVPCBlockPublicAccessOptions(x interface{}) *bool

Checks whether the given object is a CfnVPCBlockPublicAccessOptions.

func CfnVPCBlockPublicAccessOptions_IsConstruct added in v2.172.0

func CfnVPCBlockPublicAccessOptions_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCCidrBlock_CFN_RESOURCE_TYPE_NAME

func CfnVPCCidrBlock_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCCidrBlock_IsCfnElement

func CfnVPCCidrBlock_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCCidrBlock_IsCfnResource

func CfnVPCCidrBlock_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCCidrBlock_IsCfnVPCCidrBlock added in v2.231.0

func CfnVPCCidrBlock_IsCfnVPCCidrBlock(x interface{}) *bool

Checks whether the given object is a CfnVPCCidrBlock.

func CfnVPCCidrBlock_IsConstruct

func CfnVPCCidrBlock_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCDHCPOptionsAssociation_CFN_RESOURCE_TYPE_NAME

func CfnVPCDHCPOptionsAssociation_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCDHCPOptionsAssociation_IsCfnElement

func CfnVPCDHCPOptionsAssociation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCDHCPOptionsAssociation_IsCfnResource

func CfnVPCDHCPOptionsAssociation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCDHCPOptionsAssociation_IsCfnVPCDHCPOptionsAssociation added in v2.231.0

func CfnVPCDHCPOptionsAssociation_IsCfnVPCDHCPOptionsAssociation(x interface{}) *bool

Checks whether the given object is a CfnVPCDHCPOptionsAssociation.

func CfnVPCDHCPOptionsAssociation_IsConstruct

func CfnVPCDHCPOptionsAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCEncryptionControl_ArnForVPCEncryptionControl added in v2.234.0

func CfnVPCEncryptionControl_ArnForVPCEncryptionControl(resource interfacesawsec2.IVPCEncryptionControlRef) *string

func CfnVPCEncryptionControl_CFN_RESOURCE_TYPE_NAME added in v2.230.0

func CfnVPCEncryptionControl_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCEncryptionControl_FromVpcEncryptionControlId added in v2.234.0

func CfnVPCEncryptionControl_FromVpcEncryptionControlId(scope constructs.Construct, id *string, vpcEncryptionControlId *string) interfacesawsec2.IVPCEncryptionControlRef

Creates a new IVPCEncryptionControlRef from a vpcEncryptionControlId.

func CfnVPCEncryptionControl_IsCfnElement added in v2.230.0

func CfnVPCEncryptionControl_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCEncryptionControl_IsCfnResource added in v2.230.0

func CfnVPCEncryptionControl_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCEncryptionControl_IsCfnVPCEncryptionControl added in v2.231.0

func CfnVPCEncryptionControl_IsCfnVPCEncryptionControl(x interface{}) *bool

Checks whether the given object is a CfnVPCEncryptionControl.

func CfnVPCEncryptionControl_IsConstruct added in v2.230.0

func CfnVPCEncryptionControl_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCEndpointConnectionNotification_CFN_RESOURCE_TYPE_NAME

func CfnVPCEndpointConnectionNotification_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCEndpointConnectionNotification_IsCfnElement

func CfnVPCEndpointConnectionNotification_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCEndpointConnectionNotification_IsCfnResource

func CfnVPCEndpointConnectionNotification_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCEndpointConnectionNotification_IsCfnVPCEndpointConnectionNotification added in v2.231.0

func CfnVPCEndpointConnectionNotification_IsCfnVPCEndpointConnectionNotification(x interface{}) *bool

Checks whether the given object is a CfnVPCEndpointConnectionNotification.

func CfnVPCEndpointConnectionNotification_IsConstruct

func CfnVPCEndpointConnectionNotification_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCEndpointServicePermissions_CFN_RESOURCE_TYPE_NAME

func CfnVPCEndpointServicePermissions_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCEndpointServicePermissions_IsCfnElement

func CfnVPCEndpointServicePermissions_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCEndpointServicePermissions_IsCfnResource

func CfnVPCEndpointServicePermissions_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCEndpointServicePermissions_IsCfnVPCEndpointServicePermissions added in v2.231.0

func CfnVPCEndpointServicePermissions_IsCfnVPCEndpointServicePermissions(x interface{}) *bool

Checks whether the given object is a CfnVPCEndpointServicePermissions.

func CfnVPCEndpointServicePermissions_IsConstruct

func CfnVPCEndpointServicePermissions_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCEndpointService_CFN_RESOURCE_TYPE_NAME

func CfnVPCEndpointService_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCEndpointService_IsCfnElement

func CfnVPCEndpointService_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCEndpointService_IsCfnResource

func CfnVPCEndpointService_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCEndpointService_IsCfnVPCEndpointService added in v2.231.0

func CfnVPCEndpointService_IsCfnVPCEndpointService(x interface{}) *bool

Checks whether the given object is a CfnVPCEndpointService.

func CfnVPCEndpointService_IsConstruct

func CfnVPCEndpointService_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCEndpoint_ArnForVPCEndpoint added in v2.227.0

func CfnVPCEndpoint_ArnForVPCEndpoint(resource interfacesawsec2.IVPCEndpointRef) *string

func CfnVPCEndpoint_CFN_RESOURCE_TYPE_NAME

func CfnVPCEndpoint_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCEndpoint_FromVpcEndpointId added in v2.218.0

func CfnVPCEndpoint_FromVpcEndpointId(scope constructs.Construct, id *string, vpcEndpointId *string) interfacesawsec2.IVPCEndpointRef

Creates a new IVPCEndpointRef from a vpcEndpointId.

func CfnVPCEndpoint_IsCfnElement

func CfnVPCEndpoint_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCEndpoint_IsCfnResource

func CfnVPCEndpoint_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCEndpoint_IsCfnVPCEndpoint added in v2.231.0

func CfnVPCEndpoint_IsCfnVPCEndpoint(x interface{}) *bool

Checks whether the given object is a CfnVPCEndpoint.

func CfnVPCEndpoint_IsConstruct

func CfnVPCEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCGatewayAttachment_CFN_RESOURCE_TYPE_NAME

func CfnVPCGatewayAttachment_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCGatewayAttachment_IsCfnElement

func CfnVPCGatewayAttachment_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCGatewayAttachment_IsCfnResource

func CfnVPCGatewayAttachment_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCGatewayAttachment_IsCfnVPCGatewayAttachment added in v2.231.0

func CfnVPCGatewayAttachment_IsCfnVPCGatewayAttachment(x interface{}) *bool

Checks whether the given object is a CfnVPCGatewayAttachment.

func CfnVPCGatewayAttachment_IsConstruct

func CfnVPCGatewayAttachment_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPCPeeringConnection_ArnForVPCPeeringConnection added in v2.227.0

func CfnVPCPeeringConnection_ArnForVPCPeeringConnection(resource interfacesawsec2.IVPCPeeringConnectionRef) *string

func CfnVPCPeeringConnection_CFN_RESOURCE_TYPE_NAME

func CfnVPCPeeringConnection_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPCPeeringConnection_FromVpcPeeringConnectionId added in v2.218.0

func CfnVPCPeeringConnection_FromVpcPeeringConnectionId(scope constructs.Construct, id *string, vpcPeeringConnectionId *string) interfacesawsec2.IVPCPeeringConnectionRef

Creates a new IVPCPeeringConnectionRef from a vpcPeeringConnectionId.

func CfnVPCPeeringConnection_IsCfnElement

func CfnVPCPeeringConnection_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPCPeeringConnection_IsCfnResource

func CfnVPCPeeringConnection_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPCPeeringConnection_IsCfnVPCPeeringConnection added in v2.231.0

func CfnVPCPeeringConnection_IsCfnVPCPeeringConnection(x interface{}) *bool

Checks whether the given object is a CfnVPCPeeringConnection.

func CfnVPCPeeringConnection_IsConstruct

func CfnVPCPeeringConnection_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPC_ArnForVPC added in v2.227.0

func CfnVPC_ArnForVPC(resource interfacesawsec2.IVPCRef) *string

func CfnVPC_CFN_RESOURCE_TYPE_NAME

func CfnVPC_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPC_FromVpcId added in v2.218.0

func CfnVPC_FromVpcId(scope constructs.Construct, id *string, vpcId *string) interfacesawsec2.IVPCRef

Creates a new IVPCRef from a vpcId.

func CfnVPC_IsCfnElement

func CfnVPC_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPC_IsCfnResource

func CfnVPC_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPC_IsCfnVPC added in v2.231.0

func CfnVPC_IsCfnVPC(x interface{}) *bool

Checks whether the given object is a CfnVPC.

func CfnVPC_IsConstruct

func CfnVPC_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPNConcentrator_ArnForVPNConcentrator added in v2.234.0

func CfnVPNConcentrator_ArnForVPNConcentrator(resource interfacesawsec2.IVPNConcentratorRef) *string

func CfnVPNConcentrator_CFN_RESOURCE_TYPE_NAME added in v2.227.0

func CfnVPNConcentrator_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPNConcentrator_FromVpnConcentratorId added in v2.234.0

func CfnVPNConcentrator_FromVpnConcentratorId(scope constructs.Construct, id *string, vpnConcentratorId *string) interfacesawsec2.IVPNConcentratorRef

Creates a new IVPNConcentratorRef from a vpnConcentratorId.

func CfnVPNConcentrator_IsCfnElement added in v2.227.0

func CfnVPNConcentrator_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPNConcentrator_IsCfnResource added in v2.227.0

func CfnVPNConcentrator_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPNConcentrator_IsCfnVPNConcentrator added in v2.231.0

func CfnVPNConcentrator_IsCfnVPNConcentrator(x interface{}) *bool

Checks whether the given object is a CfnVPNConcentrator.

func CfnVPNConcentrator_IsConstruct added in v2.227.0

func CfnVPNConcentrator_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPNConnectionRoute_CFN_RESOURCE_TYPE_NAME

func CfnVPNConnectionRoute_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPNConnectionRoute_IsCfnElement

func CfnVPNConnectionRoute_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPNConnectionRoute_IsCfnResource

func CfnVPNConnectionRoute_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPNConnectionRoute_IsCfnVPNConnectionRoute added in v2.231.0

func CfnVPNConnectionRoute_IsCfnVPNConnectionRoute(x interface{}) *bool

Checks whether the given object is a CfnVPNConnectionRoute.

func CfnVPNConnectionRoute_IsConstruct

func CfnVPNConnectionRoute_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPNConnection_ArnForVPNConnection added in v2.227.0

func CfnVPNConnection_ArnForVPNConnection(resource interfacesawsec2.IVPNConnectionRef) *string

func CfnVPNConnection_CFN_RESOURCE_TYPE_NAME

func CfnVPNConnection_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPNConnection_FromVpnConnectionId added in v2.218.0

func CfnVPNConnection_FromVpnConnectionId(scope constructs.Construct, id *string, vpnConnectionId *string) interfacesawsec2.IVPNConnectionRef

Creates a new IVPNConnectionRef from a vpnConnectionId.

func CfnVPNConnection_IsCfnElement

func CfnVPNConnection_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPNConnection_IsCfnResource

func CfnVPNConnection_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPNConnection_IsCfnVPNConnection added in v2.231.0

func CfnVPNConnection_IsCfnVPNConnection(x interface{}) *bool

Checks whether the given object is a CfnVPNConnection.

func CfnVPNConnection_IsConstruct

func CfnVPNConnection_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPNGatewayRoutePropagation_CFN_RESOURCE_TYPE_NAME

func CfnVPNGatewayRoutePropagation_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPNGatewayRoutePropagation_IsCfnElement

func CfnVPNGatewayRoutePropagation_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPNGatewayRoutePropagation_IsCfnResource

func CfnVPNGatewayRoutePropagation_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPNGatewayRoutePropagation_IsCfnVPNGatewayRoutePropagation added in v2.231.0

func CfnVPNGatewayRoutePropagation_IsCfnVPNGatewayRoutePropagation(x interface{}) *bool

Checks whether the given object is a CfnVPNGatewayRoutePropagation.

func CfnVPNGatewayRoutePropagation_IsConstruct

func CfnVPNGatewayRoutePropagation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVPNGateway_ArnForVPNGateway added in v2.227.0

func CfnVPNGateway_ArnForVPNGateway(resource interfacesawsec2.IVPNGatewayRef) *string

func CfnVPNGateway_CFN_RESOURCE_TYPE_NAME

func CfnVPNGateway_CFN_RESOURCE_TYPE_NAME() *string

func CfnVPNGateway_FromVpnGatewayId added in v2.218.0

func CfnVPNGateway_FromVpnGatewayId(scope constructs.Construct, id *string, vpnGatewayId *string) interfacesawsec2.IVPNGatewayRef

Creates a new IVPNGatewayRef from a vpnGatewayId.

func CfnVPNGateway_IsCfnElement

func CfnVPNGateway_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVPNGateway_IsCfnResource

func CfnVPNGateway_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVPNGateway_IsCfnVPNGateway added in v2.231.0

func CfnVPNGateway_IsCfnVPNGateway(x interface{}) *bool

Checks whether the given object is a CfnVPNGateway.

func CfnVPNGateway_IsConstruct

func CfnVPNGateway_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVerifiedAccessEndpoint_ArnForVerifiedAccessEndpoint added in v2.227.0

func CfnVerifiedAccessEndpoint_ArnForVerifiedAccessEndpoint(resource interfacesawsec2.IVerifiedAccessEndpointRef) *string

func CfnVerifiedAccessEndpoint_CFN_RESOURCE_TYPE_NAME added in v2.80.0

func CfnVerifiedAccessEndpoint_CFN_RESOURCE_TYPE_NAME() *string

func CfnVerifiedAccessEndpoint_FromVerifiedAccessEndpointId added in v2.218.0

func CfnVerifiedAccessEndpoint_FromVerifiedAccessEndpointId(scope constructs.Construct, id *string, verifiedAccessEndpointId *string) interfacesawsec2.IVerifiedAccessEndpointRef

Creates a new IVerifiedAccessEndpointRef from a verifiedAccessEndpointId.

func CfnVerifiedAccessEndpoint_IsCfnElement added in v2.80.0

func CfnVerifiedAccessEndpoint_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVerifiedAccessEndpoint_IsCfnResource added in v2.80.0

func CfnVerifiedAccessEndpoint_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVerifiedAccessEndpoint_IsCfnVerifiedAccessEndpoint added in v2.231.0

func CfnVerifiedAccessEndpoint_IsCfnVerifiedAccessEndpoint(x interface{}) *bool

Checks whether the given object is a CfnVerifiedAccessEndpoint.

func CfnVerifiedAccessEndpoint_IsConstruct added in v2.80.0

func CfnVerifiedAccessEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVerifiedAccessGroup_ArnForVerifiedAccessGroup added in v2.227.0

func CfnVerifiedAccessGroup_ArnForVerifiedAccessGroup(resource interfacesawsec2.IVerifiedAccessGroupRef) *string

func CfnVerifiedAccessGroup_CFN_RESOURCE_TYPE_NAME added in v2.80.0

func CfnVerifiedAccessGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnVerifiedAccessGroup_FromVerifiedAccessGroupArn added in v2.218.0

func CfnVerifiedAccessGroup_FromVerifiedAccessGroupArn(scope constructs.Construct, id *string, arn *string) interfacesawsec2.IVerifiedAccessGroupRef

Creates a new IVerifiedAccessGroupRef from an ARN.

func CfnVerifiedAccessGroup_FromVerifiedAccessGroupId added in v2.218.0

func CfnVerifiedAccessGroup_FromVerifiedAccessGroupId(scope constructs.Construct, id *string, verifiedAccessGroupId *string) interfacesawsec2.IVerifiedAccessGroupRef

Creates a new IVerifiedAccessGroupRef from a verifiedAccessGroupId.

func CfnVerifiedAccessGroup_IsCfnElement added in v2.80.0

func CfnVerifiedAccessGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVerifiedAccessGroup_IsCfnResource added in v2.80.0

func CfnVerifiedAccessGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVerifiedAccessGroup_IsCfnVerifiedAccessGroup added in v2.231.0

func CfnVerifiedAccessGroup_IsCfnVerifiedAccessGroup(x interface{}) *bool

Checks whether the given object is a CfnVerifiedAccessGroup.

func CfnVerifiedAccessGroup_IsConstruct added in v2.80.0

func CfnVerifiedAccessGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVerifiedAccessInstance_ArnForVerifiedAccessInstance added in v2.227.0

func CfnVerifiedAccessInstance_ArnForVerifiedAccessInstance(resource interfacesawsec2.IVerifiedAccessInstanceRef) *string

func CfnVerifiedAccessInstance_CFN_RESOURCE_TYPE_NAME added in v2.79.0

func CfnVerifiedAccessInstance_CFN_RESOURCE_TYPE_NAME() *string

func CfnVerifiedAccessInstance_FromVerifiedAccessInstanceId added in v2.218.0

func CfnVerifiedAccessInstance_FromVerifiedAccessInstanceId(scope constructs.Construct, id *string, verifiedAccessInstanceId *string) interfacesawsec2.IVerifiedAccessInstanceRef

Creates a new IVerifiedAccessInstanceRef from a verifiedAccessInstanceId.

func CfnVerifiedAccessInstance_IsCfnElement added in v2.79.0

func CfnVerifiedAccessInstance_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVerifiedAccessInstance_IsCfnResource added in v2.79.0

func CfnVerifiedAccessInstance_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVerifiedAccessInstance_IsCfnVerifiedAccessInstance added in v2.231.0

func CfnVerifiedAccessInstance_IsCfnVerifiedAccessInstance(x interface{}) *bool

Checks whether the given object is a CfnVerifiedAccessInstance.

func CfnVerifiedAccessInstance_IsConstruct added in v2.79.0

func CfnVerifiedAccessInstance_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVerifiedAccessTrustProvider_ArnForVerifiedAccessTrustProvider added in v2.227.0

func CfnVerifiedAccessTrustProvider_ArnForVerifiedAccessTrustProvider(resource interfacesawsec2.IVerifiedAccessTrustProviderRef) *string

func CfnVerifiedAccessTrustProvider_CFN_RESOURCE_TYPE_NAME added in v2.80.0

func CfnVerifiedAccessTrustProvider_CFN_RESOURCE_TYPE_NAME() *string

func CfnVerifiedAccessTrustProvider_FromVerifiedAccessTrustProviderId added in v2.218.0

func CfnVerifiedAccessTrustProvider_FromVerifiedAccessTrustProviderId(scope constructs.Construct, id *string, verifiedAccessTrustProviderId *string) interfacesawsec2.IVerifiedAccessTrustProviderRef

Creates a new IVerifiedAccessTrustProviderRef from a verifiedAccessTrustProviderId.

func CfnVerifiedAccessTrustProvider_IsCfnElement added in v2.80.0

func CfnVerifiedAccessTrustProvider_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVerifiedAccessTrustProvider_IsCfnResource added in v2.80.0

func CfnVerifiedAccessTrustProvider_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVerifiedAccessTrustProvider_IsCfnVerifiedAccessTrustProvider added in v2.231.0

func CfnVerifiedAccessTrustProvider_IsCfnVerifiedAccessTrustProvider(x interface{}) *bool

Checks whether the given object is a CfnVerifiedAccessTrustProvider.

func CfnVerifiedAccessTrustProvider_IsConstruct added in v2.80.0

func CfnVerifiedAccessTrustProvider_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVolumeAttachment_CFN_RESOURCE_TYPE_NAME

func CfnVolumeAttachment_CFN_RESOURCE_TYPE_NAME() *string

func CfnVolumeAttachment_IsCfnElement

func CfnVolumeAttachment_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVolumeAttachment_IsCfnResource

func CfnVolumeAttachment_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVolumeAttachment_IsCfnVolumeAttachment added in v2.231.0

func CfnVolumeAttachment_IsCfnVolumeAttachment(x interface{}) *bool

Checks whether the given object is a CfnVolumeAttachment.

func CfnVolumeAttachment_IsConstruct

func CfnVolumeAttachment_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVolume_ArnForVolume added in v2.227.0

func CfnVolume_ArnForVolume(resource interfacesawsec2.IVolumeRef) *string

func CfnVolume_CFN_RESOURCE_TYPE_NAME

func CfnVolume_CFN_RESOURCE_TYPE_NAME() *string

func CfnVolume_FromVolumeId added in v2.218.0

func CfnVolume_FromVolumeId(scope constructs.Construct, id *string, volumeId *string) interfacesawsec2.IVolumeRef

Creates a new IVolumeRef from a volumeId.

func CfnVolume_IsCfnElement

func CfnVolume_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVolume_IsCfnResource

func CfnVolume_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnVolume_IsCfnVolume added in v2.231.0

func CfnVolume_IsCfnVolume(x interface{}) *bool

Checks whether the given object is a CfnVolume.

func CfnVolume_IsConstruct

func CfnVolume_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func ClientVpnAuthorizationRule_IsConstruct

func ClientVpnAuthorizationRule_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func ClientVpnAuthorizationRule_IsOwnedResource added in v2.32.0

func ClientVpnAuthorizationRule_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func ClientVpnAuthorizationRule_IsResource

func ClientVpnAuthorizationRule_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func ClientVpnAuthorizationRule_PROPERTY_INJECTION_ID added in v2.196.0

func ClientVpnAuthorizationRule_PROPERTY_INJECTION_ID() *string

func ClientVpnEndpoint_IsConstruct

func ClientVpnEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func ClientVpnEndpoint_IsOwnedResource added in v2.32.0

func ClientVpnEndpoint_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func ClientVpnEndpoint_IsResource

func ClientVpnEndpoint_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func ClientVpnEndpoint_PROPERTY_INJECTION_ID added in v2.196.0

func ClientVpnEndpoint_PROPERTY_INJECTION_ID() *string

func ClientVpnRoute_IsConstruct

func ClientVpnRoute_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func ClientVpnRoute_IsOwnedResource added in v2.32.0

func ClientVpnRoute_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func ClientVpnRoute_IsResource

func ClientVpnRoute_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func ClientVpnRoute_PROPERTY_INJECTION_ID added in v2.196.0

func ClientVpnRoute_PROPERTY_INJECTION_ID() *string

func FlowLog_IsConstruct

func FlowLog_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func FlowLog_IsOwnedResource added in v2.32.0

func FlowLog_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func FlowLog_IsResource

func FlowLog_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func FlowLog_PROPERTY_INJECTION_ID added in v2.196.0

func FlowLog_PROPERTY_INJECTION_ID() *string

func GatewayVpcEndpoint_IsConstruct

func GatewayVpcEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func GatewayVpcEndpoint_IsOwnedResource added in v2.32.0

func GatewayVpcEndpoint_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func GatewayVpcEndpoint_IsResource

func GatewayVpcEndpoint_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func GatewayVpcEndpoint_PROPERTY_INJECTION_ID added in v2.196.0

func GatewayVpcEndpoint_PROPERTY_INJECTION_ID() *string

func Instance_IsConstruct

func Instance_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func Instance_IsOwnedResource added in v2.32.0

func Instance_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func Instance_IsResource

func Instance_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func Instance_PROPERTY_INJECTION_ID added in v2.196.0

func Instance_PROPERTY_INJECTION_ID() *string

func InterfaceVpcEndpoint_IsConstruct

func InterfaceVpcEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func InterfaceVpcEndpoint_IsOwnedResource added in v2.32.0

func InterfaceVpcEndpoint_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func InterfaceVpcEndpoint_IsResource

func InterfaceVpcEndpoint_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func InterfaceVpcEndpoint_PROPERTY_INJECTION_ID added in v2.196.0

func InterfaceVpcEndpoint_PROPERTY_INJECTION_ID() *string

func KeyPair_IsConstruct added in v2.116.0

func KeyPair_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func KeyPair_IsOwnedResource added in v2.116.0

func KeyPair_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func KeyPair_IsResource added in v2.116.0

func KeyPair_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func KeyPair_PROPERTY_INJECTION_ID added in v2.196.0

func KeyPair_PROPERTY_INJECTION_ID() *string

func LaunchTemplateSpecialVersions_DEFAULT_VERSION

func LaunchTemplateSpecialVersions_DEFAULT_VERSION() *string

func LaunchTemplateSpecialVersions_LATEST_VERSION

func LaunchTemplateSpecialVersions_LATEST_VERSION() *string

func LaunchTemplate_IsConstruct

func LaunchTemplate_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func LaunchTemplate_IsOwnedResource added in v2.32.0

func LaunchTemplate_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func LaunchTemplate_IsResource

func LaunchTemplate_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func LaunchTemplate_PROPERTY_INJECTION_ID added in v2.196.0

func LaunchTemplate_PROPERTY_INJECTION_ID() *string

func MultipartBody_CLOUD_BOOTHOOK

func MultipartBody_CLOUD_BOOTHOOK() *string

func MultipartBody_SHELL_SCRIPT

func MultipartBody_SHELL_SCRIPT() *string

func NatInstanceProviderV2_DEFAULT_USER_DATA_COMMANDS added in v2.137.0

func NatInstanceProviderV2_DEFAULT_USER_DATA_COMMANDS() *[]*string

func NetworkAclEntry_IsConstruct

func NetworkAclEntry_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func NetworkAclEntry_IsOwnedResource added in v2.32.0

func NetworkAclEntry_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func NetworkAclEntry_IsResource

func NetworkAclEntry_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func NetworkAclEntry_PROPERTY_INJECTION_ID added in v2.196.0

func NetworkAclEntry_PROPERTY_INJECTION_ID() *string

func NetworkAcl_IsConstruct

func NetworkAcl_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func NetworkAcl_IsOwnedResource added in v2.32.0

func NetworkAcl_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func NetworkAcl_IsResource

func NetworkAcl_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func NetworkAcl_PROPERTY_INJECTION_ID added in v2.196.0

func NetworkAcl_PROPERTY_INJECTION_ID() *string

func NewAclCidr_Override

func NewAclCidr_Override(a AclCidr)

func NewAclTraffic_Override

func NewAclTraffic_Override(a AclTraffic)

func NewAmazonLinux2ImageSsmParameter_Override added in v2.76.0

func NewAmazonLinux2ImageSsmParameter_Override(a AmazonLinux2ImageSsmParameter, props *AmazonLinux2ImageSsmParameterProps)

func NewAmazonLinux2Kernel_Override added in v2.76.0

func NewAmazonLinux2Kernel_Override(a AmazonLinux2Kernel, version *string)

func NewAmazonLinux2022ImageSsmParameter_Override added in v2.76.0

func NewAmazonLinux2022ImageSsmParameter_Override(a AmazonLinux2022ImageSsmParameter, props *AmazonLinux2022ImageSsmParameterProps)

func NewAmazonLinux2022Kernel_Override added in v2.76.0

func NewAmazonLinux2022Kernel_Override(a AmazonLinux2022Kernel, version *string)

func NewAmazonLinux2023ImageSsmParameter_Override added in v2.76.0

func NewAmazonLinux2023ImageSsmParameter_Override(a AmazonLinux2023ImageSsmParameter, props *AmazonLinux2023ImageSsmParameterProps)

func NewAmazonLinux2023Kernel_Override added in v2.76.0

func NewAmazonLinux2023Kernel_Override(a AmazonLinux2023Kernel, version *string)

func NewAmazonLinuxImageSsmParameterBase_Override added in v2.76.0

func NewAmazonLinuxImageSsmParameterBase_Override(a AmazonLinuxImageSsmParameterBase, props *AmazonLinuxImageSsmParameterBaseProps)

func NewAmazonLinuxImage_Override

func NewAmazonLinuxImage_Override(a AmazonLinuxImage, props *AmazonLinuxImageProps)

func NewBastionHostLinux_Override

func NewBastionHostLinux_Override(b BastionHostLinux, scope constructs.Construct, id *string, props *BastionHostLinuxProps)

func NewBlockDeviceVolume_Override

func NewBlockDeviceVolume_Override(b BlockDeviceVolume, ebsDevice *EbsDeviceProps, virtualName *string)

func NewCfnCapacityManagerDataExport_Override added in v2.223.0

func NewCfnCapacityManagerDataExport_Override(c CfnCapacityManagerDataExport, scope constructs.Construct, id *string, props *CfnCapacityManagerDataExportProps)

Create a new `AWS::EC2::CapacityManagerDataExport`.

func NewCfnCapacityReservationFleet_Override

func NewCfnCapacityReservationFleet_Override(c CfnCapacityReservationFleet, scope constructs.Construct, id *string, props *CfnCapacityReservationFleetProps)

Create a new `AWS::EC2::CapacityReservationFleet`.

func NewCfnCapacityReservation_Override

func NewCfnCapacityReservation_Override(c CfnCapacityReservation, scope constructs.Construct, id *string, props *CfnCapacityReservationProps)

Create a new `AWS::EC2::CapacityReservation`.

func NewCfnCarrierGateway_Override

func NewCfnCarrierGateway_Override(c CfnCarrierGateway, scope constructs.Construct, id *string, props *CfnCarrierGatewayProps)

Create a new `AWS::EC2::CarrierGateway`.

func NewCfnClientVpnAuthorizationRule_Override

func NewCfnClientVpnAuthorizationRule_Override(c CfnClientVpnAuthorizationRule, scope constructs.Construct, id *string, props *CfnClientVpnAuthorizationRuleProps)

Create a new `AWS::EC2::ClientVpnAuthorizationRule`.

func NewCfnClientVpnEndpoint_Override

func NewCfnClientVpnEndpoint_Override(c CfnClientVpnEndpoint, scope constructs.Construct, id *string, props *CfnClientVpnEndpointProps)

Create a new `AWS::EC2::ClientVpnEndpoint`.

func NewCfnClientVpnRoute_Override

func NewCfnClientVpnRoute_Override(c CfnClientVpnRoute, scope constructs.Construct, id *string, props *CfnClientVpnRouteProps)

Create a new `AWS::EC2::ClientVpnRoute`.

func NewCfnClientVpnTargetNetworkAssociation_Override

func NewCfnClientVpnTargetNetworkAssociation_Override(c CfnClientVpnTargetNetworkAssociation, scope constructs.Construct, id *string, props *CfnClientVpnTargetNetworkAssociationProps)

Create a new `AWS::EC2::ClientVpnTargetNetworkAssociation`.

func NewCfnCustomerGateway_Override

func NewCfnCustomerGateway_Override(c CfnCustomerGateway, scope constructs.Construct, id *string, props *CfnCustomerGatewayProps)

Create a new `AWS::EC2::CustomerGateway`.

func NewCfnDHCPOptions_Override

func NewCfnDHCPOptions_Override(c CfnDHCPOptions, scope constructs.Construct, id *string, props *CfnDHCPOptionsProps)

Create a new `AWS::EC2::DHCPOptions`.

func NewCfnEC2Fleet_Override

func NewCfnEC2Fleet_Override(c CfnEC2Fleet, scope constructs.Construct, id *string, props *CfnEC2FleetProps)

Create a new `AWS::EC2::EC2Fleet`.

func NewCfnEIPAssociation_Override

func NewCfnEIPAssociation_Override(c CfnEIPAssociation, scope constructs.Construct, id *string, props *CfnEIPAssociationProps)

Create a new `AWS::EC2::EIPAssociation`.

func NewCfnEIP_Override

func NewCfnEIP_Override(c CfnEIP, scope constructs.Construct, id *string, props *CfnEIPProps)

Create a new `AWS::EC2::EIP`.

func NewCfnEgressOnlyInternetGateway_Override

func NewCfnEgressOnlyInternetGateway_Override(c CfnEgressOnlyInternetGateway, scope constructs.Construct, id *string, props *CfnEgressOnlyInternetGatewayProps)

Create a new `AWS::EC2::EgressOnlyInternetGateway`.

func NewCfnEnclaveCertificateIamRoleAssociation_Override

func NewCfnEnclaveCertificateIamRoleAssociation_Override(c CfnEnclaveCertificateIamRoleAssociation, scope constructs.Construct, id *string, props *CfnEnclaveCertificateIamRoleAssociationProps)

Create a new `AWS::EC2::EnclaveCertificateIamRoleAssociation`.

func NewCfnFlowLog_Override

func NewCfnFlowLog_Override(c CfnFlowLog, scope constructs.Construct, id *string, props *CfnFlowLogProps)

Create a new `AWS::EC2::FlowLog`.

func NewCfnGatewayRouteTableAssociation_Override

func NewCfnGatewayRouteTableAssociation_Override(c CfnGatewayRouteTableAssociation, scope constructs.Construct, id *string, props *CfnGatewayRouteTableAssociationProps)

Create a new `AWS::EC2::GatewayRouteTableAssociation`.

func NewCfnHost_Override

func NewCfnHost_Override(c CfnHost, scope constructs.Construct, id *string, props *CfnHostProps)

Create a new `AWS::EC2::Host`.

func NewCfnIPAMAllocation_Override added in v2.2.0

func NewCfnIPAMAllocation_Override(c CfnIPAMAllocation, scope constructs.Construct, id *string, props *CfnIPAMAllocationProps)

Create a new `AWS::EC2::IPAMAllocation`.

func NewCfnIPAMPoolCidr_Override added in v2.64.0

func NewCfnIPAMPoolCidr_Override(c CfnIPAMPoolCidr, scope constructs.Construct, id *string, props *CfnIPAMPoolCidrProps)

Create a new `AWS::EC2::IPAMPoolCidr`.

func NewCfnIPAMPool_Override added in v2.2.0

func NewCfnIPAMPool_Override(c CfnIPAMPool, scope constructs.Construct, id *string, props *CfnIPAMPoolProps)

Create a new `AWS::EC2::IPAMPool`.

func NewCfnIPAMPrefixListResolverTarget_Override added in v2.245.0

func NewCfnIPAMPrefixListResolverTarget_Override(c CfnIPAMPrefixListResolverTarget, scope constructs.Construct, id *string, props *CfnIPAMPrefixListResolverTargetProps)

Create a new `AWS::EC2::IPAMPrefixListResolverTarget`.

func NewCfnIPAMPrefixListResolver_Override added in v2.241.0

func NewCfnIPAMPrefixListResolver_Override(c CfnIPAMPrefixListResolver, scope constructs.Construct, id *string, props *CfnIPAMPrefixListResolverProps)

Create a new `AWS::EC2::IPAMPrefixListResolver`.

func NewCfnIPAMResourceDiscoveryAssociation_Override added in v2.64.0

func NewCfnIPAMResourceDiscoveryAssociation_Override(c CfnIPAMResourceDiscoveryAssociation, scope constructs.Construct, id *string, props *CfnIPAMResourceDiscoveryAssociationProps)

Create a new `AWS::EC2::IPAMResourceDiscoveryAssociation`.

func NewCfnIPAMResourceDiscovery_Override added in v2.64.0

func NewCfnIPAMResourceDiscovery_Override(c CfnIPAMResourceDiscovery, scope constructs.Construct, id *string, props *CfnIPAMResourceDiscoveryProps)

Create a new `AWS::EC2::IPAMResourceDiscovery`.

func NewCfnIPAMScope_Override added in v2.2.0

func NewCfnIPAMScope_Override(c CfnIPAMScope, scope constructs.Construct, id *string, props *CfnIPAMScopeProps)

Create a new `AWS::EC2::IPAMScope`.

func NewCfnIPAM_Override added in v2.2.0

func NewCfnIPAM_Override(c CfnIPAM, scope constructs.Construct, id *string, props *CfnIPAMProps)

Create a new `AWS::EC2::IPAM`.

func NewCfnInstanceConnectEndpoint_Override added in v2.97.0

func NewCfnInstanceConnectEndpoint_Override(c CfnInstanceConnectEndpoint, scope constructs.Construct, id *string, props *CfnInstanceConnectEndpointProps)

Create a new `AWS::EC2::InstanceConnectEndpoint`.

func NewCfnInstance_Override

func NewCfnInstance_Override(c CfnInstance, scope constructs.Construct, id *string, props *CfnInstanceProps)

Create a new `AWS::EC2::Instance`.

func NewCfnInternetGateway_Override

func NewCfnInternetGateway_Override(c CfnInternetGateway, scope constructs.Construct, id *string, props *CfnInternetGatewayProps)

Create a new `AWS::EC2::InternetGateway`.

func NewCfnIpPoolRouteTableAssociation_Override added in v2.212.0

func NewCfnIpPoolRouteTableAssociation_Override(c CfnIpPoolRouteTableAssociation, scope constructs.Construct, id *string, props *CfnIpPoolRouteTableAssociationProps)

Create a new `AWS::EC2::IpPoolRouteTableAssociation`.

func NewCfnKeyPair_Override added in v2.25.0

func NewCfnKeyPair_Override(c CfnKeyPair, scope constructs.Construct, id *string, props *CfnKeyPairProps)

Create a new `AWS::EC2::KeyPair`.

func NewCfnLaunchTemplate_Override

func NewCfnLaunchTemplate_Override(c CfnLaunchTemplate, scope constructs.Construct, id *string, props *CfnLaunchTemplateProps)

Create a new `AWS::EC2::LaunchTemplate`.

func NewCfnLocalGatewayRouteTableVPCAssociation_Override

func NewCfnLocalGatewayRouteTableVPCAssociation_Override(c CfnLocalGatewayRouteTableVPCAssociation, scope constructs.Construct, id *string, props *CfnLocalGatewayRouteTableVPCAssociationProps)

Create a new `AWS::EC2::LocalGatewayRouteTableVPCAssociation`.

func NewCfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_Override added in v2.70.0

func NewCfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation_Override(c CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation, scope constructs.Construct, id *string, props *CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociationProps)

Create a new `AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation`.

func NewCfnLocalGatewayRouteTable_Override added in v2.70.0

func NewCfnLocalGatewayRouteTable_Override(c CfnLocalGatewayRouteTable, scope constructs.Construct, id *string, props *CfnLocalGatewayRouteTableProps)

Create a new `AWS::EC2::LocalGatewayRouteTable`.

func NewCfnLocalGatewayRoute_Override

func NewCfnLocalGatewayRoute_Override(c CfnLocalGatewayRoute, scope constructs.Construct, id *string, props *CfnLocalGatewayRouteProps)

Create a new `AWS::EC2::LocalGatewayRoute`.

func NewCfnLocalGatewayVirtualInterfaceGroup_Override added in v2.219.0

func NewCfnLocalGatewayVirtualInterfaceGroup_Override(c CfnLocalGatewayVirtualInterfaceGroup, scope constructs.Construct, id *string, props *CfnLocalGatewayVirtualInterfaceGroupProps)

Create a new `AWS::EC2::LocalGatewayVirtualInterfaceGroup`.

func NewCfnLocalGatewayVirtualInterface_Override added in v2.219.0

func NewCfnLocalGatewayVirtualInterface_Override(c CfnLocalGatewayVirtualInterface, scope constructs.Construct, id *string, props *CfnLocalGatewayVirtualInterfaceProps)

Create a new `AWS::EC2::LocalGatewayVirtualInterface`.

func NewCfnNatGateway_Override

func NewCfnNatGateway_Override(c CfnNatGateway, scope constructs.Construct, id *string, props *CfnNatGatewayProps)

Create a new `AWS::EC2::NatGateway`.

func NewCfnNetworkAclEntry_Override

func NewCfnNetworkAclEntry_Override(c CfnNetworkAclEntry, scope constructs.Construct, id *string, props *CfnNetworkAclEntryProps)

Create a new `AWS::EC2::NetworkAclEntry`.

func NewCfnNetworkAcl_Override

func NewCfnNetworkAcl_Override(c CfnNetworkAcl, scope constructs.Construct, id *string, props *CfnNetworkAclProps)

Create a new `AWS::EC2::NetworkAcl`.

func NewCfnNetworkInsightsAccessScopeAnalysis_Override added in v2.9.0

func NewCfnNetworkInsightsAccessScopeAnalysis_Override(c CfnNetworkInsightsAccessScopeAnalysis, scope constructs.Construct, id *string, props *CfnNetworkInsightsAccessScopeAnalysisProps)

Create a new `AWS::EC2::NetworkInsightsAccessScopeAnalysis`.

func NewCfnNetworkInsightsAccessScope_Override added in v2.9.0

func NewCfnNetworkInsightsAccessScope_Override(c CfnNetworkInsightsAccessScope, scope constructs.Construct, id *string, props *CfnNetworkInsightsAccessScopeProps)

Create a new `AWS::EC2::NetworkInsightsAccessScope`.

func NewCfnNetworkInsightsAnalysis_Override

func NewCfnNetworkInsightsAnalysis_Override(c CfnNetworkInsightsAnalysis, scope constructs.Construct, id *string, props *CfnNetworkInsightsAnalysisProps)

Create a new `AWS::EC2::NetworkInsightsAnalysis`.

func NewCfnNetworkInsightsPath_Override

func NewCfnNetworkInsightsPath_Override(c CfnNetworkInsightsPath, scope constructs.Construct, id *string, props *CfnNetworkInsightsPathProps)

Create a new `AWS::EC2::NetworkInsightsPath`.

func NewCfnNetworkInterfaceAttachment_Override

func NewCfnNetworkInterfaceAttachment_Override(c CfnNetworkInterfaceAttachment, scope constructs.Construct, id *string, props *CfnNetworkInterfaceAttachmentProps)

Create a new `AWS::EC2::NetworkInterfaceAttachment`.

func NewCfnNetworkInterfacePermission_Override

func NewCfnNetworkInterfacePermission_Override(c CfnNetworkInterfacePermission, scope constructs.Construct, id *string, props *CfnNetworkInterfacePermissionProps)

Create a new `AWS::EC2::NetworkInterfacePermission`.

func NewCfnNetworkInterface_Override

func NewCfnNetworkInterface_Override(c CfnNetworkInterface, scope constructs.Construct, id *string, props *CfnNetworkInterfaceProps)

Create a new `AWS::EC2::NetworkInterface`.

func NewCfnNetworkPerformanceMetricSubscription_Override added in v2.55.0

func NewCfnNetworkPerformanceMetricSubscription_Override(c CfnNetworkPerformanceMetricSubscription, scope constructs.Construct, id *string, props *CfnNetworkPerformanceMetricSubscriptionProps)

Create a new `AWS::EC2::NetworkPerformanceMetricSubscription`.

func NewCfnPlacementGroup_Override

func NewCfnPlacementGroup_Override(c CfnPlacementGroup, scope constructs.Construct, id *string, props *CfnPlacementGroupProps)

Create a new `AWS::EC2::PlacementGroup`.

func NewCfnPrefixList_Override

func NewCfnPrefixList_Override(c CfnPrefixList, scope constructs.Construct, id *string, props *CfnPrefixListProps)

Create a new `AWS::EC2::PrefixList`.

func NewCfnRouteServerAssociation_Override added in v2.188.0

func NewCfnRouteServerAssociation_Override(c CfnRouteServerAssociation, scope constructs.Construct, id *string, props *CfnRouteServerAssociationProps)

Create a new `AWS::EC2::RouteServerAssociation`.

func NewCfnRouteServerEndpoint_Override added in v2.188.0

func NewCfnRouteServerEndpoint_Override(c CfnRouteServerEndpoint, scope constructs.Construct, id *string, props *CfnRouteServerEndpointProps)

Create a new `AWS::EC2::RouteServerEndpoint`.

func NewCfnRouteServerPeer_Override added in v2.188.0

func NewCfnRouteServerPeer_Override(c CfnRouteServerPeer, scope constructs.Construct, id *string, props *CfnRouteServerPeerProps)

Create a new `AWS::EC2::RouteServerPeer`.

func NewCfnRouteServerPropagation_Override added in v2.188.0

func NewCfnRouteServerPropagation_Override(c CfnRouteServerPropagation, scope constructs.Construct, id *string, props *CfnRouteServerPropagationProps)

Create a new `AWS::EC2::RouteServerPropagation`.

func NewCfnRouteServer_Override added in v2.188.0

func NewCfnRouteServer_Override(c CfnRouteServer, scope constructs.Construct, id *string, props *CfnRouteServerProps)

Create a new `AWS::EC2::RouteServer`.

func NewCfnRouteTable_Override

func NewCfnRouteTable_Override(c CfnRouteTable, scope constructs.Construct, id *string, props *CfnRouteTableProps)

Create a new `AWS::EC2::RouteTable`.

func NewCfnRoute_Override

func NewCfnRoute_Override(c CfnRoute, scope constructs.Construct, id *string, props *CfnRouteProps)

Create a new `AWS::EC2::Route`.

func NewCfnSecurityGroupEgress_Override

func NewCfnSecurityGroupEgress_Override(c CfnSecurityGroupEgress, scope constructs.Construct, id *string, props *CfnSecurityGroupEgressProps)

Create a new `AWS::EC2::SecurityGroupEgress`.

func NewCfnSecurityGroupIngress_Override

func NewCfnSecurityGroupIngress_Override(c CfnSecurityGroupIngress, scope constructs.Construct, id *string, props *CfnSecurityGroupIngressProps)

Create a new `AWS::EC2::SecurityGroupIngress`.

func NewCfnSecurityGroupVpcAssociation_Override added in v2.167.0

func NewCfnSecurityGroupVpcAssociation_Override(c CfnSecurityGroupVpcAssociation, scope constructs.Construct, id *string, props *CfnSecurityGroupVpcAssociationProps)

Create a new `AWS::EC2::SecurityGroupVpcAssociation`.

func NewCfnSecurityGroup_Override

func NewCfnSecurityGroup_Override(c CfnSecurityGroup, scope constructs.Construct, id *string, props *CfnSecurityGroupProps)

Create a new `AWS::EC2::SecurityGroup`.

func NewCfnSnapshotBlockPublicAccess_Override added in v2.116.0

func NewCfnSnapshotBlockPublicAccess_Override(c CfnSnapshotBlockPublicAccess, scope constructs.Construct, id *string, props *CfnSnapshotBlockPublicAccessProps)

Create a new `AWS::EC2::SnapshotBlockPublicAccess`.

func NewCfnSpotFleet_Override

func NewCfnSpotFleet_Override(c CfnSpotFleet, scope constructs.Construct, id *string, props *CfnSpotFleetProps)

Create a new `AWS::EC2::SpotFleet`.

func NewCfnSqlHaStandbyDetectedInstance_Override added in v2.247.0

func NewCfnSqlHaStandbyDetectedInstance_Override(c CfnSqlHaStandbyDetectedInstance, scope constructs.Construct, id *string, props *CfnSqlHaStandbyDetectedInstanceProps)

Create a new `AWS::EC2::SqlHaStandbyDetectedInstance`.

func NewCfnSubnetCidrBlock_Override

func NewCfnSubnetCidrBlock_Override(c CfnSubnetCidrBlock, scope constructs.Construct, id *string, props *CfnSubnetCidrBlockProps)

Create a new `AWS::EC2::SubnetCidrBlock`.

func NewCfnSubnetNetworkAclAssociation_Override

func NewCfnSubnetNetworkAclAssociation_Override(c CfnSubnetNetworkAclAssociation, scope constructs.Construct, id *string, props *CfnSubnetNetworkAclAssociationProps)

Create a new `AWS::EC2::SubnetNetworkAclAssociation`.

func NewCfnSubnetRouteTableAssociation_Override

func NewCfnSubnetRouteTableAssociation_Override(c CfnSubnetRouteTableAssociation, scope constructs.Construct, id *string, props *CfnSubnetRouteTableAssociationProps)

Create a new `AWS::EC2::SubnetRouteTableAssociation`.

func NewCfnSubnet_Override

func NewCfnSubnet_Override(c CfnSubnet, scope constructs.Construct, id *string, props *CfnSubnetProps)

Create a new `AWS::EC2::Subnet`.

func NewCfnTrafficMirrorFilterRule_Override

func NewCfnTrafficMirrorFilterRule_Override(c CfnTrafficMirrorFilterRule, scope constructs.Construct, id *string, props *CfnTrafficMirrorFilterRuleProps)

Create a new `AWS::EC2::TrafficMirrorFilterRule`.

func NewCfnTrafficMirrorFilter_Override

func NewCfnTrafficMirrorFilter_Override(c CfnTrafficMirrorFilter, scope constructs.Construct, id *string, props *CfnTrafficMirrorFilterProps)

Create a new `AWS::EC2::TrafficMirrorFilter`.

func NewCfnTrafficMirrorSession_Override

func NewCfnTrafficMirrorSession_Override(c CfnTrafficMirrorSession, scope constructs.Construct, id *string, props *CfnTrafficMirrorSessionProps)

Create a new `AWS::EC2::TrafficMirrorSession`.

func NewCfnTrafficMirrorTarget_Override

func NewCfnTrafficMirrorTarget_Override(c CfnTrafficMirrorTarget, scope constructs.Construct, id *string, props *CfnTrafficMirrorTargetProps)

Create a new `AWS::EC2::TrafficMirrorTarget`.

func NewCfnTransitGatewayAttachment_Override

func NewCfnTransitGatewayAttachment_Override(c CfnTransitGatewayAttachment, scope constructs.Construct, id *string, props *CfnTransitGatewayAttachmentProps)

Create a new `AWS::EC2::TransitGatewayAttachment`.

func NewCfnTransitGatewayConnectPeer_Override added in v2.211.0

func NewCfnTransitGatewayConnectPeer_Override(c CfnTransitGatewayConnectPeer, scope constructs.Construct, id *string, props *CfnTransitGatewayConnectPeerProps)

Create a new `AWS::EC2::TransitGatewayConnectPeer`.

func NewCfnTransitGatewayConnect_Override

func NewCfnTransitGatewayConnect_Override(c CfnTransitGatewayConnect, scope constructs.Construct, id *string, props *CfnTransitGatewayConnectProps)

Create a new `AWS::EC2::TransitGatewayConnect`.

func NewCfnTransitGatewayMeteringPolicyEntry_Override added in v2.230.0

func NewCfnTransitGatewayMeteringPolicyEntry_Override(c CfnTransitGatewayMeteringPolicyEntry, scope constructs.Construct, id *string, props *CfnTransitGatewayMeteringPolicyEntryProps)

Create a new `AWS::EC2::TransitGatewayMeteringPolicyEntry`.

func NewCfnTransitGatewayMeteringPolicy_Override added in v2.230.0

func NewCfnTransitGatewayMeteringPolicy_Override(c CfnTransitGatewayMeteringPolicy, scope constructs.Construct, id *string, props *CfnTransitGatewayMeteringPolicyProps)

Create a new `AWS::EC2::TransitGatewayMeteringPolicy`.

func NewCfnTransitGatewayMulticastDomainAssociation_Override

func NewCfnTransitGatewayMulticastDomainAssociation_Override(c CfnTransitGatewayMulticastDomainAssociation, scope constructs.Construct, id *string, props *CfnTransitGatewayMulticastDomainAssociationProps)

Create a new `AWS::EC2::TransitGatewayMulticastDomainAssociation`.

func NewCfnTransitGatewayMulticastDomain_Override

func NewCfnTransitGatewayMulticastDomain_Override(c CfnTransitGatewayMulticastDomain, scope constructs.Construct, id *string, props *CfnTransitGatewayMulticastDomainProps)

Create a new `AWS::EC2::TransitGatewayMulticastDomain`.

func NewCfnTransitGatewayMulticastGroupMember_Override

func NewCfnTransitGatewayMulticastGroupMember_Override(c CfnTransitGatewayMulticastGroupMember, scope constructs.Construct, id *string, props *CfnTransitGatewayMulticastGroupMemberProps)

Create a new `AWS::EC2::TransitGatewayMulticastGroupMember`.

func NewCfnTransitGatewayMulticastGroupSource_Override

func NewCfnTransitGatewayMulticastGroupSource_Override(c CfnTransitGatewayMulticastGroupSource, scope constructs.Construct, id *string, props *CfnTransitGatewayMulticastGroupSourceProps)

Create a new `AWS::EC2::TransitGatewayMulticastGroupSource`.

func NewCfnTransitGatewayPeeringAttachment_Override

func NewCfnTransitGatewayPeeringAttachment_Override(c CfnTransitGatewayPeeringAttachment, scope constructs.Construct, id *string, props *CfnTransitGatewayPeeringAttachmentProps)

Create a new `AWS::EC2::TransitGatewayPeeringAttachment`.

func NewCfnTransitGatewayRouteTableAssociation_Override

func NewCfnTransitGatewayRouteTableAssociation_Override(c CfnTransitGatewayRouteTableAssociation, scope constructs.Construct, id *string, props *CfnTransitGatewayRouteTableAssociationProps)

Create a new `AWS::EC2::TransitGatewayRouteTableAssociation`.

func NewCfnTransitGatewayRouteTablePropagation_Override

func NewCfnTransitGatewayRouteTablePropagation_Override(c CfnTransitGatewayRouteTablePropagation, scope constructs.Construct, id *string, props *CfnTransitGatewayRouteTablePropagationProps)

Create a new `AWS::EC2::TransitGatewayRouteTablePropagation`.

func NewCfnTransitGatewayRouteTable_Override

func NewCfnTransitGatewayRouteTable_Override(c CfnTransitGatewayRouteTable, scope constructs.Construct, id *string, props *CfnTransitGatewayRouteTableProps)

Create a new `AWS::EC2::TransitGatewayRouteTable`.

func NewCfnTransitGatewayRoute_Override

func NewCfnTransitGatewayRoute_Override(c CfnTransitGatewayRoute, scope constructs.Construct, id *string, props *CfnTransitGatewayRouteProps)

Create a new `AWS::EC2::TransitGatewayRoute`.

func NewCfnTransitGatewayVpcAttachment_Override

func NewCfnTransitGatewayVpcAttachment_Override(c CfnTransitGatewayVpcAttachment, scope constructs.Construct, id *string, props *CfnTransitGatewayVpcAttachmentProps)

Create a new `AWS::EC2::TransitGatewayVpcAttachment`.

func NewCfnTransitGateway_Override

func NewCfnTransitGateway_Override(c CfnTransitGateway, scope constructs.Construct, id *string, props *CfnTransitGatewayProps)

Create a new `AWS::EC2::TransitGateway`.

func NewCfnVPCBlockPublicAccessExclusion_Override added in v2.172.0

func NewCfnVPCBlockPublicAccessExclusion_Override(c CfnVPCBlockPublicAccessExclusion, scope constructs.Construct, id *string, props *CfnVPCBlockPublicAccessExclusionProps)

Create a new `AWS::EC2::VPCBlockPublicAccessExclusion`.

func NewCfnVPCBlockPublicAccessOptions_Override added in v2.172.0

func NewCfnVPCBlockPublicAccessOptions_Override(c CfnVPCBlockPublicAccessOptions, scope constructs.Construct, id *string, props *CfnVPCBlockPublicAccessOptionsProps)

Create a new `AWS::EC2::VPCBlockPublicAccessOptions`.

func NewCfnVPCCidrBlock_Override

func NewCfnVPCCidrBlock_Override(c CfnVPCCidrBlock, scope constructs.Construct, id *string, props *CfnVPCCidrBlockProps)

Create a new `AWS::EC2::VPCCidrBlock`.

func NewCfnVPCDHCPOptionsAssociation_Override

func NewCfnVPCDHCPOptionsAssociation_Override(c CfnVPCDHCPOptionsAssociation, scope constructs.Construct, id *string, props *CfnVPCDHCPOptionsAssociationProps)

Create a new `AWS::EC2::VPCDHCPOptionsAssociation`.

func NewCfnVPCEncryptionControl_Override added in v2.230.0

func NewCfnVPCEncryptionControl_Override(c CfnVPCEncryptionControl, scope constructs.Construct, id *string, props *CfnVPCEncryptionControlProps)

Create a new `AWS::EC2::VPCEncryptionControl`.

func NewCfnVPCEndpointConnectionNotification_Override

func NewCfnVPCEndpointConnectionNotification_Override(c CfnVPCEndpointConnectionNotification, scope constructs.Construct, id *string, props *CfnVPCEndpointConnectionNotificationProps)

Create a new `AWS::EC2::VPCEndpointConnectionNotification`.

func NewCfnVPCEndpointServicePermissions_Override

func NewCfnVPCEndpointServicePermissions_Override(c CfnVPCEndpointServicePermissions, scope constructs.Construct, id *string, props *CfnVPCEndpointServicePermissionsProps)

Create a new `AWS::EC2::VPCEndpointServicePermissions`.

func NewCfnVPCEndpointService_Override

func NewCfnVPCEndpointService_Override(c CfnVPCEndpointService, scope constructs.Construct, id *string, props *CfnVPCEndpointServiceProps)

Create a new `AWS::EC2::VPCEndpointService`.

func NewCfnVPCEndpoint_Override

func NewCfnVPCEndpoint_Override(c CfnVPCEndpoint, scope constructs.Construct, id *string, props *CfnVPCEndpointProps)

Create a new `AWS::EC2::VPCEndpoint`.

func NewCfnVPCGatewayAttachment_Override

func NewCfnVPCGatewayAttachment_Override(c CfnVPCGatewayAttachment, scope constructs.Construct, id *string, props *CfnVPCGatewayAttachmentProps)

Create a new `AWS::EC2::VPCGatewayAttachment`.

func NewCfnVPCPeeringConnection_Override

func NewCfnVPCPeeringConnection_Override(c CfnVPCPeeringConnection, scope constructs.Construct, id *string, props *CfnVPCPeeringConnectionProps)

Create a new `AWS::EC2::VPCPeeringConnection`.

func NewCfnVPC_Override

func NewCfnVPC_Override(c CfnVPC, scope constructs.Construct, id *string, props *CfnVPCProps)

Create a new `AWS::EC2::VPC`.

func NewCfnVPNConcentrator_Override added in v2.227.0

func NewCfnVPNConcentrator_Override(c CfnVPNConcentrator, scope constructs.Construct, id *string, props *CfnVPNConcentratorProps)

Create a new `AWS::EC2::VPNConcentrator`.

func NewCfnVPNConnectionRoute_Override

func NewCfnVPNConnectionRoute_Override(c CfnVPNConnectionRoute, scope constructs.Construct, id *string, props *CfnVPNConnectionRouteProps)

Create a new `AWS::EC2::VPNConnectionRoute`.

func NewCfnVPNConnection_Override

func NewCfnVPNConnection_Override(c CfnVPNConnection, scope constructs.Construct, id *string, props *CfnVPNConnectionProps)

Create a new `AWS::EC2::VPNConnection`.

func NewCfnVPNGatewayRoutePropagation_Override

func NewCfnVPNGatewayRoutePropagation_Override(c CfnVPNGatewayRoutePropagation, scope constructs.Construct, id *string, props *CfnVPNGatewayRoutePropagationProps)

Create a new `AWS::EC2::VPNGatewayRoutePropagation`.

func NewCfnVPNGateway_Override

func NewCfnVPNGateway_Override(c CfnVPNGateway, scope constructs.Construct, id *string, props *CfnVPNGatewayProps)

Create a new `AWS::EC2::VPNGateway`.

func NewCfnVerifiedAccessEndpoint_Override added in v2.80.0

func NewCfnVerifiedAccessEndpoint_Override(c CfnVerifiedAccessEndpoint, scope constructs.Construct, id *string, props *CfnVerifiedAccessEndpointProps)

Create a new `AWS::EC2::VerifiedAccessEndpoint`.

func NewCfnVerifiedAccessGroup_Override added in v2.80.0

func NewCfnVerifiedAccessGroup_Override(c CfnVerifiedAccessGroup, scope constructs.Construct, id *string, props *CfnVerifiedAccessGroupProps)

Create a new `AWS::EC2::VerifiedAccessGroup`.

func NewCfnVerifiedAccessInstance_Override added in v2.79.0

func NewCfnVerifiedAccessInstance_Override(c CfnVerifiedAccessInstance, scope constructs.Construct, id *string, props *CfnVerifiedAccessInstanceProps)

Create a new `AWS::EC2::VerifiedAccessInstance`.

func NewCfnVerifiedAccessTrustProvider_Override added in v2.80.0

func NewCfnVerifiedAccessTrustProvider_Override(c CfnVerifiedAccessTrustProvider, scope constructs.Construct, id *string, props *CfnVerifiedAccessTrustProviderProps)

Create a new `AWS::EC2::VerifiedAccessTrustProvider`.

func NewCfnVolumeAttachment_Override

func NewCfnVolumeAttachment_Override(c CfnVolumeAttachment, scope constructs.Construct, id *string, props *CfnVolumeAttachmentProps)

Create a new `AWS::EC2::VolumeAttachment`.

func NewCfnVolume_Override

func NewCfnVolume_Override(c CfnVolume, scope constructs.Construct, id *string, props *CfnVolumeProps)

Create a new `AWS::EC2::Volume`.

func NewClientVpnEndpoint_Override

func NewClientVpnEndpoint_Override(c ClientVpnEndpoint, scope constructs.Construct, id *string, props *ClientVpnEndpointProps)

func NewClientVpnRouteTarget_Override

func NewClientVpnRouteTarget_Override(c ClientVpnRouteTarget)

func NewClientVpnRoute_Override

func NewClientVpnRoute_Override(c ClientVpnRoute, scope constructs.Construct, id *string, props *ClientVpnRouteProps)

func NewClientVpnUserBasedAuthentication_Override

func NewClientVpnUserBasedAuthentication_Override(c ClientVpnUserBasedAuthentication)

func NewConnections_Override

func NewConnections_Override(c Connections, props *ConnectionsProps)

func NewFlowLogDestination_Override

func NewFlowLogDestination_Override(f FlowLogDestination)

func NewFlowLogResourceType_Override

func NewFlowLogResourceType_Override(f FlowLogResourceType)

func NewFlowLog_Override

func NewFlowLog_Override(f FlowLog, scope constructs.Construct, id *string, props *FlowLogProps)

func NewGatewayVpcEndpointAwsService_Override

func NewGatewayVpcEndpointAwsService_Override(g GatewayVpcEndpointAwsService, name *string, prefix *string)

func NewGatewayVpcEndpoint_Override

func NewGatewayVpcEndpoint_Override(g GatewayVpcEndpoint, scope constructs.Construct, id *string, props *GatewayVpcEndpointProps)

func NewGenericLinuxImage_Override

func NewGenericLinuxImage_Override(g GenericLinuxImage, amiMap *map[string]*string, props *GenericLinuxImageProps)

func NewGenericSSMParameterImage_Override

func NewGenericSSMParameterImage_Override(g GenericSSMParameterImage, parameterName *string, os OperatingSystemType, userData UserData)

func NewGenericWindowsImage_Override

func NewGenericWindowsImage_Override(g GenericWindowsImage, amiMap *map[string]*string, props *GenericWindowsImageProps)

func NewInitCommandWaitDuration_Override

func NewInitCommandWaitDuration_Override(i InitCommandWaitDuration)

func NewInitConfig_Override

func NewInitConfig_Override(i InitConfig, elements *[]InitElement)

func NewInitElement_Override

func NewInitElement_Override(i InitElement)

func NewInitFile_Override

func NewInitFile_Override(i InitFile, fileName *string, options *InitFileOptions)

func NewInitGroup_Override

func NewInitGroup_Override(i InitGroup, groupName *string, groupId *float64)

func NewInitPackage_Override

func NewInitPackage_Override(i InitPackage, type_ *string, versions *[]*string, packageName *string, serviceHandles *[]InitServiceRestartHandle)

func NewInitServiceRestartHandle_Override

func NewInitServiceRestartHandle_Override(i InitServiceRestartHandle)

func NewInitSource_Override

func NewInitSource_Override(i InitSource, targetDirectory *string, serviceHandles *[]InitServiceRestartHandle)

func NewInitUser_Override

func NewInitUser_Override(i InitUser, userName *string, userOptions *InitUserOptions)

func NewInstanceType_Override

func NewInstanceType_Override(i InstanceType, instanceTypeIdentifier *string)

func NewInstance_Override

func NewInstance_Override(i Instance, scope constructs.Construct, id *string, props *InstanceProps)

func NewInterfaceVpcEndpointAwsService_Override

func NewInterfaceVpcEndpointAwsService_Override(i InterfaceVpcEndpointAwsService, name *string, prefix *string, port *float64, props *InterfaceVpcEndpointAwsServiceProps)

func NewInterfaceVpcEndpointService_Override

func NewInterfaceVpcEndpointService_Override(i InterfaceVpcEndpointService, name *string, port *float64)

func NewInterfaceVpcEndpoint_Override

func NewInterfaceVpcEndpoint_Override(i InterfaceVpcEndpoint, scope constructs.Construct, id *string, props *InterfaceVpcEndpointProps)

func NewKeyPair_Override added in v2.116.0

func NewKeyPair_Override(k KeyPair, scope constructs.Construct, id *string, props *KeyPairProps)

func NewLaunchTemplateSpecialVersions_Override

func NewLaunchTemplateSpecialVersions_Override(l LaunchTemplateSpecialVersions)

func NewLaunchTemplate_Override

func NewLaunchTemplate_Override(l LaunchTemplate, scope constructs.Construct, id *string, props *LaunchTemplateProps)

func NewLogFormat_Override added in v2.51.0

func NewLogFormat_Override(l LogFormat, value *string)

func NewLookupMachineImage_Override

func NewLookupMachineImage_Override(l LookupMachineImage, props *LookupMachineImageProps)

func NewMachineImage_Override

func NewMachineImage_Override(m MachineImage)

func NewMultipartBody_Override

func NewMultipartBody_Override(m MultipartBody)

func NewMultipartUserData_Override

func NewMultipartUserData_Override(m MultipartUserData, opts *MultipartUserDataOptions)

func NewNatGatewayProvider_Override added in v2.151.0

func NewNatGatewayProvider_Override(n NatGatewayProvider, props *NatGatewayProps)

func NewNatInstanceImage_Override

func NewNatInstanceImage_Override(n NatInstanceImage)

func NewNatInstanceProviderV2_Override added in v2.132.0

func NewNatInstanceProviderV2_Override(n NatInstanceProviderV2, props *NatInstanceProps)

func NewNatInstanceProvider_Override deprecated

func NewNatInstanceProvider_Override(n NatInstanceProvider, props *NatInstanceProps)

Deprecated: use NatInstanceProviderV2. NatInstanceProvider is deprecated since the instance image used has reached EOL on Dec 31 2023.

func NewNatProvider_Override

func NewNatProvider_Override(n NatProvider)

func NewNetworkAclEntry_Override

func NewNetworkAclEntry_Override(n NetworkAclEntry, scope constructs.Construct, id *string, props *NetworkAclEntryProps)

func NewNetworkAcl_Override

func NewNetworkAcl_Override(n NetworkAcl, scope constructs.Construct, id *string, props *NetworkAclProps)

func NewPeer_Override

func NewPeer_Override(p Peer)

func NewPlacementGroup_Override added in v2.74.0

func NewPlacementGroup_Override(p PlacementGroup, scope constructs.Construct, id *string, props *PlacementGroupProps)

func NewPort_Override

func NewPort_Override(p Port, props *PortProps)

func NewPrefixList_Override added in v2.78.0

func NewPrefixList_Override(p PrefixList, scope constructs.Construct, id *string, props *PrefixListProps)

func NewPrivateSubnet_Override

func NewPrivateSubnet_Override(p PrivateSubnet, scope constructs.Construct, id *string, props *PrivateSubnetProps)

func NewPublicSubnet_Override

func NewPublicSubnet_Override(p PublicSubnet, scope constructs.Construct, id *string, props *PublicSubnetProps)

func NewResolveSsmParameterAtLaunchImage_Override added in v2.88.0

func NewResolveSsmParameterAtLaunchImage_Override(r ResolveSsmParameterAtLaunchImage, parameterName *string, props *SsmParameterImageOptions)

func NewSecurityGroup_Override

func NewSecurityGroup_Override(s SecurityGroup, scope constructs.Construct, id *string, props *SecurityGroupProps)

func NewSubnetFilter_Override

func NewSubnetFilter_Override(s SubnetFilter)

func NewSubnet_Override

func NewSubnet_Override(s Subnet, scope constructs.Construct, id *string, props *SubnetProps)

func NewUserData_Override

func NewUserData_Override(u UserData)

func NewVolume_Override

func NewVolume_Override(v Volume, scope constructs.Construct, id *string, props *VolumeProps)

func NewVpcEndpointService_Override

func NewVpcEndpointService_Override(v VpcEndpointService, scope constructs.Construct, id *string, props *VpcEndpointServiceProps)

func NewVpcEndpoint_Override

func NewVpcEndpoint_Override(v VpcEndpoint, scope constructs.Construct, id *string, props *awscdk.ResourceProps)

func NewVpc_Override

func NewVpc_Override(v Vpc, scope constructs.Construct, id *string, props *VpcProps)

Vpc creates a VPC that spans a whole region.

It will automatically divide the provided VPC CIDR range, and create public and private subnets per Availability Zone. Network routing for the public subnets will be configured to allow outbound access directly via an Internet Gateway. Network routing for the private subnets will be configured to allow outbound access via a set of resilient NAT Gateways (one per AZ).

func NewVpnConnectionBase_Override added in v2.43.0

func NewVpnConnectionBase_Override(v VpnConnectionBase, scope constructs.Construct, id *string, props *awscdk.ResourceProps)

func NewVpnConnection_Override

func NewVpnConnection_Override(v VpnConnection, scope constructs.Construct, id *string, props *VpnConnectionProps)

func NewVpnGateway_Override

func NewVpnGateway_Override(v VpnGateway, scope constructs.Construct, id *string, props *VpnGatewayProps)

func NewWindowsImage_Override

func NewWindowsImage_Override(w WindowsImage, version WindowsVersion, props *WindowsImageProps)

func PlacementGroup_IsConstruct added in v2.74.0

func PlacementGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func PlacementGroup_IsOwnedResource added in v2.74.0

func PlacementGroup_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func PlacementGroup_IsResource added in v2.74.0

func PlacementGroup_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func PlacementGroup_PROPERTY_INJECTION_ID added in v2.196.0

func PlacementGroup_PROPERTY_INJECTION_ID() *string

func PrefixList_IsConstruct added in v2.78.0

func PrefixList_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func PrefixList_IsOwnedResource added in v2.78.0

func PrefixList_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func PrefixList_IsResource added in v2.78.0

func PrefixList_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func PrefixList_PROPERTY_INJECTION_ID added in v2.196.0

func PrefixList_PROPERTY_INJECTION_ID() *string

func PrivateSubnet_IsConstruct

func PrivateSubnet_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func PrivateSubnet_IsOwnedResource added in v2.32.0

func PrivateSubnet_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func PrivateSubnet_IsResource

func PrivateSubnet_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func PrivateSubnet_IsVpcSubnet

func PrivateSubnet_IsVpcSubnet(x interface{}) *bool

func PrivateSubnet_PROPERTY_INJECTION_ID added in v2.196.0

func PrivateSubnet_PROPERTY_INJECTION_ID() *string

func PublicSubnet_IsConstruct

func PublicSubnet_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func PublicSubnet_IsOwnedResource added in v2.32.0

func PublicSubnet_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func PublicSubnet_IsResource

func PublicSubnet_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func PublicSubnet_IsVpcSubnet

func PublicSubnet_IsVpcSubnet(x interface{}) *bool

func PublicSubnet_PROPERTY_INJECTION_ID added in v2.196.0

func PublicSubnet_PROPERTY_INJECTION_ID() *string

func SecurityGroup_IsConstruct

func SecurityGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func SecurityGroup_IsOwnedResource added in v2.32.0

func SecurityGroup_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func SecurityGroup_IsResource

func SecurityGroup_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func SecurityGroup_IsSecurityGroup

func SecurityGroup_IsSecurityGroup(x interface{}) *bool

Return whether the indicated object is a security group.

func SecurityGroup_PROPERTY_INJECTION_ID added in v2.196.0

func SecurityGroup_PROPERTY_INJECTION_ID() *string

func SubnetNetworkAclAssociation_IsConstruct

func SubnetNetworkAclAssociation_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func SubnetNetworkAclAssociation_IsOwnedResource added in v2.32.0

func SubnetNetworkAclAssociation_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func SubnetNetworkAclAssociation_IsResource

func SubnetNetworkAclAssociation_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func SubnetNetworkAclAssociation_PROPERTY_INJECTION_ID added in v2.196.0

func SubnetNetworkAclAssociation_PROPERTY_INJECTION_ID() *string

func Subnet_IsConstruct

func Subnet_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func Subnet_IsOwnedResource added in v2.32.0

func Subnet_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func Subnet_IsResource

func Subnet_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func Subnet_IsVpcSubnet

func Subnet_IsVpcSubnet(x interface{}) *bool

func Subnet_PROPERTY_INJECTION_ID added in v2.196.0

func Subnet_PROPERTY_INJECTION_ID() *string

func Volume_IsConstruct

func Volume_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func Volume_IsOwnedResource added in v2.32.0

func Volume_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func Volume_IsResource

func Volume_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func Volume_PROPERTY_INJECTION_ID added in v2.196.0

func Volume_PROPERTY_INJECTION_ID() *string

func VpcEndpointService_DEFAULT_PREFIX added in v2.150.0

func VpcEndpointService_DEFAULT_PREFIX() *string

func VpcEndpointService_IsConstruct

func VpcEndpointService_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func VpcEndpointService_IsOwnedResource added in v2.32.0

func VpcEndpointService_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func VpcEndpointService_IsResource

func VpcEndpointService_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func VpcEndpointService_PROPERTY_INJECTION_ID added in v2.196.0

func VpcEndpointService_PROPERTY_INJECTION_ID() *string

func VpcEndpoint_IsConstruct

func VpcEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func VpcEndpoint_IsOwnedResource added in v2.32.0

func VpcEndpoint_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func VpcEndpoint_IsResource

func VpcEndpoint_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func Vpc_DEFAULT_CIDR_RANGE

func Vpc_DEFAULT_CIDR_RANGE() *string

func Vpc_DEFAULT_SUBNETS

func Vpc_DEFAULT_SUBNETS() *[]*SubnetConfiguration

func Vpc_DEFAULT_SUBNETS_NO_NAT

func Vpc_DEFAULT_SUBNETS_NO_NAT() *[]*SubnetConfiguration

func Vpc_IsConstruct

func Vpc_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func Vpc_IsOwnedResource added in v2.32.0

func Vpc_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func Vpc_IsResource

func Vpc_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func Vpc_PROPERTY_INJECTION_ID added in v2.196.0

func Vpc_PROPERTY_INJECTION_ID() *string

func VpnConnectionBase_IsConstruct added in v2.43.0

func VpnConnectionBase_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func VpnConnectionBase_IsOwnedResource added in v2.43.0

func VpnConnectionBase_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func VpnConnectionBase_IsResource added in v2.43.0

func VpnConnectionBase_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func VpnConnection_IsConstruct

func VpnConnection_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func VpnConnection_IsOwnedResource added in v2.32.0

func VpnConnection_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func VpnConnection_IsResource

func VpnConnection_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func VpnConnection_MetricAll

func VpnConnection_MetricAll(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric

Return the given named metric for all VPN connections in the account/region.

func VpnConnection_MetricAllTunnelDataIn

func VpnConnection_MetricAllTunnelDataIn(props *awscloudwatch.MetricOptions) awscloudwatch.Metric

Metric for the tunnel data in of all VPN connections in the account/region. Default: sum over 5 minutes.

func VpnConnection_MetricAllTunnelDataOut

func VpnConnection_MetricAllTunnelDataOut(props *awscloudwatch.MetricOptions) awscloudwatch.Metric

Metric for the tunnel data out of all VPN connections. Default: sum over 5 minutes.

func VpnConnection_MetricAllTunnelState

func VpnConnection_MetricAllTunnelState(props *awscloudwatch.MetricOptions) awscloudwatch.Metric

Metric for the tunnel state of all VPN connections in the account/region. Default: average over 5 minutes.

func VpnConnection_PROPERTY_INJECTION_ID added in v2.196.0

func VpnConnection_PROPERTY_INJECTION_ID() *string

func VpnGateway_IsConstruct

func VpnGateway_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func VpnGateway_IsOwnedResource added in v2.32.0

func VpnGateway_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func VpnGateway_IsResource

func VpnGateway_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func VpnGateway_PROPERTY_INJECTION_ID added in v2.196.0

func VpnGateway_PROPERTY_INJECTION_ID() *string

Types

type AcceleratorManufacturer added in v2.219.0

type AcceleratorManufacturer string

Supported hardware accelerator manufacturers.

Restricts instance selection to accelerators from a particular vendor. Useful for choosing specific ecosystems (e.g., NVIDIA CUDA, AWS chips).

Example:

var vpc Vpc

securityGroup := ec2.NewSecurityGroup(this, jsii.String("SecurityGroup"), &SecurityGroupProps{
	Vpc: Vpc,
	Description: jsii.String("Security group for managed instances"),
})

miCapacityProvider := ecs.NewManagedInstancesCapacityProvider(this, jsii.String("MICapacityProvider"), &ManagedInstancesCapacityProviderProps{
	Subnets: vpc.PrivateSubnets,
	SecurityGroups: []ISecurityGroup{
		securityGroup,
	},
	InstanceRequirements: &InstanceRequirementsConfig{
		// Required: CPU and memory constraints
		VCpuCountMin: jsii.Number(2),
		VCpuCountMax: jsii.Number(8),
		MemoryMin: awscdk.Size_Gibibytes(jsii.Number(4)),
		MemoryMax: awscdk.Size_*Gibibytes(jsii.Number(32)),

		// CPU preferences
		CpuManufacturers: []CpuManufacturer{
			ec2.CpuManufacturer_INTEL,
			ec2.CpuManufacturer_AMD,
		},
		InstanceGenerations: []InstanceGeneration{
			ec2.InstanceGeneration_CURRENT,
		},

		// Instance type filtering
		AllowedInstanceTypes: []*string{
			jsii.String("m5.*"),
			jsii.String("c5.*"),
		},

		// Performance characteristics
		BurstablePerformance: ec2.BurstablePerformance_EXCLUDED,
		BareMetal: ec2.BareMetal_EXCLUDED,

		// Accelerator requirements (for ML/AI workloads)
		AcceleratorTypes: []AcceleratorType{
			ec2.AcceleratorType_GPU,
		},
		AcceleratorManufacturers: []AcceleratorManufacturer{
			ec2.AcceleratorManufacturer_NVIDIA,
		},
		AcceleratorNames: []AcceleratorName{
			ec2.AcceleratorName_T4,
			ec2.AcceleratorName_V100,
		},
		AcceleratorCountMin: jsii.Number(1),

		// Storage requirements
		LocalStorage: ec2.LocalStorage_REQUIRED,
		LocalStorageTypes: []LocalStorageType{
			ec2.LocalStorageType_SSD,
		},
		TotalLocalStorageGBMin: jsii.Number(100),

		// Network requirements
		NetworkInterfaceCountMin: jsii.Number(2),
		NetworkBandwidthGbpsMin: jsii.Number(10),

		// Cost optimization
		OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(10),
	},
})
const (
	// Amazon Web Services (e.g., Inferentia, Trainium accelerators).
	AcceleratorManufacturer_AWS AcceleratorManufacturer = "AWS"
	// AMD (e.g., Radeon Pro V520 GPU).
	AcceleratorManufacturer_AMD AcceleratorManufacturer = "AMD"
	// NVIDIA (e.g., A100, V100, T4, K80, M60 GPUs).
	AcceleratorManufacturer_NVIDIA AcceleratorManufacturer = "NVIDIA"
	// Xilinx (e.g., VU9P FPGA).
	AcceleratorManufacturer_XILINX AcceleratorManufacturer = "XILINX"
	// Habana Labs(e.g, Gaudi accelerator).
	AcceleratorManufacturer_HABANA AcceleratorManufacturer = "HABANA"
)

type AcceleratorName added in v2.219.0

type AcceleratorName string

Specific hardware accelerator models supported by EC2.

Defines exact accelerator models that can be required or excluded when selecting instance types.

Example:

var vpc Vpc

securityGroup := ec2.NewSecurityGroup(this, jsii.String("SecurityGroup"), &SecurityGroupProps{
	Vpc: Vpc,
	Description: jsii.String("Security group for managed instances"),
})

miCapacityProvider := ecs.NewManagedInstancesCapacityProvider(this, jsii.String("MICapacityProvider"), &ManagedInstancesCapacityProviderProps{
	Subnets: vpc.PrivateSubnets,
	SecurityGroups: []ISecurityGroup{
		securityGroup,
	},
	InstanceRequirements: &InstanceRequirementsConfig{
		// Required: CPU and memory constraints
		VCpuCountMin: jsii.Number(2),
		VCpuCountMax: jsii.Number(8),
		MemoryMin: awscdk.Size_Gibibytes(jsii.Number(4)),
		MemoryMax: awscdk.Size_*Gibibytes(jsii.Number(32)),

		// CPU preferences
		CpuManufacturers: []CpuManufacturer{
			ec2.CpuManufacturer_INTEL,
			ec2.CpuManufacturer_AMD,
		},
		InstanceGenerations: []InstanceGeneration{
			ec2.InstanceGeneration_CURRENT,
		},

		// Instance type filtering
		AllowedInstanceTypes: []*string{
			jsii.String("m5.*"),
			jsii.String("c5.*"),
		},

		// Performance characteristics
		BurstablePerformance: ec2.BurstablePerformance_EXCLUDED,
		BareMetal: ec2.BareMetal_EXCLUDED,

		// Accelerator requirements (for ML/AI workloads)
		AcceleratorTypes: []AcceleratorType{
			ec2.AcceleratorType_GPU,
		},
		AcceleratorManufacturers: []AcceleratorManufacturer{
			ec2.AcceleratorManufacturer_NVIDIA,
		},
		AcceleratorNames: []AcceleratorName{
			ec2.AcceleratorName_T4,
			ec2.AcceleratorName_V100,
		},
		AcceleratorCountMin: jsii.Number(1),

		// Storage requirements
		LocalStorage: ec2.LocalStorage_REQUIRED,
		LocalStorageTypes: []LocalStorageType{
			ec2.LocalStorageType_SSD,
		},
		TotalLocalStorageGBMin: jsii.Number(100),

		// Network requirements
		NetworkInterfaceCountMin: jsii.Number(2),
		NetworkBandwidthGbpsMin: jsii.Number(10),

		// Cost optimization
		OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(10),
	},
})
const (
	// NVIDIA A100 GPU.
	AcceleratorName_A100 AcceleratorName = "A100"
	// NVIDIA K80 GPU.
	AcceleratorName_K80 AcceleratorName = "K80"
	// NVIDIA M60 GPU.
	AcceleratorName_M60 AcceleratorName = "M60"
	// AMD Radeon Pro V520 GPU.
	AcceleratorName_RADEON_PRO_V520 AcceleratorName = "RADEON_PRO_V520"
	// NVIDIA T4 GPU.
	AcceleratorName_T4 AcceleratorName = "T4"
	// NVIDIA V100 GPU.
	AcceleratorName_V100 AcceleratorName = "V100"
	// Xilinx VU9P FPGA.
	AcceleratorName_VU9P AcceleratorName = "VU9P"
	// NVIDIA A10G GPU.
	AcceleratorName_A10G AcceleratorName = "A10G"
	// NVIDIA H100 GPU.
	AcceleratorName_H100 AcceleratorName = "H100"
	// AWS Inferentia chips.
	AcceleratorName_INFERENTIA AcceleratorName = "INFERENTIA"
	// NVIDIA GRID K520 GPU.
	AcceleratorName_K520 AcceleratorName = "K520"
	// NVIDIA T4G GPUs.
	AcceleratorName_T4G AcceleratorName = "T4G"
	// NVIDIA L40S GPU for AI inference and graphics workloads.
	AcceleratorName_L40S AcceleratorName = "L40S"
	// NVIDIA L4 GPU for AI inference and graphics workloads.
	AcceleratorName_L4 AcceleratorName = "L4"
	// Habana Gaudi HL-205 accelerator for deep learning training.
	AcceleratorName_GAUDI_HL_205 AcceleratorName = "GAUDI_HL_205"
	// AWS Inferentia2 chips for high-performance ML inference.
	AcceleratorName_INFERENTIA2 AcceleratorName = "INFERENTIA2"
	// AWS Trainium chips for high-performance ML training.
	AcceleratorName_TRAINIUM AcceleratorName = "TRAINIUM"
	// AWS Trainium2 chips for high-performance ML training.
	AcceleratorName_TRAINIUM2 AcceleratorName = "TRAINIUM2"
	// Xilinx U30 media transcoding accelerator for video processing.
	AcceleratorName_U30 AcceleratorName = "U30"
)

type AcceleratorType added in v2.219.0

type AcceleratorType string

Hardware accelerator categories available for EC2 instances.

Defines the general type of hardware accelerator that can be attached to an instance, typically used in instance requirement specifications (e.g., GPUs for compute-intensive tasks, FPGAs for custom logic, or inference chips for ML workloads).

Example:

var vpc Vpc

securityGroup := ec2.NewSecurityGroup(this, jsii.String("SecurityGroup"), &SecurityGroupProps{
	Vpc: Vpc,
	Description: jsii.String("Security group for managed instances"),
})

miCapacityProvider := ecs.NewManagedInstancesCapacityProvider(this, jsii.String("MICapacityProvider"), &ManagedInstancesCapacityProviderProps{
	Subnets: vpc.PrivateSubnets,
	SecurityGroups: []ISecurityGroup{
		securityGroup,
	},
	InstanceRequirements: &InstanceRequirementsConfig{
		// Required: CPU and memory constraints
		VCpuCountMin: jsii.Number(2),
		VCpuCountMax: jsii.Number(8),
		MemoryMin: awscdk.Size_Gibibytes(jsii.Number(4)),
		MemoryMax: awscdk.Size_*Gibibytes(jsii.Number(32)),

		// CPU preferences
		CpuManufacturers: []CpuManufacturer{
			ec2.CpuManufacturer_INTEL,
			ec2.CpuManufacturer_AMD,
		},
		InstanceGenerations: []InstanceGeneration{
			ec2.InstanceGeneration_CURRENT,
		},

		// Instance type filtering
		AllowedInstanceTypes: []*string{
			jsii.String("m5.*"),
			jsii.String("c5.*"),
		},

		// Performance characteristics
		BurstablePerformance: ec2.BurstablePerformance_EXCLUDED,
		BareMetal: ec2.BareMetal_EXCLUDED,

		// Accelerator requirements (for ML/AI workloads)
		AcceleratorTypes: []AcceleratorType{
			ec2.AcceleratorType_GPU,
		},
		AcceleratorManufacturers: []AcceleratorManufacturer{
			ec2.AcceleratorManufacturer_NVIDIA,
		},
		AcceleratorNames: []AcceleratorName{
			ec2.AcceleratorName_T4,
			ec2.AcceleratorName_V100,
		},
		AcceleratorCountMin: jsii.Number(1),

		// Storage requirements
		LocalStorage: ec2.LocalStorage_REQUIRED,
		LocalStorageTypes: []LocalStorageType{
			ec2.LocalStorageType_SSD,
		},
		TotalLocalStorageGBMin: jsii.Number(100),

		// Network requirements
		NetworkInterfaceCountMin: jsii.Number(2),
		NetworkBandwidthGbpsMin: jsii.Number(10),

		// Cost optimization
		OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(10),
	},
})
const (
	// Graphics Processing Unit accelerators, such as NVIDIA GPUs.
	//
	// Commonly used for machine learning training, graphics rendering,
	// or high-performance parallel computing.
	AcceleratorType_GPU AcceleratorType = "GPU"
	// Field Programmable Gate Array accelerators, such as Xilinx FPGAs.
	//
	// Used for hardware-level customization and specialized workloads.
	AcceleratorType_FPGA AcceleratorType = "FPGA"
	// Inference accelerators, such as AWS Inferentia.
	//
	// Purpose-built for efficient machine learning inference.
	AcceleratorType_INFERENCE AcceleratorType = "INFERENCE"
	// Media accelerators for video transcoding and processing workloads.
	AcceleratorType_MEDIA AcceleratorType = "MEDIA"
)

type AclCidr

type AclCidr interface {
	ToCidrConfig() *AclCidrConfig
}

Either an IPv4 or an IPv6 CIDR.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

aclCidr := awscdk.Aws_ec2.AclCidr_AnyIpv4()

func AclCidr_AnyIpv4

func AclCidr_AnyIpv4() AclCidr

The CIDR containing all IPv4 addresses (i.e., 0.0.0.0/0).

func AclCidr_AnyIpv6

func AclCidr_AnyIpv6() AclCidr

The CIDR containing all IPv6 addresses (i.e., ::/0).

func AclCidr_Ipv4

func AclCidr_Ipv4(ipv4Cidr *string) AclCidr

An IP network range in CIDR notation (for example, 172.16.0.0/24).

func AclCidr_Ipv6

func AclCidr_Ipv6(ipv6Cidr *string) AclCidr

An IPv6 network range in CIDR notation (for example, 2001:db8::/48).

type AclCidrConfig

type AclCidrConfig struct {
	// Ipv4 CIDR.
	CidrBlock *string `field:"optional" json:"cidrBlock" yaml:"cidrBlock"`
	// Ipv6 CIDR.
	Ipv6CidrBlock *string `field:"optional" json:"ipv6CidrBlock" yaml:"ipv6CidrBlock"`
}

Acl Configuration for CIDR.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

aclCidrConfig := &AclCidrConfig{
	CidrBlock: jsii.String("cidrBlock"),
	Ipv6CidrBlock: jsii.String("ipv6CidrBlock"),
}

type AclIcmp

type AclIcmp struct {
	// The Internet Control Message Protocol (ICMP) code.
	//
	// You can use -1 to specify all ICMP
	// codes for the given ICMP type. Requirement is conditional: Required if you
	// specify 1 (ICMP) for the protocol parameter.
	Code *float64 `field:"optional" json:"code" yaml:"code"`
	// The Internet Control Message Protocol (ICMP) type.
	//
	// You can use -1 to specify all ICMP types.
	// Conditional requirement: Required if you specify 1 (ICMP) for the CreateNetworkAclEntry protocol parameter.
	Type *float64 `field:"optional" json:"type" yaml:"type"`
}

Properties to create Icmp.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

aclIcmp := &AclIcmp{
	Code: jsii.Number(123),
	Type: jsii.Number(123),
}

type AclPortRange

type AclPortRange struct {
	// The first port in the range.
	//
	// Required if you specify 6 (TCP) or 17 (UDP) for the protocol parameter.
	From *float64 `field:"optional" json:"from" yaml:"from"`
	// The last port in the range.
	//
	// Required if you specify 6 (TCP) or 17 (UDP) for the protocol parameter.
	To *float64 `field:"optional" json:"to" yaml:"to"`
}

Properties to create PortRange.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

aclPortRange := &AclPortRange{
	From: jsii.Number(123),
	To: jsii.Number(123),
}

type AclTraffic

type AclTraffic interface {
	ToTrafficConfig() *AclTrafficConfig
}

The traffic that is configured using a Network ACL entry.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

aclTraffic := awscdk.Aws_ec2.AclTraffic_AllTraffic()

func AclTraffic_AllTraffic

func AclTraffic_AllTraffic() AclTraffic

Apply the ACL entry to all traffic.

func AclTraffic_Icmp

func AclTraffic_Icmp(props *AclIcmp) AclTraffic

Apply the ACL entry to ICMP traffic of given type and code.

func AclTraffic_Icmpv6

func AclTraffic_Icmpv6(props *AclIcmp) AclTraffic

Apply the ACL entry to ICMPv6 traffic of given type and code.

Requires an IPv6 CIDR block.

func AclTraffic_TcpPort

func AclTraffic_TcpPort(port *float64) AclTraffic

Apply the ACL entry to TCP traffic on a given port.

func AclTraffic_TcpPortRange

func AclTraffic_TcpPortRange(startPort *float64, endPort *float64) AclTraffic

Apply the ACL entry to TCP traffic on a given port range.

func AclTraffic_UdpPort

func AclTraffic_UdpPort(port *float64) AclTraffic

Apply the ACL entry to UDP traffic on a given port.

func AclTraffic_UdpPortRange

func AclTraffic_UdpPortRange(startPort *float64, endPort *float64) AclTraffic

Apply the ACL entry to UDP traffic on a given port range.

type AclTrafficConfig

type AclTrafficConfig struct {
	// The protocol number.
	//
	// A value of "-1" means all protocols.
	//
	// If you specify "-1" or a protocol number other than "6" (TCP), "17" (UDP),
	// or "1" (ICMP), traffic on all ports is allowed, regardless of any ports or
	// ICMP types or codes that you specify.
	//
	// If you specify protocol "58" (ICMPv6) and specify an IPv4 CIDR
	// block, traffic for all ICMP types and codes allowed, regardless of any that
	// you specify. If you specify protocol "58" (ICMPv6) and specify an IPv6 CIDR
	// block, you must specify an ICMP type and code.
	// Default: 17.
	//
	Protocol *float64 `field:"required" json:"protocol" yaml:"protocol"`
	// The Internet Control Message Protocol (ICMP) code and type.
	// Default: - Required if specifying 1 (ICMP) for the protocol parameter.
	//
	Icmp *AclIcmp `field:"optional" json:"icmp" yaml:"icmp"`
	// The range of port numbers for the UDP/TCP protocol.
	// Default: - Required if specifying 6 (TCP) or 17 (UDP) for the protocol parameter.
	//
	PortRange *AclPortRange `field:"optional" json:"portRange" yaml:"portRange"`
}

Acl Configuration for traffic.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

aclTrafficConfig := &AclTrafficConfig{
	Protocol: jsii.Number(123),

	// the properties below are optional
	Icmp: &AclIcmp{
		Code: jsii.Number(123),
		Type: jsii.Number(123),
	},
	PortRange: &AclPortRange{
		From: jsii.Number(123),
		To: jsii.Number(123),
	},
}

type Action

type Action string

What action to apply to traffic matching the ACL.

const (
	// Allow the traffic.
	Action_ALLOW Action = "ALLOW"
	// Deny the traffic.
	Action_DENY Action = "DENY"
)

type AddRouteOptions

type AddRouteOptions struct {
	// The ID of the router.
	//
	// Can be an instance ID, gateway ID, etc, depending on the router type.
	RouterId *string `field:"required" json:"routerId" yaml:"routerId"`
	// What type of router to route this traffic to.
	RouterType RouterType `field:"required" json:"routerType" yaml:"routerType"`
	// IPv4 range this route applies to.
	// Default: '0.0.0.0/0'
	//
	DestinationCidrBlock *string `field:"optional" json:"destinationCidrBlock" yaml:"destinationCidrBlock"`
	// IPv6 range this route applies to.
	// Default: - Uses IPv6.
	//
	DestinationIpv6CidrBlock *string `field:"optional" json:"destinationIpv6CidrBlock" yaml:"destinationIpv6CidrBlock"`
	// Whether this route will enable internet connectivity.
	//
	// If true, this route will be added before any AWS resources that depend
	// on internet connectivity in the VPC will be created.
	// Default: false.
	//
	EnablesInternetConnectivity *bool `field:"optional" json:"enablesInternetConnectivity" yaml:"enablesInternetConnectivity"`
}

Options for adding a new route to a subnet.

Example:

vpc := ec2.NewVpc(this, jsii.String("VPC"), &VpcProps{
	SubnetConfiguration: []SubnetConfiguration{
		&SubnetConfiguration{
			SubnetType: ec2.SubnetType_PUBLIC,
			Name: jsii.String("Public"),
		},
		&SubnetConfiguration{
			SubnetType: ec2.SubnetType_PRIVATE_ISOLATED,
			Name: jsii.String("Isolated"),
		},
	},
})

(vpc.IsolatedSubnets[0].(Subnet)).AddRoute(jsii.String("StaticRoute"), &AddRouteOptions{
	RouterId: vpc.InternetGatewayId,
	RouterType: ec2.RouterType_GATEWAY,
	DestinationCidrBlock: jsii.String("8.8.8.8/32"),
})

type AddressFamily added in v2.78.0

type AddressFamily string

The IP address type.

const (
	AddressFamily_IP_V4 AddressFamily = "IP_V4"
	AddressFamily_IP_V6 AddressFamily = "IP_V6"
)

type AllocateCidrRequest added in v2.48.0

type AllocateCidrRequest struct {
	// The Subnets to be allocated.
	RequestedSubnets *[]*RequestedSubnet `field:"required" json:"requestedSubnets" yaml:"requestedSubnets"`
	// The IPv4 CIDR block for this Vpc.
	VpcCidr *string `field:"required" json:"vpcCidr" yaml:"vpcCidr"`
}

Request for subnets CIDR to be allocated for a Vpc.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

allocateCidrRequest := &AllocateCidrRequest{
	RequestedSubnets: []RequestedSubnet{
		&RequestedSubnet{
			AvailabilityZone: jsii.String("availabilityZone"),
			Configuration: &SubnetConfiguration{
				Name: jsii.String("name"),
				SubnetType: awscdk.Aws_ec2.SubnetType_PRIVATE_ISOLATED,

				// the properties below are optional
				CidrMask: jsii.Number(123),
				Ipv6AssignAddressOnCreation: jsii.Boolean(false),
				MapPublicIpOnLaunch: jsii.Boolean(false),
				Reserved: jsii.Boolean(false),
			},
			SubnetConstructId: jsii.String("subnetConstructId"),
		},
	},
	VpcCidr: jsii.String("vpcCidr"),
}

type AllocateIpv6CidrRequest added in v2.121.0

type AllocateIpv6CidrRequest struct {
	// List of subnets allocated with IPv4 CIDRs.
	AllocatedSubnets *[]*AllocatedSubnet `field:"required" json:"allocatedSubnets" yaml:"allocatedSubnets"`
	// The IPv6 CIDRs to be allocated to the subnets.
	Ipv6Cidrs *[]*string `field:"required" json:"ipv6Cidrs" yaml:"ipv6Cidrs"`
}

Request for subnet IPv6 CIDRs to be allocated for a VPC.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

allocateIpv6CidrRequest := &AllocateIpv6CidrRequest{
	AllocatedSubnets: []AllocatedSubnet{
		&AllocatedSubnet{
			Cidr: jsii.String("cidr"),

			// the properties below are optional
			Ipv6Cidr: jsii.String("ipv6Cidr"),
		},
	},
	Ipv6Cidrs: []*string{
		jsii.String("ipv6Cidrs"),
	},
}

type AllocateVpcIpv6CidrRequest added in v2.121.0

type AllocateVpcIpv6CidrRequest struct {
	// The VPC construct to attach to.
	Scope constructs.Construct `field:"required" json:"scope" yaml:"scope"`
	// The id of the VPC.
	VpcId *string `field:"required" json:"vpcId" yaml:"vpcId"`
}

Request for allocation of the VPC IPv6 CIDR.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import constructs "github.com/aws/constructs-go/constructs"

var construct Construct

allocateVpcIpv6CidrRequest := &AllocateVpcIpv6CidrRequest{
	Scope: construct,
	VpcId: jsii.String("vpcId"),
}

type AllocatedSubnet added in v2.48.0

type AllocatedSubnet struct {
	// IPv4 CIDR Allocations for a Subnet.
	//
	// Note this is specific to the IPv4 CIDR.
	Cidr *string `field:"required" json:"cidr" yaml:"cidr"`
	// IPv6 CIDR Allocations for a Subnet.
	//
	// Note this is specific to the IPv6 CIDR.
	// Default: - no IPV6 CIDR.
	//
	Ipv6Cidr *string `field:"optional" json:"ipv6Cidr" yaml:"ipv6Cidr"`
}

CIDR Allocated Subnet.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

allocatedSubnet := &AllocatedSubnet{
	Cidr: jsii.String("cidr"),

	// the properties below are optional
	Ipv6Cidr: jsii.String("ipv6Cidr"),
}

type AmazonLinux2ImageSsmParameter added in v2.76.0

type AmazonLinux2ImageSsmParameter interface {
	AmazonLinuxImageSsmParameterBase
	// Return the image to use in the given context.
	GetImage(scope constructs.Construct) *MachineImageConfig
}

A SSM Parameter that contains the AMI ID for Amazon Linux 2.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var amazonLinux2Kernel AmazonLinux2Kernel
var userData UserData

amazonLinux2ImageSsmParameter := awscdk.Aws_ec2.NewAmazonLinux2ImageSsmParameter(&AmazonLinux2ImageSsmParameterProps{
	AdditionalCacheKey: jsii.String("additionalCacheKey"),
	CachedInContext: jsii.Boolean(false),
	CpuType: awscdk.*Aws_ec2.AmazonLinuxCpuType_ARM_64,
	Edition: awscdk.*Aws_ec2.AmazonLinuxEdition_STANDARD,
	Kernel: amazonLinux2Kernel,
	Storage: awscdk.*Aws_ec2.AmazonLinuxStorage_EBS,
	UserData: userData,
	Virtualization: awscdk.*Aws_ec2.AmazonLinuxVirt_HVM,
})

func NewAmazonLinux2ImageSsmParameter added in v2.76.0

func NewAmazonLinux2ImageSsmParameter(props *AmazonLinux2ImageSsmParameterProps) AmazonLinux2ImageSsmParameter

type AmazonLinux2ImageSsmParameterProps added in v2.76.0

type AmazonLinux2ImageSsmParameterProps struct {
	// Adds an additional discriminator to the `cdk.context.json` cache key.
	// Default: - no additional cache key.
	//
	AdditionalCacheKey *string `field:"optional" json:"additionalCacheKey" yaml:"additionalCacheKey"`
	// Whether the AMI ID is cached to be stable between deployments.
	//
	// By default, the newest image is used on each deployment. This will cause
	// instances to be replaced whenever a new version is released, and may cause
	// downtime if there aren't enough running instances in the AutoScalingGroup
	// to reschedule the tasks on.
	//
	// If set to true, the AMI ID will be cached in `cdk.context.json` and the
	// same value will be used on future runs. Your instances will not be replaced
	// but your AMI version will grow old over time. To refresh the AMI lookup,
	// you will have to evict the value from the cache using the `cdk context`
	// command. See https://docs.aws.amazon.com/cdk/latest/guide/context.html for
	// more information.
	//
	// Can not be set to `true` in environment-agnostic stacks.
	// Default: false.
	//
	CachedInContext *bool `field:"optional" json:"cachedInContext" yaml:"cachedInContext"`
	// Initial user data.
	// Default: - Empty UserData for Linux machines.
	//
	UserData UserData `field:"optional" json:"userData" yaml:"userData"`
	// CPU Type.
	// Default: AmazonLinuxCpuType.X86_64
	//
	CpuType AmazonLinuxCpuType `field:"optional" json:"cpuType" yaml:"cpuType"`
	// What edition of Amazon Linux to use.
	// Default: AmazonLinuxEdition.Standard
	//
	Edition AmazonLinuxEdition `field:"optional" json:"edition" yaml:"edition"`
	// What kernel version of Amazon Linux to use.
	// Default: -.
	//
	Kernel AmazonLinux2Kernel `field:"optional" json:"kernel" yaml:"kernel"`
	// What storage backed image to use.
	// Default: GeneralPurpose.
	//
	Storage AmazonLinuxStorage `field:"optional" json:"storage" yaml:"storage"`
	// Virtualization type.
	// Default: HVM.
	//
	Virtualization AmazonLinuxVirt `field:"optional" json:"virtualization" yaml:"virtualization"`
}

Properties specific to amzn2 images.

Example:

var vpc Vpc
var instanceType InstanceType

// Amazon Linux 2
// Amazon Linux 2
ec2.NewInstance(this, jsii.String("Instance2"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2(),
})

// Amazon Linux 2 with kernel 5.x
// Amazon Linux 2 with kernel 5.x
ec2.NewInstance(this, jsii.String("Instance3"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_*LatestAmazonLinux2(&AmazonLinux2ImageSsmParameterProps{
		Kernel: ec2.AmazonLinux2Kernel_KERNEL_5_10(),
	}),
})

// Amazon Linux 2023
// Amazon Linux 2023
ec2.NewInstance(this, jsii.String("Instance4"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
})

// Graviton 3 Processor
// Graviton 3 Processor
ec2.NewInstance(this, jsii.String("Instance5"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_*LatestAmazonLinux2023(&AmazonLinux2023ImageSsmParameterProps{
		CpuType: ec2.AmazonLinuxCpuType_ARM_64,
	}),
})

type AmazonLinux2Kernel added in v2.76.0

type AmazonLinux2Kernel interface {
	// Generate a string representation of the kernel.
	ToString() *string
}

Amazon Linux 2 kernel versions.

Example:

var vpc Vpc
var instanceType InstanceType

// Amazon Linux 2
// Amazon Linux 2
ec2.NewInstance(this, jsii.String("Instance2"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2(),
})

// Amazon Linux 2 with kernel 5.x
// Amazon Linux 2 with kernel 5.x
ec2.NewInstance(this, jsii.String("Instance3"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_*LatestAmazonLinux2(&AmazonLinux2ImageSsmParameterProps{
		Kernel: ec2.AmazonLinux2Kernel_KERNEL_5_10(),
	}),
})

// Amazon Linux 2023
// Amazon Linux 2023
ec2.NewInstance(this, jsii.String("Instance4"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
})

// Graviton 3 Processor
// Graviton 3 Processor
ec2.NewInstance(this, jsii.String("Instance5"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_*LatestAmazonLinux2023(&AmazonLinux2023ImageSsmParameterProps{
		CpuType: ec2.AmazonLinuxCpuType_ARM_64,
	}),
})

func AmazonLinux2Kernel_CDK_LATEST added in v2.76.0

func AmazonLinux2Kernel_CDK_LATEST() AmazonLinux2Kernel

func AmazonLinux2Kernel_DEFAULT added in v2.76.0

func AmazonLinux2Kernel_DEFAULT() AmazonLinux2Kernel

func AmazonLinux2Kernel_KERNEL_5_10 added in v2.76.0

func AmazonLinux2Kernel_KERNEL_5_10() AmazonLinux2Kernel

func NewAmazonLinux2Kernel added in v2.76.0

func NewAmazonLinux2Kernel(version *string) AmazonLinux2Kernel

type AmazonLinux2022ImageSsmParameter added in v2.76.0

type AmazonLinux2022ImageSsmParameter interface {
	AmazonLinuxImageSsmParameterBase
	// Return the image to use in the given context.
	GetImage(scope constructs.Construct) *MachineImageConfig
}

A SSM Parameter that contains the AMI ID for Amazon Linux 2023.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var amazonLinux2022Kernel AmazonLinux2022Kernel
var userData UserData

amazonLinux2022ImageSsmParameter := awscdk.Aws_ec2.NewAmazonLinux2022ImageSsmParameter(&AmazonLinux2022ImageSsmParameterProps{
	AdditionalCacheKey: jsii.String("additionalCacheKey"),
	CachedInContext: jsii.Boolean(false),
	CpuType: awscdk.*Aws_ec2.AmazonLinuxCpuType_ARM_64,
	Edition: awscdk.*Aws_ec2.AmazonLinuxEdition_STANDARD,
	Kernel: amazonLinux2022Kernel,
	UserData: userData,
})

func NewAmazonLinux2022ImageSsmParameter added in v2.76.0

func NewAmazonLinux2022ImageSsmParameter(props *AmazonLinux2022ImageSsmParameterProps) AmazonLinux2022ImageSsmParameter

type AmazonLinux2022ImageSsmParameterProps added in v2.76.0

type AmazonLinux2022ImageSsmParameterProps struct {
	// Adds an additional discriminator to the `cdk.context.json` cache key.
	// Default: - no additional cache key.
	//
	AdditionalCacheKey *string `field:"optional" json:"additionalCacheKey" yaml:"additionalCacheKey"`
	// Whether the AMI ID is cached to be stable between deployments.
	//
	// By default, the newest image is used on each deployment. This will cause
	// instances to be replaced whenever a new version is released, and may cause
	// downtime if there aren't enough running instances in the AutoScalingGroup
	// to reschedule the tasks on.
	//
	// If set to true, the AMI ID will be cached in `cdk.context.json` and the
	// same value will be used on future runs. Your instances will not be replaced
	// but your AMI version will grow old over time. To refresh the AMI lookup,
	// you will have to evict the value from the cache using the `cdk context`
	// command. See https://docs.aws.amazon.com/cdk/latest/guide/context.html for
	// more information.
	//
	// Can not be set to `true` in environment-agnostic stacks.
	// Default: false.
	//
	CachedInContext *bool `field:"optional" json:"cachedInContext" yaml:"cachedInContext"`
	// Initial user data.
	// Default: - Empty UserData for Linux machines.
	//
	UserData UserData `field:"optional" json:"userData" yaml:"userData"`
	// CPU Type.
	// Default: AmazonLinuxCpuType.X86_64
	//
	CpuType AmazonLinuxCpuType `field:"optional" json:"cpuType" yaml:"cpuType"`
	// What edition of Amazon Linux to use.
	// Default: AmazonLinuxEdition.Standard
	//
	Edition AmazonLinuxEdition `field:"optional" json:"edition" yaml:"edition"`
	// What kernel version of Amazon Linux to use.
	// Default: AmazonLinux2022Kernel.DEFAULT
	//
	Kernel AmazonLinux2022Kernel `field:"optional" json:"kernel" yaml:"kernel"`
}

Properties specific to al2022 images.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var amazonLinux2022Kernel AmazonLinux2022Kernel
var userData UserData

amazonLinux2022ImageSsmParameterProps := &AmazonLinux2022ImageSsmParameterProps{
	AdditionalCacheKey: jsii.String("additionalCacheKey"),
	CachedInContext: jsii.Boolean(false),
	CpuType: awscdk.Aws_ec2.AmazonLinuxCpuType_ARM_64,
	Edition: awscdk.*Aws_ec2.AmazonLinuxEdition_STANDARD,
	Kernel: amazonLinux2022Kernel,
	UserData: userData,
}

type AmazonLinux2022Kernel added in v2.76.0

type AmazonLinux2022Kernel interface {
	// Generate a string representation of the kernel.
	ToString() *string
}

Amazon Linux 2022 kernel versions.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

amazonLinux2022Kernel := awscdk.Aws_ec2.AmazonLinux2022Kernel_CDK_LATEST()

func AmazonLinux2022Kernel_CDK_LATEST added in v2.76.0

func AmazonLinux2022Kernel_CDK_LATEST() AmazonLinux2022Kernel

func AmazonLinux2022Kernel_DEFAULT added in v2.76.0

func AmazonLinux2022Kernel_DEFAULT() AmazonLinux2022Kernel

func AmazonLinux2022Kernel_KERNEL_5_15 added in v2.76.0

func AmazonLinux2022Kernel_KERNEL_5_15() AmazonLinux2022Kernel

func NewAmazonLinux2022Kernel added in v2.76.0

func NewAmazonLinux2022Kernel(version *string) AmazonLinux2022Kernel

type AmazonLinux2023ImageSsmParameter added in v2.76.0

type AmazonLinux2023ImageSsmParameter interface {
	AmazonLinuxImageSsmParameterBase
	// Return the image to use in the given context.
	GetImage(scope constructs.Construct) *MachineImageConfig
}

A SSM Parameter that contains the AMI ID for Amazon Linux 2023.

Example:

var vpc Vpc

ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	// context cache is turned on by default
	MachineImage: ec2.NewAmazonLinux2023ImageSsmParameter(&AmazonLinux2023ImageSsmParameterProps{
		Kernel: ec2.AmazonLinux2023Kernel_CDK_LATEST(),
	}),
})

// or

// or
ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
})

func NewAmazonLinux2023ImageSsmParameter added in v2.76.0

func NewAmazonLinux2023ImageSsmParameter(props *AmazonLinux2023ImageSsmParameterProps) AmazonLinux2023ImageSsmParameter

type AmazonLinux2023ImageSsmParameterProps added in v2.76.0

type AmazonLinux2023ImageSsmParameterProps struct {
	// Adds an additional discriminator to the `cdk.context.json` cache key.
	// Default: - no additional cache key.
	//
	AdditionalCacheKey *string `field:"optional" json:"additionalCacheKey" yaml:"additionalCacheKey"`
	// Whether the AMI ID is cached to be stable between deployments.
	//
	// By default, the newest image is used on each deployment. This will cause
	// instances to be replaced whenever a new version is released, and may cause
	// downtime if there aren't enough running instances in the AutoScalingGroup
	// to reschedule the tasks on.
	//
	// If set to true, the AMI ID will be cached in `cdk.context.json` and the
	// same value will be used on future runs. Your instances will not be replaced
	// but your AMI version will grow old over time. To refresh the AMI lookup,
	// you will have to evict the value from the cache using the `cdk context`
	// command. See https://docs.aws.amazon.com/cdk/latest/guide/context.html for
	// more information.
	//
	// Can not be set to `true` in environment-agnostic stacks.
	// Default: false.
	//
	CachedInContext *bool `field:"optional" json:"cachedInContext" yaml:"cachedInContext"`
	// Initial user data.
	// Default: - Empty UserData for Linux machines.
	//
	UserData UserData `field:"optional" json:"userData" yaml:"userData"`
	// CPU Type.
	// Default: AmazonLinuxCpuType.X86_64
	//
	CpuType AmazonLinuxCpuType `field:"optional" json:"cpuType" yaml:"cpuType"`
	// What edition of Amazon Linux to use.
	// Default: AmazonLinuxEdition.Standard
	//
	Edition AmazonLinuxEdition `field:"optional" json:"edition" yaml:"edition"`
	// What kernel version of Amazon Linux to use.
	// Default: AmazonLinux2023Kernel.DEFAULT
	//
	Kernel AmazonLinux2023Kernel `field:"optional" json:"kernel" yaml:"kernel"`
}

Properties specific to al2023 images.

Example:

var vpc Vpc
var instanceType InstanceType

// Amazon Linux 2
// Amazon Linux 2
ec2.NewInstance(this, jsii.String("Instance2"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2(),
})

// Amazon Linux 2 with kernel 5.x
// Amazon Linux 2 with kernel 5.x
ec2.NewInstance(this, jsii.String("Instance3"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_*LatestAmazonLinux2(&AmazonLinux2ImageSsmParameterProps{
		Kernel: ec2.AmazonLinux2Kernel_KERNEL_5_10(),
	}),
})

// Amazon Linux 2023
// Amazon Linux 2023
ec2.NewInstance(this, jsii.String("Instance4"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: ec2.MachineImage_LatestAmazonLinux2023(),
})

// Graviton 3 Processor
// Graviton 3 Processor
ec2.NewInstance(this, jsii.String("Instance5"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	MachineImage: ec2.MachineImage_*LatestAmazonLinux2023(&AmazonLinux2023ImageSsmParameterProps{
		CpuType: ec2.AmazonLinuxCpuType_ARM_64,
	}),
})

type AmazonLinux2023Kernel added in v2.76.0

type AmazonLinux2023Kernel interface {
	// Generate a string representation of the kernel.
	ToString() *string
}

Amazon Linux 2023 kernel versions.

Example:

var vpc Vpc

ec2.NewInstance(this, jsii.String("LatestAl2023"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C7G, ec2.InstanceSize_LARGE),
	// context cache is turned on by default
	MachineImage: ec2.NewAmazonLinux2023ImageSsmParameter(&AmazonLinux2023ImageSsmParameterProps{
		Kernel: ec2.AmazonLinux2023Kernel_KERNEL_6_1(),
	}),
})

func AmazonLinux2023Kernel_CDK_LATEST added in v2.76.0

func AmazonLinux2023Kernel_CDK_LATEST() AmazonLinux2023Kernel

func AmazonLinux2023Kernel_DEFAULT added in v2.76.0

func AmazonLinux2023Kernel_DEFAULT() AmazonLinux2023Kernel

func AmazonLinux2023Kernel_KERNEL_6_1 added in v2.76.0

func AmazonLinux2023Kernel_KERNEL_6_1() AmazonLinux2023Kernel

func NewAmazonLinux2023Kernel added in v2.76.0

func NewAmazonLinux2023Kernel(version *string) AmazonLinux2023Kernel

type AmazonLinuxCpuType

type AmazonLinuxCpuType string

CPU type.

Example:

// Pick the right Amazon Linux edition. All arguments shown are optional
// and will default to these values when omitted.
amznLinux := ec2.MachineImage_LatestAmazonLinux(&AmazonLinuxImageProps{
	Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX,
	Edition: ec2.AmazonLinuxEdition_STANDARD,
	Virtualization: ec2.AmazonLinuxVirt_HVM,
	Storage: ec2.AmazonLinuxStorage_GENERAL_PURPOSE,
	CpuType: ec2.AmazonLinuxCpuType_X86_64,
})

// Pick a Windows edition to use
windows := ec2.MachineImage_LatestWindows(ec2.WindowsVersion_WINDOWS_SERVER_2019_ENGLISH_FULL_BASE)

// Read AMI id from SSM parameter store
ssm := ec2.MachineImage_FromSsmParameter(jsii.String("/my/ami"), &SsmParameterImageOptions{
	Os: ec2.OperatingSystemType_LINUX,
})

// Look up the most recent image matching a set of AMI filters.
// In this case, look up the NAT instance AMI, by using a wildcard
// in the 'name' field:
natAmi := ec2.MachineImage_Lookup(&LookupMachineImageProps{
	Name: jsii.String("amzn-ami-vpc-nat-*"),
	Owners: []*string{
		jsii.String("amazon"),
	},
})

// For other custom (Linux) images, instantiate a `GenericLinuxImage` with
// a map giving the AMI to in for each region:
linux := ec2.MachineImage_GenericLinux(map[string]*string{
	"us-east-1": jsii.String("ami-97785bed"),
	"eu-west-1": jsii.String("ami-12345678"),
})

// For other custom (Windows) images, instantiate a `GenericWindowsImage` with
// a map giving the AMI to in for each region:
genericWindows := ec2.MachineImage_GenericWindows(map[string]*string{
	"us-east-1": jsii.String("ami-97785bed"),
	"eu-west-1": jsii.String("ami-12345678"),
})
const (
	// arm64 CPU type.
	AmazonLinuxCpuType_ARM_64 AmazonLinuxCpuType = "ARM_64"
	// x86_64 CPU type.
	AmazonLinuxCpuType_X86_64 AmazonLinuxCpuType = "X86_64"
)

type AmazonLinuxEdition

type AmazonLinuxEdition string

Amazon Linux edition.

Example:

// Pick a Windows edition to use
windows := ec2.NewWindowsImage(ec2.WindowsVersion_WINDOWS_SERVER_2019_ENGLISH_FULL_BASE)

// Pick the right Amazon Linux edition. All arguments shown are optional
// and will default to these values when omitted.
amznLinux := ec2.NewAmazonLinuxImage(&AmazonLinuxImageProps{
	Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX,
	Edition: ec2.AmazonLinuxEdition_STANDARD,
	Virtualization: ec2.AmazonLinuxVirt_HVM,
	Storage: ec2.AmazonLinuxStorage_GENERAL_PURPOSE,
})

// For other custom (Linux) images, instantiate a `GenericLinuxImage` with
// a map giving the AMI to in for each region:

linux := ec2.NewGenericLinuxImage(map[string]*string{
	"us-east-1": jsii.String("ami-97785bed"),
	"eu-west-1": jsii.String("ami-12345678"),
})
const (
	// Standard edition.
	AmazonLinuxEdition_STANDARD AmazonLinuxEdition = "STANDARD"
	// Minimal edition.
	AmazonLinuxEdition_MINIMAL AmazonLinuxEdition = "MINIMAL"
)

type AmazonLinuxGeneration

type AmazonLinuxGeneration string

What generation of Amazon Linux to use.

Example:

var vpc Vpc

ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_T3, ec2.InstanceSize_NANO),
	MachineImage: ec2.NewAmazonLinuxImage(&AmazonLinuxImageProps{
		Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX_2,
	}),
	InstanceInitiatedShutdownBehavior: ec2.InstanceInitiatedShutdownBehavior_TERMINATE,
})
const (
	// Amazon Linux.
	AmazonLinuxGeneration_AMAZON_LINUX AmazonLinuxGeneration = "AMAZON_LINUX"
	// Amazon Linux 2.
	AmazonLinuxGeneration_AMAZON_LINUX_2 AmazonLinuxGeneration = "AMAZON_LINUX_2"
	// Amazon Linux 2022.
	AmazonLinuxGeneration_AMAZON_LINUX_2022 AmazonLinuxGeneration = "AMAZON_LINUX_2022"
	// Amazon Linux 2023.
	AmazonLinuxGeneration_AMAZON_LINUX_2023 AmazonLinuxGeneration = "AMAZON_LINUX_2023"
)

type AmazonLinuxImage

type AmazonLinuxImage interface {
	GenericSSMParameterImage
	// Name of the SSM parameter we're looking up.
	ParameterName() *string
	// Return the image to use in the given context.
	GetImage(scope constructs.Construct) *MachineImageConfig
}

Selects the latest version of Amazon Linux.

This Machine Image automatically updates to the latest version on every deployment. Be aware this will cause your instances to be replaced when a new version of the image becomes available. Do not store stateful information on the instance if you are using this image.

The AMI ID is selected using the values published to the SSM parameter store.

Example:

var vpc IVpc

lb := elb.NewLoadBalancer(this, jsii.String("LB"), &LoadBalancerProps{
	Vpc: Vpc,
	InternetFacing: jsii.Boolean(true),
})

// instance to add as the target for load balancer.
instance := ec2.NewInstance(this, jsii.String("targetInstance"), &InstanceProps{
	Vpc: vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_MICRO),
	MachineImage: ec2.NewAmazonLinuxImage(&AmazonLinuxImageProps{
		Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX_2,
	}),
})
lb.AddTarget(elb.NewInstanceTarget(instance))

func NewAmazonLinuxImage

func NewAmazonLinuxImage(props *AmazonLinuxImageProps) AmazonLinuxImage

type AmazonLinuxImageProps

type AmazonLinuxImageProps struct {
	// Adds an additional discriminator to the `cdk.context.json` cache key.
	// Default: - no additional cache key.
	//
	AdditionalCacheKey *string `field:"optional" json:"additionalCacheKey" yaml:"additionalCacheKey"`
	// Whether the AMI ID is cached to be stable between deployments.
	//
	// By default, the newest image is used on each deployment. This will cause
	// instances to be replaced whenever a new version is released, and may cause
	// downtime if there aren't enough running instances in the AutoScalingGroup
	// to reschedule the tasks on.
	//
	// If set to true, the AMI ID will be cached in `cdk.context.json` and the
	// same value will be used on future runs. Your instances will not be replaced
	// but your AMI version will grow old over time. To refresh the AMI lookup,
	// you will have to evict the value from the cache using the `cdk context`
	// command. See https://docs.aws.amazon.com/cdk/latest/guide/context.html for
	// more information.
	//
	// Can not be set to `true` in environment-agnostic stacks.
	// Default: false.
	//
	CachedInContext *bool `field:"optional" json:"cachedInContext" yaml:"cachedInContext"`
	// CPU Type.
	// Default: X86_64.
	//
	CpuType AmazonLinuxCpuType `field:"optional" json:"cpuType" yaml:"cpuType"`
	// What edition of Amazon Linux to use.
	// Default: Standard.
	//
	Edition AmazonLinuxEdition `field:"optional" json:"edition" yaml:"edition"`
	// What generation of Amazon Linux to use.
	// Default: AmazonLinux.
	//
	Generation AmazonLinuxGeneration `field:"optional" json:"generation" yaml:"generation"`
	// What kernel version of Amazon Linux to use.
	// Default: -.
	//
	Kernel AmazonLinuxKernel `field:"optional" json:"kernel" yaml:"kernel"`
	// What storage backed image to use.
	// Default: GeneralPurpose.
	//
	Storage AmazonLinuxStorage `field:"optional" json:"storage" yaml:"storage"`
	// Initial user data.
	// Default: - Empty UserData for Linux machines.
	//
	UserData UserData `field:"optional" json:"userData" yaml:"userData"`
	// Virtualization type.
	// Default: HVM.
	//
	Virtualization AmazonLinuxVirt `field:"optional" json:"virtualization" yaml:"virtualization"`
}

Amazon Linux image properties.

Example:

var vpc IVpc

lb := elb.NewLoadBalancer(this, jsii.String("LB"), &LoadBalancerProps{
	Vpc: Vpc,
	InternetFacing: jsii.Boolean(true),
})

// instance to add as the target for load balancer.
instance := ec2.NewInstance(this, jsii.String("targetInstance"), &InstanceProps{
	Vpc: vpc,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_MICRO),
	MachineImage: ec2.NewAmazonLinuxImage(&AmazonLinuxImageProps{
		Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX_2,
	}),
})
lb.AddTarget(elb.NewInstanceTarget(instance))

type AmazonLinuxImageSsmParameterBase added in v2.76.0

type AmazonLinuxImageSsmParameterBase interface {
	IMachineImage
	// Return the image to use in the given context.
	GetImage(scope constructs.Construct) *MachineImageConfig
}

type AmazonLinuxImageSsmParameterBaseOptions added in v2.76.0

type AmazonLinuxImageSsmParameterBaseOptions struct {
	// Adds an additional discriminator to the `cdk.context.json` cache key.
	// Default: - no additional cache key.
	//
	AdditionalCacheKey *string `field:"optional" json:"additionalCacheKey" yaml:"additionalCacheKey"`
	// Whether the AMI ID is cached to be stable between deployments.
	//
	// By default, the newest image is used on each deployment. This will cause
	// instances to be replaced whenever a new version is released, and may cause
	// downtime if there aren't enough running instances in the AutoScalingGroup
	// to reschedule the tasks on.
	//
	// If set to true, the AMI ID will be cached in `cdk.context.json` and the
	// same value will be used on future runs. Your instances will not be replaced
	// but your AMI version will grow old over time. To refresh the AMI lookup,
	// you will have to evict the value from the cache using the `cdk context`
	// command. See https://docs.aws.amazon.com/cdk/latest/guide/context.html for
	// more information.
	//
	// Can not be set to `true` in environment-agnostic stacks.
	// Default: false.
	//
	CachedInContext *bool `field:"optional" json:"cachedInContext" yaml:"cachedInContext"`
	// Initial user data.
	// Default: - Empty UserData for Linux machines.
	//
	UserData UserData `field:"optional" json:"userData" yaml:"userData"`
}

Base options for amazon linux ssm parameters.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var userData UserData

amazonLinuxImageSsmParameterBaseOptions := &AmazonLinuxImageSsmParameterBaseOptions{
	AdditionalCacheKey: jsii.String("additionalCacheKey"),
	CachedInContext: jsii.Boolean(false),
	UserData: userData,
}

type AmazonLinuxImageSsmParameterBaseProps added in v2.76.0

type AmazonLinuxImageSsmParameterBaseProps struct {
	// Adds an additional discriminator to the `cdk.context.json` cache key.
	// Default: - no additional cache key.
	//
	AdditionalCacheKey *string `field:"optional" json:"additionalCacheKey" yaml:"additionalCacheKey"`
	// Whether the AMI ID is cached to be stable between deployments.
	//
	// By default, the newest image is used on each deployment. This will cause
	// instances to be replaced whenever a new version is released, and may cause
	// downtime if there aren't enough running instances in the AutoScalingGroup
	// to reschedule the tasks on.
	//
	// If set to true, the AMI ID will be cached in `cdk.context.json` and the
	// same value will be used on future runs. Your instances will not be replaced
	// but your AMI version will grow old over time. To refresh the AMI lookup,
	// you will have to evict the value from the cache using the `cdk context`
	// command. See https://docs.aws.amazon.com/cdk/latest/guide/context.html for
	// more information.
	//
	// Can not be set to `true` in environment-agnostic stacks.
	// Default: false.
	//
	CachedInContext *bool `field:"optional" json:"cachedInContext" yaml:"cachedInContext"`
	// Initial user data.
	// Default: - Empty UserData for Linux machines.
	//
	UserData UserData `field:"optional" json:"userData" yaml:"userData"`
	// The name of the SSM parameter that contains the AMI value.
	ParameterName *string `field:"required" json:"parameterName" yaml:"parameterName"`
}

Base properties for an Amazon Linux SSM Parameter.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var userData UserData

amazonLinuxImageSsmParameterBaseProps := &AmazonLinuxImageSsmParameterBaseProps{
	ParameterName: jsii.String("parameterName"),

	// the properties below are optional
	AdditionalCacheKey: jsii.String("additionalCacheKey"),
	CachedInContext: jsii.Boolean(false),
	UserData: userData,
}

type AmazonLinuxImageSsmParameterCommonOptions added in v2.76.0

type AmazonLinuxImageSsmParameterCommonOptions struct {
	// Adds an additional discriminator to the `cdk.context.json` cache key.
	// Default: - no additional cache key.
	//
	AdditionalCacheKey *string `field:"optional" json:"additionalCacheKey" yaml:"additionalCacheKey"`
	// Whether the AMI ID is cached to be stable between deployments.
	//
	// By default, the newest image is used on each deployment. This will cause
	// instances to be replaced whenever a new version is released, and may cause
	// downtime if there aren't enough running instances in the AutoScalingGroup
	// to reschedule the tasks on.
	//
	// If set to true, the AMI ID will be cached in `cdk.context.json` and the
	// same value will be used on future runs. Your instances will not be replaced
	// but your AMI version will grow old over time. To refresh the AMI lookup,
	// you will have to evict the value from the cache using the `cdk context`
	// command. See https://docs.aws.amazon.com/cdk/latest/guide/context.html for
	// more information.
	//
	// Can not be set to `true` in environment-agnostic stacks.
	// Default: false.
	//
	CachedInContext *bool `field:"optional" json:"cachedInContext" yaml:"cachedInContext"`
	// Initial user data.
	// Default: - Empty UserData for Linux machines.
	//
	UserData UserData `field:"optional" json:"userData" yaml:"userData"`
	// CPU Type.
	// Default: AmazonLinuxCpuType.X86_64
	//
	CpuType AmazonLinuxCpuType `field:"optional" json:"cpuType" yaml:"cpuType"`
	// What edition of Amazon Linux to use.
	// Default: AmazonLinuxEdition.Standard
	//
	Edition AmazonLinuxEdition `field:"optional" json:"edition" yaml:"edition"`
}

Common options across all generations.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var userData UserData

amazonLinuxImageSsmParameterCommonOptions := &AmazonLinuxImageSsmParameterCommonOptions{
	AdditionalCacheKey: jsii.String("additionalCacheKey"),
	CachedInContext: jsii.Boolean(false),
	CpuType: awscdk.Aws_ec2.AmazonLinuxCpuType_ARM_64,
	Edition: awscdk.*Aws_ec2.AmazonLinuxEdition_STANDARD,
	UserData: userData,
}

type AmazonLinuxKernel added in v2.9.0

type AmazonLinuxKernel string

Amazon Linux Kernel.

const (
	// Kernel version 5.10.
	AmazonLinuxKernel_KERNEL5_X AmazonLinuxKernel = "KERNEL5_X"
	// Kernel version 6.1.
	AmazonLinuxKernel_KERNEL6_1 AmazonLinuxKernel = "KERNEL6_1"
)

type AmazonLinuxStorage

type AmazonLinuxStorage string

Available storage options for Amazon Linux images Only applies to Amazon Linux & Amazon Linux 2.

Example:

// Pick a Windows edition to use
windows := ec2.NewWindowsImage(ec2.WindowsVersion_WINDOWS_SERVER_2019_ENGLISH_FULL_BASE)

// Pick the right Amazon Linux edition. All arguments shown are optional
// and will default to these values when omitted.
amznLinux := ec2.NewAmazonLinuxImage(&AmazonLinuxImageProps{
	Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX,
	Edition: ec2.AmazonLinuxEdition_STANDARD,
	Virtualization: ec2.AmazonLinuxVirt_HVM,
	Storage: ec2.AmazonLinuxStorage_GENERAL_PURPOSE,
})

// For other custom (Linux) images, instantiate a `GenericLinuxImage` with
// a map giving the AMI to in for each region:

linux := ec2.NewGenericLinuxImage(map[string]*string{
	"us-east-1": jsii.String("ami-97785bed"),
	"eu-west-1": jsii.String("ami-12345678"),
})
const (
	// EBS-backed storage.
	AmazonLinuxStorage_EBS AmazonLinuxStorage = "EBS"
	// S3-backed storage.
	AmazonLinuxStorage_S3 AmazonLinuxStorage = "S3"
	// General Purpose-based storage (recommended).
	AmazonLinuxStorage_GENERAL_PURPOSE AmazonLinuxStorage = "GENERAL_PURPOSE"
)

type AmazonLinuxVirt

type AmazonLinuxVirt string

Virtualization type for Amazon Linux.

Example:

// Pick a Windows edition to use
windows := ec2.NewWindowsImage(ec2.WindowsVersion_WINDOWS_SERVER_2019_ENGLISH_FULL_BASE)

// Pick the right Amazon Linux edition. All arguments shown are optional
// and will default to these values when omitted.
amznLinux := ec2.NewAmazonLinuxImage(&AmazonLinuxImageProps{
	Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX,
	Edition: ec2.AmazonLinuxEdition_STANDARD,
	Virtualization: ec2.AmazonLinuxVirt_HVM,
	Storage: ec2.AmazonLinuxStorage_GENERAL_PURPOSE,
})

// For other custom (Linux) images, instantiate a `GenericLinuxImage` with
// a map giving the AMI to in for each region:

linux := ec2.NewGenericLinuxImage(map[string]*string{
	"us-east-1": jsii.String("ami-97785bed"),
	"eu-west-1": jsii.String("ami-12345678"),
})
const (
	// HVM virtualization (recommended).
	AmazonLinuxVirt_HVM AmazonLinuxVirt = "HVM"
	// PV virtualization.
	AmazonLinuxVirt_PV AmazonLinuxVirt = "PV"
)

type ApplyCloudFormationInitOptions

type ApplyCloudFormationInitOptions struct {
	// ConfigSet to activate.
	// Default: ['default'].
	//
	ConfigSets *[]*string `field:"optional" json:"configSets" yaml:"configSets"`
	// Force instance replacement by embedding a config fingerprint.
	//
	// If `true` (the default), a hash of the config will be embedded into the
	// UserData, so that if the config changes, the UserData changes.
	//
	// - If the EC2 instance is instance-store backed or
	//   `userDataCausesReplacement` is set, this will cause the instance to be
	//   replaced and the new configuration to be applied.
	// - If the instance is EBS-backed and `userDataCausesReplacement` is not
	//   set, the change of UserData will make the instance restart but not be
	//   replaced, and the configuration will not be applied automatically.
	//
	// If `false`, no hash will be embedded, and if the CloudFormation Init
	// config changes nothing will happen to the running instance. If a
	// config update introduces errors, you will not notice until after the
	// CloudFormation deployment successfully finishes and the next instance
	// fails to launch.
	// Default: true.
	//
	EmbedFingerprint *bool `field:"optional" json:"embedFingerprint" yaml:"embedFingerprint"`
	// Don't fail the instance creation when cfn-init fails.
	//
	// You can use this to prevent CloudFormation from rolling back when
	// instances fail to start up, to help in debugging.
	// Default: false.
	//
	IgnoreFailures *bool `field:"optional" json:"ignoreFailures" yaml:"ignoreFailures"`
	// Include --role argument when running cfn-init and cfn-signal commands.
	//
	// This will be the IAM instance profile attached to the EC2 instance.
	// Default: false.
	//
	IncludeRole *bool `field:"optional" json:"includeRole" yaml:"includeRole"`
	// Include --url argument when running cfn-init and cfn-signal commands.
	//
	// This will be the cloudformation endpoint in the deployed region
	// e.g. https://cloudformation.us-east-1.amazonaws.com
	// Default: false.
	//
	IncludeUrl *bool `field:"optional" json:"includeUrl" yaml:"includeUrl"`
	// Print the results of running cfn-init to the Instance System Log.
	//
	// By default, the output of running cfn-init is written to a log file
	// on the instance. Set this to `true` to print it to the System Log
	// (visible from the EC2 Console), `false` to not print it.
	//
	// (Be aware that the system log is refreshed at certain points in
	// time of the instance life cycle, and successful execution may
	// not always show up).
	// Default: true.
	//
	PrintLog *bool `field:"optional" json:"printLog" yaml:"printLog"`
	// Timeout waiting for the configuration to be applied.
	// Default: Duration.minutes(5)
	//
	Timeout awscdk.Duration `field:"optional" json:"timeout" yaml:"timeout"`
}

Options for applying CloudFormation init to an instance or instance group.

Example:

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage

ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,

	// Showing the most complex setup, if you have simpler requirements
	// you can use `CloudFormationInit.fromElements()`.
	Init: ec2.CloudFormationInit_FromConfigSets(&ConfigSetProps{
		ConfigSets: map[string][]*string{
			// Applies the configs below in this order
			"default": []*string{
				jsii.String("yumPreinstall"),
				jsii.String("config"),
			},
		},
		Configs: map[string]InitConfig{
			"yumPreinstall": ec2.NewInitConfig([]InitElement{
				ec2.InitPackage_yum(jsii.String("git")),
			}),
			"config": ec2.NewInitConfig([]InitElement{
				ec2.InitFile_fromObject(jsii.String("/etc/stack.json"), map[string]interface{}{
					"stackId": awscdk.*stack_of(this).stackId,
					"stackName": awscdk.*stack_of(this).stackName,
					"region": awscdk.*stack_of(this).region,
				}),
				ec2.InitGroup_fromName(jsii.String("my-group")),
				ec2.InitUser_fromName(jsii.String("my-user")),
				ec2.InitPackage_rpm(jsii.String("http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/r/rubygem-git-1.5.0-2.el8.noarch.rpm")),
			}),
		},
	}),
	InitOptions: &ApplyCloudFormationInitOptions{
		// Optional, which configsets to activate (['default'] by default)
		ConfigSets: []*string{
			jsii.String("default"),
		},

		// Optional, how long the installation is expected to take (5 minutes by default)
		Timeout: awscdk.Duration_Minutes(jsii.Number(30)),

		// Optional, whether to include the --url argument when running cfn-init and cfn-signal commands (false by default)
		IncludeUrl: jsii.Boolean(true),

		// Optional, whether to include the --role argument when running cfn-init and cfn-signal commands (false by default)
		IncludeRole: jsii.Boolean(true),
	},
})

type AttachInitOptions

type AttachInitOptions struct {
	// Instance role of the consuming instance or fleet.
	InstanceRole awsiam.IRole `field:"required" json:"instanceRole" yaml:"instanceRole"`
	// OS Platform the init config will be used for.
	Platform OperatingSystemType `field:"required" json:"platform" yaml:"platform"`
	// UserData to add commands to.
	UserData UserData `field:"required" json:"userData" yaml:"userData"`
	// ConfigSet to activate.
	// Default: ['default'].
	//
	ConfigSets *[]*string `field:"optional" json:"configSets" yaml:"configSets"`
	// Whether to embed a hash into the userData.
	//
	// If `true` (the default), a hash of the config will be embedded into the
	// UserData, so that if the config changes, the UserData changes and
	// the instance will be replaced.
	//
	// If `false`, no such hash will be embedded, and if the CloudFormation Init
	// config changes nothing will happen to the running instance.
	// Default: true.
	//
	EmbedFingerprint *bool `field:"optional" json:"embedFingerprint" yaml:"embedFingerprint"`
	// Don't fail the instance creation when cfn-init fails.
	//
	// You can use this to prevent CloudFormation from rolling back when
	// instances fail to start up, to help in debugging.
	// Default: false.
	//
	IgnoreFailures *bool `field:"optional" json:"ignoreFailures" yaml:"ignoreFailures"`
	// Include --role argument when running cfn-init and cfn-signal commands.
	//
	// This will be the IAM instance profile attached to the EC2 instance.
	// Default: false.
	//
	IncludeRole *bool `field:"optional" json:"includeRole" yaml:"includeRole"`
	// Include --url argument when running cfn-init and cfn-signal commands.
	//
	// This will be the cloudformation endpoint in the deployed region
	// e.g. https://cloudformation.us-east-1.amazonaws.com
	// Default: false.
	//
	IncludeUrl *bool `field:"optional" json:"includeUrl" yaml:"includeUrl"`
	// Print the results of running cfn-init to the Instance System Log.
	//
	// By default, the output of running cfn-init is written to a log file
	// on the instance. Set this to `true` to print it to the System Log
	// (visible from the EC2 Console), `false` to not print it.
	//
	// (Be aware that the system log is refreshed at certain points in
	// time of the instance life cycle, and successful execution may
	// not always show up).
	// Default: true.
	//
	PrintLog *bool `field:"optional" json:"printLog" yaml:"printLog"`
	// When provided, signals this resource instead of the attached resource.
	//
	// You can use this to support signaling LaunchTemplate while attaching AutoScalingGroup.
	// Default: - if this property is undefined cfn-signal signals the attached resource.
	//
	SignalResource awscdk.CfnResource `field:"optional" json:"signalResource" yaml:"signalResource"`
}

Options for attaching a CloudFormationInit to a resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import cdk "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var cfnResource CfnResource
var role Role
var userData UserData

attachInitOptions := &AttachInitOptions{
	InstanceRole: role,
	Platform: awscdk.Aws_ec2.OperatingSystemType_LINUX,
	UserData: userData,

	// the properties below are optional
	ConfigSets: []*string{
		jsii.String("configSets"),
	},
	EmbedFingerprint: jsii.Boolean(false),
	IgnoreFailures: jsii.Boolean(false),
	IncludeRole: jsii.Boolean(false),
	IncludeUrl: jsii.Boolean(false),
	PrintLog: jsii.Boolean(false),
	SignalResource: cfnResource,
}

type AwsIpamProps added in v2.48.0

type AwsIpamProps struct {
	// Ipam Pool Id for ipv4 allocation.
	Ipv4IpamPoolId *string `field:"required" json:"ipv4IpamPoolId" yaml:"ipv4IpamPoolId"`
	// Netmask length for Vpc.
	Ipv4NetmaskLength *float64 `field:"required" json:"ipv4NetmaskLength" yaml:"ipv4NetmaskLength"`
	// Default length for Subnet ipv4 Network mask.
	//
	// Specify this option only if you do not specify all Subnets using SubnetConfiguration with a cidrMask.
	// Default: - Default ipv4 Subnet Mask for subnets in Vpc.
	//
	DefaultSubnetIpv4NetmaskLength *float64 `field:"optional" json:"defaultSubnetIpv4NetmaskLength" yaml:"defaultSubnetIpv4NetmaskLength"`
}

Configuration for AwsIpam.

Example:

import "github.com/aws/aws-cdk-go/awscdk"

var pool CfnIPAMPool

ec2.NewVpc(this, jsii.String("TheVPC"), &VpcProps{
	IpAddresses: awscdk.IpAddresses_AwsIpamAllocation(&AwsIpamProps{
		Ipv4IpamPoolId: pool.ref,
		Ipv4NetmaskLength: jsii.Number(18),
		DefaultSubnetIpv4NetmaskLength: jsii.Number(24),
	}),
})

type BareMetal added in v2.219.0

type BareMetal string

Bare metal support requirements for EC2 instances.

Controls whether selected instance types must, may, or must not be bare metal variants (i.e., instances that run directly on physical hardware without a hypervisor).

Example:

var vpc Vpc

securityGroup := ec2.NewSecurityGroup(this, jsii.String("SecurityGroup"), &SecurityGroupProps{
	Vpc: Vpc,
	Description: jsii.String("Security group for managed instances"),
})

miCapacityProvider := ecs.NewManagedInstancesCapacityProvider(this, jsii.String("MICapacityProvider"), &ManagedInstancesCapacityProviderProps{
	Subnets: vpc.PrivateSubnets,
	SecurityGroups: []ISecurityGroup{
		securityGroup,
	},
	InstanceRequirements: &InstanceRequirementsConfig{
		// Required: CPU and memory constraints
		VCpuCountMin: jsii.Number(2),
		VCpuCountMax: jsii.Number(8),
		MemoryMin: awscdk.Size_Gibibytes(jsii.Number(4)),
		MemoryMax: awscdk.Size_*Gibibytes(jsii.Number(32)),

		// CPU preferences
		CpuManufacturers: []CpuManufacturer{
			ec2.CpuManufacturer_INTEL,
			ec2.CpuManufacturer_AMD,
		},
		InstanceGenerations: []InstanceGeneration{
			ec2.InstanceGeneration_CURRENT,
		},

		// Instance type filtering
		AllowedInstanceTypes: []*string{
			jsii.String("m5.*"),
			jsii.String("c5.*"),
		},

		// Performance characteristics
		BurstablePerformance: ec2.BurstablePerformance_EXCLUDED,
		BareMetal: ec2.BareMetal_EXCLUDED,

		// Accelerator requirements (for ML/AI workloads)
		AcceleratorTypes: []AcceleratorType{
			ec2.AcceleratorType_GPU,
		},
		AcceleratorManufacturers: []AcceleratorManufacturer{
			ec2.AcceleratorManufacturer_NVIDIA,
		},
		AcceleratorNames: []AcceleratorName{
			ec2.AcceleratorName_T4,
			ec2.AcceleratorName_V100,
		},
		AcceleratorCountMin: jsii.Number(1),

		// Storage requirements
		LocalStorage: ec2.LocalStorage_REQUIRED,
		LocalStorageTypes: []LocalStorageType{
			ec2.LocalStorageType_SSD,
		},
		TotalLocalStorageGBMin: jsii.Number(100),

		// Network requirements
		NetworkInterfaceCountMin: jsii.Number(2),
		NetworkBandwidthGbpsMin: jsii.Number(10),

		// Cost optimization
		OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(10),
	},
})
const (
	// Bare metal instance types are allowed, but non-bare-metal (virtualized) types may also be selected.
	BareMetal_INCLUDED BareMetal = "INCLUDED"
	// Only bare metal instance types are allowed.
	//
	// Non-bare-metal types will be excluded from selection.
	BareMetal_REQUIRED BareMetal = "REQUIRED"
	// Bare metal instance types are disallowed.
	//
	// Only non-bare-metal types may be selected.
	BareMetal_EXCLUDED BareMetal = "EXCLUDED"
)

type BastionHostLinux

type BastionHostLinux interface {
	awscdk.Resource
	IInstance
	// Allows specify security group connections for the instance.
	Connections() Connections
	// The environment this resource belongs to.
	//
	// For resources that are created and managed in a Stack (those created by
	// creating new class instances like `new Role()`, `new Bucket()`, etc.), this
	// is always the same as the environment of the stack they belong to.
	//
	// For referenced resources (those obtained from referencing methods like
	// `Role.fromRoleArn()`, `Bucket.fromBucketName()`, etc.), they might be
	// different than the stack they were imported into.
	Env() *interfaces.ResourceEnvironment
	// The principal to grant permissions to.
	GrantPrincipal() awsiam.IPrincipal
	// The underlying instance resource.
	Instance() Instance
	// The availability zone the instance was launched in.
	InstanceAvailabilityZone() *string
	// The instance's ID.
	InstanceId() *string
	// Private DNS name for this instance.
	InstancePrivateDnsName() *string
	// Private IP for this instance.
	InstancePrivateIp() *string
	// Publicly-routable DNS name for this instance.
	//
	// (May be an empty string if the instance does not have a public name).
	InstancePublicDnsName() *string
	// Publicly-routable IP  address for this instance.
	//
	// (May be an empty string if the instance does not have a public IP).
	InstancePublicIp() *string
	// A reference to a Instance resource.
	InstanceRef() *interfacesawsec2.InstanceReference
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The IAM role assumed by the instance.
	Role() awsiam.IRole
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Allow SSH access from the given peer or peers.
	//
	// Necessary if you want to connect to the instance using ssh. If not
	// called, you should use SSM Session Manager to connect to the instance.
	AllowSshAccessFrom(peer ...IPeer)
	// Override the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// mechanism instead of the global default determined by the
	// `@aws-cdk/core:defaultCrossStackReferences` context key. This is useful for
	// selectively weakening specific references to avoid the "deadly embrace" problem
	// without changing the app-wide default.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Returns a string representation of this construct.
	ToString() *string
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

This creates a linux bastion host you can use to connect to other instances or services in your VPC.

The recommended way to connect to the bastion host is by using AWS Systems Manager Session Manager.

The operating system is Amazon Linux 2 with the latest SSM agent installed

You can also configure this bastion host to allow connections via SSH.

Example:

host := ec2.NewBastionHostLinux(this, jsii.String("BastionHost"), &BastionHostLinuxProps{
	Vpc: Vpc,
	BlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/sdh"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(10), &EbsDeviceOptions{
				Encrypted: jsii.Boolean(true),
			}),
		},
	},
})

func NewBastionHostLinux

func NewBastionHostLinux(scope constructs.Construct, id *string, props *BastionHostLinuxProps) BastionHostLinux

type BastionHostLinuxProps

type BastionHostLinuxProps struct {
	// VPC to launch the instance in.
	Vpc IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// In which AZ to place the instance within the VPC.
	// Default: - Random zone.
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// Specifies how block devices are exposed to the instance. You can specify virtual devices and EBS volumes.
	//
	// Each instance that is launched has an associated root device volume,
	// either an Amazon EBS volume or an instance store volume.
	// You can use block device mappings to specify additional EBS volumes or
	// instance store volumes to attach to an instance when it is launched.
	// See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html
	//
	// Default: - Uses the block device mapping of the AMI.
	//
	BlockDevices *[]*BlockDevice `field:"optional" json:"blockDevices" yaml:"blockDevices"`
	// Apply the given CloudFormation Init configuration to the instance at startup.
	// Default: - no CloudFormation init.
	//
	Init CloudFormationInit `field:"optional" json:"init" yaml:"init"`
	// Use the given options for applying CloudFormation Init.
	//
	// Describes the configsets to use and the timeout to wait.
	// Default: - default options.
	//
	InitOptions *ApplyCloudFormationInitOptions `field:"optional" json:"initOptions" yaml:"initOptions"`
	// The name of the instance.
	// Default: 'BastionHost'.
	//
	InstanceName *string `field:"optional" json:"instanceName" yaml:"instanceName"`
	// Type of instance to launch.
	// Default: 't3.nano'
	//
	InstanceType InstanceType `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The machine image to use, assumed to have SSM Agent preinstalled.
	// Default: - An Amazon Linux 2023 image if the `@aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault` feature flag is enabled. Otherwise, an Amazon Linux 2 image. In both cases, the image is kept up-to-date automatically (the instance
	// may be replaced on every deployment) and already has SSM Agent installed.
	//
	MachineImage IMachineImage `field:"optional" json:"machineImage" yaml:"machineImage"`
	// Whether IMDSv2 should be required on this instance.
	// Default: - false.
	//
	RequireImdsv2 *bool `field:"optional" json:"requireImdsv2" yaml:"requireImdsv2"`
	// Security Group to assign to this instance.
	// Default: - create new security group with no inbound and all outbound traffic allowed.
	//
	SecurityGroup ISecurityGroup `field:"optional" json:"securityGroup" yaml:"securityGroup"`
	// Select the subnets to run the bastion host in.
	//
	// Set this to PUBLIC if you need to connect to this instance via the internet and cannot use SSM.
	// You have to allow port 22 manually by using the connections field.
	// Default: - private subnets of the supplied VPC.
	//
	SubnetSelection *SubnetSelection `field:"optional" json:"subnetSelection" yaml:"subnetSelection"`
	// Determines whether changes to the UserData will force instance replacement.
	//
	// Depending on the EC2 instance type, modifying the UserData may either restart
	// or replace the instance:
	//
	// - Instance store-backed instances are replaced.
	// - EBS-backed instances are restarted.
	//
	// Note that by default, restarting does not execute the updated UserData, so an alternative
	// mechanism is needed to ensure the instance re-executes the UserData.
	//
	// When set to `true`, the instance's Logical ID will depend on the UserData, causing
	// CloudFormation to replace the instance if the UserData changes.
	// Default: - `true` if `initOptions` is specified, otherwise `false`.
	//
	UserDataCausesReplacement *bool `field:"optional" json:"userDataCausesReplacement" yaml:"userDataCausesReplacement"`
}

Properties of the bastion host.

Example:

host := ec2.NewBastionHostLinux(this, jsii.String("BastionHost"), &BastionHostLinuxProps{
	Vpc: Vpc,
	BlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/sdh"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(10), &EbsDeviceOptions{
				Encrypted: jsii.Boolean(true),
			}),
		},
	},
})

type BlockDevice

type BlockDevice struct {
	// The device name exposed to the EC2 instance.
	//
	// For example, a value like `/dev/sdh`, `xvdh`.
	// See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html
	//
	DeviceName *string `field:"required" json:"deviceName" yaml:"deviceName"`
	// Defines the block device volume, to be either an Amazon EBS volume or an ephemeral instance store volume.
	//
	// For example, a value like `BlockDeviceVolume.ebs(15)`, `BlockDeviceVolume.ephemeral(0)`.
	Volume BlockDeviceVolume `field:"required" json:"volume" yaml:"volume"`
	// If false, the device mapping will be suppressed.
	//
	// If set to false for the root device, the instance might fail the Amazon EC2 health check.
	// Amazon EC2 Auto Scaling launches a replacement instance if the instance fails the health check.
	// Default: true - device mapping is left untouched.
	//
	MappingEnabled *bool `field:"optional" json:"mappingEnabled" yaml:"mappingEnabled"`
}

Block device.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var blockDeviceVolume BlockDeviceVolume

blockDevice := &BlockDevice{
	DeviceName: jsii.String("deviceName"),
	Volume: blockDeviceVolume,

	// the properties below are optional
	MappingEnabled: jsii.Boolean(false),
}

type BlockDeviceVolume

type BlockDeviceVolume interface {
	// EBS device info.
	EbsDevice() *EbsDeviceProps
	// Virtual device name.
	VirtualName() *string
}

Describes a block device mapping for an EC2 instance or Auto Scaling group.

Example:

var vpc Vpc
var instanceType InstanceType
var machineImage IMachineImage

ec2.NewInstance(this, jsii.String("Instance"), &InstanceProps{
	Vpc: Vpc,
	InstanceType: InstanceType,
	MachineImage: MachineImage,

	// ...

	BlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/sda1"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(50)),
		},
		&BlockDevice{
			DeviceName: jsii.String("/dev/sdm"),
			Volume: ec2.BlockDeviceVolume_*Ebs(jsii.Number(100)),
		},
	},
})

func BlockDeviceVolume_Ebs

func BlockDeviceVolume_Ebs(volumeSize *float64, options *EbsDeviceOptions) BlockDeviceVolume

Creates a new Elastic Block Storage device.

func BlockDeviceVolume_EbsFromSnapshot

func BlockDeviceVolume_EbsFromSnapshot(snapshotId *string, options *EbsDeviceSnapshotOptions) BlockDeviceVolume

Creates a new Elastic Block Storage device from an existing snapshot.

func BlockDeviceVolume_Ephemeral

func BlockDeviceVolume_Ephemeral(volumeIndex *float64) BlockDeviceVolume

Creates a virtual, ephemeral device.

The name will be in the form ephemeral{volumeIndex}.

func NewBlockDeviceVolume

func NewBlockDeviceVolume(ebsDevice *EbsDeviceProps, virtualName *string) BlockDeviceVolume

type BurstablePerformance added in v2.219.0

type BurstablePerformance string

Burstable CPU performance requirements for EC2 instances.

Controls whether selected instance types must, may, or must not support burstable vCPU performance (e.g., T3, T4g families).

Example:

var vpc Vpc

securityGroup := ec2.NewSecurityGroup(this, jsii.String("SecurityGroup"), &SecurityGroupProps{
	Vpc: Vpc,
	Description: jsii.String("Security group for managed instances"),
})

miCapacityProvider := ecs.NewManagedInstancesCapacityProvider(this, jsii.String("MICapacityProvider"), &ManagedInstancesCapacityProviderProps{
	Subnets: vpc.PrivateSubnets,
	SecurityGroups: []ISecurityGroup{
		securityGroup,
	},
	InstanceRequirements: &InstanceRequirementsConfig{
		// Required: CPU and memory constraints
		VCpuCountMin: jsii.Number(2),
		VCpuCountMax: jsii.Number(8),
		MemoryMin: awscdk.Size_Gibibytes(jsii.Number(4)),
		MemoryMax: awscdk.Size_*Gibibytes(jsii.Number(32)),

		// CPU preferences
		CpuManufacturers: []CpuManufacturer{
			ec2.CpuManufacturer_INTEL,
			ec2.CpuManufacturer_AMD,
		},
		InstanceGenerations: []InstanceGeneration{
			ec2.InstanceGeneration_CURRENT,
		},

		// Instance type filtering
		AllowedInstanceTypes: []*string{
			jsii.String("m5.*"),
			jsii.String("c5.*"),
		},

		// Performance characteristics
		BurstablePerformance: ec2.BurstablePerformance_EXCLUDED,
		BareMetal: ec2.BareMetal_EXCLUDED,

		// Accelerator requirements (for ML/AI workloads)
		AcceleratorTypes: []AcceleratorType{
			ec2.AcceleratorType_GPU,
		},
		AcceleratorManufacturers: []AcceleratorManufacturer{
			ec2.AcceleratorManufacturer_NVIDIA,
		},
		AcceleratorNames: []AcceleratorName{
			ec2.AcceleratorName_T4,
			ec2.AcceleratorName_V100,
		},
		AcceleratorCountMin: jsii.Number(1),

		// Storage requirements
		LocalStorage: ec2.LocalStorage_REQUIRED,
		LocalStorageTypes: []LocalStorageType{
			ec2.LocalStorageType_SSD,
		},
		TotalLocalStorageGBMin: jsii.Number(100),

		// Network requirements
		NetworkInterfaceCountMin: jsii.Number(2),
		NetworkBandwidthGbpsMin: jsii.Number(10),

		// Cost optimization
		OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(10),
	},
})
const (
	// Burstable-performance instance types are allowed, but non-burstable types may also be selected.
	BurstablePerformance_INCLUDED BurstablePerformance = "INCLUDED"
	// Only burstable-performance instance types are allowed.
	//
	// Non-burstable types will be excluded from selection.
	BurstablePerformance_REQUIRED BurstablePerformance = "REQUIRED"
	// Burstable-performance instance types are disallowed.
	//
	// Only non-burstable types may be selected.
	BurstablePerformance_EXCLUDED BurstablePerformance = "EXCLUDED"
)

type CfnCapacityManagerDataExport added in v2.223.0

type CfnCapacityManagerDataExport interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ICapacityManagerDataExportRef
	awscdk.ITaggableV2
	// The unique identifier for the data export configuration.
	AttrCapacityManagerDataExportId() *string
	// A reference to a CapacityManagerDataExport resource.
	CapacityManagerDataExportRef() *interfacesawsec2.CapacityManagerDataExportReference
	// Tag Manager which manages the tags for this resource.
	CdkTagManager() awscdk.TagManager
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// The file format of the exported data.
	OutputFormat() *string
	SetOutputFormat(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The name of the S3 bucket where export files are delivered.
	S3BucketName() *string
	SetS3BucketName(val *string)
	// The S3 key prefix used for organizing export files within the bucket.
	S3BucketPrefix() *string
	SetS3BucketPrefix(val *string)
	// The frequency at which data exports are generated.
	Schedule() *string
	SetSchedule(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The tags associated with the data export configuration.
	Tags() *[]*awscdk.CfnTag
	SetTags(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Creates a new data export configuration for EC2 Capacity Manager.

This allows you to automatically export capacity usage data to an S3 bucket on a scheduled basis. The exported data includes metrics for On-Demand, Spot, and Capacity Reservations usage across your organization.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCapacityManagerDataExport := awscdk.Aws_ec2.NewCfnCapacityManagerDataExport(this, jsii.String("MyCfnCapacityManagerDataExport"), &CfnCapacityManagerDataExportProps{
	OutputFormat: jsii.String("outputFormat"),
	S3BucketName: jsii.String("s3BucketName"),
	Schedule: jsii.String("schedule"),

	// the properties below are optional
	S3BucketPrefix: jsii.String("s3BucketPrefix"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacitymanagerdataexport.html

func NewCfnCapacityManagerDataExport added in v2.223.0

func NewCfnCapacityManagerDataExport(scope constructs.Construct, id *string, props *CfnCapacityManagerDataExportProps) CfnCapacityManagerDataExport

Create a new `AWS::EC2::CapacityManagerDataExport`.

type CfnCapacityManagerDataExportProps added in v2.223.0

type CfnCapacityManagerDataExportProps struct {
	// The file format of the exported data.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacitymanagerdataexport.html#cfn-ec2-capacitymanagerdataexport-outputformat
	//
	OutputFormat *string `field:"required" json:"outputFormat" yaml:"outputFormat"`
	// The name of the S3 bucket where export files are delivered.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacitymanagerdataexport.html#cfn-ec2-capacitymanagerdataexport-s3bucketname
	//
	S3BucketName *string `field:"required" json:"s3BucketName" yaml:"s3BucketName"`
	// The frequency at which data exports are generated.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacitymanagerdataexport.html#cfn-ec2-capacitymanagerdataexport-schedule
	//
	Schedule *string `field:"required" json:"schedule" yaml:"schedule"`
	// The S3 key prefix used for organizing export files within the bucket.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacitymanagerdataexport.html#cfn-ec2-capacitymanagerdataexport-s3bucketprefix
	//
	S3BucketPrefix *string `field:"optional" json:"s3BucketPrefix" yaml:"s3BucketPrefix"`
	// The tags associated with the data export configuration.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacitymanagerdataexport.html#cfn-ec2-capacitymanagerdataexport-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnCapacityManagerDataExport`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCapacityManagerDataExportProps := &CfnCapacityManagerDataExportProps{
	OutputFormat: jsii.String("outputFormat"),
	S3BucketName: jsii.String("s3BucketName"),
	Schedule: jsii.String("schedule"),

	// the properties below are optional
	S3BucketPrefix: jsii.String("s3BucketPrefix"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacitymanagerdataexport.html

type CfnCapacityReservation

type CfnCapacityReservation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ICapacityReservationRef
	// Returns the Availability Zone in which the capacity is reserved.
	//
	// For example: `us-east-1a` .
	AttrAvailabilityZone() *string
	// Returns the remaining capacity, which indicates the number of instances that can be launched in the Capacity Reservation.
	//
	// For example: `9` .
	AttrAvailableInstanceCount() *float64
	AttrCapacityAllocationSet() awscdk.IResolvable
	// The Amazon Resource Name (ARN) of the Capacity Reservation.
	AttrCapacityReservationArn() *string
	// The ID of the Capacity Reservation Fleet to which the Capacity Reservation belongs.
	//
	// Only valid for Capacity Reservations that were created by a Capacity Reservation Fleet.
	AttrCapacityReservationFleetId() *string
	AttrCommitmentInfo() awscdk.IResolvable
	// The date and time the Capacity Reservation was created.
	AttrCreateDate() *string
	// The delivery method for a future-dated Capacity Reservation.
	//
	// `incremental` indicates that the requested capacity is delivered in addition to any running instances and reserved capacity that you have in your account at the requested date and time.
	AttrDeliveryPreference() *string
	// The ID of the Capacity Reservation.
	AttrId() *string
	// Returns the type of instance for which the capacity is reserved.
	//
	// For example: `m4.large` .
	AttrInstanceType() *string
	// The ID of the AWS account that owns the Capacity Reservation.
	AttrOwnerId() *string
	// The type of Capacity Reservation.
	AttrReservationType() *string
	// The date and time the Capacity Reservation was started.
	AttrStartDate() *string
	// The current state of the Capacity Reservation. A Capacity Reservation can be in one of the following states:.
	//
	// - `active` - The capacity is available for use.
	// - `expired` - The Capacity Reservation expired automatically at the date and time specified in your reservation request. The reserved capacity is no longer available for your use.
	// - `cancelled` - The Capacity Reservation was canceled. The reserved capacity is no longer available for your use.
	// - `pending` - The Capacity Reservation request was successful but the capacity provisioning is still pending.
	// - `failed` - The Capacity Reservation request has failed. A request can fail due to request parameters that are not valid, capacity constraints, or instance limit constraints. You can view a failed request for 60 minutes.
	// - `scheduled` - ( *Future-dated Capacity Reservations* ) The future-dated Capacity Reservation request was approved and the Capacity Reservation is scheduled for delivery on the requested start date.
	// - `payment-pending` - ( *Capacity Blocks* ) The upfront payment has not been processed yet.
	// - `payment-failed` - ( *Capacity Blocks* ) The upfront payment was not processed in the 12-hour time frame. Your Capacity Block was released.
	// - `assessing` - ( *Future-dated Capacity Reservations* ) Amazon EC2 is assessing your request for a future-dated Capacity Reservation.
	// - `delayed` - ( *Future-dated Capacity Reservations* ) Amazon EC2 encountered a delay in provisioning the requested future-dated Capacity Reservation. Amazon EC2 is unable to deliver the requested capacity by the requested start date and time.
	// - `unsupported` - ( *Future-dated Capacity Reservations* ) Amazon EC2 can't support the future-dated Capacity Reservation request due to capacity constraints. You can view unsupported requests for 30 days. The Capacity Reservation will not be delivered.
	AttrState() *string
	// Returns the tenancy of the Capacity Reservation.
	//
	// For example: `dedicated` .
	AttrTenancy() *string
	// Returns the total number of instances for which the Capacity Reservation reserves capacity.
	//
	// For example: `15` .
	AttrTotalInstanceCount() *float64
	// The Availability Zone in which to create the Capacity Reservation.
	AvailabilityZone() *string
	SetAvailabilityZone(val *string)
	// The ID of the Availability Zone in which the capacity is reserved.
	AvailabilityZoneId() *string
	SetAvailabilityZoneId(val *string)
	// A reference to a CapacityReservation resource.
	CapacityReservationRef() *interfacesawsec2.CapacityReservationReference
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// Indicates whether the Capacity Reservation supports EBS-optimized instances.
	EbsOptimized() interface{}
	SetEbsOptimized(val interface{})
	// The date and time at which the Capacity Reservation expires.
	EndDate() *string
	SetEndDate(val *string)
	// Indicates the way in which the Capacity Reservation ends.
	EndDateType() *string
	SetEndDateType(val *string)
	Env() *interfaces.ResourceEnvironment
	// *Deprecated.*.
	EphemeralStorage() interface{}
	SetEphemeralStorage(val interface{})
	// The number of instances for which to reserve capacity.
	InstanceCount() *float64
	SetInstanceCount(val *float64)
	// Indicates the type of instance launches that the Capacity Reservation accepts.
	//
	// The options include:.
	InstanceMatchCriteria() *string
	SetInstanceMatchCriteria(val *string)
	// The type of operating system for which to reserve capacity.
	InstancePlatform() *string
	SetInstancePlatform(val *string)
	// The instance type for which to reserve capacity.
	InstanceType() *string
	SetInstanceType(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// > Not supported for future-dated Capacity Reservations.
	OutPostArn() *string
	SetOutPostArn(val *string)
	// > Not supported for future-dated Capacity Reservations.
	PlacementGroupArn() *string
	SetPlacementGroupArn(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The tags to apply to the Capacity Reservation during launch.
	TagSpecifications() interface{}
	SetTagSpecifications(val interface{})
	// Indicates the tenancy of the Capacity Reservation.
	//
	// A Capacity Reservation can have one of the following tenancy settings:.
	Tenancy() *string
	SetTenancy(val *string)
	// The ID of the AWS account to which to assign billing of the unused capacity of the Capacity Reservation.
	UnusedReservationBillingOwnerId() *string
	SetUnusedReservationBillingOwnerId(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Creates a new Capacity Reservation with the specified attributes.

For more information, see [Capacity Reservations](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCapacityReservation := awscdk.Aws_ec2.NewCfnCapacityReservation(this, jsii.String("MyCfnCapacityReservation"), &CfnCapacityReservationProps{
	InstanceCount: jsii.Number(123),
	InstancePlatform: jsii.String("instancePlatform"),
	InstanceType: jsii.String("instanceType"),

	// the properties below are optional
	AvailabilityZone: jsii.String("availabilityZone"),
	AvailabilityZoneId: jsii.String("availabilityZoneId"),
	EbsOptimized: jsii.Boolean(false),
	EndDate: jsii.String("endDate"),
	EndDateType: jsii.String("endDateType"),
	EphemeralStorage: jsii.Boolean(false),
	InstanceMatchCriteria: jsii.String("instanceMatchCriteria"),
	OutPostArn: jsii.String("outPostArn"),
	PlacementGroupArn: jsii.String("placementGroupArn"),
	TagSpecifications: []interface{}{
		&TagSpecificationProperty{
			ResourceType: jsii.String("resourceType"),
			Tags: []CfnTag{
				&CfnTag{
					Key: jsii.String("key"),
					Value: jsii.String("value"),
				},
			},
		},
	},
	Tenancy: jsii.String("tenancy"),
	UnusedReservationBillingOwnerId: jsii.String("unusedReservationBillingOwnerId"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html

func NewCfnCapacityReservation

func NewCfnCapacityReservation(scope constructs.Construct, id *string, props *CfnCapacityReservationProps) CfnCapacityReservation

Create a new `AWS::EC2::CapacityReservation`.

type CfnCapacityReservationFleet

type CfnCapacityReservationFleet interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ICapacityReservationFleetRef
	// The strategy used by the Capacity Reservation Fleet to determine which of the specified instance types to use.
	AllocationStrategy() *string
	SetAllocationStrategy(val *string)
	// The ID of the Capacity Reservation Fleet.
	AttrCapacityReservationFleetId() *string
	// A reference to a CapacityReservationFleet resource.
	CapacityReservationFleetRef() *interfacesawsec2.CapacityReservationFleetReference
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The date and time at which the Capacity Reservation Fleet expires.
	EndDate() *string
	SetEndDate(val *string)
	Env() *interfaces.ResourceEnvironment
	// Indicates the type of instance launches that the Capacity Reservation Fleet accepts.
	InstanceMatchCriteria() *string
	SetInstanceMatchCriteria(val *string)
	// Information about the instance types for which to reserve the capacity.
	InstanceTypeSpecifications() interface{}
	SetInstanceTypeSpecifications(val interface{})
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Used to add an end date to a Capacity Reservation Fleet that has no end date and time.
	NoRemoveEndDate() interface{}
	SetNoRemoveEndDate(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// Used to remove an end date from a Capacity Reservation Fleet that is configured to end automatically at a specific date and time.
	RemoveEndDate() interface{}
	SetRemoveEndDate(val interface{})
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The tags to assign to the Capacity Reservation Fleet.
	TagSpecifications() interface{}
	SetTagSpecifications(val interface{})
	// Indicates the tenancy of the Capacity Reservation Fleet.
	Tenancy() *string
	SetTenancy(val *string)
	// The total number of capacity units to be reserved by the Capacity Reservation Fleet.
	TotalTargetCapacity() *float64
	SetTotalTargetCapacity(val *float64)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Creates a new Capacity Reservation Fleet with the specified attributes.

For more information, see [Capacity Reservation Fleets](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cr-fleets.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCapacityReservationFleet := awscdk.Aws_ec2.NewCfnCapacityReservationFleet(this, jsii.String("MyCfnCapacityReservationFleet"), &CfnCapacityReservationFleetProps{
	AllocationStrategy: jsii.String("allocationStrategy"),
	EndDate: jsii.String("endDate"),
	InstanceMatchCriteria: jsii.String("instanceMatchCriteria"),
	InstanceTypeSpecifications: []interface{}{
		&InstanceTypeSpecificationProperty{
			AvailabilityZone: jsii.String("availabilityZone"),
			AvailabilityZoneId: jsii.String("availabilityZoneId"),
			EbsOptimized: jsii.Boolean(false),
			InstancePlatform: jsii.String("instancePlatform"),
			InstanceType: jsii.String("instanceType"),
			Priority: jsii.Number(123),
			Weight: jsii.Number(123),
		},
	},
	NoRemoveEndDate: jsii.Boolean(false),
	RemoveEndDate: jsii.Boolean(false),
	TagSpecifications: []interface{}{
		&TagSpecificationProperty{
			ResourceType: jsii.String("resourceType"),
			Tags: []CfnTag{
				&CfnTag{
					Key: jsii.String("key"),
					Value: jsii.String("value"),
				},
			},
		},
	},
	Tenancy: jsii.String("tenancy"),
	TotalTargetCapacity: jsii.Number(123),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html

func NewCfnCapacityReservationFleet

func NewCfnCapacityReservationFleet(scope constructs.Construct, id *string, props *CfnCapacityReservationFleetProps) CfnCapacityReservationFleet

Create a new `AWS::EC2::CapacityReservationFleet`.

type CfnCapacityReservationFleetProps

type CfnCapacityReservationFleetProps struct {
	// The strategy used by the Capacity Reservation Fleet to determine which of the specified instance types to use.
	//
	// Currently, only the `prioritized` allocation strategy is supported. For more information, see [Allocation strategy](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/crfleet-concepts.html#allocation-strategy) in the *Amazon EC2 User Guide* .
	//
	// Valid values: `prioritized`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html#cfn-ec2-capacityreservationfleet-allocationstrategy
	//
	AllocationStrategy *string `field:"optional" json:"allocationStrategy" yaml:"allocationStrategy"`
	// The date and time at which the Capacity Reservation Fleet expires.
	//
	// When the Capacity Reservation Fleet expires, its state changes to `expired` and all of the Capacity Reservations in the Fleet expire.
	//
	// The Capacity Reservation Fleet expires within an hour after the specified time. For example, if you specify `5/31/2019` , `13:30:55` , the Capacity Reservation Fleet is guaranteed to expire between `13:30:55` and `14:30:55` on `5/31/2019` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html#cfn-ec2-capacityreservationfleet-enddate
	//
	EndDate *string `field:"optional" json:"endDate" yaml:"endDate"`
	// Indicates the type of instance launches that the Capacity Reservation Fleet accepts.
	//
	// All Capacity Reservations in the Fleet inherit this instance matching criteria.
	//
	// Currently, Capacity Reservation Fleets support `open` instance matching criteria only. This means that instances that have matching attributes (instance type, platform, and Availability Zone) run in the Capacity Reservations automatically. Instances do not need to explicitly target a Capacity Reservation Fleet to use its reserved capacity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html#cfn-ec2-capacityreservationfleet-instancematchcriteria
	//
	InstanceMatchCriteria *string `field:"optional" json:"instanceMatchCriteria" yaml:"instanceMatchCriteria"`
	// Information about the instance types for which to reserve the capacity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html#cfn-ec2-capacityreservationfleet-instancetypespecifications
	//
	InstanceTypeSpecifications interface{} `field:"optional" json:"instanceTypeSpecifications" yaml:"instanceTypeSpecifications"`
	// Used to add an end date to a Capacity Reservation Fleet that has no end date and time.
	//
	// To add an end date to a Capacity Reservation Fleet, specify `true` for this paramater and specify the end date and time (in UTC time format) for the *EndDate* parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html#cfn-ec2-capacityreservationfleet-noremoveenddate
	//
	NoRemoveEndDate interface{} `field:"optional" json:"noRemoveEndDate" yaml:"noRemoveEndDate"`
	// Used to remove an end date from a Capacity Reservation Fleet that is configured to end automatically at a specific date and time.
	//
	// To remove the end date from a Capacity Reservation Fleet, specify `true` for this paramater and omit the *EndDate* parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html#cfn-ec2-capacityreservationfleet-removeenddate
	//
	RemoveEndDate interface{} `field:"optional" json:"removeEndDate" yaml:"removeEndDate"`
	// The tags to assign to the Capacity Reservation Fleet.
	//
	// The tags are automatically assigned to the Capacity Reservations in the Fleet.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html#cfn-ec2-capacityreservationfleet-tagspecifications
	//
	TagSpecifications interface{} `field:"optional" json:"tagSpecifications" yaml:"tagSpecifications"`
	// Indicates the tenancy of the Capacity Reservation Fleet.
	//
	// All Capacity Reservations in the Fleet inherit this tenancy. The Capacity Reservation Fleet can have one of the following tenancy settings:
	//
	// - `default` - The Capacity Reservation Fleet is created on hardware that is shared with other AWS accounts .
	// - `dedicated` - The Capacity Reservations are created on single-tenant hardware that is dedicated to a single AWS account .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html#cfn-ec2-capacityreservationfleet-tenancy
	//
	Tenancy *string `field:"optional" json:"tenancy" yaml:"tenancy"`
	// The total number of capacity units to be reserved by the Capacity Reservation Fleet.
	//
	// This value, together with the instance type weights that you assign to each instance type used by the Fleet determine the number of instances for which the Fleet reserves capacity. Both values are based on units that make sense for your workload. For more information, see [Total target capacity](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/crfleet-concepts.html#target-capacity) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html#cfn-ec2-capacityreservationfleet-totaltargetcapacity
	//
	TotalTargetCapacity *float64 `field:"optional" json:"totalTargetCapacity" yaml:"totalTargetCapacity"`
}

Properties for defining a `CfnCapacityReservationFleet`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCapacityReservationFleetProps := &CfnCapacityReservationFleetProps{
	AllocationStrategy: jsii.String("allocationStrategy"),
	EndDate: jsii.String("endDate"),
	InstanceMatchCriteria: jsii.String("instanceMatchCriteria"),
	InstanceTypeSpecifications: []interface{}{
		&InstanceTypeSpecificationProperty{
			AvailabilityZone: jsii.String("availabilityZone"),
			AvailabilityZoneId: jsii.String("availabilityZoneId"),
			EbsOptimized: jsii.Boolean(false),
			InstancePlatform: jsii.String("instancePlatform"),
			InstanceType: jsii.String("instanceType"),
			Priority: jsii.Number(123),
			Weight: jsii.Number(123),
		},
	},
	NoRemoveEndDate: jsii.Boolean(false),
	RemoveEndDate: jsii.Boolean(false),
	TagSpecifications: []interface{}{
		&TagSpecificationProperty{
			ResourceType: jsii.String("resourceType"),
			Tags: []CfnTag{
				&CfnTag{
					Key: jsii.String("key"),
					Value: jsii.String("value"),
				},
			},
		},
	},
	Tenancy: jsii.String("tenancy"),
	TotalTargetCapacity: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html

type CfnCapacityReservationFleet_InstanceTypeSpecificationProperty

type CfnCapacityReservationFleet_InstanceTypeSpecificationProperty struct {
	// The Availability Zone in which the Capacity Reservation Fleet reserves the capacity.
	//
	// A Capacity Reservation Fleet can't span Availability Zones. All instance type specifications that you specify for the Fleet must use the same Availability Zone.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-instancetypespecification.html#cfn-ec2-capacityreservationfleet-instancetypespecification-availabilityzone
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The ID of the Availability Zone in which the Capacity Reservation Fleet reserves the capacity.
	//
	// A Capacity Reservation Fleet can't span Availability Zones. All instance type specifications that you specify for the Fleet must use the same Availability Zone.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-instancetypespecification.html#cfn-ec2-capacityreservationfleet-instancetypespecification-availabilityzoneid
	//
	AvailabilityZoneId *string `field:"optional" json:"availabilityZoneId" yaml:"availabilityZoneId"`
	// Indicates whether the Capacity Reservation Fleet supports EBS-optimized instances types.
	//
	// This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using EBS-optimized instance types.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-instancetypespecification.html#cfn-ec2-capacityreservationfleet-instancetypespecification-ebsoptimized
	//
	EbsOptimized interface{} `field:"optional" json:"ebsOptimized" yaml:"ebsOptimized"`
	// The type of operating system for which the Capacity Reservation Fleet reserves capacity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-instancetypespecification.html#cfn-ec2-capacityreservationfleet-instancetypespecification-instanceplatform
	//
	InstancePlatform *string `field:"optional" json:"instancePlatform" yaml:"instancePlatform"`
	// The instance type for which the Capacity Reservation Fleet reserves capacity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-instancetypespecification.html#cfn-ec2-capacityreservationfleet-instancetypespecification-instancetype
	//
	InstanceType *string `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The priority to assign to the instance type.
	//
	// This value is used to determine which of the instance types specified for the Fleet should be prioritized for use. A lower value indicates a high priority. For more information, see [Instance type priority](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/crfleet-concepts.html#instance-priority) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-instancetypespecification.html#cfn-ec2-capacityreservationfleet-instancetypespecification-priority
	//
	Priority *float64 `field:"optional" json:"priority" yaml:"priority"`
	// The number of capacity units provided by the specified instance type.
	//
	// This value, together with the total target capacity that you specify for the Fleet determine the number of instances for which the Fleet reserves capacity. Both values are based on units that make sense for your workload. For more information, see [Total target capacity](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/crfleet-concepts.html#target-capacity) in the Amazon EC2 User Guide.
	//
	// Valid Range: Minimum value of `0.001` . Maximum value of `99.999` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-instancetypespecification.html#cfn-ec2-capacityreservationfleet-instancetypespecification-weight
	//
	Weight *float64 `field:"optional" json:"weight" yaml:"weight"`
}

Specifies information about an instance type to use in a Capacity Reservation Fleet.

`InstanceTypeSpecification` is a property of the [AWS::EC2::CapacityReservationFleet](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservationfleet.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

instanceTypeSpecificationProperty := &InstanceTypeSpecificationProperty{
	AvailabilityZone: jsii.String("availabilityZone"),
	AvailabilityZoneId: jsii.String("availabilityZoneId"),
	EbsOptimized: jsii.Boolean(false),
	InstancePlatform: jsii.String("instancePlatform"),
	InstanceType: jsii.String("instanceType"),
	Priority: jsii.Number(123),
	Weight: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-instancetypespecification.html

type CfnCapacityReservationFleet_TagSpecificationProperty

type CfnCapacityReservationFleet_TagSpecificationProperty struct {
	// The type of resource to tag on creation. Specify `capacity-reservation-fleet` .
	//
	// To tag a resource after it has been created, see [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-tagspecification.html#cfn-ec2-capacityreservationfleet-tagspecification-resourcetype
	//
	ResourceType *string `field:"optional" json:"resourceType" yaml:"resourceType"`
	// The tags to apply to the resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-tagspecification.html#cfn-ec2-capacityreservationfleet-tagspecification-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

The tags to apply to a resource when the resource is being created.

When you specify a tag, you must specify the resource type to tag, otherwise the request will fail.

> The `Valid Values` lists all the resource types that can be tagged. However, the action you're using might not support tagging all of these resource types. If you try to tag a resource type that is unsupported for the action you're using, you'll get an error.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

tagSpecificationProperty := &TagSpecificationProperty{
	ResourceType: jsii.String("resourceType"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservationfleet-tagspecification.html

type CfnCapacityReservationProps

type CfnCapacityReservationProps struct {
	// The number of instances for which to reserve capacity.
	//
	// > You can request future-dated Capacity Reservations for an instance count with a minimum of 32 vCPUs. For example, if you request a future-dated Capacity Reservation for `m5.xlarge` instances, you must request at least 8 instances ( *8 * m5.xlarge = 32 vCPUs* ).
	//
	// Valid range: 1 - 1000.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-instancecount
	//
	InstanceCount *float64 `field:"required" json:"instanceCount" yaml:"instanceCount"`
	// The type of operating system for which to reserve capacity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-instanceplatform
	//
	InstancePlatform *string `field:"required" json:"instancePlatform" yaml:"instancePlatform"`
	// The instance type for which to reserve capacity.
	//
	// > You can request future-dated Capacity Reservations for instance types in the C, M, R, I, T, and G instance families only.
	//
	// For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-instancetype
	//
	InstanceType *string `field:"required" json:"instanceType" yaml:"instanceType"`
	// The Availability Zone in which to create the Capacity Reservation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-availabilityzone
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The ID of the Availability Zone in which the capacity is reserved.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-availabilityzoneid
	//
	AvailabilityZoneId *string `field:"optional" json:"availabilityZoneId" yaml:"availabilityZoneId"`
	// Indicates whether the Capacity Reservation supports EBS-optimized instances.
	//
	// This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS- optimized instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-ebsoptimized
	//
	EbsOptimized interface{} `field:"optional" json:"ebsOptimized" yaml:"ebsOptimized"`
	// The date and time at which the Capacity Reservation expires.
	//
	// When a Capacity Reservation expires, the reserved capacity is released and you can no longer launch instances into it. The Capacity Reservation's state changes to `expired` when it reaches its end date and time.
	//
	// You must provide an `EndDate` value if `EndDateType` is `limited` . Omit `EndDate` if `EndDateType` is `unlimited` .
	//
	// If the `EndDateType` is `limited` , the Capacity Reservation is cancelled within an hour from the specified time. For example, if you specify 5/31/2019, 13:30:55, the Capacity Reservation is guaranteed to end between 13:30:55 and 14:30:55 on 5/31/2019.
	//
	// If you are requesting a future-dated Capacity Reservation, you can't specify an end date and time that is within the commitment duration.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-enddate
	//
	EndDate *string `field:"optional" json:"endDate" yaml:"endDate"`
	// Indicates the way in which the Capacity Reservation ends.
	//
	// A Capacity Reservation can have one of the following end types:
	//
	// - `unlimited` - The Capacity Reservation remains active until you explicitly cancel it. Do not provide an `EndDate` if the `EndDateType` is `unlimited` .
	// - `limited` - The Capacity Reservation expires automatically at a specified date and time. You must provide an `EndDate` value if the `EndDateType` value is `limited` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-enddatetype
	//
	EndDateType *string `field:"optional" json:"endDateType" yaml:"endDateType"`
	// *Deprecated.*.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-ephemeralstorage
	//
	EphemeralStorage interface{} `field:"optional" json:"ephemeralStorage" yaml:"ephemeralStorage"`
	// Indicates the type of instance launches that the Capacity Reservation accepts. The options include:.
	//
	// - `open` - The Capacity Reservation automatically matches all instances that have matching attributes (instance type, platform, and Availability Zone). Instances that have matching attributes run in the Capacity Reservation automatically without specifying any additional parameters.
	// - `targeted` - The Capacity Reservation only accepts instances that have matching attributes (instance type, platform, and Availability Zone), and explicitly target the Capacity Reservation. This ensures that only permitted instances can use the reserved capacity.
	//
	// > If you are requesting a future-dated Capacity Reservation, you must specify `targeted` .
	//
	// Default: `open`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-instancematchcriteria
	//
	InstanceMatchCriteria *string `field:"optional" json:"instanceMatchCriteria" yaml:"instanceMatchCriteria"`
	// > Not supported for future-dated Capacity Reservations.
	//
	// The Amazon Resource Name (ARN) of the Outpost on which to create the Capacity Reservation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-outpostarn
	//
	OutPostArn *string `field:"optional" json:"outPostArn" yaml:"outPostArn"`
	// > Not supported for future-dated Capacity Reservations.
	//
	// The Amazon Resource Name (ARN) of the cluster placement group in which to create the Capacity Reservation. For more information, see [Capacity Reservations for cluster placement groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cr-cpg.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-placementgrouparn
	//
	PlacementGroupArn *string `field:"optional" json:"placementGroupArn" yaml:"placementGroupArn"`
	// The tags to apply to the Capacity Reservation during launch.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-tagspecifications
	//
	TagSpecifications interface{} `field:"optional" json:"tagSpecifications" yaml:"tagSpecifications"`
	// Indicates the tenancy of the Capacity Reservation. A Capacity Reservation can have one of the following tenancy settings:.
	//
	// - `default` - The Capacity Reservation is created on hardware that is shared with other AWS accounts .
	// - `dedicated` - The Capacity Reservation is created on single-tenant hardware that is dedicated to a single AWS account .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-tenancy
	//
	Tenancy *string `field:"optional" json:"tenancy" yaml:"tenancy"`
	// The ID of the AWS account to which to assign billing of the unused capacity of the Capacity Reservation.
	//
	// A request will be sent to the specified account. That account must accept the request for the billing to be assigned to their account. For more information, see [Billing assignment for shared Amazon EC2 Capacity Reservations](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/assign-billing.html) .
	//
	// You can assign billing only for shared Capacity Reservations. To share a Capacity Reservation, you must add it to a resource share. For more information, see [AWS::RAM::ResourceShare](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ram-resourceshare.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-unusedreservationbillingownerid
	//
	UnusedReservationBillingOwnerId *string `field:"optional" json:"unusedReservationBillingOwnerId" yaml:"unusedReservationBillingOwnerId"`
}

Properties for defining a `CfnCapacityReservation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCapacityReservationProps := &CfnCapacityReservationProps{
	InstanceCount: jsii.Number(123),
	InstancePlatform: jsii.String("instancePlatform"),
	InstanceType: jsii.String("instanceType"),

	// the properties below are optional
	AvailabilityZone: jsii.String("availabilityZone"),
	AvailabilityZoneId: jsii.String("availabilityZoneId"),
	EbsOptimized: jsii.Boolean(false),
	EndDate: jsii.String("endDate"),
	EndDateType: jsii.String("endDateType"),
	EphemeralStorage: jsii.Boolean(false),
	InstanceMatchCriteria: jsii.String("instanceMatchCriteria"),
	OutPostArn: jsii.String("outPostArn"),
	PlacementGroupArn: jsii.String("placementGroupArn"),
	TagSpecifications: []interface{}{
		&TagSpecificationProperty{
			ResourceType: jsii.String("resourceType"),
			Tags: []CfnTag{
				&CfnTag{
					Key: jsii.String("key"),
					Value: jsii.String("value"),
				},
			},
		},
	},
	Tenancy: jsii.String("tenancy"),
	UnusedReservationBillingOwnerId: jsii.String("unusedReservationBillingOwnerId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html

type CfnCapacityReservation_CapacityAllocationProperty added in v2.186.0

type CfnCapacityReservation_CapacityAllocationProperty struct {
	// The usage type.
	//
	// `used` indicates that the instance capacity is in use by instances that are running in the Capacity Reservation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-capacityallocation.html#cfn-ec2-capacityreservation-capacityallocation-allocationtype
	//
	AllocationType *string `field:"optional" json:"allocationType" yaml:"allocationType"`
	// The amount of instance capacity associated with the usage.
	//
	// For example a value of `4` indicates that instance capacity for 4 instances is currently in use.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-capacityallocation.html#cfn-ec2-capacityreservation-capacityallocation-count
	//
	Count *float64 `field:"optional" json:"count" yaml:"count"`
}

Information about instance capacity usage for a Capacity Reservation.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

capacityAllocationProperty := &CapacityAllocationProperty{
	AllocationType: jsii.String("allocationType"),
	Count: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-capacityallocation.html

type CfnCapacityReservation_CommitmentInfoProperty added in v2.186.0

type CfnCapacityReservation_CommitmentInfoProperty struct {
	// The date and time at which the commitment duration expires, in the ISO8601 format in the UTC time zone ( `YYYY-MM-DDThh:mm:ss.sssZ` ). You can't decrease the instance count or cancel the Capacity Reservation before this date and time.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-commitmentinfo.html#cfn-ec2-capacityreservation-commitmentinfo-commitmentenddate
	//
	CommitmentEndDate *string `field:"optional" json:"commitmentEndDate" yaml:"commitmentEndDate"`
	// The instance capacity that you committed to when you requested the future-dated Capacity Reservation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-commitmentinfo.html#cfn-ec2-capacityreservation-commitmentinfo-committedinstancecount
	//
	CommittedInstanceCount *float64 `field:"optional" json:"committedInstanceCount" yaml:"committedInstanceCount"`
}

Information about your commitment for a future-dated Capacity Reservation.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

commitmentInfoProperty := &CommitmentInfoProperty{
	CommitmentEndDate: jsii.String("commitmentEndDate"),
	CommittedInstanceCount: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-commitmentinfo.html

type CfnCapacityReservation_TagSpecificationProperty

type CfnCapacityReservation_TagSpecificationProperty struct {
	// The type of resource to tag.
	//
	// Specify `capacity-reservation` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-resourcetype
	//
	ResourceType *string `field:"optional" json:"resourceType" yaml:"resourceType"`
	// The tags to apply to the resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

An array of key-value pairs to apply to this resource.

For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

tagSpecificationProperty := &TagSpecificationProperty{
	ResourceType: jsii.String("resourceType"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html

type CfnCarrierGateway

type CfnCarrierGateway interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ICarrierGatewayRef
	awscdk.ITaggable
	// The ID of the carrier gateway.
	AttrCarrierGatewayId() *string
	// The AWS account ID of the owner of the carrier gateway.
	AttrOwnerId() *string
	// The state of the carrier gateway.
	AttrState() *string
	// A reference to a CarrierGateway resource.
	CarrierGatewayRef() *interfacesawsec2.CarrierGatewayReference
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags assigned to the carrier gateway.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The ID of the VPC associated with the carrier gateway.
	VpcId() *string
	SetVpcId(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Creates a carrier gateway.

For more information about carrier gateways, see [Carrier gateways](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#wavelength-carrier-gateway) in the *AWS Wavelength Developer Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCarrierGateway := awscdk.Aws_ec2.NewCfnCarrierGateway(this, jsii.String("MyCfnCarrierGateway"), &CfnCarrierGatewayProps{
	VpcId: jsii.String("vpcId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-carriergateway.html

func NewCfnCarrierGateway

func NewCfnCarrierGateway(scope constructs.Construct, id *string, props *CfnCarrierGatewayProps) CfnCarrierGateway

Create a new `AWS::EC2::CarrierGateway`.

type CfnCarrierGatewayProps

type CfnCarrierGatewayProps struct {
	// The ID of the VPC associated with the carrier gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-carriergateway.html#cfn-ec2-carriergateway-vpcid
	//
	VpcId interface{} `field:"required" json:"vpcId" yaml:"vpcId"`
	// The tags assigned to the carrier gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-carriergateway.html#cfn-ec2-carriergateway-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnCarrierGateway`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCarrierGatewayProps := &CfnCarrierGatewayProps{
	VpcId: jsii.String("vpcId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-carriergateway.html

type CfnClientVpnAuthorizationRule

type CfnClientVpnAuthorizationRule interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IClientVpnAuthorizationRuleRef
	// The ID of the group to grant access to, for example, the Active Directory group or identity provider (IdP) group.
	AccessGroupId() *string
	SetAccessGroupId(val *string)
	AttrId() *string
	// Indicates whether to grant access to all clients.
	AuthorizeAllGroups() interface{}
	SetAuthorizeAllGroups(val interface{})
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// A reference to a ClientVpnAuthorizationRule resource.
	ClientVpnAuthorizationRuleRef() *interfacesawsec2.ClientVpnAuthorizationRuleReference
	// The ID of the Client VPN endpoint.
	ClientVpnEndpointId() *string
	SetClientVpnEndpointId(val *string)
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// A brief description of the authorization rule.
	Description() *string
	SetDescription(val *string)
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The IPv4 address range, in CIDR notation, of the network for which access is being authorized.
	TargetNetworkCidr() *string
	SetTargetNetworkCidr(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies an ingress authorization rule to add to a Client VPN endpoint.

Ingress authorization rules act as firewall rules that grant access to networks. You must configure ingress authorization rules to enable clients to access resources in AWS or on-premises networks.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnClientVpnAuthorizationRule := awscdk.Aws_ec2.NewCfnClientVpnAuthorizationRule(this, jsii.String("MyCfnClientVpnAuthorizationRule"), &CfnClientVpnAuthorizationRuleProps{
	ClientVpnEndpointId: jsii.String("clientVpnEndpointId"),
	TargetNetworkCidr: jsii.String("targetNetworkCidr"),

	// the properties below are optional
	AccessGroupId: jsii.String("accessGroupId"),
	AuthorizeAllGroups: jsii.Boolean(false),
	Description: jsii.String("description"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html

func NewCfnClientVpnAuthorizationRule

func NewCfnClientVpnAuthorizationRule(scope constructs.Construct, id *string, props *CfnClientVpnAuthorizationRuleProps) CfnClientVpnAuthorizationRule

Create a new `AWS::EC2::ClientVpnAuthorizationRule`.

type CfnClientVpnAuthorizationRuleProps

type CfnClientVpnAuthorizationRuleProps struct {
	// The ID of the Client VPN endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-clientvpnendpointid
	//
	ClientVpnEndpointId *string `field:"required" json:"clientVpnEndpointId" yaml:"clientVpnEndpointId"`
	// The IPv4 address range, in CIDR notation, of the network for which access is being authorized.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-targetnetworkcidr
	//
	TargetNetworkCidr *string `field:"required" json:"targetNetworkCidr" yaml:"targetNetworkCidr"`
	// The ID of the group to grant access to, for example, the Active Directory group or identity provider (IdP) group.
	//
	// Required if `AuthorizeAllGroups` is `false` or not specified.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-accessgroupid
	//
	AccessGroupId *string `field:"optional" json:"accessGroupId" yaml:"accessGroupId"`
	// Indicates whether to grant access to all clients.
	//
	// Specify `true` to grant all clients who successfully establish a VPN connection access to the network. Must be set to `true` if `AccessGroupId` is not specified.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-authorizeallgroups
	//
	AuthorizeAllGroups interface{} `field:"optional" json:"authorizeAllGroups" yaml:"authorizeAllGroups"`
	// A brief description of the authorization rule.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
}

Properties for defining a `CfnClientVpnAuthorizationRule`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnClientVpnAuthorizationRuleProps := &CfnClientVpnAuthorizationRuleProps{
	ClientVpnEndpointId: jsii.String("clientVpnEndpointId"),
	TargetNetworkCidr: jsii.String("targetNetworkCidr"),

	// the properties below are optional
	AccessGroupId: jsii.String("accessGroupId"),
	AuthorizeAllGroups: jsii.Boolean(false),
	Description: jsii.String("description"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html

type CfnClientVpnEndpoint

type CfnClientVpnEndpoint interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IClientVpnEndpointRef
	AttrId() *string
	// Information about the authentication method to be used to authenticate clients.
	AuthenticationOptions() interface{}
	SetAuthenticationOptions(val interface{})
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// The IPv4 address range, in CIDR notation, from which to assign client IP addresses.
	ClientCidrBlock() *string
	SetClientCidrBlock(val *string)
	// The options for managing connection authorization for new client connections.
	ClientConnectOptions() interface{}
	SetClientConnectOptions(val interface{})
	// Options for enabling a customizable text banner that will be displayed on AWS provided clients when a VPN session is established.
	ClientLoginBannerOptions() interface{}
	SetClientLoginBannerOptions(val interface{})
	// Client route enforcement is a feature of the Client VPN service that helps enforce administrator defined routes on devices connected through the VPN.
	ClientRouteEnforcementOptions() interface{}
	SetClientRouteEnforcementOptions(val interface{})
	// A reference to a ClientVpnEndpoint resource.
	ClientVpnEndpointRef() *interfacesawsec2.ClientVpnEndpointReference
	// Information about the client connection logging options.
	ConnectionLogOptions() interface{}
	SetConnectionLogOptions(val interface{})
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// A brief description of the Client VPN endpoint.
	Description() *string
	SetDescription(val *string)
	// Indicates whether the client VPN session is disconnected after the maximum `sessionTimeoutHours` is reached.
	DisconnectOnSessionTimeout() interface{}
	SetDisconnectOnSessionTimeout(val interface{})
	// Information about the DNS servers to be used for DNS resolution.
	DnsServers() *[]*string
	SetDnsServers(val *[]*string)
	// The IP address type of the Client VPN endpoint.
	EndpointIpAddressType() *string
	SetEndpointIpAddressType(val *string)
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The IDs of one or more security groups to apply to the target network.
	SecurityGroupIds() *[]*string
	SetSecurityGroupIds(val *[]*string)
	// Specify whether to enable the self-service portal for the Client VPN endpoint.
	SelfServicePortal() *string
	SetSelfServicePortal(val *string)
	// The ARN of the server certificate.
	ServerCertificateArn() *string
	SetServerCertificateArn(val *string)
	// The maximum VPN session duration time in hours.
	SessionTimeoutHours() *float64
	SetSessionTimeoutHours(val *float64)
	// Indicates whether split-tunnel is enabled on the AWS Client VPN endpoint.
	SplitTunnel() interface{}
	SetSplitTunnel(val interface{})
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The tags to apply to the Client VPN endpoint during creation.
	TagSpecifications() interface{}
	SetTagSpecifications(val interface{})
	// The IP address type of the Client VPN endpoint.
	TrafficIpAddressType() *string
	SetTrafficIpAddressType(val *string)
	TransitGatewayConfiguration() interface{}
	SetTransitGatewayConfiguration(val interface{})
	// The transport protocol to be used by the VPN session.
	TransportProtocol() *string
	SetTransportProtocol(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The ID of the VPC to associate with the Client VPN endpoint.
	VpcId() *string
	SetVpcId(val *string)
	// The port number to assign to the Client VPN endpoint for TCP and UDP traffic.
	VpnPort() *float64
	SetVpnPort(val *float64)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a Client VPN endpoint.

A Client VPN endpoint is the resource you create and configure to enable and manage client VPN sessions. It is the destination endpoint at which all client VPN sessions are terminated.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnClientVpnEndpoint := awscdk.Aws_ec2.NewCfnClientVpnEndpoint(this, jsii.String("MyCfnClientVpnEndpoint"), &CfnClientVpnEndpointProps{
	AuthenticationOptions: []interface{}{
		&ClientAuthenticationRequestProperty{
			Type: jsii.String("type"),

			// the properties below are optional
			ActiveDirectory: &DirectoryServiceAuthenticationRequestProperty{
				DirectoryId: jsii.String("directoryId"),
			},
			FederatedAuthentication: &FederatedAuthenticationRequestProperty{
				SamlProviderArn: jsii.String("samlProviderArn"),

				// the properties below are optional
				SelfServiceSamlProviderArn: jsii.String("selfServiceSamlProviderArn"),
			},
			MutualAuthentication: &CertificateAuthenticationRequestProperty{
				ClientRootCertificateChainArn: jsii.String("clientRootCertificateChainArn"),
			},
		},
	},
	ConnectionLogOptions: &ConnectionLogOptionsProperty{
		Enabled: jsii.Boolean(false),

		// the properties below are optional
		CloudwatchLogGroup: jsii.String("cloudwatchLogGroup"),
		CloudwatchLogStream: jsii.String("cloudwatchLogStream"),
	},
	ServerCertificateArn: jsii.String("serverCertificateArn"),

	// the properties below are optional
	ClientCidrBlock: jsii.String("clientCidrBlock"),
	ClientConnectOptions: &ClientConnectOptionsProperty{
		Enabled: jsii.Boolean(false),

		// the properties below are optional
		LambdaFunctionArn: jsii.String("lambdaFunctionArn"),
	},
	ClientLoginBannerOptions: &ClientLoginBannerOptionsProperty{
		Enabled: jsii.Boolean(false),

		// the properties below are optional
		BannerText: jsii.String("bannerText"),
	},
	ClientRouteEnforcementOptions: &ClientRouteEnforcementOptionsProperty{
		Enforced: jsii.Boolean(false),
	},
	Description: jsii.String("description"),
	DisconnectOnSessionTimeout: jsii.Boolean(false),
	DnsServers: []*string{
		jsii.String("dnsServers"),
	},
	EndpointIpAddressType: jsii.String("endpointIpAddressType"),
	SecurityGroupIds: []*string{
		jsii.String("securityGroupIds"),
	},
	SelfServicePortal: jsii.String("selfServicePortal"),
	SessionTimeoutHours: jsii.Number(123),
	SplitTunnel: jsii.Boolean(false),
	TagSpecifications: []interface{}{
		&TagSpecificationProperty{
			ResourceType: jsii.String("resourceType"),
			Tags: []CfnTag{
				&CfnTag{
					Key: jsii.String("key"),
					Value: jsii.String("value"),
				},
			},
		},
	},
	TrafficIpAddressType: jsii.String("trafficIpAddressType"),
	TransitGatewayConfiguration: &TransitGatewayConfigurationProperty{
		TransitGatewayId: jsii.String("transitGatewayId"),

		// the properties below are optional
		AvailabilityZoneIds: []*string{
			jsii.String("availabilityZoneIds"),
		},
		AvailabilityZones: []*string{
			jsii.String("availabilityZones"),
		},
	},
	TransportProtocol: jsii.String("transportProtocol"),
	VpcId: jsii.String("vpcId"),
	VpnPort: jsii.Number(123),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html

func NewCfnClientVpnEndpoint

func NewCfnClientVpnEndpoint(scope constructs.Construct, id *string, props *CfnClientVpnEndpointProps) CfnClientVpnEndpoint

Create a new `AWS::EC2::ClientVpnEndpoint`.

type CfnClientVpnEndpointProps

type CfnClientVpnEndpointProps struct {
	// Information about the authentication method to be used to authenticate clients.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-authenticationoptions
	//
	AuthenticationOptions interface{} `field:"required" json:"authenticationOptions" yaml:"authenticationOptions"`
	// Information about the client connection logging options.
	//
	// If you enable client connection logging, data about client connections is sent to a Cloudwatch Logs log stream. The following information is logged:
	//
	// - Client connection requests
	// - Client connection results (successful and unsuccessful)
	// - Reasons for unsuccessful client connection requests
	// - Client connection termination time.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-connectionlogoptions
	//
	ConnectionLogOptions interface{} `field:"required" json:"connectionLogOptions" yaml:"connectionLogOptions"`
	// The ARN of the server certificate.
	//
	// For more information, see the [Certificate Manager User Guide](https://docs.aws.amazon.com/acm/latest/userguide/) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-servercertificatearn
	//
	ServerCertificateArn *string `field:"required" json:"serverCertificateArn" yaml:"serverCertificateArn"`
	// The IPv4 address range, in CIDR notation, from which to assign client IP addresses.
	//
	// The address range cannot overlap with the local CIDR of the VPC in which the associated subnet is located, or the routes that you add manually. The address range cannot be changed after the Client VPN endpoint has been created. Client CIDR range must have a size of at least /22 and must not be greater than /12.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-clientcidrblock
	//
	ClientCidrBlock *string `field:"optional" json:"clientCidrBlock" yaml:"clientCidrBlock"`
	// The options for managing connection authorization for new client connections.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-clientconnectoptions
	//
	ClientConnectOptions interface{} `field:"optional" json:"clientConnectOptions" yaml:"clientConnectOptions"`
	// Options for enabling a customizable text banner that will be displayed on AWS provided clients when a VPN session is established.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-clientloginbanneroptions
	//
	ClientLoginBannerOptions interface{} `field:"optional" json:"clientLoginBannerOptions" yaml:"clientLoginBannerOptions"`
	// Client route enforcement is a feature of the Client VPN service that helps enforce administrator defined routes on devices connected through the VPN.
	//
	// T his feature helps improve your security posture by ensuring that network traffic originating from a connected client is not inadvertently sent outside the VPN tunnel.
	//
	// Client route enforcement works by monitoring the route table of a connected device for routing policy changes to the VPN connection. If the feature detects any VPN routing policy modifications, it will automatically force an update to the route table, reverting it back to the expected route configurations.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-clientrouteenforcementoptions
	//
	ClientRouteEnforcementOptions interface{} `field:"optional" json:"clientRouteEnforcementOptions" yaml:"clientRouteEnforcementOptions"`
	// A brief description of the Client VPN endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// Indicates whether the client VPN session is disconnected after the maximum `sessionTimeoutHours` is reached.
	//
	// If `true` , users are prompted to reconnect client VPN. If `false` , client VPN attempts to reconnect automatically. The default value is `true` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-disconnectonsessiontimeout
	//
	DisconnectOnSessionTimeout interface{} `field:"optional" json:"disconnectOnSessionTimeout" yaml:"disconnectOnSessionTimeout"`
	// Information about the DNS servers to be used for DNS resolution.
	//
	// A Client VPN endpoint can have up to two DNS servers. If no DNS server is specified, the DNS address configured on the device is used for the DNS server.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-dnsservers
	//
	DnsServers *[]*string `field:"optional" json:"dnsServers" yaml:"dnsServers"`
	// The IP address type of the Client VPN endpoint.
	//
	// Possible values are `ipv4` for IPv4 addressing only, `ipv6` for IPv6 addressing only, or `dual-stack` for both IPv4 and IPv6 addressing.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-endpointipaddresstype
	//
	EndpointIpAddressType *string `field:"optional" json:"endpointIpAddressType" yaml:"endpointIpAddressType"`
	// The IDs of one or more security groups to apply to the target network.
	//
	// You must also specify the ID of the VPC that contains the security groups.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-securitygroupids
	//
	SecurityGroupIds *[]*string `field:"optional" json:"securityGroupIds" yaml:"securityGroupIds"`
	// Specify whether to enable the self-service portal for the Client VPN endpoint.
	//
	// Default Value: `enabled`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-selfserviceportal
	//
	SelfServicePortal *string `field:"optional" json:"selfServicePortal" yaml:"selfServicePortal"`
	// The maximum VPN session duration time in hours.
	//
	// Valid values: `8 | 10 | 12 | 24`
	//
	// Default value: `24`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-sessiontimeouthours
	//
	SessionTimeoutHours *float64 `field:"optional" json:"sessionTimeoutHours" yaml:"sessionTimeoutHours"`
	// Indicates whether split-tunnel is enabled on the AWS Client VPN endpoint.
	//
	// By default, split-tunnel on a VPN endpoint is disabled.
	//
	// For information about split-tunnel VPN endpoints, see [Split-tunnel AWS Client VPN endpoint](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/split-tunnel-vpn.html) in the *AWS Client VPN Administrator Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-splittunnel
	//
	SplitTunnel interface{} `field:"optional" json:"splitTunnel" yaml:"splitTunnel"`
	// The tags to apply to the Client VPN endpoint during creation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-tagspecifications
	//
	TagSpecifications interface{} `field:"optional" json:"tagSpecifications" yaml:"tagSpecifications"`
	// The IP address type of the Client VPN endpoint.
	//
	// Possible values are either `ipv4` for IPv4 addressing only, `ipv6` for IPv6 addressing only, or `dual-stack` for both IPv4 and IPv6 addressing.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-trafficipaddresstype
	//
	TrafficIpAddressType *string `field:"optional" json:"trafficIpAddressType" yaml:"trafficIpAddressType"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-transitgatewayconfiguration
	//
	TransitGatewayConfiguration interface{} `field:"optional" json:"transitGatewayConfiguration" yaml:"transitGatewayConfiguration"`
	// The transport protocol to be used by the VPN session.
	//
	// Default value: `udp`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-transportprotocol
	//
	TransportProtocol *string `field:"optional" json:"transportProtocol" yaml:"transportProtocol"`
	// The ID of the VPC to associate with the Client VPN endpoint.
	//
	// If no security group IDs are specified in the request, the default security group for the VPC is applied.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-vpcid
	//
	VpcId *string `field:"optional" json:"vpcId" yaml:"vpcId"`
	// The port number to assign to the Client VPN endpoint for TCP and UDP traffic.
	//
	// Valid Values: `443` | `1194`
	//
	// Default Value: `443`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-vpnport
	//
	VpnPort *float64 `field:"optional" json:"vpnPort" yaml:"vpnPort"`
}

Properties for defining a `CfnClientVpnEndpoint`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnClientVpnEndpointProps := &CfnClientVpnEndpointProps{
	AuthenticationOptions: []interface{}{
		&ClientAuthenticationRequestProperty{
			Type: jsii.String("type"),

			// the properties below are optional
			ActiveDirectory: &DirectoryServiceAuthenticationRequestProperty{
				DirectoryId: jsii.String("directoryId"),
			},
			FederatedAuthentication: &FederatedAuthenticationRequestProperty{
				SamlProviderArn: jsii.String("samlProviderArn"),

				// the properties below are optional
				SelfServiceSamlProviderArn: jsii.String("selfServiceSamlProviderArn"),
			},
			MutualAuthentication: &CertificateAuthenticationRequestProperty{
				ClientRootCertificateChainArn: jsii.String("clientRootCertificateChainArn"),
			},
		},
	},
	ConnectionLogOptions: &ConnectionLogOptionsProperty{
		Enabled: jsii.Boolean(false),

		// the properties below are optional
		CloudwatchLogGroup: jsii.String("cloudwatchLogGroup"),
		CloudwatchLogStream: jsii.String("cloudwatchLogStream"),
	},
	ServerCertificateArn: jsii.String("serverCertificateArn"),

	// the properties below are optional
	ClientCidrBlock: jsii.String("clientCidrBlock"),
	ClientConnectOptions: &ClientConnectOptionsProperty{
		Enabled: jsii.Boolean(false),

		// the properties below are optional
		LambdaFunctionArn: jsii.String("lambdaFunctionArn"),
	},
	ClientLoginBannerOptions: &ClientLoginBannerOptionsProperty{
		Enabled: jsii.Boolean(false),

		// the properties below are optional
		BannerText: jsii.String("bannerText"),
	},
	ClientRouteEnforcementOptions: &ClientRouteEnforcementOptionsProperty{
		Enforced: jsii.Boolean(false),
	},
	Description: jsii.String("description"),
	DisconnectOnSessionTimeout: jsii.Boolean(false),
	DnsServers: []*string{
		jsii.String("dnsServers"),
	},
	EndpointIpAddressType: jsii.String("endpointIpAddressType"),
	SecurityGroupIds: []*string{
		jsii.String("securityGroupIds"),
	},
	SelfServicePortal: jsii.String("selfServicePortal"),
	SessionTimeoutHours: jsii.Number(123),
	SplitTunnel: jsii.Boolean(false),
	TagSpecifications: []interface{}{
		&TagSpecificationProperty{
			ResourceType: jsii.String("resourceType"),
			Tags: []CfnTag{
				&CfnTag{
					Key: jsii.String("key"),
					Value: jsii.String("value"),
				},
			},
		},
	},
	TrafficIpAddressType: jsii.String("trafficIpAddressType"),
	TransitGatewayConfiguration: &TransitGatewayConfigurationProperty{
		TransitGatewayId: jsii.String("transitGatewayId"),

		// the properties below are optional
		AvailabilityZoneIds: []*string{
			jsii.String("availabilityZoneIds"),
		},
		AvailabilityZones: []*string{
			jsii.String("availabilityZones"),
		},
	},
	TransportProtocol: jsii.String("transportProtocol"),
	VpcId: jsii.String("vpcId"),
	VpnPort: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html

type CfnClientVpnEndpoint_CertificateAuthenticationRequestProperty

type CfnClientVpnEndpoint_CertificateAuthenticationRequestProperty struct {
	// The ARN of the client certificate.
	//
	// The certificate must be signed by a certificate authority (CA) and it must be provisioned in Certificate Manager (ACM).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html#cfn-ec2-clientvpnendpoint-certificateauthenticationrequest-clientrootcertificatechainarn
	//
	ClientRootCertificateChainArn *string `field:"required" json:"clientRootCertificateChainArn" yaml:"clientRootCertificateChainArn"`
}

Information about the client certificate to be used for authentication.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

certificateAuthenticationRequestProperty := &CertificateAuthenticationRequestProperty{
	ClientRootCertificateChainArn: jsii.String("clientRootCertificateChainArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html

type CfnClientVpnEndpoint_ClientAuthenticationRequestProperty

type CfnClientVpnEndpoint_ClientAuthenticationRequestProperty struct {
	// The type of client authentication to be used.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-type
	//
	Type *string `field:"required" json:"type" yaml:"type"`
	// Information about the Active Directory to be used, if applicable.
	//
	// You must provide this information if *Type* is `directory-service-authentication` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-activedirectory
	//
	ActiveDirectory interface{} `field:"optional" json:"activeDirectory" yaml:"activeDirectory"`
	// Information about the IAM SAML identity provider, if applicable.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-federatedauthentication
	//
	FederatedAuthentication interface{} `field:"optional" json:"federatedAuthentication" yaml:"federatedAuthentication"`
	// Information about the authentication certificates to be used, if applicable.
	//
	// You must provide this information if *Type* is `certificate-authentication` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-mutualauthentication
	//
	MutualAuthentication interface{} `field:"optional" json:"mutualAuthentication" yaml:"mutualAuthentication"`
}

Describes the authentication method to be used by a Client VPN endpoint.

For more information, see [Authentication](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication) in the *AWS Client VPN Administrator Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

clientAuthenticationRequestProperty := &ClientAuthenticationRequestProperty{
	Type: jsii.String("type"),

	// the properties below are optional
	ActiveDirectory: &DirectoryServiceAuthenticationRequestProperty{
		DirectoryId: jsii.String("directoryId"),
	},
	FederatedAuthentication: &FederatedAuthenticationRequestProperty{
		SamlProviderArn: jsii.String("samlProviderArn"),

		// the properties below are optional
		SelfServiceSamlProviderArn: jsii.String("selfServiceSamlProviderArn"),
	},
	MutualAuthentication: &CertificateAuthenticationRequestProperty{
		ClientRootCertificateChainArn: jsii.String("clientRootCertificateChainArn"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html

type CfnClientVpnEndpoint_ClientConnectOptionsProperty

type CfnClientVpnEndpoint_ClientConnectOptionsProperty struct {
	// Indicates whether client connect options are enabled.
	//
	// The default is `false` (not enabled).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientconnectoptions.html#cfn-ec2-clientvpnendpoint-clientconnectoptions-enabled
	//
	Enabled interface{} `field:"required" json:"enabled" yaml:"enabled"`
	// The Amazon Resource Name (ARN) of the AWS Lambda function used for connection authorization.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientconnectoptions.html#cfn-ec2-clientvpnendpoint-clientconnectoptions-lambdafunctionarn
	//
	LambdaFunctionArn *string `field:"optional" json:"lambdaFunctionArn" yaml:"lambdaFunctionArn"`
}

Indicates whether client connect options are enabled.

The default is `false` (not enabled).

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

clientConnectOptionsProperty := &ClientConnectOptionsProperty{
	Enabled: jsii.Boolean(false),

	// the properties below are optional
	LambdaFunctionArn: jsii.String("lambdaFunctionArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientconnectoptions.html

type CfnClientVpnEndpoint_ClientLoginBannerOptionsProperty added in v2.9.0

type CfnClientVpnEndpoint_ClientLoginBannerOptionsProperty struct {
	// Enable or disable a customizable text banner that will be displayed on AWS provided clients when a VPN session is established.
	//
	// Valid values: `true | false`
	//
	// Default value: `false`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientloginbanneroptions.html#cfn-ec2-clientvpnendpoint-clientloginbanneroptions-enabled
	//
	Enabled interface{} `field:"required" json:"enabled" yaml:"enabled"`
	// Customizable text that will be displayed in a banner on AWS provided clients when a VPN session is established.
	//
	// UTF-8 encoded characters only. Maximum of 1400 characters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientloginbanneroptions.html#cfn-ec2-clientvpnendpoint-clientloginbanneroptions-bannertext
	//
	BannerText *string `field:"optional" json:"bannerText" yaml:"bannerText"`
}

Options for enabling a customizable text banner that will be displayed on AWS provided clients when a VPN session is established.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

clientLoginBannerOptionsProperty := &ClientLoginBannerOptionsProperty{
	Enabled: jsii.Boolean(false),

	// the properties below are optional
	BannerText: jsii.String("bannerText"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientloginbanneroptions.html

type CfnClientVpnEndpoint_ClientRouteEnforcementOptionsProperty added in v2.195.0

type CfnClientVpnEndpoint_ClientRouteEnforcementOptionsProperty struct {
	// Enable or disable Client Route Enforcement.
	//
	// The state can either be `true` (enabled) or `false` (disabled). The default is `false` .
	//
	// Valid values: `true | false`
	//
	// Default value: `false`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientrouteenforcementoptions.html#cfn-ec2-clientvpnendpoint-clientrouteenforcementoptions-enforced
	//
	Enforced interface{} `field:"optional" json:"enforced" yaml:"enforced"`
}

Client Route Enforcement is a feature of Client VPN that helps enforce administrator defined routes on devices connected through the VPN.

This feature helps improve your security posture by ensuring that network traffic originating from a connected client is not inadvertently sent outside the VPN tunnel.

Client Route Enforcement works by monitoring the route table of a connected device for routing policy changes to the VPN connection. If the feature detects any VPN routing policy modifications, it will automatically force an update to the route table, reverting it back to the expected route configurations.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

clientRouteEnforcementOptionsProperty := &ClientRouteEnforcementOptionsProperty{
	Enforced: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientrouteenforcementoptions.html

type CfnClientVpnEndpoint_ConnectionLogOptionsProperty

type CfnClientVpnEndpoint_ConnectionLogOptionsProperty struct {
	// Indicates whether connection logging is enabled.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-enabled
	//
	Enabled interface{} `field:"required" json:"enabled" yaml:"enabled"`
	// The name of the CloudWatch Logs log group.
	//
	// Required if connection logging is enabled.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchloggroup
	//
	CloudwatchLogGroup *string `field:"optional" json:"cloudwatchLogGroup" yaml:"cloudwatchLogGroup"`
	// The name of the CloudWatch Logs log stream to which the connection data is published.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchlogstream
	//
	CloudwatchLogStream *string `field:"optional" json:"cloudwatchLogStream" yaml:"cloudwatchLogStream"`
}

Describes the client connection logging options for the Client VPN endpoint.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

connectionLogOptionsProperty := &ConnectionLogOptionsProperty{
	Enabled: jsii.Boolean(false),

	// the properties below are optional
	CloudwatchLogGroup: jsii.String("cloudwatchLogGroup"),
	CloudwatchLogStream: jsii.String("cloudwatchLogStream"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html

type CfnClientVpnEndpoint_DirectoryServiceAuthenticationRequestProperty

type CfnClientVpnEndpoint_DirectoryServiceAuthenticationRequestProperty struct {
	// The ID of the Active Directory to be used for authentication.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html#cfn-ec2-clientvpnendpoint-directoryserviceauthenticationrequest-directoryid
	//
	DirectoryId *string `field:"required" json:"directoryId" yaml:"directoryId"`
}

Describes the Active Directory to be used for client authentication.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

directoryServiceAuthenticationRequestProperty := &DirectoryServiceAuthenticationRequestProperty{
	DirectoryId: jsii.String("directoryId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html

type CfnClientVpnEndpoint_FederatedAuthenticationRequestProperty

type CfnClientVpnEndpoint_FederatedAuthenticationRequestProperty struct {
	// The Amazon Resource Name (ARN) of the IAM SAML identity provider.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-samlproviderarn
	//
	SamlProviderArn *string `field:"required" json:"samlProviderArn" yaml:"samlProviderArn"`
	// The Amazon Resource Name (ARN) of the IAM SAML identity provider for the self-service portal.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-selfservicesamlproviderarn
	//
	SelfServiceSamlProviderArn *string `field:"optional" json:"selfServiceSamlProviderArn" yaml:"selfServiceSamlProviderArn"`
}

The IAM SAML identity provider used for federated authentication.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

federatedAuthenticationRequestProperty := &FederatedAuthenticationRequestProperty{
	SamlProviderArn: jsii.String("samlProviderArn"),

	// the properties below are optional
	SelfServiceSamlProviderArn: jsii.String("selfServiceSamlProviderArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html

type CfnClientVpnEndpoint_TagSpecificationProperty

type CfnClientVpnEndpoint_TagSpecificationProperty struct {
	// The type of resource to tag.
	//
	// To tag a Client VPN endpoint, `ResourceType` must be `client-vpn-endpoint` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-resourcetype
	//
	ResourceType *string `field:"required" json:"resourceType" yaml:"resourceType"`
	// The tags to apply to the resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-tags
	//
	Tags *[]*awscdk.CfnTag `field:"required" json:"tags" yaml:"tags"`
}

Specifies the tags to apply to the Client VPN endpoint.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

tagSpecificationProperty := &TagSpecificationProperty{
	ResourceType: jsii.String("resourceType"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html

type CfnClientVpnEndpoint_TransitGatewayConfigurationProperty added in v2.253.0

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

transitGatewayConfigurationProperty := &TransitGatewayConfigurationProperty{
	TransitGatewayId: jsii.String("transitGatewayId"),

	// the properties below are optional
	AvailabilityZoneIds: []*string{
		jsii.String("availabilityZoneIds"),
	},
	AvailabilityZones: []*string{
		jsii.String("availabilityZones"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-transitgatewayconfiguration.html

type CfnClientVpnRoute

type CfnClientVpnRoute interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IClientVpnRouteRef
	AttrId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// The ID of the Client VPN endpoint to which to add the route.
	ClientVpnEndpointId() *string
	SetClientVpnEndpointId(val *string)
	// A reference to a ClientVpnRoute resource.
	ClientVpnRouteRef() *interfacesawsec2.ClientVpnRouteReference
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// A brief description of the route.
	Description() *string
	SetDescription(val *string)
	// The IPv4 address range, in CIDR notation, of the route destination.
	//
	// For example:.
	DestinationCidrBlock() *string
	SetDestinationCidrBlock(val *string)
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The ID of the subnet through which you want to route traffic.
	TargetVpcSubnetId() *string
	SetTargetVpcSubnetId(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a network route to add to a Client VPN endpoint.

Each Client VPN endpoint has a route table that describes the available destination network routes. Each route in the route table specifies the path for traffic to specific resources or networks.

A target network association must be created before you can specify a route. If you're setting up all the components of a Client VPN endpoint at the same time, you must use the [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) to declare a dependency on the `AWS::EC2::ClientVpnTargetNetworkAssociation` resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnClientVpnRoute := awscdk.Aws_ec2.NewCfnClientVpnRoute(this, jsii.String("MyCfnClientVpnRoute"), &CfnClientVpnRouteProps{
	ClientVpnEndpointId: jsii.String("clientVpnEndpointId"),
	DestinationCidrBlock: jsii.String("destinationCidrBlock"),

	// the properties below are optional
	Description: jsii.String("description"),
	TargetVpcSubnetId: jsii.String("targetVpcSubnetId"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html

func NewCfnClientVpnRoute

func NewCfnClientVpnRoute(scope constructs.Construct, id *string, props *CfnClientVpnRouteProps) CfnClientVpnRoute

Create a new `AWS::EC2::ClientVpnRoute`.

type CfnClientVpnRouteProps

type CfnClientVpnRouteProps struct {
	// The ID of the Client VPN endpoint to which to add the route.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html#cfn-ec2-clientvpnroute-clientvpnendpointid
	//
	ClientVpnEndpointId *string `field:"required" json:"clientVpnEndpointId" yaml:"clientVpnEndpointId"`
	// The IPv4 address range, in CIDR notation, of the route destination. For example:.
	//
	// - To add a route for Internet access, enter `0.0.0.0/0`
	// - To add a route for a peered VPC, enter the peered VPC's IPv4 CIDR range
	// - To add a route for an on-premises network, enter the AWS Site-to-Site VPN connection's IPv4 CIDR range
	// - To add a route for the local network, enter the client CIDR range.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html#cfn-ec2-clientvpnroute-destinationcidrblock
	//
	DestinationCidrBlock *string `field:"required" json:"destinationCidrBlock" yaml:"destinationCidrBlock"`
	// A brief description of the route.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html#cfn-ec2-clientvpnroute-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The ID of the subnet through which you want to route traffic.
	//
	// The specified subnet must be an existing target network of the Client VPN endpoint.
	//
	// Alternatively, if you're adding a route for the local network, specify `local` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html#cfn-ec2-clientvpnroute-targetvpcsubnetid
	//
	TargetVpcSubnetId *string `field:"optional" json:"targetVpcSubnetId" yaml:"targetVpcSubnetId"`
}

Properties for defining a `CfnClientVpnRoute`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnClientVpnRouteProps := &CfnClientVpnRouteProps{
	ClientVpnEndpointId: jsii.String("clientVpnEndpointId"),
	DestinationCidrBlock: jsii.String("destinationCidrBlock"),

	// the properties below are optional
	Description: jsii.String("description"),
	TargetVpcSubnetId: jsii.String("targetVpcSubnetId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html

type CfnClientVpnTargetNetworkAssociation

type CfnClientVpnTargetNetworkAssociation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IClientVpnTargetNetworkAssociationRef
	AttrId() *string
	AvailabilityZone() *string
	SetAvailabilityZone(val *string)
	AvailabilityZoneId() *string
	SetAvailabilityZoneId(val *string)
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// The ID of the Client VPN endpoint.
	ClientVpnEndpointId() *string
	SetClientVpnEndpointId(val *string)
	// A reference to a ClientVpnTargetNetworkAssociation resource.
	ClientVpnTargetNetworkAssociationRef() *interfacesawsec2.ClientVpnTargetNetworkAssociationReference
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The ID of the subnet to associate with the Client VPN endpoint.
	SubnetId() *string
	SetSubnetId(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a target network to associate with a Client VPN endpoint.

A target network is a subnet in a VPC. You can associate multiple subnets from the same VPC with a Client VPN endpoint. You can associate only one subnet in each Availability Zone. We recommend that you associate at least two subnets to provide Availability Zone redundancy.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnClientVpnTargetNetworkAssociation := awscdk.Aws_ec2.NewCfnClientVpnTargetNetworkAssociation(this, jsii.String("MyCfnClientVpnTargetNetworkAssociation"), &CfnClientVpnTargetNetworkAssociationProps{
	ClientVpnEndpointId: jsii.String("clientVpnEndpointId"),

	// the properties below are optional
	AvailabilityZone: jsii.String("availabilityZone"),
	AvailabilityZoneId: jsii.String("availabilityZoneId"),
	SubnetId: jsii.String("subnetId"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpntargetnetworkassociation.html

func NewCfnClientVpnTargetNetworkAssociation

func NewCfnClientVpnTargetNetworkAssociation(scope constructs.Construct, id *string, props *CfnClientVpnTargetNetworkAssociationProps) CfnClientVpnTargetNetworkAssociation

Create a new `AWS::EC2::ClientVpnTargetNetworkAssociation`.

type CfnClientVpnTargetNetworkAssociationProps

type CfnClientVpnTargetNetworkAssociationProps struct {
	// The ID of the Client VPN endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpntargetnetworkassociation.html#cfn-ec2-clientvpntargetnetworkassociation-clientvpnendpointid
	//
	ClientVpnEndpointId *string `field:"required" json:"clientVpnEndpointId" yaml:"clientVpnEndpointId"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpntargetnetworkassociation.html#cfn-ec2-clientvpntargetnetworkassociation-availabilityzone
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpntargetnetworkassociation.html#cfn-ec2-clientvpntargetnetworkassociation-availabilityzoneid
	//
	AvailabilityZoneId *string `field:"optional" json:"availabilityZoneId" yaml:"availabilityZoneId"`
	// The ID of the subnet to associate with the Client VPN endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpntargetnetworkassociation.html#cfn-ec2-clientvpntargetnetworkassociation-subnetid
	//
	SubnetId *string `field:"optional" json:"subnetId" yaml:"subnetId"`
}

Properties for defining a `CfnClientVpnTargetNetworkAssociation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnClientVpnTargetNetworkAssociationProps := &CfnClientVpnTargetNetworkAssociationProps{
	ClientVpnEndpointId: jsii.String("clientVpnEndpointId"),

	// the properties below are optional
	AvailabilityZone: jsii.String("availabilityZone"),
	AvailabilityZoneId: jsii.String("availabilityZoneId"),
	SubnetId: jsii.String("subnetId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpntargetnetworkassociation.html

type CfnCustomerGateway

type CfnCustomerGateway interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ICustomerGatewayRef
	awscdk.ITaggable
	// The ID of the customer gateway.
	AttrCustomerGatewayId() *string
	// For customer gateway devices that support BGP, specify the device's ASN.
	BgpAsn() *float64
	SetBgpAsn(val *float64)
	// For customer gateway devices that support BGP, specify the device's ASN.
	BgpAsnExtended() *float64
	SetBgpAsnExtended(val *float64)
	// The Amazon Resource Name (ARN) for the customer gateway certificate.
	CertificateArn() *string
	SetCertificateArn(val *string)
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// A reference to a CustomerGateway resource.
	CustomerGatewayRef() *interfacesawsec2.CustomerGatewayReference
	// The name of customer gateway device.
	DeviceName() *string
	SetDeviceName(val *string)
	Env() *interfaces.ResourceEnvironment
	// The IP address for the customer gateway device's outside interface.
	IpAddress() *string
	SetIpAddress(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// One or more tags for the customer gateway.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// The type of VPN connection that this customer gateway supports ( `ipsec.1` ).
	Type() *string
	SetType(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a customer gateway.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCustomerGateway := awscdk.Aws_ec2.NewCfnCustomerGateway(this, jsii.String("MyCfnCustomerGateway"), &CfnCustomerGatewayProps{
	IpAddress: jsii.String("ipAddress"),
	Type: jsii.String("type"),

	// the properties below are optional
	BgpAsn: jsii.Number(123),
	BgpAsnExtended: jsii.Number(123),
	CertificateArn: jsii.String("certificateArn"),
	DeviceName: jsii.String("deviceName"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customergateway.html

func NewCfnCustomerGateway

func NewCfnCustomerGateway(scope constructs.Construct, id *string, props *CfnCustomerGatewayProps) CfnCustomerGateway

Create a new `AWS::EC2::CustomerGateway`.

type CfnCustomerGatewayProps

type CfnCustomerGatewayProps struct {
	// The IP address for the customer gateway device's outside interface.
	//
	// The address must be static. If `OutsideIpAddressType` in your VPN connection options is set to `PrivateIpv4` , you can use an RFC6598 or RFC1918 private IPv4 address. If `OutsideIpAddressType` is set to `Ipv6` , you can use an IPv6 address.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customergateway.html#cfn-ec2-customergateway-ipaddress
	//
	IpAddress *string `field:"required" json:"ipAddress" yaml:"ipAddress"`
	// The type of VPN connection that this customer gateway supports ( `ipsec.1` ).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customergateway.html#cfn-ec2-customergateway-type
	//
	Type *string `field:"required" json:"type" yaml:"type"`
	// For customer gateway devices that support BGP, specify the device's ASN.
	//
	// You must specify either `BgpAsn` or `BgpAsnExtended` when creating the customer gateway. If the ASN is larger than `2,147,483,647` , you must use `BgpAsnExtended` .
	//
	// Default: 65000
	//
	// Valid values: `1` to `2,147,483,647`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customergateway.html#cfn-ec2-customergateway-bgpasn
	//
	// Default: - 65000.
	//
	BgpAsn *float64 `field:"optional" json:"bgpAsn" yaml:"bgpAsn"`
	// For customer gateway devices that support BGP, specify the device's ASN.
	//
	// You must specify either `BgpAsn` or `BgpAsnExtended` when creating the customer gateway. If the ASN is larger than `2,147,483,647` , you must use `BgpAsnExtended` .
	//
	// Valid values: `2,147,483,648` to `4,294,967,295`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customergateway.html#cfn-ec2-customergateway-bgpasnextended
	//
	BgpAsnExtended *float64 `field:"optional" json:"bgpAsnExtended" yaml:"bgpAsnExtended"`
	// The Amazon Resource Name (ARN) for the customer gateway certificate.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customergateway.html#cfn-ec2-customergateway-certificatearn
	//
	CertificateArn *string `field:"optional" json:"certificateArn" yaml:"certificateArn"`
	// The name of customer gateway device.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customergateway.html#cfn-ec2-customergateway-devicename
	//
	DeviceName *string `field:"optional" json:"deviceName" yaml:"deviceName"`
	// One or more tags for the customer gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customergateway.html#cfn-ec2-customergateway-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnCustomerGateway`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCustomerGatewayProps := &CfnCustomerGatewayProps{
	IpAddress: jsii.String("ipAddress"),
	Type: jsii.String("type"),

	// the properties below are optional
	BgpAsn: jsii.Number(123),
	BgpAsnExtended: jsii.Number(123),
	CertificateArn: jsii.String("certificateArn"),
	DeviceName: jsii.String("deviceName"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customergateway.html

type CfnDHCPOptions

type CfnDHCPOptions interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IDHCPOptionsRef
	awscdk.ITaggable
	// The ID of the DHCP options set.
	AttrDhcpOptionsId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// A reference to a DHCPOptions resource.
	DhcpOptionsRef() *interfacesawsec2.DHCPOptionsReference
	// This value is used to complete unqualified DNS hostnames.
	DomainName() *string
	SetDomainName(val *string)
	// The IPv4 addresses of up to four domain name servers, or `AmazonProvidedDNS` .
	DomainNameServers() *[]*string
	SetDomainNameServers(val *[]*string)
	Env() *interfaces.ResourceEnvironment
	// A value (in seconds, minutes, hours, or years) for how frequently a running instance with an IPv6 assigned to it goes through DHCPv6 lease renewal.
	Ipv6AddressPreferredLeaseTime() *float64
	SetIpv6AddressPreferredLeaseTime(val *float64)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The IPv4 addresses of up to four NetBIOS name servers.
	NetbiosNameServers() *[]*string
	SetNetbiosNameServers(val *[]*string)
	// The NetBIOS node type (1, 2, 4, or 8).
	NetbiosNodeType() *float64
	SetNetbiosNodeType(val *float64)
	// The tree node.
	Node() constructs.Node
	// The IPv4 addresses of up to four Network Time Protocol (NTP) servers.
	NtpServers() *[]*string
	SetNtpServers(val *[]*string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// Any tags assigned to the DHCP options set.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a set of DHCP options for your VPC.

You must specify at least one of the following properties: `DomainNameServers` , `NetbiosNameServers` , `NtpServers` . If you specify `NetbiosNameServers` , you must specify `NetbiosNodeType` .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDHCPOptions := awscdk.Aws_ec2.NewCfnDHCPOptions(this, jsii.String("MyCfnDHCPOptions"), &CfnDHCPOptionsProps{
	DomainName: jsii.String("domainName"),
	DomainNameServers: []*string{
		jsii.String("domainNameServers"),
	},
	Ipv6AddressPreferredLeaseTime: jsii.Number(123),
	NetbiosNameServers: []*string{
		jsii.String("netbiosNameServers"),
	},
	NetbiosNodeType: jsii.Number(123),
	NtpServers: []*string{
		jsii.String("ntpServers"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcpoptions.html

func NewCfnDHCPOptions

func NewCfnDHCPOptions(scope constructs.Construct, id *string, props *CfnDHCPOptionsProps) CfnDHCPOptions

Create a new `AWS::EC2::DHCPOptions`.

type CfnDHCPOptionsProps

type CfnDHCPOptionsProps struct {
	// This value is used to complete unqualified DNS hostnames.
	//
	// If you're using AmazonProvidedDNS in `us-east-1` , specify `ec2.internal` . If you're using AmazonProvidedDNS in another Region, specify *region* . `compute.internal` (for example, `ap-northeast-1.compute.internal` ). Otherwise, specify a domain name (for example, *MyCompany.com* ).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcpoptions.html#cfn-ec2-dhcpoptions-domainname
	//
	DomainName *string `field:"optional" json:"domainName" yaml:"domainName"`
	// The IPv4 addresses of up to four domain name servers, or `AmazonProvidedDNS` .
	//
	// The default is `AmazonProvidedDNS` . To have your instance receive a custom DNS hostname as specified in `DomainName` , you must set this property to a custom DNS server.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcpoptions.html#cfn-ec2-dhcpoptions-domainnameservers
	//
	DomainNameServers *[]*string `field:"optional" json:"domainNameServers" yaml:"domainNameServers"`
	// A value (in seconds, minutes, hours, or years) for how frequently a running instance with an IPv6 assigned to it goes through DHCPv6 lease renewal.
	//
	// Acceptable values are between 140 and 2147483647 seconds (approximately 68 years). If no value is entered, the default lease time is 140 seconds. If you use long-term addressing for EC2 instances, you can increase the lease time and avoid frequent lease renewal requests. Lease renewal typically occurs when half of the lease time has elapsed.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcpoptions.html#cfn-ec2-dhcpoptions-ipv6addresspreferredleasetime
	//
	Ipv6AddressPreferredLeaseTime *float64 `field:"optional" json:"ipv6AddressPreferredLeaseTime" yaml:"ipv6AddressPreferredLeaseTime"`
	// The IPv4 addresses of up to four NetBIOS name servers.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcpoptions.html#cfn-ec2-dhcpoptions-netbiosnameservers
	//
	NetbiosNameServers *[]*string `field:"optional" json:"netbiosNameServers" yaml:"netbiosNameServers"`
	// The NetBIOS node type (1, 2, 4, or 8).
	//
	// We recommend that you specify 2 (broadcast and multicast are not currently supported).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcpoptions.html#cfn-ec2-dhcpoptions-netbiosnodetype
	//
	NetbiosNodeType *float64 `field:"optional" json:"netbiosNodeType" yaml:"netbiosNodeType"`
	// The IPv4 addresses of up to four Network Time Protocol (NTP) servers.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcpoptions.html#cfn-ec2-dhcpoptions-ntpservers
	//
	NtpServers *[]*string `field:"optional" json:"ntpServers" yaml:"ntpServers"`
	// Any tags assigned to the DHCP options set.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcpoptions.html#cfn-ec2-dhcpoptions-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnDHCPOptions`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDHCPOptionsProps := &CfnDHCPOptionsProps{
	DomainName: jsii.String("domainName"),
	DomainNameServers: []*string{
		jsii.String("domainNameServers"),
	},
	Ipv6AddressPreferredLeaseTime: jsii.Number(123),
	NetbiosNameServers: []*string{
		jsii.String("netbiosNameServers"),
	},
	NetbiosNodeType: jsii.Number(123),
	NtpServers: []*string{
		jsii.String("ntpServers"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcpoptions.html

type CfnEC2Fleet

type CfnEC2Fleet interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IEC2FleetRef
	// The ID of the EC2 Fleet.
	AttrFleetId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Reserved.
	Context() *string
	SetContext(val *string)
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// A reference to a EC2Fleet resource.
	Ec2FleetRef() *interfacesawsec2.EC2FleetReference
	Env() *interfaces.ResourceEnvironment
	// Indicates whether running instances should be terminated if the total target capacity of the EC2 Fleet is decreased below the current size of the EC2 Fleet.
	ExcessCapacityTerminationPolicy() *string
	SetExcessCapacityTerminationPolicy(val *string)
	// The configuration for the EC2 Fleet.
	LaunchTemplateConfigs() interface{}
	SetLaunchTemplateConfigs(val interface{})
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Describes the configuration of On-Demand Instances in an EC2 Fleet.
	OnDemandOptions() interface{}
	SetOnDemandOptions(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// Indicates whether EC2 Fleet should replace unhealthy Spot Instances.
	ReplaceUnhealthyInstances() interface{}
	SetReplaceUnhealthyInstances(val interface{})
	ReservedCapacityOptions() interface{}
	SetReservedCapacityOptions(val interface{})
	// Describes the configuration of Spot Instances in an EC2 Fleet.
	SpotOptions() interface{}
	SetSpotOptions(val interface{})
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The key-value pair for tagging the EC2 Fleet request on creation.
	//
	// For more information, see [Tag your resources](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources) .
	TagSpecifications() interface{}
	SetTagSpecifications(val interface{})
	// The number of units to request.
	TargetCapacitySpecification() interface{}
	SetTargetCapacitySpecification(val interface{})
	// Indicates whether running instances should be terminated when the EC2 Fleet expires.
	TerminateInstancesWithExpiration() interface{}
	SetTerminateInstancesWithExpiration(val interface{})
	// The fleet type.
	//
	// The default value is `maintain` .
	Type() *string
	SetType(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The start date and time of the request, in UTC format (for example, *YYYY* - *MM* - *DD* T *HH* : *MM* : *SS* Z).
	ValidFrom() *string
	SetValidFrom(val *string)
	// The end date and time of the request, in UTC format (for example, *YYYY* - *MM* - *DD* T *HH* : *MM* : *SS* Z).
	ValidUntil() *string
	SetValidUntil(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies the configuration information to launch a fleet--or group--of instances.

An EC2 Fleet can launch multiple instance types across multiple Availability Zones, using the On-Demand Instance, Reserved Instance, and Spot Instance purchasing models together. Using EC2 Fleet, you can define separate On-Demand and Spot capacity targets, specify the instance types that work best for your applications, and specify how Amazon EC2 should distribute your fleet capacity within each purchasing model. For more information, see [Launching an EC2 Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEC2Fleet := awscdk.Aws_ec2.NewCfnEC2Fleet(this, jsii.String("MyCfnEC2Fleet"), &CfnEC2FleetProps{
	LaunchTemplateConfigs: []interface{}{
		&FleetLaunchTemplateConfigRequestProperty{
			LaunchTemplateSpecification: &FleetLaunchTemplateSpecificationRequestProperty{
				Version: jsii.String("version"),

				// the properties below are optional
				LaunchTemplateId: jsii.String("launchTemplateId"),
				LaunchTemplateName: jsii.String("launchTemplateName"),
				LaunchTemplateSpecificationUserData: jsii.String("launchTemplateSpecificationUserData"),
			},
			Overrides: []interface{}{
				&FleetLaunchTemplateOverridesRequestProperty{
					AvailabilityZone: jsii.String("availabilityZone"),
					AvailabilityZoneId: jsii.String("availabilityZoneId"),
					BlockDeviceMappings: []interface{}{
						&BlockDeviceMappingProperty{
							DeviceName: jsii.String("deviceName"),
							Ebs: &EbsBlockDeviceProperty{
								DeleteOnTermination: jsii.Boolean(false),
								Encrypted: jsii.Boolean(false),
								Iops: jsii.Number(123),
								KmsKeyId: jsii.String("kmsKeyId"),
								SnapshotId: jsii.String("snapshotId"),
								VolumeSize: jsii.Number(123),
								VolumeType: jsii.String("volumeType"),
							},
							NoDevice: jsii.String("noDevice"),
							VirtualName: jsii.String("virtualName"),
						},
					},
					IamInstanceProfile: &IamInstanceProfileSpecificationProperty{
						Arn: jsii.String("arn"),
						Name: jsii.String("name"),
					},
					InstanceRequirements: &InstanceRequirementsRequestProperty{
						AcceleratorCount: &AcceleratorCountRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						AcceleratorManufacturers: []*string{
							jsii.String("acceleratorManufacturers"),
						},
						AcceleratorNames: []*string{
							jsii.String("acceleratorNames"),
						},
						AcceleratorTotalMemoryMiB: &AcceleratorTotalMemoryMiBRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						AcceleratorTypes: []*string{
							jsii.String("acceleratorTypes"),
						},
						AllowedInstanceTypes: []*string{
							jsii.String("allowedInstanceTypes"),
						},
						BareMetal: jsii.String("bareMetal"),
						BaselineEbsBandwidthMbps: &BaselineEbsBandwidthMbpsRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						BaselinePerformanceFactors: &BaselinePerformanceFactorsRequestProperty{
							Cpu: &CpuPerformanceFactorRequestProperty{
								References: []interface{}{
									&PerformanceFactorReferenceRequestProperty{
										InstanceFamily: jsii.String("instanceFamily"),
									},
								},
							},
						},
						BurstablePerformance: jsii.String("burstablePerformance"),
						CpuManufacturers: []*string{
							jsii.String("cpuManufacturers"),
						},
						ExcludedInstanceTypes: []*string{
							jsii.String("excludedInstanceTypes"),
						},
						InstanceGenerations: []*string{
							jsii.String("instanceGenerations"),
						},
						LocalStorage: jsii.String("localStorage"),
						LocalStorageTypes: []*string{
							jsii.String("localStorageTypes"),
						},
						MaxSpotPriceAsPercentageOfOptimalOnDemandPrice: jsii.Number(123),
						MemoryGiBPerVCpu: &MemoryGiBPerVCpuRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						MemoryMiB: &MemoryMiBRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						NetworkBandwidthGbps: &NetworkBandwidthGbpsRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						NetworkInterfaceCount: &NetworkInterfaceCountRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(123),
						RequireEncryptionInTransit: jsii.Boolean(false),
						RequireHibernateSupport: jsii.Boolean(false),
						SpotMaxPricePercentageOverLowestPrice: jsii.Number(123),
						TotalLocalStorageGb: &TotalLocalStorageGBRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						VCpuCount: &VCpuCountRangeRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
					},
					InstanceType: jsii.String("instanceType"),
					KeyName: jsii.String("keyName"),
					MaxPrice: jsii.String("maxPrice"),
					MetadataOptions: &InstanceMetadataOptionsRequestProperty{
						HttpEndpoint: jsii.String("httpEndpoint"),
						HttpPutResponseHopLimit: jsii.Number(123),
						HttpTokens: jsii.String("httpTokens"),
					},
					NetworkInterfaces: []interface{}{
						&NetworkInterfaceSpecificationRequestProperty{
							AssociatePublicIpAddress: jsii.Boolean(false),
							DeleteOnTermination: jsii.Boolean(false),
							Description: jsii.String("description"),
							DeviceIndex: jsii.Number(123),
							Groups: []*string{
								jsii.String("groups"),
							},
							InterfaceType: jsii.String("interfaceType"),
							Ipv6AddressCount: jsii.Number(123),
							Ipv6Addresses: []interface{}{
								&Ipv6AddressRequestProperty{
									Ipv6Address: jsii.String("ipv6Address"),
								},
							},
							NetworkCardIndex: jsii.Number(123),
							NetworkInterfaceId: jsii.String("networkInterfaceId"),
							PrivateIpAddress: jsii.String("privateIpAddress"),
							PrivateIpAddresses: []interface{}{
								&PrivateIpAddressSpecificationRequestProperty{
									Primary: jsii.Boolean(false),
									PrivateIpAddress: jsii.String("privateIpAddress"),
								},
							},
							SecondaryPrivateIpAddressCount: jsii.Number(123),
							SubnetId: jsii.String("subnetId"),
						},
					},
					Placement: &PlacementProperty{
						Affinity: jsii.String("affinity"),
						AvailabilityZone: jsii.String("availabilityZone"),
						GroupName: jsii.String("groupName"),
						HostId: jsii.String("hostId"),
						HostResourceGroupArn: jsii.String("hostResourceGroupArn"),
						PartitionNumber: jsii.Number(123),
						SpreadDomain: jsii.String("spreadDomain"),
						Tenancy: jsii.String("tenancy"),
					},
					Priority: jsii.Number(123),
					SubnetId: jsii.String("subnetId"),
					WeightedCapacity: jsii.Number(123),
				},
			},
		},
	},
	TargetCapacitySpecification: &TargetCapacitySpecificationRequestProperty{
		TotalTargetCapacity: jsii.Number(123),

		// the properties below are optional
		DefaultTargetCapacityType: jsii.String("defaultTargetCapacityType"),
		OnDemandTargetCapacity: jsii.Number(123),
		SpotTargetCapacity: jsii.Number(123),
		TargetCapacityUnitType: jsii.String("targetCapacityUnitType"),
	},

	// the properties below are optional
	Context: jsii.String("context"),
	ExcessCapacityTerminationPolicy: jsii.String("excessCapacityTerminationPolicy"),
	OnDemandOptions: &OnDemandOptionsRequestProperty{
		AllocationStrategy: jsii.String("allocationStrategy"),
		CapacityReservationOptions: &CapacityReservationOptionsRequestProperty{
			UsageStrategy: jsii.String("usageStrategy"),
		},
		MaxTotalPrice: jsii.String("maxTotalPrice"),
		MinTargetCapacity: jsii.Number(123),
		SingleAvailabilityZone: jsii.Boolean(false),
		SingleInstanceType: jsii.Boolean(false),
	},
	ReplaceUnhealthyInstances: jsii.Boolean(false),
	ReservedCapacityOptions: &ReservedCapacityOptionsRequestProperty{
		ReservationTypes: []*string{
			jsii.String("reservationTypes"),
		},
	},
	SpotOptions: &SpotOptionsRequestProperty{
		AllocationStrategy: jsii.String("allocationStrategy"),
		InstanceInterruptionBehavior: jsii.String("instanceInterruptionBehavior"),
		InstancePoolsToUseCount: jsii.Number(123),
		MaintenanceStrategies: &MaintenanceStrategiesProperty{
			CapacityRebalance: &CapacityRebalanceProperty{
				ReplacementStrategy: jsii.String("replacementStrategy"),
				TerminationDelay: jsii.Number(123),
			},
		},
		MaxTotalPrice: jsii.String("maxTotalPrice"),
		MinTargetCapacity: jsii.Number(123),
		SingleAvailabilityZone: jsii.Boolean(false),
		SingleInstanceType: jsii.Boolean(false),
	},
	TagSpecifications: []interface{}{
		&TagSpecificationProperty{
			ResourceType: jsii.String("resourceType"),
			Tags: []CfnTag{
				&CfnTag{
					Key: jsii.String("key"),
					Value: jsii.String("value"),
				},
			},
		},
	},
	TerminateInstancesWithExpiration: jsii.Boolean(false),
	Type: jsii.String("type"),
	ValidFrom: jsii.String("validFrom"),
	ValidUntil: jsii.String("validUntil"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html

func NewCfnEC2Fleet

func NewCfnEC2Fleet(scope constructs.Construct, id *string, props *CfnEC2FleetProps) CfnEC2Fleet

Create a new `AWS::EC2::EC2Fleet`.

type CfnEC2FleetProps

type CfnEC2FleetProps struct {
	// The configuration for the EC2 Fleet.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-launchtemplateconfigs
	//
	LaunchTemplateConfigs interface{} `field:"required" json:"launchTemplateConfigs" yaml:"launchTemplateConfigs"`
	// The number of units to request.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-targetcapacityspecification
	//
	TargetCapacitySpecification interface{} `field:"required" json:"targetCapacitySpecification" yaml:"targetCapacitySpecification"`
	// Reserved.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-context
	//
	Context *string `field:"optional" json:"context" yaml:"context"`
	// Indicates whether running instances should be terminated if the total target capacity of the EC2 Fleet is decreased below the current size of the EC2 Fleet.
	//
	// Supported only for fleets of type `maintain` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-excesscapacityterminationpolicy
	//
	ExcessCapacityTerminationPolicy *string `field:"optional" json:"excessCapacityTerminationPolicy" yaml:"excessCapacityTerminationPolicy"`
	// Describes the configuration of On-Demand Instances in an EC2 Fleet.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-ondemandoptions
	//
	OnDemandOptions interface{} `field:"optional" json:"onDemandOptions" yaml:"onDemandOptions"`
	// Indicates whether EC2 Fleet should replace unhealthy Spot Instances.
	//
	// Supported only for fleets of type `maintain` . For more information, see [EC2 Fleet health checks](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/manage-ec2-fleet.html#ec2-fleet-health-checks) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-replaceunhealthyinstances
	//
	ReplaceUnhealthyInstances interface{} `field:"optional" json:"replaceUnhealthyInstances" yaml:"replaceUnhealthyInstances"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-reservedcapacityoptions
	//
	ReservedCapacityOptions interface{} `field:"optional" json:"reservedCapacityOptions" yaml:"reservedCapacityOptions"`
	// Describes the configuration of Spot Instances in an EC2 Fleet.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-spotoptions
	//
	SpotOptions interface{} `field:"optional" json:"spotOptions" yaml:"spotOptions"`
	// The key-value pair for tagging the EC2 Fleet request on creation. For more information, see [Tag your resources](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources) .
	//
	// If the fleet type is `instant` , specify a resource type of `fleet` to tag the fleet or `instance` to tag the instances at launch.
	//
	// If the fleet type is `maintain` or `request` , specify a resource type of `fleet` to tag the fleet. You cannot specify a resource type of `instance` . To tag instances at launch, specify the tags in a [launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-tagspecifications
	//
	TagSpecifications interface{} `field:"optional" json:"tagSpecifications" yaml:"tagSpecifications"`
	// Indicates whether running instances should be terminated when the EC2 Fleet expires.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-terminateinstanceswithexpiration
	//
	TerminateInstancesWithExpiration interface{} `field:"optional" json:"terminateInstancesWithExpiration" yaml:"terminateInstancesWithExpiration"`
	// The fleet type. The default value is `maintain` .
	//
	// - `maintain` - The EC2 Fleet places an asynchronous request for your desired capacity, and continues to maintain your desired Spot capacity by replenishing interrupted Spot Instances.
	// - `request` - The EC2 Fleet places an asynchronous one-time request for your desired capacity, but does submit Spot requests in alternative capacity pools if Spot capacity is unavailable, and does not maintain Spot capacity if Spot Instances are interrupted.
	// - `instant` - The EC2 Fleet places a synchronous one-time request for your desired capacity, and returns errors for any instances that could not be launched.
	//
	// For more information, see [EC2 Fleet request types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-request-type.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-type
	//
	Type *string `field:"optional" json:"type" yaml:"type"`
	// The start date and time of the request, in UTC format (for example, *YYYY* - *MM* - *DD* T *HH* : *MM* : *SS* Z).
	//
	// The default is to start fulfilling the request immediately.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-validfrom
	//
	ValidFrom *string `field:"optional" json:"validFrom" yaml:"validFrom"`
	// The end date and time of the request, in UTC format (for example, *YYYY* - *MM* - *DD* T *HH* : *MM* : *SS* Z).
	//
	// At this point, no new EC2 Fleet requests are placed or able to fulfill the request. If no value is specified, the request remains until you cancel it.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-validuntil
	//
	ValidUntil *string `field:"optional" json:"validUntil" yaml:"validUntil"`
}

Properties for defining a `CfnEC2Fleet`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEC2FleetProps := &CfnEC2FleetProps{
	LaunchTemplateConfigs: []interface{}{
		&FleetLaunchTemplateConfigRequestProperty{
			LaunchTemplateSpecification: &FleetLaunchTemplateSpecificationRequestProperty{
				Version: jsii.String("version"),

				// the properties below are optional
				LaunchTemplateId: jsii.String("launchTemplateId"),
				LaunchTemplateName: jsii.String("launchTemplateName"),
				LaunchTemplateSpecificationUserData: jsii.String("launchTemplateSpecificationUserData"),
			},
			Overrides: []interface{}{
				&FleetLaunchTemplateOverridesRequestProperty{
					AvailabilityZone: jsii.String("availabilityZone"),
					AvailabilityZoneId: jsii.String("availabilityZoneId"),
					BlockDeviceMappings: []interface{}{
						&BlockDeviceMappingProperty{
							DeviceName: jsii.String("deviceName"),
							Ebs: &EbsBlockDeviceProperty{
								DeleteOnTermination: jsii.Boolean(false),
								Encrypted: jsii.Boolean(false),
								Iops: jsii.Number(123),
								KmsKeyId: jsii.String("kmsKeyId"),
								SnapshotId: jsii.String("snapshotId"),
								VolumeSize: jsii.Number(123),
								VolumeType: jsii.String("volumeType"),
							},
							NoDevice: jsii.String("noDevice"),
							VirtualName: jsii.String("virtualName"),
						},
					},
					IamInstanceProfile: &IamInstanceProfileSpecificationProperty{
						Arn: jsii.String("arn"),
						Name: jsii.String("name"),
					},
					InstanceRequirements: &InstanceRequirementsRequestProperty{
						AcceleratorCount: &AcceleratorCountRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						AcceleratorManufacturers: []*string{
							jsii.String("acceleratorManufacturers"),
						},
						AcceleratorNames: []*string{
							jsii.String("acceleratorNames"),
						},
						AcceleratorTotalMemoryMiB: &AcceleratorTotalMemoryMiBRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						AcceleratorTypes: []*string{
							jsii.String("acceleratorTypes"),
						},
						AllowedInstanceTypes: []*string{
							jsii.String("allowedInstanceTypes"),
						},
						BareMetal: jsii.String("bareMetal"),
						BaselineEbsBandwidthMbps: &BaselineEbsBandwidthMbpsRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						BaselinePerformanceFactors: &BaselinePerformanceFactorsRequestProperty{
							Cpu: &CpuPerformanceFactorRequestProperty{
								References: []interface{}{
									&PerformanceFactorReferenceRequestProperty{
										InstanceFamily: jsii.String("instanceFamily"),
									},
								},
							},
						},
						BurstablePerformance: jsii.String("burstablePerformance"),
						CpuManufacturers: []*string{
							jsii.String("cpuManufacturers"),
						},
						ExcludedInstanceTypes: []*string{
							jsii.String("excludedInstanceTypes"),
						},
						InstanceGenerations: []*string{
							jsii.String("instanceGenerations"),
						},
						LocalStorage: jsii.String("localStorage"),
						LocalStorageTypes: []*string{
							jsii.String("localStorageTypes"),
						},
						MaxSpotPriceAsPercentageOfOptimalOnDemandPrice: jsii.Number(123),
						MemoryGiBPerVCpu: &MemoryGiBPerVCpuRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						MemoryMiB: &MemoryMiBRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						NetworkBandwidthGbps: &NetworkBandwidthGbpsRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						NetworkInterfaceCount: &NetworkInterfaceCountRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(123),
						RequireEncryptionInTransit: jsii.Boolean(false),
						RequireHibernateSupport: jsii.Boolean(false),
						SpotMaxPricePercentageOverLowestPrice: jsii.Number(123),
						TotalLocalStorageGb: &TotalLocalStorageGBRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
						VCpuCount: &VCpuCountRangeRequestProperty{
							Max: jsii.Number(123),
							Min: jsii.Number(123),
						},
					},
					InstanceType: jsii.String("instanceType"),
					KeyName: jsii.String("keyName"),
					MaxPrice: jsii.String("maxPrice"),
					MetadataOptions: &InstanceMetadataOptionsRequestProperty{
						HttpEndpoint: jsii.String("httpEndpoint"),
						HttpPutResponseHopLimit: jsii.Number(123),
						HttpTokens: jsii.String("httpTokens"),
					},
					NetworkInterfaces: []interface{}{
						&NetworkInterfaceSpecificationRequestProperty{
							AssociatePublicIpAddress: jsii.Boolean(false),
							DeleteOnTermination: jsii.Boolean(false),
							Description: jsii.String("description"),
							DeviceIndex: jsii.Number(123),
							Groups: []*string{
								jsii.String("groups"),
							},
							InterfaceType: jsii.String("interfaceType"),
							Ipv6AddressCount: jsii.Number(123),
							Ipv6Addresses: []interface{}{
								&Ipv6AddressRequestProperty{
									Ipv6Address: jsii.String("ipv6Address"),
								},
							},
							NetworkCardIndex: jsii.Number(123),
							NetworkInterfaceId: jsii.String("networkInterfaceId"),
							PrivateIpAddress: jsii.String("privateIpAddress"),
							PrivateIpAddresses: []interface{}{
								&PrivateIpAddressSpecificationRequestProperty{
									Primary: jsii.Boolean(false),
									PrivateIpAddress: jsii.String("privateIpAddress"),
								},
							},
							SecondaryPrivateIpAddressCount: jsii.Number(123),
							SubnetId: jsii.String("subnetId"),
						},
					},
					Placement: &PlacementProperty{
						Affinity: jsii.String("affinity"),
						AvailabilityZone: jsii.String("availabilityZone"),
						GroupName: jsii.String("groupName"),
						HostId: jsii.String("hostId"),
						HostResourceGroupArn: jsii.String("hostResourceGroupArn"),
						PartitionNumber: jsii.Number(123),
						SpreadDomain: jsii.String("spreadDomain"),
						Tenancy: jsii.String("tenancy"),
					},
					Priority: jsii.Number(123),
					SubnetId: jsii.String("subnetId"),
					WeightedCapacity: jsii.Number(123),
				},
			},
		},
	},
	TargetCapacitySpecification: &TargetCapacitySpecificationRequestProperty{
		TotalTargetCapacity: jsii.Number(123),

		// the properties below are optional
		DefaultTargetCapacityType: jsii.String("defaultTargetCapacityType"),
		OnDemandTargetCapacity: jsii.Number(123),
		SpotTargetCapacity: jsii.Number(123),
		TargetCapacityUnitType: jsii.String("targetCapacityUnitType"),
	},

	// the properties below are optional
	Context: jsii.String("context"),
	ExcessCapacityTerminationPolicy: jsii.String("excessCapacityTerminationPolicy"),
	OnDemandOptions: &OnDemandOptionsRequestProperty{
		AllocationStrategy: jsii.String("allocationStrategy"),
		CapacityReservationOptions: &CapacityReservationOptionsRequestProperty{
			UsageStrategy: jsii.String("usageStrategy"),
		},
		MaxTotalPrice: jsii.String("maxTotalPrice"),
		MinTargetCapacity: jsii.Number(123),
		SingleAvailabilityZone: jsii.Boolean(false),
		SingleInstanceType: jsii.Boolean(false),
	},
	ReplaceUnhealthyInstances: jsii.Boolean(false),
	ReservedCapacityOptions: &ReservedCapacityOptionsRequestProperty{
		ReservationTypes: []*string{
			jsii.String("reservationTypes"),
		},
	},
	SpotOptions: &SpotOptionsRequestProperty{
		AllocationStrategy: jsii.String("allocationStrategy"),
		InstanceInterruptionBehavior: jsii.String("instanceInterruptionBehavior"),
		InstancePoolsToUseCount: jsii.Number(123),
		MaintenanceStrategies: &MaintenanceStrategiesProperty{
			CapacityRebalance: &CapacityRebalanceProperty{
				ReplacementStrategy: jsii.String("replacementStrategy"),
				TerminationDelay: jsii.Number(123),
			},
		},
		MaxTotalPrice: jsii.String("maxTotalPrice"),
		MinTargetCapacity: jsii.Number(123),
		SingleAvailabilityZone: jsii.Boolean(false),
		SingleInstanceType: jsii.Boolean(false),
	},
	TagSpecifications: []interface{}{
		&TagSpecificationProperty{
			ResourceType: jsii.String("resourceType"),
			Tags: []CfnTag{
				&CfnTag{
					Key: jsii.String("key"),
					Value: jsii.String("value"),
				},
			},
		},
	},
	TerminateInstancesWithExpiration: jsii.Boolean(false),
	Type: jsii.String("type"),
	ValidFrom: jsii.String("validFrom"),
	ValidUntil: jsii.String("validUntil"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html

type CfnEC2Fleet_AcceleratorCountRequestProperty

type CfnEC2Fleet_AcceleratorCountRequestProperty struct {
	// The maximum number of accelerators.
	//
	// To specify no maximum limit, omit this parameter. To exclude accelerator-enabled instance types, set `Max` to `0` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-acceleratorcountrequest.html#cfn-ec2-ec2fleet-acceleratorcountrequest-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum number of accelerators.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-acceleratorcountrequest.html#cfn-ec2-ec2fleet-acceleratorcountrequest-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.

To exclude accelerator-enabled instance types, set `Max` to `0` .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

acceleratorCountRequestProperty := &AcceleratorCountRequestProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-acceleratorcountrequest.html

type CfnEC2Fleet_AcceleratorTotalMemoryMiBRequestProperty

type CfnEC2Fleet_AcceleratorTotalMemoryMiBRequestProperty struct {
	// The maximum amount of accelerator memory, in MiB.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-acceleratortotalmemorymibrequest.html#cfn-ec2-ec2fleet-acceleratortotalmemorymibrequest-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of accelerator memory, in MiB.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-acceleratortotalmemorymibrequest.html#cfn-ec2-ec2fleet-acceleratortotalmemorymibrequest-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of total accelerator memory, in MiB.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

acceleratorTotalMemoryMiBRequestProperty := &AcceleratorTotalMemoryMiBRequestProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-acceleratortotalmemorymibrequest.html

type CfnEC2Fleet_BaselineEbsBandwidthMbpsRequestProperty

type CfnEC2Fleet_BaselineEbsBandwidthMbpsRequestProperty struct {
	// The maximum baseline bandwidth, in Mbps.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-baselineebsbandwidthmbpsrequest.html#cfn-ec2-ec2fleet-baselineebsbandwidthmbpsrequest-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum baseline bandwidth, in Mbps.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-baselineebsbandwidthmbpsrequest.html#cfn-ec2-ec2fleet-baselineebsbandwidthmbpsrequest-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps.

For more information, see [Amazon EBS–optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

baselineEbsBandwidthMbpsRequestProperty := &BaselineEbsBandwidthMbpsRequestProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-baselineebsbandwidthmbpsrequest.html

type CfnEC2Fleet_BaselinePerformanceFactorsRequestProperty added in v2.174.1

type CfnEC2Fleet_BaselinePerformanceFactorsRequestProperty struct {
	// The CPU performance to consider, using an instance family as the baseline reference.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-baselineperformancefactorsrequest.html#cfn-ec2-ec2fleet-baselineperformancefactorsrequest-cpu
	//
	Cpu interface{} `field:"optional" json:"cpu" yaml:"cpu"`
}

The baseline performance to consider, using an instance family as a baseline reference.

The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application.

Currently, this parameter only supports CPU performance as a baseline performance factor. For example, specifying `c6i` would use the CPU performance of the `c6i` family as the baseline reference.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

baselinePerformanceFactorsRequestProperty := &BaselinePerformanceFactorsRequestProperty{
	Cpu: &CpuPerformanceFactorRequestProperty{
		References: []interface{}{
			&PerformanceFactorReferenceRequestProperty{
				InstanceFamily: jsii.String("instanceFamily"),
			},
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-baselineperformancefactorsrequest.html

type CfnEC2Fleet_BlockDeviceMappingProperty added in v2.201.0

type CfnEC2Fleet_BlockDeviceMappingProperty struct {
	// The device name.
	//
	// For available device names, see [Device names for volumes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-blockdevicemapping.html#cfn-ec2-ec2fleet-blockdevicemapping-devicename
	//
	DeviceName *string `field:"optional" json:"deviceName" yaml:"deviceName"`
	// Parameters used to automatically set up EBS volumes when the instance is launched.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-blockdevicemapping.html#cfn-ec2-ec2fleet-blockdevicemapping-ebs
	//
	Ebs interface{} `field:"optional" json:"ebs" yaml:"ebs"`
	// To omit the device from the block device mapping, specify an empty string.
	//
	// When this property is specified, the device is removed from the block device mapping regardless of the assigned value.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-blockdevicemapping.html#cfn-ec2-ec2fleet-blockdevicemapping-nodevice
	//
	NoDevice *string `field:"optional" json:"noDevice" yaml:"noDevice"`
	// The virtual device name ( `ephemeral` N).
	//
	// Instance store volumes are numbered starting from 0. An instance type with 2 available instance store volumes can specify mappings for `ephemeral0` and `ephemeral1` . The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume.
	//
	// NVMe instance store volumes are automatically enumerated and assigned a device name. Including them in your block device mapping has no effect.
	//
	// Constraints: For M3 instances, you must specify instance store volumes in the block device mapping for the instance. When you launch an M3 instance, we ignore any instance store volumes specified in the block device mapping for the AMI.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-blockdevicemapping.html#cfn-ec2-ec2fleet-blockdevicemapping-virtualname
	//
	VirtualName *string `field:"optional" json:"virtualName" yaml:"virtualName"`
}

Describes a block device mapping, which defines the EBS volumes and instance store volumes to attach to an instance at launch.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

blockDeviceMappingProperty := &BlockDeviceMappingProperty{
	DeviceName: jsii.String("deviceName"),
	Ebs: &EbsBlockDeviceProperty{
		DeleteOnTermination: jsii.Boolean(false),
		Encrypted: jsii.Boolean(false),
		Iops: jsii.Number(123),
		KmsKeyId: jsii.String("kmsKeyId"),
		SnapshotId: jsii.String("snapshotId"),
		VolumeSize: jsii.Number(123),
		VolumeType: jsii.String("volumeType"),
	},
	NoDevice: jsii.String("noDevice"),
	VirtualName: jsii.String("virtualName"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-blockdevicemapping.html

type CfnEC2Fleet_CapacityRebalanceProperty

type CfnEC2Fleet_CapacityRebalanceProperty struct {
	// The replacement strategy to use. Only available for fleets of type `maintain` .
	//
	// `launch` - EC2 Fleet launches a replacement Spot Instance when a rebalance notification is emitted for an existing Spot Instance in the fleet. EC2 Fleet does not terminate the instances that receive a rebalance notification. You can terminate the old instances, or you can leave them running. You are charged for all instances while they are running.
	//
	// `launch-before-terminate` - EC2 Fleet launches a replacement Spot Instance when a rebalance notification is emitted for an existing Spot Instance in the fleet, and then, after a delay that you specify (in `TerminationDelay` ), terminates the instances that received a rebalance notification.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityrebalance.html#cfn-ec2-ec2fleet-capacityrebalance-replacementstrategy
	//
	ReplacementStrategy *string `field:"optional" json:"replacementStrategy" yaml:"replacementStrategy"`
	// The amount of time (in seconds) that Amazon EC2 waits before terminating the old Spot Instance after launching a new replacement Spot Instance.
	//
	// Required when `ReplacementStrategy` is set to `launch-before-terminate` .
	//
	// Not valid when `ReplacementStrategy` is set to `launch` .
	//
	// Valid values: Minimum value of `120` seconds. Maximum value of `7200` seconds.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityrebalance.html#cfn-ec2-ec2fleet-capacityrebalance-terminationdelay
	//
	TerminationDelay *float64 `field:"optional" json:"terminationDelay" yaml:"terminationDelay"`
}

The Spot Instance replacement strategy to use when Amazon EC2 emits a rebalance notification signal that your Spot Instance is at an elevated risk of being interrupted.

For more information, see [Capacity rebalancing](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-capacity-rebalance.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

capacityRebalanceProperty := &CapacityRebalanceProperty{
	ReplacementStrategy: jsii.String("replacementStrategy"),
	TerminationDelay: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityrebalance.html

type CfnEC2Fleet_CapacityReservationOptionsRequestProperty

type CfnEC2Fleet_CapacityReservationOptionsRequestProperty struct {
	// Indicates whether to use unused Capacity Reservations for fulfilling On-Demand capacity.
	//
	// If you specify `use-capacity-reservations-first` , the fleet uses unused Capacity Reservations to fulfill On-Demand capacity up to the target On-Demand capacity. If multiple instance pools have unused Capacity Reservations, the On-Demand allocation strategy ( `lowest-price` or `prioritized` ) is applied. If the number of unused Capacity Reservations is less than the On-Demand target capacity, the remaining On-Demand target capacity is launched according to the On-Demand allocation strategy ( `lowest-price` or `prioritized` ).
	//
	// If you do not specify a value, the fleet fulfils the On-Demand capacity according to the chosen On-Demand allocation strategy.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html#cfn-ec2-ec2fleet-capacityreservationoptionsrequest-usagestrategy
	//
	UsageStrategy *string `field:"optional" json:"usageStrategy" yaml:"usageStrategy"`
}

Describes the strategy for using unused Capacity Reservations for fulfilling On-Demand capacity.

> This strategy can only be used if the EC2 Fleet is of type `instant` .

For more information about Capacity Reservations, see [On-Demand Capacity Reservations](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html) in the *Amazon EC2 User Guide* . For examples of using Capacity Reservations in an EC2 Fleet, see [EC2 Fleet example configurations](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

capacityReservationOptionsRequestProperty := &CapacityReservationOptionsRequestProperty{
	UsageStrategy: jsii.String("usageStrategy"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html

type CfnEC2Fleet_CpuPerformanceFactorRequestProperty added in v2.174.1

type CfnEC2Fleet_CpuPerformanceFactorRequestProperty struct {
	// Specify an instance family to use as the baseline reference for CPU performance.
	//
	// All instance types that match your specified attributes will be compared against the CPU performance of the referenced instance family, regardless of CPU manufacturer or architecture differences.
	//
	// > Currently, only one instance family can be specified in the list.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-cpuperformancefactorrequest.html#cfn-ec2-ec2fleet-cpuperformancefactorrequest-references
	//
	References interface{} `field:"optional" json:"references" yaml:"references"`
}

The CPU performance to consider, using an instance family as the baseline reference.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cpuPerformanceFactorRequestProperty := &CpuPerformanceFactorRequestProperty{
	References: []interface{}{
		&PerformanceFactorReferenceRequestProperty{
			InstanceFamily: jsii.String("instanceFamily"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-cpuperformancefactorrequest.html

type CfnEC2Fleet_EbsBlockDeviceProperty added in v2.201.0

type CfnEC2Fleet_EbsBlockDeviceProperty struct {
	// Indicates whether the EBS volume is deleted on instance termination.
	//
	// For more information, see [Preserving Amazon EBS volumes on instance termination](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#preserving-volumes-on-termination) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ebsblockdevice.html#cfn-ec2-ec2fleet-ebsblockdevice-deleteontermination
	//
	DeleteOnTermination interface{} `field:"optional" json:"deleteOnTermination" yaml:"deleteOnTermination"`
	// Indicates whether the encryption state of an EBS volume is changed while being restored from a backing snapshot.
	//
	// The effect of setting the encryption state to `true` depends on the volume origin (new or from a snapshot), starting encryption state, ownership, and whether encryption by default is enabled. For more information, see [Amazon EBS encryption](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html#encryption-parameters) in the *Amazon EBS User Guide* .
	//
	// In no case can you remove encryption from an encrypted volume.
	//
	// Encrypted volumes can only be attached to instances that support Amazon EBS encryption. For more information, see [Supported instance types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption-requirements.html#ebs-encryption_supported_instances) .
	//
	// - If you are creating a block device mapping for a *new (empty) volume* , you can include this parameter, and specify either `true` for an encrypted volume, or `false` for an unencrypted volume. If you omit this parameter, it defaults to `false` (unencrypted).
	// - If you are creating a block device mapping from an *existing encrypted or unencrypted snapshot* , you must omit this parameter. If you include this parameter, the request will fail, regardless of the value that you specify.
	// - If you are creating a block device mapping from an *existing unencrypted volume* , you can include this parameter, but you must specify `false` . If you specify `true` , the request will fail. In this case, we recommend that you omit the parameter.
	// - If you are creating a block device mapping from an *existing encrypted volume* , you can include this parameter, and specify either `true` or `false` . However, if you specify `false` , the parameter is ignored and the block device mapping is always encrypted. In this case, we recommend that you omit the parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ebsblockdevice.html#cfn-ec2-ec2fleet-ebsblockdevice-encrypted
	//
	Encrypted interface{} `field:"optional" json:"encrypted" yaml:"encrypted"`
	// The number of I/O operations per second (IOPS).
	//
	// For `gp3` , `io1` , and `io2` volumes, this represents the number of IOPS that are provisioned for the volume. For `gp2` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.
	//
	// The following are the supported values for each volume type:
	//
	// - `gp3` : 3,000 - 80,000 IOPS
	// - `io1` : 100 - 64,000 IOPS
	// - `io2` : 100 - 256,000 IOPS
	//
	// For `io2` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances) . On other instances, you can achieve performance up to 32,000 IOPS.
	//
	// This parameter is required for `io1` and `io2` volumes. The default for `gp3` volumes is 3,000 IOPS.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ebsblockdevice.html#cfn-ec2-ec2fleet-ebsblockdevice-iops
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// Identifier (key ID, key alias, key ARN, or alias ARN) of the customer managed KMS key to use for EBS encryption.
	//
	// This parameter is only supported on `BlockDeviceMapping` objects called by [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) , [RequestSpotFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html) , and [RequestSpotInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ebsblockdevice.html#cfn-ec2-ec2fleet-ebsblockdevice-kmskeyid
	//
	KmsKeyId *string `field:"optional" json:"kmsKeyId" yaml:"kmsKeyId"`
	// The ID of the snapshot.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ebsblockdevice.html#cfn-ec2-ec2fleet-ebsblockdevice-snapshotid
	//
	SnapshotId *string `field:"optional" json:"snapshotId" yaml:"snapshotId"`
	// The size of the volume, in GiBs.
	//
	// You must specify either a snapshot ID or a volume size. If you specify a snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the snapshot size.
	//
	// The following are the supported sizes for each volume type:
	//
	// - `gp2` : 1 - 16,384 GiB
	// - `gp3` : 1 - 65,536 GiB
	// - `io1` : 4 - 16,384 GiB
	// - `io2` : 4 - 65,536 GiB
	// - `st1` and `sc1` : 125 - 16,384 GiB
	// - `standard` : 1 - 1024 GiB.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ebsblockdevice.html#cfn-ec2-ec2fleet-ebsblockdevice-volumesize
	//
	VolumeSize *float64 `field:"optional" json:"volumeSize" yaml:"volumeSize"`
	// The volume type.
	//
	// For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) in the *Amazon EBS User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ebsblockdevice.html#cfn-ec2-ec2fleet-ebsblockdevice-volumetype
	//
	VolumeType *string `field:"optional" json:"volumeType" yaml:"volumeType"`
}

Describes a block device for an EBS volume.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ebsBlockDeviceProperty := &EbsBlockDeviceProperty{
	DeleteOnTermination: jsii.Boolean(false),
	Encrypted: jsii.Boolean(false),
	Iops: jsii.Number(123),
	KmsKeyId: jsii.String("kmsKeyId"),
	SnapshotId: jsii.String("snapshotId"),
	VolumeSize: jsii.Number(123),
	VolumeType: jsii.String("volumeType"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ebsblockdevice.html

type CfnEC2Fleet_FleetLaunchTemplateConfigRequestProperty

type CfnEC2Fleet_FleetLaunchTemplateConfigRequestProperty struct {
	// The launch template to use.
	//
	// You must specify either the launch template ID or launch template name in the request.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-launchtemplatespecification
	//
	LaunchTemplateSpecification interface{} `field:"optional" json:"launchTemplateSpecification" yaml:"launchTemplateSpecification"`
	// Any parameters that you specify override the same parameters in the launch template.
	//
	// For fleets of type `request` and `maintain` , a maximum of 300 items is allowed across all launch templates.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-overrides
	//
	Overrides interface{} `field:"optional" json:"overrides" yaml:"overrides"`
}

Specifies a launch template and overrides for an EC2 Fleet.

`FleetLaunchTemplateConfigRequest` is a property of the [AWS::EC2::EC2Fleet](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

fleetLaunchTemplateConfigRequestProperty := &FleetLaunchTemplateConfigRequestProperty{
	LaunchTemplateSpecification: &FleetLaunchTemplateSpecificationRequestProperty{
		Version: jsii.String("version"),

		// the properties below are optional
		LaunchTemplateId: jsii.String("launchTemplateId"),
		LaunchTemplateName: jsii.String("launchTemplateName"),
		LaunchTemplateSpecificationUserData: jsii.String("launchTemplateSpecificationUserData"),
	},
	Overrides: []interface{}{
		&FleetLaunchTemplateOverridesRequestProperty{
			AvailabilityZone: jsii.String("availabilityZone"),
			AvailabilityZoneId: jsii.String("availabilityZoneId"),
			BlockDeviceMappings: []interface{}{
				&BlockDeviceMappingProperty{
					DeviceName: jsii.String("deviceName"),
					Ebs: &EbsBlockDeviceProperty{
						DeleteOnTermination: jsii.Boolean(false),
						Encrypted: jsii.Boolean(false),
						Iops: jsii.Number(123),
						KmsKeyId: jsii.String("kmsKeyId"),
						SnapshotId: jsii.String("snapshotId"),
						VolumeSize: jsii.Number(123),
						VolumeType: jsii.String("volumeType"),
					},
					NoDevice: jsii.String("noDevice"),
					VirtualName: jsii.String("virtualName"),
				},
			},
			IamInstanceProfile: &IamInstanceProfileSpecificationProperty{
				Arn: jsii.String("arn"),
				Name: jsii.String("name"),
			},
			InstanceRequirements: &InstanceRequirementsRequestProperty{
				AcceleratorCount: &AcceleratorCountRequestProperty{
					Max: jsii.Number(123),
					Min: jsii.Number(123),
				},
				AcceleratorManufacturers: []*string{
					jsii.String("acceleratorManufacturers"),
				},
				AcceleratorNames: []*string{
					jsii.String("acceleratorNames"),
				},
				AcceleratorTotalMemoryMiB: &AcceleratorTotalMemoryMiBRequestProperty{
					Max: jsii.Number(123),
					Min: jsii.Number(123),
				},
				AcceleratorTypes: []*string{
					jsii.String("acceleratorTypes"),
				},
				AllowedInstanceTypes: []*string{
					jsii.String("allowedInstanceTypes"),
				},
				BareMetal: jsii.String("bareMetal"),
				BaselineEbsBandwidthMbps: &BaselineEbsBandwidthMbpsRequestProperty{
					Max: jsii.Number(123),
					Min: jsii.Number(123),
				},
				BaselinePerformanceFactors: &BaselinePerformanceFactorsRequestProperty{
					Cpu: &CpuPerformanceFactorRequestProperty{
						References: []interface{}{
							&PerformanceFactorReferenceRequestProperty{
								InstanceFamily: jsii.String("instanceFamily"),
							},
						},
					},
				},
				BurstablePerformance: jsii.String("burstablePerformance"),
				CpuManufacturers: []*string{
					jsii.String("cpuManufacturers"),
				},
				ExcludedInstanceTypes: []*string{
					jsii.String("excludedInstanceTypes"),
				},
				InstanceGenerations: []*string{
					jsii.String("instanceGenerations"),
				},
				LocalStorage: jsii.String("localStorage"),
				LocalStorageTypes: []*string{
					jsii.String("localStorageTypes"),
				},
				MaxSpotPriceAsPercentageOfOptimalOnDemandPrice: jsii.Number(123),
				MemoryGiBPerVCpu: &MemoryGiBPerVCpuRequestProperty{
					Max: jsii.Number(123),
					Min: jsii.Number(123),
				},
				MemoryMiB: &MemoryMiBRequestProperty{
					Max: jsii.Number(123),
					Min: jsii.Number(123),
				},
				NetworkBandwidthGbps: &NetworkBandwidthGbpsRequestProperty{
					Max: jsii.Number(123),
					Min: jsii.Number(123),
				},
				NetworkInterfaceCount: &NetworkInterfaceCountRequestProperty{
					Max: jsii.Number(123),
					Min: jsii.Number(123),
				},
				OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(123),
				RequireEncryptionInTransit: jsii.Boolean(false),
				RequireHibernateSupport: jsii.Boolean(false),
				SpotMaxPricePercentageOverLowestPrice: jsii.Number(123),
				TotalLocalStorageGb: &TotalLocalStorageGBRequestProperty{
					Max: jsii.Number(123),
					Min: jsii.Number(123),
				},
				VCpuCount: &VCpuCountRangeRequestProperty{
					Max: jsii.Number(123),
					Min: jsii.Number(123),
				},
			},
			InstanceType: jsii.String("instanceType"),
			KeyName: jsii.String("keyName"),
			MaxPrice: jsii.String("maxPrice"),
			MetadataOptions: &InstanceMetadataOptionsRequestProperty{
				HttpEndpoint: jsii.String("httpEndpoint"),
				HttpPutResponseHopLimit: jsii.Number(123),
				HttpTokens: jsii.String("httpTokens"),
			},
			NetworkInterfaces: []interface{}{
				&NetworkInterfaceSpecificationRequestProperty{
					AssociatePublicIpAddress: jsii.Boolean(false),
					DeleteOnTermination: jsii.Boolean(false),
					Description: jsii.String("description"),
					DeviceIndex: jsii.Number(123),
					Groups: []*string{
						jsii.String("groups"),
					},
					InterfaceType: jsii.String("interfaceType"),
					Ipv6AddressCount: jsii.Number(123),
					Ipv6Addresses: []interface{}{
						&Ipv6AddressRequestProperty{
							Ipv6Address: jsii.String("ipv6Address"),
						},
					},
					NetworkCardIndex: jsii.Number(123),
					NetworkInterfaceId: jsii.String("networkInterfaceId"),
					PrivateIpAddress: jsii.String("privateIpAddress"),
					PrivateIpAddresses: []interface{}{
						&PrivateIpAddressSpecificationRequestProperty{
							Primary: jsii.Boolean(false),
							PrivateIpAddress: jsii.String("privateIpAddress"),
						},
					},
					SecondaryPrivateIpAddressCount: jsii.Number(123),
					SubnetId: jsii.String("subnetId"),
				},
			},
			Placement: &PlacementProperty{
				Affinity: jsii.String("affinity"),
				AvailabilityZone: jsii.String("availabilityZone"),
				GroupName: jsii.String("groupName"),
				HostId: jsii.String("hostId"),
				HostResourceGroupArn: jsii.String("hostResourceGroupArn"),
				PartitionNumber: jsii.Number(123),
				SpreadDomain: jsii.String("spreadDomain"),
				Tenancy: jsii.String("tenancy"),
			},
			Priority: jsii.Number(123),
			SubnetId: jsii.String("subnetId"),
			WeightedCapacity: jsii.Number(123),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html

type CfnEC2Fleet_FleetLaunchTemplateOverridesRequestProperty

type CfnEC2Fleet_FleetLaunchTemplateOverridesRequestProperty struct {
	// The Availability Zone in which to launch the instances. For example, `us-east-2a` .
	//
	// Either `AvailabilityZone` or `AvailabilityZoneId` must be specified in the request, but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-availabilityzone
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The ID of the Availability Zone in which to launch the instances. For example, `use2-az1` .
	//
	// Either `AvailabilityZone` or `AvailabilityZoneId` must be specified in the request, but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-availabilityzoneid
	//
	AvailabilityZoneId *string `field:"optional" json:"availabilityZoneId" yaml:"availabilityZoneId"`
	// The block device mappings, which define the EBS volumes and instance store volumes to attach to the instance at launch.
	//
	// Supported only for fleets of type `instant` .
	//
	// For more information, see [Block device mappings for volumes on Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-blockdevicemappings
	//
	BlockDeviceMappings interface{} `field:"optional" json:"blockDeviceMappings" yaml:"blockDeviceMappings"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-iaminstanceprofile
	//
	IamInstanceProfile interface{} `field:"optional" json:"iamInstanceProfile" yaml:"iamInstanceProfile"`
	// The attributes for the instance types.
	//
	// When you specify instance attributes, Amazon EC2 will identify instance types with those attributes.
	//
	// > If you specify `InstanceRequirements` , you can't specify `InstanceType` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-instancerequirements
	//
	InstanceRequirements interface{} `field:"optional" json:"instanceRequirements" yaml:"instanceRequirements"`
	// The instance type.
	//
	// `mac1.metal` is not supported as a launch template override.
	//
	// > If you specify `InstanceType` , you can't specify `InstanceRequirements` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-instancetype
	//
	InstanceType *string `field:"optional" json:"instanceType" yaml:"instanceType"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-keyname
	//
	KeyName *string `field:"optional" json:"keyName" yaml:"keyName"`
	// The maximum price per unit hour that you are willing to pay for a Spot Instance.
	//
	// We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price.
	//
	// > If you specify a maximum price, your instances will be interrupted more frequently than if you do not specify this parameter.
	// >
	// > If you specify a maximum price, it must be more than USD $0.001. Specifying a value below USD $0.001 will result in an `InvalidParameterValue` error message.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-maxprice
	//
	MaxPrice *string `field:"optional" json:"maxPrice" yaml:"maxPrice"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-metadataoptions
	//
	MetadataOptions interface{} `field:"optional" json:"metadataOptions" yaml:"metadataOptions"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-networkinterfaces
	//
	NetworkInterfaces interface{} `field:"optional" json:"networkInterfaces" yaml:"networkInterfaces"`
	// The location where the instance launched, if applicable.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-placement
	//
	Placement interface{} `field:"optional" json:"placement" yaml:"placement"`
	// The priority for the launch template override. The highest priority is launched first.
	//
	// If the On-Demand `AllocationStrategy` is set to `prioritized` , EC2 Fleet uses priority to determine which launch template override to use first in fulfilling On-Demand capacity.
	//
	// If the Spot `AllocationStrategy` is set to `capacity-optimized-prioritized` , EC2 Fleet uses priority on a best-effort basis to determine which launch template override to use in fulfilling Spot capacity, but optimizes for capacity first.
	//
	// Valid values are whole numbers starting at `0` . The lower the number, the higher the priority. If no number is set, the launch template override has the lowest priority. You can set the same priority for different launch template overrides.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-priority
	//
	Priority *float64 `field:"optional" json:"priority" yaml:"priority"`
	// The IDs of the subnets in which to launch the instances.
	//
	// Separate multiple subnet IDs using commas (for example, `subnet-1234abcdeexample1, subnet-0987cdef6example2` ). A request of type `instant` can have only one subnet ID.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-subnetid
	//
	SubnetId *string `field:"optional" json:"subnetId" yaml:"subnetId"`
	// The number of units provided by the specified instance type.
	//
	// These are the same units that you chose to set the target capacity in terms of instances, or a performance characteristic such as vCPUs, memory, or I/O.
	//
	// If the target capacity divided by this value is not a whole number, Amazon EC2 rounds the number of instances to the next whole number. If this value is not specified, the default is 1.
	//
	// > When specifying weights, the price used in the `lowest-price` and `price-capacity-optimized` allocation strategies is per *unit* hour (where the instance price is divided by the specified weight). However, if all the specified weights are above the requested `TargetCapacity` , resulting in only 1 instance being launched, the price used is per *instance* hour.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-weightedcapacity
	//
	WeightedCapacity *float64 `field:"optional" json:"weightedCapacity" yaml:"weightedCapacity"`
}

Specifies overrides for a launch template for an EC2 Fleet.

`FleetLaunchTemplateOverridesRequest` is a property of the [FleetLaunchTemplateConfigRequest](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html) property type.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

fleetLaunchTemplateOverridesRequestProperty := &FleetLaunchTemplateOverridesRequestProperty{
	AvailabilityZone: jsii.String("availabilityZone"),
	AvailabilityZoneId: jsii.String("availabilityZoneId"),
	BlockDeviceMappings: []interface{}{
		&BlockDeviceMappingProperty{
			DeviceName: jsii.String("deviceName"),
			Ebs: &EbsBlockDeviceProperty{
				DeleteOnTermination: jsii.Boolean(false),
				Encrypted: jsii.Boolean(false),
				Iops: jsii.Number(123),
				KmsKeyId: jsii.String("kmsKeyId"),
				SnapshotId: jsii.String("snapshotId"),
				VolumeSize: jsii.Number(123),
				VolumeType: jsii.String("volumeType"),
			},
			NoDevice: jsii.String("noDevice"),
			VirtualName: jsii.String("virtualName"),
		},
	},
	IamInstanceProfile: &IamInstanceProfileSpecificationProperty{
		Arn: jsii.String("arn"),
		Name: jsii.String("name"),
	},
	InstanceRequirements: &InstanceRequirementsRequestProperty{
		AcceleratorCount: &AcceleratorCountRequestProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		AcceleratorManufacturers: []*string{
			jsii.String("acceleratorManufacturers"),
		},
		AcceleratorNames: []*string{
			jsii.String("acceleratorNames"),
		},
		AcceleratorTotalMemoryMiB: &AcceleratorTotalMemoryMiBRequestProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		AcceleratorTypes: []*string{
			jsii.String("acceleratorTypes"),
		},
		AllowedInstanceTypes: []*string{
			jsii.String("allowedInstanceTypes"),
		},
		BareMetal: jsii.String("bareMetal"),
		BaselineEbsBandwidthMbps: &BaselineEbsBandwidthMbpsRequestProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		BaselinePerformanceFactors: &BaselinePerformanceFactorsRequestProperty{
			Cpu: &CpuPerformanceFactorRequestProperty{
				References: []interface{}{
					&PerformanceFactorReferenceRequestProperty{
						InstanceFamily: jsii.String("instanceFamily"),
					},
				},
			},
		},
		BurstablePerformance: jsii.String("burstablePerformance"),
		CpuManufacturers: []*string{
			jsii.String("cpuManufacturers"),
		},
		ExcludedInstanceTypes: []*string{
			jsii.String("excludedInstanceTypes"),
		},
		InstanceGenerations: []*string{
			jsii.String("instanceGenerations"),
		},
		LocalStorage: jsii.String("localStorage"),
		LocalStorageTypes: []*string{
			jsii.String("localStorageTypes"),
		},
		MaxSpotPriceAsPercentageOfOptimalOnDemandPrice: jsii.Number(123),
		MemoryGiBPerVCpu: &MemoryGiBPerVCpuRequestProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		MemoryMiB: &MemoryMiBRequestProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		NetworkBandwidthGbps: &NetworkBandwidthGbpsRequestProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		NetworkInterfaceCount: &NetworkInterfaceCountRequestProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(123),
		RequireEncryptionInTransit: jsii.Boolean(false),
		RequireHibernateSupport: jsii.Boolean(false),
		SpotMaxPricePercentageOverLowestPrice: jsii.Number(123),
		TotalLocalStorageGb: &TotalLocalStorageGBRequestProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		VCpuCount: &VCpuCountRangeRequestProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
	},
	InstanceType: jsii.String("instanceType"),
	KeyName: jsii.String("keyName"),
	MaxPrice: jsii.String("maxPrice"),
	MetadataOptions: &InstanceMetadataOptionsRequestProperty{
		HttpEndpoint: jsii.String("httpEndpoint"),
		HttpPutResponseHopLimit: jsii.Number(123),
		HttpTokens: jsii.String("httpTokens"),
	},
	NetworkInterfaces: []interface{}{
		&NetworkInterfaceSpecificationRequestProperty{
			AssociatePublicIpAddress: jsii.Boolean(false),
			DeleteOnTermination: jsii.Boolean(false),
			Description: jsii.String("description"),
			DeviceIndex: jsii.Number(123),
			Groups: []*string{
				jsii.String("groups"),
			},
			InterfaceType: jsii.String("interfaceType"),
			Ipv6AddressCount: jsii.Number(123),
			Ipv6Addresses: []interface{}{
				&Ipv6AddressRequestProperty{
					Ipv6Address: jsii.String("ipv6Address"),
				},
			},
			NetworkCardIndex: jsii.Number(123),
			NetworkInterfaceId: jsii.String("networkInterfaceId"),
			PrivateIpAddress: jsii.String("privateIpAddress"),
			PrivateIpAddresses: []interface{}{
				&PrivateIpAddressSpecificationRequestProperty{
					Primary: jsii.Boolean(false),
					PrivateIpAddress: jsii.String("privateIpAddress"),
				},
			},
			SecondaryPrivateIpAddressCount: jsii.Number(123),
			SubnetId: jsii.String("subnetId"),
		},
	},
	Placement: &PlacementProperty{
		Affinity: jsii.String("affinity"),
		AvailabilityZone: jsii.String("availabilityZone"),
		GroupName: jsii.String("groupName"),
		HostId: jsii.String("hostId"),
		HostResourceGroupArn: jsii.String("hostResourceGroupArn"),
		PartitionNumber: jsii.Number(123),
		SpreadDomain: jsii.String("spreadDomain"),
		Tenancy: jsii.String("tenancy"),
	},
	Priority: jsii.Number(123),
	SubnetId: jsii.String("subnetId"),
	WeightedCapacity: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html

type CfnEC2Fleet_FleetLaunchTemplateSpecificationRequestProperty

type CfnEC2Fleet_FleetLaunchTemplateSpecificationRequestProperty struct {
	// The launch template version number, `$Latest` , or `$Default` . You must specify a value, otherwise the request fails.
	//
	// If the value is `$Latest` , Amazon EC2 uses the latest version of the launch template.
	//
	// If the value is `$Default` , Amazon EC2 uses the default version of the launch template.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-version
	//
	Version *string `field:"required" json:"version" yaml:"version"`
	// The ID of the launch template.
	//
	// You must specify the `LaunchTemplateId` or the `LaunchTemplateName` , but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplateid
	//
	LaunchTemplateId *string `field:"optional" json:"launchTemplateId" yaml:"launchTemplateId"`
	// The name of the launch template.
	//
	// You must specify the `LaunchTemplateName` or the `LaunchTemplateId` , but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplatename
	//
	LaunchTemplateName *string `field:"optional" json:"launchTemplateName" yaml:"launchTemplateName"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplatespecificationuserdata
	//
	LaunchTemplateSpecificationUserData *string `field:"optional" json:"launchTemplateSpecificationUserData" yaml:"launchTemplateSpecificationUserData"`
}

Specifies the launch template to be used by the EC2 Fleet for configuring Amazon EC2 instances.

You must specify the following:

- The ID or the name of the launch template, but not both. - The version of the launch template.

`FleetLaunchTemplateSpecificationRequest` is a property of the [FleetLaunchTemplateConfigRequest](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html) property type.

For information about creating a launch template, see [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html) and [Create a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template) in the *Amazon EC2 User Guide* .

For examples of launch templates, see [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#aws-resource-ec2-launchtemplate--examples) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

fleetLaunchTemplateSpecificationRequestProperty := &FleetLaunchTemplateSpecificationRequestProperty{
	Version: jsii.String("version"),

	// the properties below are optional
	LaunchTemplateId: jsii.String("launchTemplateId"),
	LaunchTemplateName: jsii.String("launchTemplateName"),
	LaunchTemplateSpecificationUserData: jsii.String("launchTemplateSpecificationUserData"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html

type CfnEC2Fleet_IamInstanceProfileSpecificationProperty added in v2.251.0

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

iamInstanceProfileSpecificationProperty := &IamInstanceProfileSpecificationProperty{
	Arn: jsii.String("arn"),
	Name: jsii.String("name"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-iaminstanceprofilespecification.html

type CfnEC2Fleet_InstanceMetadataOptionsRequestProperty added in v2.251.0

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

instanceMetadataOptionsRequestProperty := &InstanceMetadataOptionsRequestProperty{
	HttpEndpoint: jsii.String("httpEndpoint"),
	HttpPutResponseHopLimit: jsii.Number(123),
	HttpTokens: jsii.String("httpTokens"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancemetadataoptionsrequest.html

type CfnEC2Fleet_InstanceRequirementsRequestProperty

type CfnEC2Fleet_InstanceRequirementsRequestProperty struct {
	// The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.
	//
	// To exclude accelerator-enabled instance types, set `Max` to `0` .
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-acceleratorcount
	//
	AcceleratorCount interface{} `field:"optional" json:"acceleratorCount" yaml:"acceleratorCount"`
	// Indicates whether instance types must have accelerators by specific manufacturers.
	//
	// - For instance types with AWS devices, specify `amazon-web-services` .
	// - For instance types with AMD devices, specify `amd` .
	// - For instance types with Habana devices, specify `habana` .
	// - For instance types with NVIDIA devices, specify `nvidia` .
	// - For instance types with Xilinx devices, specify `xilinx` .
	//
	// Default: Any manufacturer.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-acceleratormanufacturers
	//
	AcceleratorManufacturers *[]*string `field:"optional" json:"acceleratorManufacturers" yaml:"acceleratorManufacturers"`
	// The accelerators that must be on the instance type.
	//
	// - For instance types with NVIDIA A10G GPUs, specify `a10g` .
	// - For instance types with NVIDIA A100 GPUs, specify `a100` .
	// - For instance types with NVIDIA H100 GPUs, specify `h100` .
	// - For instance types with AWS Inferentia chips, specify `inferentia` .
	// - For instance types with AWS Inferentia2 chips, specify `inferentia2` .
	// - For instance types with Habana Gaudi HL-205 GPUs, specify `gaudi-hl-205` .
	// - For instance types with NVIDIA GRID K520 GPUs, specify `k520` .
	// - For instance types with NVIDIA K80 GPUs, specify `k80` .
	// - For instance types with NVIDIA L4 GPUs, specify `l4` .
	// - For instance types with NVIDIA L40S GPUs, specify `l40s` .
	// - For instance types with NVIDIA M60 GPUs, specify `m60` .
	// - For instance types with AMD Radeon Pro V520 GPUs, specify `radeon-pro-v520` .
	// - For instance types with AWS Trainium chips, specify `trainium` .
	// - For instance types with AWS Trainium2 chips, specify `trainium2` .
	// - For instance types with NVIDIA T4 GPUs, specify `t4` .
	// - For instance types with NVIDIA T4G GPUs, specify `t4g` .
	// - For instance types with Xilinx U30 cards, specify `u30` .
	// - For instance types with Xilinx VU9P FPGAs, specify `vu9p` .
	// - For instance types with NVIDIA V100 GPUs, specify `v100` .
	//
	// Default: Any accelerator.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-acceleratornames
	//
	AcceleratorNames *[]*string `field:"optional" json:"acceleratorNames" yaml:"acceleratorNames"`
	// The minimum and maximum amount of total accelerator memory, in MiB.
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-acceleratortotalmemorymib
	//
	AcceleratorTotalMemoryMiB interface{} `field:"optional" json:"acceleratorTotalMemoryMiB" yaml:"acceleratorTotalMemoryMiB"`
	// The accelerator types that must be on the instance type.
	//
	// - For instance types with FPGA accelerators, specify `fpga` .
	// - For instance types with GPU accelerators, specify `gpu` .
	// - For instance types with Inference accelerators, specify `inference` .
	// - For instance types with Media accelerators, specify `media` .
	//
	// Default: Any accelerator type.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-acceleratortypes
	//
	AcceleratorTypes *[]*string `field:"optional" json:"acceleratorTypes" yaml:"acceleratorTypes"`
	// The instance types to apply your specified attributes against.
	//
	// All other instance types are ignored, even if they match your specified attributes.
	//
	// You can use strings with one or more wild cards, represented by an asterisk ( `*` ), to allow an instance type, size, or generation. The following are examples: `m5.8xlarge` , `c5*.*` , `m5a.*` , `r*` , `*3*` .
	//
	// For example, if you specify `c5*` ,Amazon EC2 will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify `m5a.*` , Amazon EC2 will allow all the M5a instance types, but not the M5n instance types.
	//
	// > If you specify `AllowedInstanceTypes` , you can't specify `ExcludedInstanceTypes` .
	//
	// Default: All instance types.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-allowedinstancetypes
	//
	AllowedInstanceTypes *[]*string `field:"optional" json:"allowedInstanceTypes" yaml:"allowedInstanceTypes"`
	// Indicates whether bare metal instance types must be included, excluded, or required.
	//
	// - To include bare metal instance types, specify `included` .
	// - To require only bare metal instance types, specify `required` .
	// - To exclude bare metal instance types, specify `excluded` .
	//
	// Default: `excluded`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-baremetal
	//
	BareMetal *string `field:"optional" json:"bareMetal" yaml:"bareMetal"`
	// The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps.
	//
	// For more information, see [Amazon EBS–optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide* .
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-baselineebsbandwidthmbps
	//
	BaselineEbsBandwidthMbps interface{} `field:"optional" json:"baselineEbsBandwidthMbps" yaml:"baselineEbsBandwidthMbps"`
	// The baseline performance to consider, using an instance family as a baseline reference.
	//
	// The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application. Currently, this parameter only supports CPU performance as a baseline performance factor. For more information, see [Performance protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html#ec2fleet-abis-performance-protection) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-baselineperformancefactors
	//
	BaselinePerformanceFactors interface{} `field:"optional" json:"baselinePerformanceFactors" yaml:"baselinePerformanceFactors"`
	// Indicates whether burstable performance T instance types are included, excluded, or required.
	//
	// For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) .
	//
	// - To include burstable performance instance types, specify `included` .
	// - To require only burstable performance instance types, specify `required` .
	// - To exclude burstable performance instance types, specify `excluded` .
	//
	// Default: `excluded`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-burstableperformance
	//
	BurstablePerformance *string `field:"optional" json:"burstablePerformance" yaml:"burstablePerformance"`
	// The CPU manufacturers to include.
	//
	// - For instance types with Intel CPUs, specify `intel` .
	// - For instance types with AMD CPUs, specify `amd` .
	// - For instance types with AWS CPUs, specify `amazon-web-services` .
	// - For instance types with Apple CPUs, specify `apple` .
	//
	// > Don't confuse the CPU manufacturer with the CPU architecture. Instances will be launched with a compatible CPU architecture based on the Amazon Machine Image (AMI) that you specify in your launch template.
	//
	// Default: Any manufacturer.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-cpumanufacturers
	//
	CpuManufacturers *[]*string `field:"optional" json:"cpuManufacturers" yaml:"cpuManufacturers"`
	// The instance types to exclude.
	//
	// You can use strings with one or more wild cards, represented by an asterisk ( `*` ), to exclude an instance family, type, size, or generation. The following are examples: `m5.8xlarge` , `c5*.*` , `m5a.*` , `r*` , `*3*` .
	//
	// For example, if you specify `c5*` ,Amazon EC2 will exclude the entire C5 instance family, which includes all C5a and C5n instance types. If you specify `m5a.*` , Amazon EC2 will exclude all the M5a instance types, but not the M5n instance types.
	//
	// > If you specify `ExcludedInstanceTypes` , you can't specify `AllowedInstanceTypes` .
	//
	// Default: No excluded instance types.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-excludedinstancetypes
	//
	ExcludedInstanceTypes *[]*string `field:"optional" json:"excludedInstanceTypes" yaml:"excludedInstanceTypes"`
	// Indicates whether current or previous generation instance types are included.
	//
	// The current generation instance types are recommended for use. Current generation instance types are typically the latest two to three generations in each instance family. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide* .
	//
	// For current generation instance types, specify `current` .
	//
	// For previous generation instance types, specify `previous` .
	//
	// Default: Current and previous generation instance types.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-instancegenerations
	//
	InstanceGenerations *[]*string `field:"optional" json:"instanceGenerations" yaml:"instanceGenerations"`
	// Indicates whether instance types with instance store volumes are included, excluded, or required.
	//
	// For more information, [Amazon EC2 instance store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) in the *Amazon EC2 User Guide* .
	//
	// - To include instance types with instance store volumes, specify `included` .
	// - To require only instance types with instance store volumes, specify `required` .
	// - To exclude instance types with instance store volumes, specify `excluded` .
	//
	// Default: `included`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-localstorage
	//
	LocalStorage *string `field:"optional" json:"localStorage" yaml:"localStorage"`
	// The type of local storage that is required.
	//
	// - For instance types with hard disk drive (HDD) storage, specify `hdd` .
	// - For instance types with solid state drive (SSD) storage, specify `ssd` .
	//
	// Default: `hdd` and `ssd`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-localstoragetypes
	//
	LocalStorageTypes *[]*string `field:"optional" json:"localStorageTypes" yaml:"localStorageTypes"`
	// [Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price.
	//
	// The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.
	//
	// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
	//
	// If you set `TargetCapacityUnitType` to `vcpu` or `memory-mib` , the price protection threshold is based on the per vCPU or per memory price instead of the per instance price.
	//
	// > Only one of `SpotMaxPricePercentageOverLowestPrice` or `MaxSpotPriceAsPercentageOfOptimalOnDemandPrice` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as `999999` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-maxspotpriceaspercentageofoptimalondemandprice
	//
	MaxSpotPriceAsPercentageOfOptimalOnDemandPrice *float64 `field:"optional" json:"maxSpotPriceAsPercentageOfOptimalOnDemandPrice" yaml:"maxSpotPriceAsPercentageOfOptimalOnDemandPrice"`
	// The minimum and maximum amount of memory per vCPU, in GiB.
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-memorygibpervcpu
	//
	MemoryGiBPerVCpu interface{} `field:"optional" json:"memoryGiBPerVCpu" yaml:"memoryGiBPerVCpu"`
	// The minimum and maximum amount of memory, in MiB.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-memorymib
	//
	MemoryMiB interface{} `field:"optional" json:"memoryMiB" yaml:"memoryMiB"`
	// The minimum and maximum amount of baseline network bandwidth, in gigabits per second (Gbps).
	//
	// For more information, see [Amazon EC2 instance network bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html) in the *Amazon EC2 User Guide* .
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-networkbandwidthgbps
	//
	NetworkBandwidthGbps interface{} `field:"optional" json:"networkBandwidthGbps" yaml:"networkBandwidthGbps"`
	// The minimum and maximum number of network interfaces.
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-networkinterfacecount
	//
	NetworkInterfaceCount interface{} `field:"optional" json:"networkInterfaceCount" yaml:"networkInterfaceCount"`
	// [Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price.
	//
	// The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.
	//
	// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
	//
	// To indicate no price protection threshold, specify a high value, such as `999999` .
	//
	// This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html) .
	//
	// > If you set `TargetCapacityUnitType` to `vcpu` or `memory-mib` , the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.
	//
	// Default: `20`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-ondemandmaxpricepercentageoverlowestprice
	//
	OnDemandMaxPricePercentageOverLowestPrice *float64 `field:"optional" json:"onDemandMaxPricePercentageOverLowestPrice" yaml:"onDemandMaxPricePercentageOverLowestPrice"`
	// Specifies whether instance types must support encrypting in-transit traffic between instances.
	//
	// For more information, including the supported instance types, see [Encryption in transit](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html#encryption-transit) in the *Amazon EC2 User Guide* .
	//
	// Default: `false`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-requireencryptionintransit
	//
	RequireEncryptionInTransit interface{} `field:"optional" json:"requireEncryptionInTransit" yaml:"requireEncryptionInTransit"`
	// Indicates whether instance types must support hibernation for On-Demand Instances.
	//
	// This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) .
	//
	// Default: `false`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-requirehibernatesupport
	//
	RequireHibernateSupport interface{} `field:"optional" json:"requireHibernateSupport" yaml:"requireHibernateSupport"`
	// [Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price.
	//
	// The identified Spot price is the Spot price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified Spot price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose Spot price exceeds your specified threshold.
	//
	// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
	//
	// If you set `TargetCapacityUnitType` to `vcpu` or `memory-mib` , the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.
	//
	// This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html) .
	//
	// > Only one of `SpotMaxPricePercentageOverLowestPrice` or `MaxSpotPriceAsPercentageOfOptimalOnDemandPrice` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as `999999` .
	//
	// Default: `100`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-spotmaxpricepercentageoverlowestprice
	//
	SpotMaxPricePercentageOverLowestPrice *float64 `field:"optional" json:"spotMaxPricePercentageOverLowestPrice" yaml:"spotMaxPricePercentageOverLowestPrice"`
	// The minimum and maximum amount of total local storage, in GB.
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-totallocalstoragegb
	//
	TotalLocalStorageGb interface{} `field:"optional" json:"totalLocalStorageGb" yaml:"totalLocalStorageGb"`
	// The minimum and maximum number of vCPUs.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html#cfn-ec2-ec2fleet-instancerequirementsrequest-vcpucount
	//
	VCpuCount interface{} `field:"optional" json:"vCpuCount" yaml:"vCpuCount"`
}

The attributes for the instance types.

When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.

You must specify `VCpuCount` and `MemoryMiB` . All other attributes are optional. Any unspecified optional attribute is set to its default.

When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.

To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:

- `AllowedInstanceTypes` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes. - `ExcludedInstanceTypes` - The instance types to exclude from the list, even if they match your specified attributes.

> If you specify `InstanceRequirements` , you can't specify `InstanceType` . > > Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) , or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) AWS CloudFormation resource, you can't specify `InstanceRequirements` .

For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

instanceRequirementsRequestProperty := &InstanceRequirementsRequestProperty{
	AcceleratorCount: &AcceleratorCountRequestProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	AcceleratorManufacturers: []*string{
		jsii.String("acceleratorManufacturers"),
	},
	AcceleratorNames: []*string{
		jsii.String("acceleratorNames"),
	},
	AcceleratorTotalMemoryMiB: &AcceleratorTotalMemoryMiBRequestProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	AcceleratorTypes: []*string{
		jsii.String("acceleratorTypes"),
	},
	AllowedInstanceTypes: []*string{
		jsii.String("allowedInstanceTypes"),
	},
	BareMetal: jsii.String("bareMetal"),
	BaselineEbsBandwidthMbps: &BaselineEbsBandwidthMbpsRequestProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	BaselinePerformanceFactors: &BaselinePerformanceFactorsRequestProperty{
		Cpu: &CpuPerformanceFactorRequestProperty{
			References: []interface{}{
				&PerformanceFactorReferenceRequestProperty{
					InstanceFamily: jsii.String("instanceFamily"),
				},
			},
		},
	},
	BurstablePerformance: jsii.String("burstablePerformance"),
	CpuManufacturers: []*string{
		jsii.String("cpuManufacturers"),
	},
	ExcludedInstanceTypes: []*string{
		jsii.String("excludedInstanceTypes"),
	},
	InstanceGenerations: []*string{
		jsii.String("instanceGenerations"),
	},
	LocalStorage: jsii.String("localStorage"),
	LocalStorageTypes: []*string{
		jsii.String("localStorageTypes"),
	},
	MaxSpotPriceAsPercentageOfOptimalOnDemandPrice: jsii.Number(123),
	MemoryGiBPerVCpu: &MemoryGiBPerVCpuRequestProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	MemoryMiB: &MemoryMiBRequestProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	NetworkBandwidthGbps: &NetworkBandwidthGbpsRequestProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	NetworkInterfaceCount: &NetworkInterfaceCountRequestProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(123),
	RequireEncryptionInTransit: jsii.Boolean(false),
	RequireHibernateSupport: jsii.Boolean(false),
	SpotMaxPricePercentageOverLowestPrice: jsii.Number(123),
	TotalLocalStorageGb: &TotalLocalStorageGBRequestProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	VCpuCount: &VCpuCountRangeRequestProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-instancerequirementsrequest.html

type CfnEC2Fleet_Ipv6AddressRequestProperty added in v2.251.0

type CfnEC2Fleet_Ipv6AddressRequestProperty struct {
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ipv6addressrequest.html#cfn-ec2-ec2fleet-ipv6addressrequest-ipv6address
	//
	Ipv6Address *string `field:"optional" json:"ipv6Address" yaml:"ipv6Address"`
}

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipv6AddressRequestProperty := &Ipv6AddressRequestProperty{
	Ipv6Address: jsii.String("ipv6Address"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ipv6addressrequest.html

type CfnEC2Fleet_MaintenanceStrategiesProperty

type CfnEC2Fleet_MaintenanceStrategiesProperty struct {
	// The strategy to use when Amazon EC2 emits a signal that your Spot Instance is at an elevated risk of being interrupted.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-maintenancestrategies.html#cfn-ec2-ec2fleet-maintenancestrategies-capacityrebalance
	//
	CapacityRebalance interface{} `field:"optional" json:"capacityRebalance" yaml:"capacityRebalance"`
}

The strategies for managing your Spot Instances that are at an elevated risk of being interrupted.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

maintenanceStrategiesProperty := &MaintenanceStrategiesProperty{
	CapacityRebalance: &CapacityRebalanceProperty{
		ReplacementStrategy: jsii.String("replacementStrategy"),
		TerminationDelay: jsii.Number(123),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-maintenancestrategies.html

type CfnEC2Fleet_MemoryGiBPerVCpuRequestProperty

type CfnEC2Fleet_MemoryGiBPerVCpuRequestProperty struct {
	// The maximum amount of memory per vCPU, in GiB.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-memorygibpervcpurequest.html#cfn-ec2-ec2fleet-memorygibpervcpurequest-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of memory per vCPU, in GiB.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-memorygibpervcpurequest.html#cfn-ec2-ec2fleet-memorygibpervcpurequest-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of memory per vCPU, in GiB.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

memoryGiBPerVCpuRequestProperty := &MemoryGiBPerVCpuRequestProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-memorygibpervcpurequest.html

type CfnEC2Fleet_MemoryMiBRequestProperty

type CfnEC2Fleet_MemoryMiBRequestProperty struct {
	// The maximum amount of memory, in MiB.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-memorymibrequest.html#cfn-ec2-ec2fleet-memorymibrequest-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of memory, in MiB.
	//
	// To specify no minimum limit, specify `0` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-memorymibrequest.html#cfn-ec2-ec2fleet-memorymibrequest-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of memory, in MiB.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

memoryMiBRequestProperty := &MemoryMiBRequestProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-memorymibrequest.html

type CfnEC2Fleet_NetworkBandwidthGbpsRequestProperty added in v2.51.0

type CfnEC2Fleet_NetworkBandwidthGbpsRequestProperty struct {
	// The maximum amount of network bandwidth, in Gbps.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkbandwidthgbpsrequest.html#cfn-ec2-ec2fleet-networkbandwidthgbpsrequest-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of network bandwidth, in Gbps.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkbandwidthgbpsrequest.html#cfn-ec2-ec2fleet-networkbandwidthgbpsrequest-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).

> Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

networkBandwidthGbpsRequestProperty := &NetworkBandwidthGbpsRequestProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkbandwidthgbpsrequest.html

type CfnEC2Fleet_NetworkInterfaceCountRequestProperty

type CfnEC2Fleet_NetworkInterfaceCountRequestProperty struct {
	// The maximum number of network interfaces.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacecountrequest.html#cfn-ec2-ec2fleet-networkinterfacecountrequest-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum number of network interfaces.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacecountrequest.html#cfn-ec2-ec2fleet-networkinterfacecountrequest-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum number of network interfaces.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

networkInterfaceCountRequestProperty := &NetworkInterfaceCountRequestProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacecountrequest.html

type CfnEC2Fleet_NetworkInterfaceSpecificationRequestProperty added in v2.251.0

type CfnEC2Fleet_NetworkInterfaceSpecificationRequestProperty struct {
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-associatepublicipaddress
	//
	AssociatePublicIpAddress interface{} `field:"optional" json:"associatePublicIpAddress" yaml:"associatePublicIpAddress"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-deleteontermination
	//
	DeleteOnTermination interface{} `field:"optional" json:"deleteOnTermination" yaml:"deleteOnTermination"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-deviceindex
	//
	DeviceIndex *float64 `field:"optional" json:"deviceIndex" yaml:"deviceIndex"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-groups
	//
	Groups *[]*string `field:"optional" json:"groups" yaml:"groups"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-interfacetype
	//
	InterfaceType *string `field:"optional" json:"interfaceType" yaml:"interfaceType"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-ipv6addresscount
	//
	Ipv6AddressCount *float64 `field:"optional" json:"ipv6AddressCount" yaml:"ipv6AddressCount"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-ipv6addresses
	//
	Ipv6Addresses interface{} `field:"optional" json:"ipv6Addresses" yaml:"ipv6Addresses"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-networkcardindex
	//
	NetworkCardIndex *float64 `field:"optional" json:"networkCardIndex" yaml:"networkCardIndex"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-networkinterfaceid
	//
	NetworkInterfaceId *string `field:"optional" json:"networkInterfaceId" yaml:"networkInterfaceId"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-privateipaddress
	//
	PrivateIpAddress *string `field:"optional" json:"privateIpAddress" yaml:"privateIpAddress"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-privateipaddresses
	//
	PrivateIpAddresses interface{} `field:"optional" json:"privateIpAddresses" yaml:"privateIpAddresses"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-secondaryprivateipaddresscount
	//
	SecondaryPrivateIpAddressCount *float64 `field:"optional" json:"secondaryPrivateIpAddressCount" yaml:"secondaryPrivateIpAddressCount"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html#cfn-ec2-ec2fleet-networkinterfacespecificationrequest-subnetid
	//
	SubnetId *string `field:"optional" json:"subnetId" yaml:"subnetId"`
}

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

networkInterfaceSpecificationRequestProperty := &NetworkInterfaceSpecificationRequestProperty{
	AssociatePublicIpAddress: jsii.Boolean(false),
	DeleteOnTermination: jsii.Boolean(false),
	Description: jsii.String("description"),
	DeviceIndex: jsii.Number(123),
	Groups: []*string{
		jsii.String("groups"),
	},
	InterfaceType: jsii.String("interfaceType"),
	Ipv6AddressCount: jsii.Number(123),
	Ipv6Addresses: []interface{}{
		&Ipv6AddressRequestProperty{
			Ipv6Address: jsii.String("ipv6Address"),
		},
	},
	NetworkCardIndex: jsii.Number(123),
	NetworkInterfaceId: jsii.String("networkInterfaceId"),
	PrivateIpAddress: jsii.String("privateIpAddress"),
	PrivateIpAddresses: []interface{}{
		&PrivateIpAddressSpecificationRequestProperty{
			Primary: jsii.Boolean(false),
			PrivateIpAddress: jsii.String("privateIpAddress"),
		},
	},
	SecondaryPrivateIpAddressCount: jsii.Number(123),
	SubnetId: jsii.String("subnetId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-networkinterfacespecificationrequest.html

type CfnEC2Fleet_OnDemandOptionsRequestProperty

type CfnEC2Fleet_OnDemandOptionsRequestProperty struct {
	// The strategy that determines the order of the launch template overrides to use in fulfilling On-Demand capacity.
	//
	// `lowest-price` - EC2 Fleet uses price to determine the order, launching the lowest price first.
	//
	// `prioritized` - EC2 Fleet uses the priority that you assigned to each launch template override, launching the highest priority first.
	//
	// Default: `lowest-price`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-allocationstrategy
	//
	AllocationStrategy *string `field:"optional" json:"allocationStrategy" yaml:"allocationStrategy"`
	// The strategy for using unused Capacity Reservations for fulfilling On-Demand capacity.
	//
	// Supported only for fleets of type `instant` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-capacityreservationoptions
	//
	CapacityReservationOptions interface{} `field:"optional" json:"capacityReservationOptions" yaml:"capacityReservationOptions"`
	// The maximum amount per hour for On-Demand Instances that you're willing to pay.
	//
	// > If your fleet includes T instances that are configured as `unlimited` , and if their average CPU usage exceeds the baseline utilization, you will incur a charge for surplus credits. The `MaxTotalPrice` does not account for surplus credits, and, if you use surplus credits, your final cost might be higher than what you specified for `MaxTotalPrice` . For more information, see [Surplus credits can incur charges](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances-unlimited-mode-concepts.html#unlimited-mode-surplus-credits) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-maxtotalprice
	//
	MaxTotalPrice *string `field:"optional" json:"maxTotalPrice" yaml:"maxTotalPrice"`
	// The minimum target capacity for On-Demand Instances in the fleet.
	//
	// If this minimum capacity isn't reached, no instances are launched.
	//
	// Constraints: Maximum value of `1000` . Supported only for fleets of type `instant` .
	//
	// At least one of the following must be specified: `SingleAvailabilityZone` | `SingleInstanceType`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-mintargetcapacity
	//
	MinTargetCapacity *float64 `field:"optional" json:"minTargetCapacity" yaml:"minTargetCapacity"`
	// Indicates that the fleet launches all On-Demand Instances into a single Availability Zone.
	//
	// Supported only for fleets of type `instant` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleavailabilityzone
	//
	SingleAvailabilityZone interface{} `field:"optional" json:"singleAvailabilityZone" yaml:"singleAvailabilityZone"`
	// Indicates that the fleet uses a single instance type to launch all On-Demand Instances in the fleet.
	//
	// Supported only for fleets of type `instant` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleinstancetype
	//
	SingleInstanceType interface{} `field:"optional" json:"singleInstanceType" yaml:"singleInstanceType"`
}

Specifies the allocation strategy of On-Demand Instances in an EC2 Fleet.

`OnDemandOptionsRequest` is a property of the [AWS::EC2::EC2Fleet](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

onDemandOptionsRequestProperty := &OnDemandOptionsRequestProperty{
	AllocationStrategy: jsii.String("allocationStrategy"),
	CapacityReservationOptions: &CapacityReservationOptionsRequestProperty{
		UsageStrategy: jsii.String("usageStrategy"),
	},
	MaxTotalPrice: jsii.String("maxTotalPrice"),
	MinTargetCapacity: jsii.Number(123),
	SingleAvailabilityZone: jsii.Boolean(false),
	SingleInstanceType: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html

type CfnEC2Fleet_PerformanceFactorReferenceRequestProperty added in v2.174.1

type CfnEC2Fleet_PerformanceFactorReferenceRequestProperty struct {
	// The instance family to use as a baseline reference.
	//
	// > Ensure that you specify the correct value for the instance family. The instance family is everything before the period ( `.` ) in the instance type name. For example, in the instance type `c6i.large` , the instance family is `c6i` , not `c6` . For more information, see [Amazon EC2 instance type naming conventions](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-type-names.html) in *Amazon EC2 Instance Types* .
	//
	// The following instance families are *not supported* for performance protection:
	//
	// - `c1`
	// - `g3` | `g3s`
	// - `hpc7g`
	// - `m1` | `m2`
	// - `mac1` | `mac2` | `mac2-m1ultra` | `mac2-m2` | `mac2-m2pro`
	// - `p3dn` | `p4d` | `p5`
	// - `t1`
	// - `u-12tb1` | `u-18tb1` | `u-24tb1` | `u-3tb1` | `u-6tb1` | `u-9tb1` | `u7i-12tb` | `u7in-16tb` | `u7in-24tb` | `u7in-32tb`
	//
	// If you enable performance protection by specifying a supported instance family, the returned instance types will exclude the above unsupported instance families.
	//
	// If you specify an unsupported instance family as a value for baseline performance, the API returns an empty response response for [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html) and an exception for [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html) , [RequestSpotFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html) , [ModifyFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyFleet.html) , and [ModifySpotFleetRequest](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifySpotFleetRequest.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-performancefactorreferencerequest.html#cfn-ec2-ec2fleet-performancefactorreferencerequest-instancefamily
	//
	InstanceFamily *string `field:"optional" json:"instanceFamily" yaml:"instanceFamily"`
}

Specify an instance family to use as the baseline reference for CPU performance.

All instance types that match your specified attributes will be compared against the CPU performance of the referenced instance family, regardless of CPU manufacturer or architecture.

> Currently, only one instance family can be specified in the list.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

performanceFactorReferenceRequestProperty := &PerformanceFactorReferenceRequestProperty{
	InstanceFamily: jsii.String("instanceFamily"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-performancefactorreferencerequest.html

type CfnEC2Fleet_PlacementProperty

type CfnEC2Fleet_PlacementProperty struct {
	// The affinity setting for the instance on the Dedicated Host.
	//
	// This parameter is not supported for [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet) or [ImportInstance](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportInstance.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-affinity
	//
	Affinity *string `field:"optional" json:"affinity" yaml:"affinity"`
	// The Availability Zone of the instance.
	//
	// On input, you can specify `AvailabilityZone` or `AvailabilityZoneId` , but not both. If you specify neither one, Amazon EC2 automatically selects an Availability Zone for you.
	//
	// This parameter is not supported for [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-availabilityzone
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The name of the placement group that the instance is in.
	//
	// On input, you can specify `GroupId` or `GroupName` , but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-groupname
	//
	GroupName *string `field:"optional" json:"groupName" yaml:"groupName"`
	// The ID of the Dedicated Host on which the instance resides.
	//
	// This parameter is not supported for [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet) or [ImportInstance](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportInstance.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostid
	//
	HostId *string `field:"optional" json:"hostId" yaml:"hostId"`
	// The ARN of the host resource group in which to launch the instances.
	//
	// On input, if you specify this parameter, either omit the *Tenancy* parameter or set it to `host` .
	//
	// This parameter is not supported for [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostresourcegrouparn
	//
	HostResourceGroupArn *string `field:"optional" json:"hostResourceGroupArn" yaml:"hostResourceGroupArn"`
	// The number of the partition that the instance is in.
	//
	// Valid only if the placement group strategy is set to `partition` .
	//
	// This parameter is not supported for [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-partitionnumber
	//
	PartitionNumber *float64 `field:"optional" json:"partitionNumber" yaml:"partitionNumber"`
	// Reserved for future use.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-spreaddomain
	//
	SpreadDomain *string `field:"optional" json:"spreadDomain" yaml:"spreadDomain"`
	// The tenancy of the instance. An instance with a tenancy of `dedicated` runs on single-tenant hardware.
	//
	// This parameter is not supported for [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet) . The `host` tenancy is not supported for [ImportInstance](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportInstance.html) or for T3 instances that are configured for the `unlimited` CPU credit option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-tenancy
	//
	Tenancy *string `field:"optional" json:"tenancy" yaml:"tenancy"`
}

Describes the placement of an instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

placementProperty := &PlacementProperty{
	Affinity: jsii.String("affinity"),
	AvailabilityZone: jsii.String("availabilityZone"),
	GroupName: jsii.String("groupName"),
	HostId: jsii.String("hostId"),
	HostResourceGroupArn: jsii.String("hostResourceGroupArn"),
	PartitionNumber: jsii.Number(123),
	SpreadDomain: jsii.String("spreadDomain"),
	Tenancy: jsii.String("tenancy"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html

type CfnEC2Fleet_PrivateIpAddressSpecificationRequestProperty added in v2.251.0

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

privateIpAddressSpecificationRequestProperty := &PrivateIpAddressSpecificationRequestProperty{
	Primary: jsii.Boolean(false),
	PrivateIpAddress: jsii.String("privateIpAddress"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-privateipaddressspecificationrequest.html

type CfnEC2Fleet_ReservedCapacityOptionsRequestProperty added in v2.247.0

type CfnEC2Fleet_ReservedCapacityOptionsRequestProperty struct {
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-reservedcapacityoptionsrequest.html#cfn-ec2-ec2fleet-reservedcapacityoptionsrequest-reservationtypes
	//
	ReservationTypes *[]*string `field:"optional" json:"reservationTypes" yaml:"reservationTypes"`
}

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

reservedCapacityOptionsRequestProperty := &ReservedCapacityOptionsRequestProperty{
	ReservationTypes: []*string{
		jsii.String("reservationTypes"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-reservedcapacityoptionsrequest.html

type CfnEC2Fleet_SpotOptionsRequestProperty

type CfnEC2Fleet_SpotOptionsRequestProperty struct {
	// Indicates how to allocate the target Spot Instance capacity across the Spot Instance pools specified by the EC2 Fleet.
	//
	// If the allocation strategy is `lowestPrice` , EC2 Fleet launches instances from the Spot Instance pools with the lowest price. This is the default allocation strategy.
	//
	// If the allocation strategy is `diversified` , EC2 Fleet launches instances from all the Spot Instance pools that you specify.
	//
	// If the allocation strategy is `capacityOptimized` , EC2 Fleet launches instances from Spot Instance pools that are optimally chosen based on the available Spot Instance capacity.
	//
	// *Allowed Values* : `lowestPrice` | `diversified` | `capacityOptimized` | `capacityOptimizedPrioritized`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-allocationstrategy
	//
	AllocationStrategy *string `field:"optional" json:"allocationStrategy" yaml:"allocationStrategy"`
	// The behavior when a Spot Instance is interrupted.
	//
	// Default: `terminate`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instanceinterruptionbehavior
	//
	InstanceInterruptionBehavior *string `field:"optional" json:"instanceInterruptionBehavior" yaml:"instanceInterruptionBehavior"`
	// The number of Spot pools across which to allocate your target Spot capacity.
	//
	// Supported only when Spot `AllocationStrategy` is set to `lowest-price` . EC2 Fleet selects the cheapest Spot pools and evenly allocates your target Spot capacity across the number of Spot pools that you specify.
	//
	// Note that EC2 Fleet attempts to draw Spot Instances from the number of pools that you specify on a best effort basis. If a pool runs out of Spot capacity before fulfilling your target capacity, EC2 Fleet will continue to fulfill your request by drawing from the next cheapest pool. To ensure that your target capacity is met, you might receive Spot Instances from more than the number of pools that you specified. Similarly, if most of the pools have no Spot capacity, you might receive your full target capacity from fewer than the number of pools that you specified.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instancepoolstousecount
	//
	InstancePoolsToUseCount *float64 `field:"optional" json:"instancePoolsToUseCount" yaml:"instancePoolsToUseCount"`
	// The strategies for managing your Spot Instances that are at an elevated risk of being interrupted.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-maintenancestrategies
	//
	MaintenanceStrategies interface{} `field:"optional" json:"maintenanceStrategies" yaml:"maintenanceStrategies"`
	// The maximum amount per hour for Spot Instances that you're willing to pay.
	//
	// We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price.
	//
	// > If you specify a maximum price, your Spot Instances will be interrupted more frequently than if you do not specify this parameter. > If your fleet includes T instances that are configured as `unlimited` , and if their average CPU usage exceeds the baseline utilization, you will incur a charge for surplus credits. The `MaxTotalPrice` does not account for surplus credits, and, if you use surplus credits, your final cost might be higher than what you specified for `MaxTotalPrice` . For more information, see [Surplus credits can incur charges](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances-unlimited-mode-concepts.html#unlimited-mode-surplus-credits) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-maxtotalprice
	//
	MaxTotalPrice *string `field:"optional" json:"maxTotalPrice" yaml:"maxTotalPrice"`
	// The minimum target capacity for Spot Instances in the fleet.
	//
	// If this minimum capacity isn't reached, no instances are launched.
	//
	// Constraints: Maximum value of `1000` . Supported only for fleets of type `instant` .
	//
	// At least one of the following must be specified: `SingleAvailabilityZone` | `SingleInstanceType`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-mintargetcapacity
	//
	MinTargetCapacity *float64 `field:"optional" json:"minTargetCapacity" yaml:"minTargetCapacity"`
	// Indicates that the fleet launches all Spot Instances into a single Availability Zone.
	//
	// Supported only for fleets of type `instant` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleavailabilityzone
	//
	SingleAvailabilityZone interface{} `field:"optional" json:"singleAvailabilityZone" yaml:"singleAvailabilityZone"`
	// Indicates that the fleet uses a single instance type to launch all Spot Instances in the fleet.
	//
	// Supported only for fleets of type `instant` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleinstancetype
	//
	SingleInstanceType interface{} `field:"optional" json:"singleInstanceType" yaml:"singleInstanceType"`
}

Specifies the configuration of Spot Instances for an EC2 Fleet.

`SpotOptionsRequest` is a property of the [AWS::EC2::EC2Fleet](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

spotOptionsRequestProperty := &SpotOptionsRequestProperty{
	AllocationStrategy: jsii.String("allocationStrategy"),
	InstanceInterruptionBehavior: jsii.String("instanceInterruptionBehavior"),
	InstancePoolsToUseCount: jsii.Number(123),
	MaintenanceStrategies: &MaintenanceStrategiesProperty{
		CapacityRebalance: &CapacityRebalanceProperty{
			ReplacementStrategy: jsii.String("replacementStrategy"),
			TerminationDelay: jsii.Number(123),
		},
	},
	MaxTotalPrice: jsii.String("maxTotalPrice"),
	MinTargetCapacity: jsii.Number(123),
	SingleAvailabilityZone: jsii.Boolean(false),
	SingleInstanceType: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html

type CfnEC2Fleet_TagSpecificationProperty

type CfnEC2Fleet_TagSpecificationProperty struct {
	// The type of resource to tag.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-resourcetype
	//
	ResourceType *string `field:"optional" json:"resourceType" yaml:"resourceType"`
	// The tags to apply to the resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Specifies the tags to apply to a resource when the resource is being created for an EC2 Fleet.

`TagSpecification` is a property of the [AWS::EC2::EC2Fleet](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

tagSpecificationProperty := &TagSpecificationProperty{
	ResourceType: jsii.String("resourceType"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html

type CfnEC2Fleet_TargetCapacitySpecificationRequestProperty

type CfnEC2Fleet_TargetCapacitySpecificationRequestProperty struct {
	// The number of units to request, filled using the default target capacity type.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-totaltargetcapacity
	//
	TotalTargetCapacity *float64 `field:"required" json:"totalTargetCapacity" yaml:"totalTargetCapacity"`
	// The default target capacity type.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-defaulttargetcapacitytype
	//
	DefaultTargetCapacityType *string `field:"optional" json:"defaultTargetCapacityType" yaml:"defaultTargetCapacityType"`
	// The number of On-Demand units to request.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-ondemandtargetcapacity
	//
	OnDemandTargetCapacity *float64 `field:"optional" json:"onDemandTargetCapacity" yaml:"onDemandTargetCapacity"`
	// The number of Spot units to request.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-spottargetcapacity
	//
	SpotTargetCapacity *float64 `field:"optional" json:"spotTargetCapacity" yaml:"spotTargetCapacity"`
	// The unit for the target capacity. You can specify this parameter only when using attributed-based instance type selection.
	//
	// Default: `units` (the number of instances).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-targetcapacityunittype
	//
	TargetCapacityUnitType *string `field:"optional" json:"targetCapacityUnitType" yaml:"targetCapacityUnitType"`
}

Specifies the number of units to request for an EC2 Fleet.

You can choose to set the target capacity in terms of instances or a performance characteristic that is important to your application workload, such as vCPUs, memory, or I/O. If the request type is `maintain` , you can specify a target capacity of `0` and add capacity later.

`TargetCapacitySpecificationRequest` is a property of the [AWS::EC2::EC2Fleet](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

targetCapacitySpecificationRequestProperty := &TargetCapacitySpecificationRequestProperty{
	TotalTargetCapacity: jsii.Number(123),

	// the properties below are optional
	DefaultTargetCapacityType: jsii.String("defaultTargetCapacityType"),
	OnDemandTargetCapacity: jsii.Number(123),
	SpotTargetCapacity: jsii.Number(123),
	TargetCapacityUnitType: jsii.String("targetCapacityUnitType"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html

type CfnEC2Fleet_TotalLocalStorageGBRequestProperty

type CfnEC2Fleet_TotalLocalStorageGBRequestProperty struct {
	// The maximum amount of total local storage, in GB.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-totallocalstoragegbrequest.html#cfn-ec2-ec2fleet-totallocalstoragegbrequest-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of total local storage, in GB.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-totallocalstoragegbrequest.html#cfn-ec2-ec2fleet-totallocalstoragegbrequest-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of total local storage, in GB.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

totalLocalStorageGBRequestProperty := &TotalLocalStorageGBRequestProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-totallocalstoragegbrequest.html

type CfnEC2Fleet_VCpuCountRangeRequestProperty

type CfnEC2Fleet_VCpuCountRangeRequestProperty struct {
	// The maximum number of vCPUs.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-vcpucountrangerequest.html#cfn-ec2-ec2fleet-vcpucountrangerequest-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum number of vCPUs.
	//
	// To specify no minimum limit, specify `0` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-vcpucountrangerequest.html#cfn-ec2-ec2fleet-vcpucountrangerequest-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum number of vCPUs.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

vCpuCountRangeRequestProperty := &VCpuCountRangeRequestProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-vcpucountrangerequest.html

type CfnEIP

type CfnEIP interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IEIPRef
	awscdk.ITaggable
	// An Elastic IP address or a carrier IP address in a Wavelength Zone.
	Address() *string
	SetAddress(val *string)
	// The ID that AWS assigns to represent the allocation of the address for use with Amazon VPC.
	//
	// This is returned only for VPC elastic IP addresses. For example, `eipalloc-5723d13e` .
	AttrAllocationId() *string
	// The Elastic IP address.
	AttrPublicIp() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The network ( `vpc` ).
	Domain() *string
	SetDomain(val *string)
	// A reference to a EIP resource.
	EipRef() *interfacesawsec2.EIPReference
	Env() *interfaces.ResourceEnvironment
	// The ID of the instance.
	InstanceId() *string
	SetInstanceId(val *string)
	// The ID of an IPAM pool which has an Amazon-provided or BYOIP public IPv4 CIDR provisioned to it.
	IpamPoolId() *string
	SetIpamPoolId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// A unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses.
	NetworkBorderGroup() *string
	SetNetworkBorderGroup(val *string)
	// The tree node.
	Node() constructs.Node
	// The ID of an address pool that you own.
	PublicIpv4Pool() *string
	SetPublicIpv4Pool(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// Any tags assigned to the Elastic IP address.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// The Elastic IP address you are accepting for transfer.
	TransferAddress() *string
	SetTransferAddress(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies an Elastic IP (EIP) address and can, optionally, associate it with an Amazon EC2 instance.

You can allocate an Elastic IP address from an address pool owned by AWS or from an address pool created from a public IPv4 address range that you have brought to AWS for use with your AWS resources using bring your own IP addresses (BYOIP). For more information, see [Bring Your Own IP Addresses (BYOIP)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html) in the *Amazon EC2 User Guide* .

For more information, see [Elastic IP Addresses](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) in the *Amazon EC2 User Guide* .

Example:

var listener Listener
var eip CfnEIP

listener.AddEndpointGroup(jsii.String("Group"), &EndpointGroupOptions{
	Endpoints: []IEndpoint{
		ga_endpoints.NewCfnEipEndpoint(eip, &CfnEipEndpointProps{
			Weight: jsii.Number(128),
		}),
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html

func NewCfnEIP

func NewCfnEIP(scope constructs.Construct, id *string, props *CfnEIPProps) CfnEIP

Create a new `AWS::EC2::EIP`.

type CfnEIPAssociation

type CfnEIPAssociation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IEIPAssociationRef
	// The allocation ID.
	AllocationId() *string
	SetAllocationId(val *string)
	// The ID of the association.
	AttrId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// Deprecated: this property has been deprecated.
	Eip() *string
	// Deprecated: this property has been deprecated.
	SetEip(val *string)
	// A reference to a EIPAssociation resource.
	EipAssociationRef() *interfacesawsec2.EIPAssociationReference
	Env() *interfaces.ResourceEnvironment
	// The ID of the instance.
	InstanceId() *string
	SetInstanceId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The ID of the network interface.
	NetworkInterfaceId() *string
	SetNetworkInterfaceId(val *string)
	// The tree node.
	Node() constructs.Node
	// The primary or secondary private IP address to associate with the Elastic IP address.
	PrivateIpAddress() *string
	SetPrivateIpAddress(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Associates an Elastic IP address with an instance or a network interface.

Before you can use an Elastic IP address, you must allocate it to your account. For more information about working with Elastic IP addresses, see [Elastic IP address concepts and rules](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#vpc-eip-overview) .

You must specify `AllocationId` and either `InstanceId` , `NetworkInterfaceId` , or `PrivateIpAddress` .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEIPAssociation := awscdk.Aws_ec2.NewCfnEIPAssociation(this, jsii.String("MyCfnEIPAssociation"), &CfnEIPAssociationProps{
	AllocationId: jsii.String("allocationId"),
	Eip: jsii.String("eip"),
	InstanceId: jsii.String("instanceId"),
	NetworkInterfaceId: jsii.String("networkInterfaceId"),
	PrivateIpAddress: jsii.String("privateIpAddress"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eipassociation.html

func NewCfnEIPAssociation

func NewCfnEIPAssociation(scope constructs.Construct, id *string, props *CfnEIPAssociationProps) CfnEIPAssociation

Create a new `AWS::EC2::EIPAssociation`.

type CfnEIPAssociationProps

type CfnEIPAssociationProps struct {
	// The allocation ID.
	//
	// This is required.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eipassociation.html#cfn-ec2-eipassociation-allocationid
	//
	AllocationId *string `field:"optional" json:"allocationId" yaml:"allocationId"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eipassociation.html#cfn-ec2-eipassociation-eip
	//
	// Deprecated: this property has been deprecated.
	Eip interface{} `field:"optional" json:"eip" yaml:"eip"`
	// The ID of the instance.
	//
	// The instance must have exactly one attached network interface. You can specify either the instance ID or the network interface ID, but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eipassociation.html#cfn-ec2-eipassociation-instanceid
	//
	InstanceId interface{} `field:"optional" json:"instanceId" yaml:"instanceId"`
	// The ID of the network interface.
	//
	// If the instance has more than one network interface, you must specify a network interface ID.
	//
	// You can specify either the instance ID or the network interface ID, but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eipassociation.html#cfn-ec2-eipassociation-networkinterfaceid
	//
	NetworkInterfaceId interface{} `field:"optional" json:"networkInterfaceId" yaml:"networkInterfaceId"`
	// The primary or secondary private IP address to associate with the Elastic IP address.
	//
	// If no private IP address is specified, the Elastic IP address is associated with the primary private IP address.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eipassociation.html#cfn-ec2-eipassociation-privateipaddress
	//
	PrivateIpAddress *string `field:"optional" json:"privateIpAddress" yaml:"privateIpAddress"`
}

Properties for defining a `CfnEIPAssociation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEIPAssociationProps := &CfnEIPAssociationProps{
	AllocationId: jsii.String("allocationId"),
	Eip: jsii.String("eip"),
	InstanceId: jsii.String("instanceId"),
	NetworkInterfaceId: jsii.String("networkInterfaceId"),
	PrivateIpAddress: jsii.String("privateIpAddress"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eipassociation.html

type CfnEIPProps

type CfnEIPProps struct {
	// An Elastic IP address or a carrier IP address in a Wavelength Zone.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html#cfn-ec2-eip-address
	//
	Address *string `field:"optional" json:"address" yaml:"address"`
	// The network ( `vpc` ).
	//
	// If you define an Elastic IP address and associate it with a VPC that is defined in the same template, you must declare a dependency on the VPC-gateway attachment by using the [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) on this resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html#cfn-ec2-eip-domain
	//
	Domain *string `field:"optional" json:"domain" yaml:"domain"`
	// The ID of the instance.
	//
	// > Updates to the `InstanceId` property may require *some interruptions* . Updates on an EIP reassociates the address on its associated resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html#cfn-ec2-eip-instanceid
	//
	InstanceId interface{} `field:"optional" json:"instanceId" yaml:"instanceId"`
	// The ID of an IPAM pool which has an Amazon-provided or BYOIP public IPv4 CIDR provisioned to it.
	//
	// For more information, see [Allocate sequential Elastic IP addresses from an IPAM pool](https://docs.aws.amazon.com/vpc/latest/ipam/tutorials-eip-pool.html) in the *Amazon VPC IPAM User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html#cfn-ec2-eip-ipampoolid
	//
	IpamPoolId *string `field:"optional" json:"ipamPoolId" yaml:"ipamPoolId"`
	// A unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses.
	//
	// Use this parameter to limit the IP address to this location. IP addresses cannot move between network border groups.
	//
	// Use [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) to view the network border groups.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html#cfn-ec2-eip-networkbordergroup
	//
	NetworkBorderGroup *string `field:"optional" json:"networkBorderGroup" yaml:"networkBorderGroup"`
	// The ID of an address pool that you own.
	//
	// Use this parameter to let Amazon EC2 select an address from the address pool.
	//
	// > Updates to the `PublicIpv4Pool` property may require *some interruptions* . Updates on an EIP reassociates the address on its associated resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html#cfn-ec2-eip-publicipv4pool
	//
	PublicIpv4Pool *string `field:"optional" json:"publicIpv4Pool" yaml:"publicIpv4Pool"`
	// Any tags assigned to the Elastic IP address.
	//
	// > Updates to the `Tags` property may require *some interruptions* . Updates on an EIP reassociates the address on its associated resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html#cfn-ec2-eip-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The Elastic IP address you are accepting for transfer.
	//
	// You can only accept one transferred address. For more information on Elastic IP address transfers, see [Transfer Elastic IP addresses](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#transfer-EIPs-intro) in the *Amazon Virtual Private Cloud User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html#cfn-ec2-eip-transferaddress
	//
	TransferAddress *string `field:"optional" json:"transferAddress" yaml:"transferAddress"`
}

Properties for defining a `CfnEIP`.

Example:

var instance Instance

var myZone HostedZone

elasticIp := ec2.NewCfnEIP(this, jsii.String("EIP"), &CfnEIPProps{
	Domain: jsii.String("vpc"),
	InstanceId: instance.InstanceId,
})
route53.NewARecord(this, jsii.String("ARecord"), &ARecordProps{
	Zone: myZone,
	Target: route53.RecordTarget_FromIpAddresses(elasticIp.ref),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-eip.html

type CfnEgressOnlyInternetGateway

type CfnEgressOnlyInternetGateway interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IEgressOnlyInternetGatewayRef
	awscdk.ITaggableV2
	// The ID of the egress-only internet gateway.
	AttrId() *string
	// Tag Manager which manages the tags for this resource.
	CdkTagManager() awscdk.TagManager
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// A reference to a EgressOnlyInternetGateway resource.
	EgressOnlyInternetGatewayRef() *interfacesawsec2.EgressOnlyInternetGatewayReference
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The tags assigned to the egress-only internet gateway.
	Tags() *[]*awscdk.CfnTag
	SetTags(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The ID of the VPC for which to create the egress-only internet gateway.
	VpcId() *string
	SetVpcId(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

[IPv6 only] Specifies an egress-only internet gateway for your VPC.

An egress-only internet gateway is used to enable outbound communication over IPv6 from instances in your VPC to the internet, and prevents hosts outside of your VPC from initiating an IPv6 connection with your instance.

For more information, see [Egress-only internet gateway](https://docs.aws.amazon.com/vpc/latest/userguide/egress-only-internet-gateway.html) in the *Amazon VPC User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEgressOnlyInternetGateway := awscdk.Aws_ec2.NewCfnEgressOnlyInternetGateway(this, jsii.String("MyCfnEgressOnlyInternetGateway"), &CfnEgressOnlyInternetGatewayProps{
	VpcId: jsii.String("vpcId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-egressonlyinternetgateway.html

func NewCfnEgressOnlyInternetGateway

func NewCfnEgressOnlyInternetGateway(scope constructs.Construct, id *string, props *CfnEgressOnlyInternetGatewayProps) CfnEgressOnlyInternetGateway

Create a new `AWS::EC2::EgressOnlyInternetGateway`.

type CfnEgressOnlyInternetGatewayProps

type CfnEgressOnlyInternetGatewayProps struct {
	// The ID of the VPC for which to create the egress-only internet gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-egressonlyinternetgateway.html#cfn-ec2-egressonlyinternetgateway-vpcid
	//
	VpcId interface{} `field:"required" json:"vpcId" yaml:"vpcId"`
	// The tags assigned to the egress-only internet gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-egressonlyinternetgateway.html#cfn-ec2-egressonlyinternetgateway-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnEgressOnlyInternetGateway`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEgressOnlyInternetGatewayProps := &CfnEgressOnlyInternetGatewayProps{
	VpcId: jsii.String("vpcId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-egressonlyinternetgateway.html

type CfnEnclaveCertificateIamRoleAssociation

type CfnEnclaveCertificateIamRoleAssociation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IEnclaveCertificateIamRoleAssociationRef
	// The name of the Amazon S3 bucket to which the certificate was uploaded.
	AttrCertificateS3BucketName() *string
	// The Amazon S3 object key where the certificate, certificate chain, and encrypted private key bundle are stored.
	//
	// The object key is formatted as follows: `role_arn` / `certificate_arn` .
	AttrCertificateS3ObjectKey() *string
	// The ID of the AWS KMS key used to encrypt the private key of the certificate.
	AttrEncryptionKmsKeyId() *string
	// The ARN of the ACM certificate with which to associate the IAM role.
	CertificateArn() *string
	SetCertificateArn(val *string)
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// A reference to a EnclaveCertificateIamRoleAssociation resource.
	EnclaveCertificateIamRoleAssociationRef() *interfacesawsec2.EnclaveCertificateIamRoleAssociationReference
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The ARN of the IAM role to associate with the ACM certificate.
	RoleArn() *string
	SetRoleArn(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Associates an AWS Identity and Access Management (IAM) role with an Certificate Manager (ACM) certificate.

This enables the certificate to be used by the ACM for Nitro Enclaves application inside an enclave. For more information, see [Certificate Manager for Nitro Enclaves](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-refapp.html) in the *AWS Nitro Enclaves User Guide* .

When the IAM role is associated with the ACM certificate, the certificate, certificate chain, and encrypted private key are placed in an Amazon S3 location that only the associated IAM role can access. The private key of the certificate is encrypted with an AWS managed key that has an attached attestation-based key policy.

To enable the IAM role to access the Amazon S3 object, you must grant it permission to call `s3:GetObject` on the Amazon S3 bucket returned by the command. To enable the IAM role to access the KMS key, you must grant it permission to call `kms:Decrypt` on the KMS key returned by the command. For more information, see [Grant the role permission to access the certificate and encryption key](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-refapp.html#add-policy) in the *AWS Nitro Enclaves User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEnclaveCertificateIamRoleAssociation := awscdk.Aws_ec2.NewCfnEnclaveCertificateIamRoleAssociation(this, jsii.String("MyCfnEnclaveCertificateIamRoleAssociation"), &CfnEnclaveCertificateIamRoleAssociationProps{
	CertificateArn: jsii.String("certificateArn"),
	RoleArn: jsii.String("roleArn"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-enclavecertificateiamroleassociation.html

func NewCfnEnclaveCertificateIamRoleAssociation

func NewCfnEnclaveCertificateIamRoleAssociation(scope constructs.Construct, id *string, props *CfnEnclaveCertificateIamRoleAssociationProps) CfnEnclaveCertificateIamRoleAssociation

Create a new `AWS::EC2::EnclaveCertificateIamRoleAssociation`.

type CfnEnclaveCertificateIamRoleAssociationProps

type CfnEnclaveCertificateIamRoleAssociationProps struct {
	// The ARN of the ACM certificate with which to associate the IAM role.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-enclavecertificateiamroleassociation.html#cfn-ec2-enclavecertificateiamroleassociation-certificatearn
	//
	CertificateArn *string `field:"required" json:"certificateArn" yaml:"certificateArn"`
	// The ARN of the IAM role to associate with the ACM certificate.
	//
	// You can associate up to 16 IAM roles with an ACM certificate.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-enclavecertificateiamroleassociation.html#cfn-ec2-enclavecertificateiamroleassociation-rolearn
	//
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
}

Properties for defining a `CfnEnclaveCertificateIamRoleAssociation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEnclaveCertificateIamRoleAssociationProps := &CfnEnclaveCertificateIamRoleAssociationProps{
	CertificateArn: jsii.String("certificateArn"),
	RoleArn: jsii.String("roleArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-enclavecertificateiamroleassociation.html

type CfnFlowLog

type CfnFlowLog interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IFlowLogRef
	awscdk.ITaggable
	// The ID of the flow log.
	//
	// For example, `fl-123456abc123abc1` .
	AttrId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The ARN of the IAM role that allows the service to publish flow logs across accounts.
	DeliverCrossAccountRole() *string
	SetDeliverCrossAccountRole(val *string)
	// The ARN of the IAM role that allows Amazon EC2 to publish flow logs to the log destination.
	DeliverLogsPermissionArn() *string
	SetDeliverLogsPermissionArn(val *string)
	// The destination options.
	DestinationOptions() interface{}
	SetDestinationOptions(val interface{})
	Env() *interfaces.ResourceEnvironment
	// A reference to a FlowLog resource.
	FlowLogRef() *interfacesawsec2.FlowLogReference
	// The destination for the flow log data.
	//
	// The meaning of this parameter depends on the destination type.
	LogDestination() *string
	SetLogDestination(val *string)
	// The type of destination for the flow log data.
	LogDestinationType() *string
	SetLogDestinationType(val *string)
	// The fields to include in the flow log record, in the order in which they should appear.
	LogFormat() *string
	SetLogFormat(val *string)
	// The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs.
	LogGroupName() *string
	SetLogGroupName(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record.
	MaxAggregationInterval() *float64
	SetMaxAggregationInterval(val *float64)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The ID of the resource to monitor.
	ResourceId() *string
	SetResourceId(val *string)
	// The type of resource to monitor.
	ResourceType() *string
	SetResourceType(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags to apply to the flow logs.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// The type of traffic to monitor (accepted traffic, rejected traffic, or all traffic).
	TrafficType() *string
	SetTrafficType(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a VPC flow log that captures IP traffic for a specified network interface, subnet, or VPC.

To view the log data, use Amazon CloudWatch Logs (CloudWatch Logs) to help troubleshoot connection issues. For example, you can use a flow log to investigate why certain traffic isn't reaching an instance, which can help you diagnose overly restrictive security group rules. For more information, see [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) in the *Amazon VPC User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var destinationOptions interface{}

cfnFlowLog := awscdk.Aws_ec2.NewCfnFlowLog(this, jsii.String("MyCfnFlowLog"), &CfnFlowLogProps{
	ResourceId: jsii.String("resourceId"),
	ResourceType: jsii.String("resourceType"),

	// the properties below are optional
	DeliverCrossAccountRole: jsii.String("deliverCrossAccountRole"),
	DeliverLogsPermissionArn: jsii.String("deliverLogsPermissionArn"),
	DestinationOptions: destinationOptions,
	LogDestination: jsii.String("logDestination"),
	LogDestinationType: jsii.String("logDestinationType"),
	LogFormat: jsii.String("logFormat"),
	LogGroupName: jsii.String("logGroupName"),
	MaxAggregationInterval: jsii.Number(123),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	TrafficType: jsii.String("trafficType"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html

func NewCfnFlowLog

func NewCfnFlowLog(scope constructs.Construct, id *string, props *CfnFlowLogProps) CfnFlowLog

Create a new `AWS::EC2::FlowLog`.

type CfnFlowLogProps

type CfnFlowLogProps struct {
	// The ID of the resource to monitor.
	//
	// For example, if the resource type is `VPC` , specify the ID of the VPC.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-resourceid
	//
	ResourceId interface{} `field:"required" json:"resourceId" yaml:"resourceId"`
	// The type of resource to monitor.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-resourcetype
	//
	ResourceType *string `field:"required" json:"resourceType" yaml:"resourceType"`
	// The ARN of the IAM role that allows the service to publish flow logs across accounts.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-delivercrossaccountrole
	//
	DeliverCrossAccountRole *string `field:"optional" json:"deliverCrossAccountRole" yaml:"deliverCrossAccountRole"`
	// The ARN of the IAM role that allows Amazon EC2 to publish flow logs to the log destination.
	//
	// This parameter is required if the destination type is `cloud-watch-logs` , or if the destination type is `kinesis-data-firehose` and the delivery stream and the resources to monitor are in different accounts.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-deliverlogspermissionarn
	//
	DeliverLogsPermissionArn interface{} `field:"optional" json:"deliverLogsPermissionArn" yaml:"deliverLogsPermissionArn"`
	// The destination options.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-destinationoptions
	//
	DestinationOptions interface{} `field:"optional" json:"destinationOptions" yaml:"destinationOptions"`
	// The destination for the flow log data. The meaning of this parameter depends on the destination type.
	//
	// - If the destination type is `cloud-watch-logs` , specify the ARN of a CloudWatch Logs log group. For example:
	//
	// arn:aws:logs: *region* : *account_id* :log-group: *my_group*
	//
	// Alternatively, use the `LogGroupName` parameter.
	// - If the destination type is `s3` , specify the ARN of an S3 bucket. For example:
	//
	// arn:aws:s3::: *my_bucket* / *my_subfolder* /
	//
	// The subfolder is optional. Note that you can't use `AWSLogs` as a subfolder name.
	// - If the destination type is `kinesis-data-firehose` , specify the ARN of a Kinesis Data Firehose delivery stream. For example:
	//
	// arn:aws:firehose: *region* : *account_id* :deliverystream: *my_stream*.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-logdestination
	//
	LogDestination interface{} `field:"optional" json:"logDestination" yaml:"logDestination"`
	// The type of destination for the flow log data.
	//
	// Default: `cloud-watch-logs`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-logdestinationtype
	//
	LogDestinationType *string `field:"optional" json:"logDestinationType" yaml:"logDestinationType"`
	// The fields to include in the flow log record, in the order in which they should appear.
	//
	// If you omit this parameter, the flow log is created using the default format. If you specify this parameter, you must include at least one field. For more information about the available fields, see [Flow log records](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records) in the *Amazon VPC User Guide* or [Transit Gateway Flow Log records](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-flow-logs.html#flow-log-records) in the *AWS Transit Gateway Guide* .
	//
	// Specify the fields using the `${field-id}` format, separated by spaces.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-logformat
	//
	LogFormat *string `field:"optional" json:"logFormat" yaml:"logFormat"`
	// The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs.
	//
	// This parameter is valid only if the destination type is `cloud-watch-logs` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-loggroupname
	//
	LogGroupName interface{} `field:"optional" json:"logGroupName" yaml:"logGroupName"`
	// The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record.
	//
	// The possible values are 60 seconds (1 minute) or 600 seconds (10 minutes). This parameter must be 60 seconds for transit gateway resource types.
	//
	// When a network interface is attached to a [Nitro-based instance](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html) , the aggregation interval is always 60 seconds or less, regardless of the value that you specify.
	//
	// Default: 600.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-maxaggregationinterval
	//
	MaxAggregationInterval *float64 `field:"optional" json:"maxAggregationInterval" yaml:"maxAggregationInterval"`
	// The tags to apply to the flow logs.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The type of traffic to monitor (accepted traffic, rejected traffic, or all traffic).
	//
	// This parameter is not supported for transit gateway resource types. It is required for the other resource types.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-traffictype
	//
	TrafficType *string `field:"optional" json:"trafficType" yaml:"trafficType"`
}

Properties for defining a `CfnFlowLog`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var destinationOptions interface{}

cfnFlowLogProps := &CfnFlowLogProps{
	ResourceId: jsii.String("resourceId"),
	ResourceType: jsii.String("resourceType"),

	// the properties below are optional
	DeliverCrossAccountRole: jsii.String("deliverCrossAccountRole"),
	DeliverLogsPermissionArn: jsii.String("deliverLogsPermissionArn"),
	DestinationOptions: destinationOptions,
	LogDestination: jsii.String("logDestination"),
	LogDestinationType: jsii.String("logDestinationType"),
	LogFormat: jsii.String("logFormat"),
	LogGroupName: jsii.String("logGroupName"),
	MaxAggregationInterval: jsii.Number(123),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	TrafficType: jsii.String("trafficType"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html

type CfnFlowLog_DestinationOptionsProperty added in v2.55.0

type CfnFlowLog_DestinationOptionsProperty struct {
	// The format for the flow log.
	//
	// The default is `plain-text` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-flowlog-destinationoptions.html#cfn-ec2-flowlog-destinationoptions-fileformat
	//
	FileFormat *string `field:"required" json:"fileFormat" yaml:"fileFormat"`
	// Indicates whether to use Hive-compatible prefixes for flow logs stored in Amazon S3.
	//
	// The default is `false` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-flowlog-destinationoptions.html#cfn-ec2-flowlog-destinationoptions-hivecompatiblepartitions
	//
	HiveCompatiblePartitions interface{} `field:"required" json:"hiveCompatiblePartitions" yaml:"hiveCompatiblePartitions"`
	// Indicates whether to partition the flow log per hour.
	//
	// This reduces the cost and response time for queries. The default is `false` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-flowlog-destinationoptions.html#cfn-ec2-flowlog-destinationoptions-perhourpartition
	//
	PerHourPartition interface{} `field:"required" json:"perHourPartition" yaml:"perHourPartition"`
}

Describes the destination options for a flow log.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

destinationOptionsProperty := &DestinationOptionsProperty{
	FileFormat: jsii.String("fileFormat"),
	HiveCompatiblePartitions: jsii.Boolean(false),
	PerHourPartition: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-flowlog-destinationoptions.html

type CfnGatewayRouteTableAssociation

type CfnGatewayRouteTableAssociation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IGatewayRouteTableAssociationRef
	// The ID of the route table association.
	AttrAssociationId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The ID of the gateway.
	GatewayId() *string
	SetGatewayId(val *string)
	// A reference to a GatewayRouteTableAssociation resource.
	GatewayRouteTableAssociationRef() *interfacesawsec2.GatewayRouteTableAssociationReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The ID of the route table.
	RouteTableId() *string
	SetRouteTableId(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Associates a virtual private gateway or internet gateway with a route table.

The gateway and route table must be in the same VPC. This association causes the incoming traffic to the gateway to be routed according to the routes in the route table.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnGatewayRouteTableAssociation := awscdk.Aws_ec2.NewCfnGatewayRouteTableAssociation(this, jsii.String("MyCfnGatewayRouteTableAssociation"), &CfnGatewayRouteTableAssociationProps{
	GatewayId: jsii.String("gatewayId"),
	RouteTableId: jsii.String("routeTableId"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-gatewayroutetableassociation.html

func NewCfnGatewayRouteTableAssociation

func NewCfnGatewayRouteTableAssociation(scope constructs.Construct, id *string, props *CfnGatewayRouteTableAssociationProps) CfnGatewayRouteTableAssociation

Create a new `AWS::EC2::GatewayRouteTableAssociation`.

type CfnGatewayRouteTableAssociationProps

type CfnGatewayRouteTableAssociationProps struct {
	// The ID of the gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-gatewayroutetableassociation.html#cfn-ec2-gatewayroutetableassociation-gatewayid
	//
	GatewayId interface{} `field:"required" json:"gatewayId" yaml:"gatewayId"`
	// The ID of the route table.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-gatewayroutetableassociation.html#cfn-ec2-gatewayroutetableassociation-routetableid
	//
	RouteTableId interface{} `field:"required" json:"routeTableId" yaml:"routeTableId"`
}

Properties for defining a `CfnGatewayRouteTableAssociation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnGatewayRouteTableAssociationProps := &CfnGatewayRouteTableAssociationProps{
	GatewayId: jsii.String("gatewayId"),
	RouteTableId: jsii.String("routeTableId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-gatewayroutetableassociation.html

type CfnHost

type CfnHost interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IHostRef
	awscdk.ITaggableV2
	// The ID of the Outpost hardware asset on which the Dedicated Host is allocated.
	AssetId() *string
	SetAssetId(val *string)
	// The ID of the host.
	AttrHostId() *string
	// Indicates whether the host accepts any untargeted instance launches that match its instance type configuration, or if it only accepts Host tenancy instance launches that specify its unique host ID.
	AutoPlacement() *string
	SetAutoPlacement(val *string)
	// The Availability Zone in which to allocate the Dedicated Host.
	AvailabilityZone() *string
	SetAvailabilityZone(val *string)
	// Tag Manager which manages the tags for this resource.
	CdkTagManager() awscdk.TagManager
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// Indicates whether host maintenance is enabled or disabled for the Dedicated Host.
	HostMaintenance() *string
	SetHostMaintenance(val *string)
	// Indicates whether to enable or disable host recovery for the Dedicated Host.
	HostRecovery() *string
	SetHostRecovery(val *string)
	// A reference to a Host resource.
	HostRef() *interfacesawsec2.HostReference
	// The instance family supported by the Dedicated Host.
	InstanceFamily() *string
	SetInstanceFamily(val *string)
	// Specifies the instance type to be supported by the Dedicated Hosts.
	InstanceType() *string
	SetInstanceType(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// The Amazon Resource Name (ARN) of the AWS Outpost on which the Dedicated Host is allocated.
	OutpostArn() *string
	SetOutpostArn(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Any tags assigned to the Dedicated Host.
	Tags() *[]*awscdk.CfnTag
	SetTags(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Allocates a fully dedicated physical server for launching EC2 instances.

Because the host is fully dedicated for your use, it can help you address compliance requirements and reduce costs by allowing you to use your existing server-bound software licenses. For more information, see [Dedicated Hosts](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnHost := awscdk.Aws_ec2.NewCfnHost(this, jsii.String("MyCfnHost"), &CfnHostProps{
	AvailabilityZone: jsii.String("availabilityZone"),

	// the properties below are optional
	AssetId: jsii.String("assetId"),
	AutoPlacement: jsii.String("autoPlacement"),
	HostMaintenance: jsii.String("hostMaintenance"),
	HostRecovery: jsii.String("hostRecovery"),
	InstanceFamily: jsii.String("instanceFamily"),
	InstanceType: jsii.String("instanceType"),
	OutpostArn: jsii.String("outpostArn"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html

func NewCfnHost

func NewCfnHost(scope constructs.Construct, id *string, props *CfnHostProps) CfnHost

Create a new `AWS::EC2::Host`.

type CfnHostProps

type CfnHostProps struct {
	// The Availability Zone in which to allocate the Dedicated Host.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-availabilityzone
	//
	AvailabilityZone *string `field:"required" json:"availabilityZone" yaml:"availabilityZone"`
	// The ID of the Outpost hardware asset on which the Dedicated Host is allocated.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-assetid
	//
	AssetId *string `field:"optional" json:"assetId" yaml:"assetId"`
	// Indicates whether the host accepts any untargeted instance launches that match its instance type configuration, or if it only accepts Host tenancy instance launches that specify its unique host ID.
	//
	// For more information, see [Understanding auto-placement and affinity](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-dedicated-hosts-work.html#dedicated-hosts-understanding) in the *Amazon EC2 User Guide* .
	//
	// Default: `off`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-autoplacement
	//
	// Default: - "on".
	//
	AutoPlacement *string `field:"optional" json:"autoPlacement" yaml:"autoPlacement"`
	// Indicates whether host maintenance is enabled or disabled for the Dedicated Host.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-hostmaintenance
	//
	// Default: - "off".
	//
	HostMaintenance *string `field:"optional" json:"hostMaintenance" yaml:"hostMaintenance"`
	// Indicates whether to enable or disable host recovery for the Dedicated Host.
	//
	// Host recovery is disabled by default. For more information, see [Host recovery](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-recovery.html) in the *Amazon EC2 User Guide* .
	//
	// Default: `off`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-hostrecovery
	//
	// Default: - "off".
	//
	HostRecovery *string `field:"optional" json:"hostRecovery" yaml:"hostRecovery"`
	// The instance family supported by the Dedicated Host.
	//
	// For example, `m5` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-instancefamily
	//
	InstanceFamily *string `field:"optional" json:"instanceFamily" yaml:"instanceFamily"`
	// Specifies the instance type to be supported by the Dedicated Hosts.
	//
	// If you specify an instance type, the Dedicated Hosts support instances of the specified instance type only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-instancetype
	//
	InstanceType *string `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The Amazon Resource Name (ARN) of the AWS Outpost on which the Dedicated Host is allocated.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-outpostarn
	//
	OutpostArn *string `field:"optional" json:"outpostArn" yaml:"outpostArn"`
	// Any tags assigned to the Dedicated Host.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnHost`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnHostProps := &CfnHostProps{
	AvailabilityZone: jsii.String("availabilityZone"),

	// the properties below are optional
	AssetId: jsii.String("assetId"),
	AutoPlacement: jsii.String("autoPlacement"),
	HostMaintenance: jsii.String("hostMaintenance"),
	HostRecovery: jsii.String("hostRecovery"),
	InstanceFamily: jsii.String("instanceFamily"),
	InstanceType: jsii.String("instanceType"),
	OutpostArn: jsii.String("outpostArn"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html

type CfnIPAM added in v2.2.0

type CfnIPAM interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIPAMRef
	awscdk.ITaggable
	// The ARN of the IPAM.
	AttrArn() *string
	// The ID of the default resource discovery association.
	AttrDefaultResourceDiscoveryAssociationId() *string
	// The ID of the default resource discovery.
	AttrDefaultResourceDiscoveryId() *string
	// The ID of the IPAM.
	AttrIpamId() *string
	// The ID of the default private scope.
	AttrPrivateDefaultScopeId() *string
	// The ID of the default public scope.
	AttrPublicDefaultScopeId() *string
	// The number of resource discovery associations.
	AttrResourceDiscoveryAssociationCount() *float64
	// The number of scopes.
	AttrScopeCount() *float64
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// If your IPAM is integrated with AWS Organizations, you can exclude an [organizational unit (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) from being managed by IPAM. When you exclude an OU, IPAM will not manage the IP addresses in accounts in that OU. For more information, see [Exclude organizational units from IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/exclude-ous.html) in the *Amazon Virtual Private Cloud IP Address Manager User Guide* .
	DefaultResourceDiscoveryOrganizationalUnitExclusions() interface{}
	SetDefaultResourceDiscoveryOrganizationalUnitExclusions(val interface{})
	// The description for the IPAM.
	Description() *string
	SetDescription(val *string)
	// Enable this option to use your own GUA ranges as private IPv6 addresses.
	EnablePrivateGua() interface{}
	SetEnablePrivateGua(val interface{})
	Env() *interfaces.ResourceEnvironment
	// A reference to a IPAM resource.
	IpamRef() *interfacesawsec2.IPAMReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// A metered account is an AWS account that is charged for active IP addresses managed in IPAM.
	MeteredAccount() *string
	SetMeteredAccount(val *string)
	// The tree node.
	Node() constructs.Node
	// The operating Regions for an IPAM.
	OperatingRegions() interface{}
	SetOperatingRegions(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The key/value combination of a tag assigned to the resource.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// IPAM is offered in a Free Tier and an Advanced Tier.
	Tier() *string
	SetTier(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts throughout your AWS Organization.

For more information, see [What is IPAM?](https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html) in the *Amazon VPC IPAM User Guide* .

There are AWS Identity and Access Management (IAM) permissions required to fully manage an IPAM in CloudFormation. For more information, see [Example policy](https://docs.aws.amazon.com/vpc/latest/ipam/iam-ipam-policy-examples.html) in the *Amazon VPC IPAM User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAM := awscdk.Aws_ec2.NewCfnIPAM(this, jsii.String("MyCfnIPAM"), &CfnIPAMProps{
	DefaultResourceDiscoveryOrganizationalUnitExclusions: []interface{}{
		&IpamOrganizationalUnitExclusionProperty{
			OrganizationsEntityPath: jsii.String("organizationsEntityPath"),
		},
	},
	Description: jsii.String("description"),
	EnablePrivateGua: jsii.Boolean(false),
	MeteredAccount: jsii.String("meteredAccount"),
	OperatingRegions: []interface{}{
		&IpamOperatingRegionProperty{
			RegionName: jsii.String("regionName"),
		},
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	Tier: jsii.String("tier"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html

func NewCfnIPAM added in v2.2.0

func NewCfnIPAM(scope constructs.Construct, id *string, props *CfnIPAMProps) CfnIPAM

Create a new `AWS::EC2::IPAM`.

type CfnIPAMAllocation added in v2.2.0

type CfnIPAMAllocation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIPAMAllocationRef
	// The ID of an allocation.
	AttrIpamPoolAllocationId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// The CIDR you would like to allocate from the IPAM pool.
	//
	// Note the following:.
	Cidr() *string
	SetCidr(val *string)
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// A description for the allocation.
	Description() *string
	SetDescription(val *string)
	Env() *interfaces.ResourceEnvironment
	// A reference to a IPAMAllocation resource.
	IpamAllocationRef() *interfacesawsec2.IPAMAllocationReference
	// The ID of the IPAM pool from which you would like to allocate a CIDR.
	IpamPoolId() *string
	SetIpamPoolId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The netmask length of the CIDR you would like to allocate from the IPAM pool.
	//
	// Note the following:.
	NetmaskLength() *float64
	SetNetmaskLength(val *float64)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

In IPAM, an allocation is a CIDR assignment from an IPAM pool to another IPAM pool or to a resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMAllocation := awscdk.Aws_ec2.NewCfnIPAMAllocation(this, jsii.String("MyCfnIPAMAllocation"), &CfnIPAMAllocationProps{
	IpamPoolId: jsii.String("ipamPoolId"),

	// the properties below are optional
	Cidr: jsii.String("cidr"),
	Description: jsii.String("description"),
	NetmaskLength: jsii.Number(123),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamallocation.html

func NewCfnIPAMAllocation added in v2.2.0

func NewCfnIPAMAllocation(scope constructs.Construct, id *string, props *CfnIPAMAllocationProps) CfnIPAMAllocation

Create a new `AWS::EC2::IPAMAllocation`.

type CfnIPAMAllocationProps added in v2.2.0

type CfnIPAMAllocationProps struct {
	// The ID of the IPAM pool from which you would like to allocate a CIDR.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamallocation.html#cfn-ec2-ipamallocation-ipampoolid
	//
	IpamPoolId *string `field:"required" json:"ipamPoolId" yaml:"ipamPoolId"`
	// The CIDR you would like to allocate from the IPAM pool. Note the following:.
	//
	// - If there is no DefaultNetmaskLength allocation rule set on the pool, you must specify either the NetmaskLength or the CIDR.
	// - If the DefaultNetmaskLength allocation rule is set on the pool, you can specify either the NetmaskLength or the CIDR and the DefaultNetmaskLength allocation rule will be ignored.
	//
	// Possible values: Any available IPv4 or IPv6 CIDR.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamallocation.html#cfn-ec2-ipamallocation-cidr
	//
	Cidr *string `field:"optional" json:"cidr" yaml:"cidr"`
	// A description for the allocation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamallocation.html#cfn-ec2-ipamallocation-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The netmask length of the CIDR you would like to allocate from the IPAM pool. Note the following:.
	//
	// - If there is no DefaultNetmaskLength allocation rule set on the pool, you must specify either the NetmaskLength or the CIDR.
	// - If the DefaultNetmaskLength allocation rule is set on the pool, you can specify either the NetmaskLength or the CIDR and the DefaultNetmaskLength allocation rule will be ignored.
	//
	// Possible netmask lengths for IPv4 addresses are 0 - 32. Possible netmask lengths for IPv6 addresses are 0 - 128.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamallocation.html#cfn-ec2-ipamallocation-netmasklength
	//
	NetmaskLength *float64 `field:"optional" json:"netmaskLength" yaml:"netmaskLength"`
}

Properties for defining a `CfnIPAMAllocation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMAllocationProps := &CfnIPAMAllocationProps{
	IpamPoolId: jsii.String("ipamPoolId"),

	// the properties below are optional
	Cidr: jsii.String("cidr"),
	Description: jsii.String("description"),
	NetmaskLength: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamallocation.html

type CfnIPAMPool added in v2.2.0

type CfnIPAMPool interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIPAMPoolRef
	awscdk.ITaggable
	// The address family of the pool.
	AddressFamily() *string
	SetAddressFamily(val *string)
	// The default netmask length for allocations added to this pool.
	AllocationDefaultNetmaskLength() *float64
	SetAllocationDefaultNetmaskLength(val *float64)
	// The maximum netmask length possible for CIDR allocations in this IPAM pool to be compliant.
	AllocationMaxNetmaskLength() *float64
	SetAllocationMaxNetmaskLength(val *float64)
	// The minimum netmask length required for CIDR allocations in this IPAM pool to be compliant.
	AllocationMinNetmaskLength() *float64
	SetAllocationMinNetmaskLength(val *float64)
	// Tags that are required for resources that use CIDRs from this IPAM pool.
	AllocationResourceTags() interface{}
	SetAllocationResourceTags(val interface{})
	// The ARN of the IPAM pool.
	AttrArn() *string
	// The ARN of the IPAM.
	AttrIpamArn() *string
	// The ID of the IPAM pool.
	AttrIpamPoolId() *string
	// The ARN of the scope of the IPAM pool.
	AttrIpamScopeArn() *string
	// The scope of the IPAM.
	AttrIpamScopeType() *string
	// The depth of pools in your IPAM pool.
	//
	// The pool depth quota is 10.
	AttrPoolDepth() *float64
	// The state of the IPAM pool.
	AttrState() *string
	// A message related to the failed creation of an IPAM pool.
	AttrStateMessage() *string
	// If selected, IPAM will continuously look for resources within the CIDR range of this pool and automatically import them as allocations into your IPAM.
	AutoImport() interface{}
	SetAutoImport(val interface{})
	// Limits which service in AWS that the pool can be used in.
	AwsService() *string
	SetAwsService(val *string)
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The description of the IPAM pool.
	Description() *string
	SetDescription(val *string)
	Env() *interfaces.ResourceEnvironment
	// A reference to a IPAMPool resource.
	IpamPoolRef() *interfacesawsec2.IPAMPoolReference
	// The ID of the scope in which you would like to create the IPAM pool.
	IpamScopeId() *string
	SetIpamScopeId(val *string)
	// The locale of the IPAM pool.
	Locale() *string
	SetLocale(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Information about the CIDRs provisioned to an IPAM pool.
	ProvisionedCidrs() interface{}
	SetProvisionedCidrs(val interface{})
	// The IP address source for pools in the public scope.
	PublicIpSource() *string
	SetPublicIpSource(val *string)
	// Determines if a pool is publicly advertisable.
	PubliclyAdvertisable() interface{}
	SetPubliclyAdvertisable(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The ID of the source IPAM pool.
	SourceIpamPoolId() *string
	SetSourceIpamPoolId(val *string)
	// The resource used to provision CIDRs to a resource planning pool.
	SourceResource() interface{}
	SetSourceResource(val interface{})
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The key/value combination of a tag assigned to the resource.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

In IPAM, a pool is a collection of contiguous IP addresses CIDRs.

Pools enable you to organize your IP addresses according to your routing and security needs. For example, if you have separate routing and security needs for development and production applications, you can create a pool for each.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMPool := awscdk.Aws_ec2.NewCfnIPAMPool(this, jsii.String("MyCfnIPAMPool"), &CfnIPAMPoolProps{
	AddressFamily: jsii.String("addressFamily"),
	IpamScopeId: jsii.String("ipamScopeId"),

	// the properties below are optional
	AllocationDefaultNetmaskLength: jsii.Number(123),
	AllocationMaxNetmaskLength: jsii.Number(123),
	AllocationMinNetmaskLength: jsii.Number(123),
	AllocationResourceTags: []interface{}{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	AutoImport: jsii.Boolean(false),
	AwsService: jsii.String("awsService"),
	Description: jsii.String("description"),
	Locale: jsii.String("locale"),
	ProvisionedCidrs: []interface{}{
		&ProvisionedCidrProperty{
			Cidr: jsii.String("cidr"),
		},
	},
	PublicIpSource: jsii.String("publicIpSource"),
	PubliclyAdvertisable: jsii.Boolean(false),
	SourceIpamPoolId: jsii.String("sourceIpamPoolId"),
	SourceResource: &SourceResourceProperty{
		ResourceId: jsii.String("resourceId"),
		ResourceOwner: jsii.String("resourceOwner"),
		ResourceRegion: jsii.String("resourceRegion"),
		ResourceType: jsii.String("resourceType"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html

func NewCfnIPAMPool added in v2.2.0

func NewCfnIPAMPool(scope constructs.Construct, id *string, props *CfnIPAMPoolProps) CfnIPAMPool

Create a new `AWS::EC2::IPAMPool`.

type CfnIPAMPoolCidr added in v2.64.0

type CfnIPAMPoolCidr interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIPAMPoolCidrRef
	// The IPAM pool CIDR ID.
	AttrIpamPoolCidrId() *string
	// The state of the CIDR.
	AttrState() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// The CIDR provisioned to the IPAM pool.
	Cidr() *string
	SetCidr(val *string)
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// A reference to a IPAMPoolCidr resource.
	IpamPoolCidrRef() *interfacesawsec2.IPAMPoolCidrReference
	// The ID of the IPAM pool.
	IpamPoolId() *string
	SetIpamPoolId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The netmask length of the CIDR you'd like to provision to a pool.
	NetmaskLength() *float64
	SetNetmaskLength(val *float64)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

A CIDR provisioned to an IPAM pool.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMPoolCidr := awscdk.Aws_ec2.NewCfnIPAMPoolCidr(this, jsii.String("MyCfnIPAMPoolCidr"), &CfnIPAMPoolCidrProps{
	IpamPoolId: jsii.String("ipamPoolId"),

	// the properties below are optional
	Cidr: jsii.String("cidr"),
	NetmaskLength: jsii.Number(123),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampoolcidr.html

func NewCfnIPAMPoolCidr added in v2.64.0

func NewCfnIPAMPoolCidr(scope constructs.Construct, id *string, props *CfnIPAMPoolCidrProps) CfnIPAMPoolCidr

Create a new `AWS::EC2::IPAMPoolCidr`.

type CfnIPAMPoolCidrProps added in v2.64.0

type CfnIPAMPoolCidrProps struct {
	// The ID of the IPAM pool.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampoolcidr.html#cfn-ec2-ipampoolcidr-ipampoolid
	//
	IpamPoolId *string `field:"required" json:"ipamPoolId" yaml:"ipamPoolId"`
	// The CIDR provisioned to the IPAM pool.
	//
	// A CIDR is a representation of an IP address and its associated network mask (or netmask) and refers to a range of IP addresses. An IPv4 CIDR example is `10.24.34.0/23` . An IPv6 CIDR example is `2001:DB8::/32` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampoolcidr.html#cfn-ec2-ipampoolcidr-cidr
	//
	Cidr *string `field:"optional" json:"cidr" yaml:"cidr"`
	// The netmask length of the CIDR you'd like to provision to a pool.
	//
	// Can be used for provisioning Amazon-provided IPv6 CIDRs to top-level pools and for provisioning CIDRs to pools with source pools. Cannot be used to provision BYOIP CIDRs to top-level pools. "NetmaskLength" or "Cidr" is required.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampoolcidr.html#cfn-ec2-ipampoolcidr-netmasklength
	//
	NetmaskLength *float64 `field:"optional" json:"netmaskLength" yaml:"netmaskLength"`
}

Properties for defining a `CfnIPAMPoolCidr`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMPoolCidrProps := &CfnIPAMPoolCidrProps{
	IpamPoolId: jsii.String("ipamPoolId"),

	// the properties below are optional
	Cidr: jsii.String("cidr"),
	NetmaskLength: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampoolcidr.html

type CfnIPAMPoolProps added in v2.2.0

type CfnIPAMPoolProps struct {
	// The address family of the pool.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-addressfamily
	//
	AddressFamily *string `field:"required" json:"addressFamily" yaml:"addressFamily"`
	// The ID of the scope in which you would like to create the IPAM pool.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-ipamscopeid
	//
	IpamScopeId *string `field:"required" json:"ipamScopeId" yaml:"ipamScopeId"`
	// The default netmask length for allocations added to this pool.
	//
	// If, for example, the CIDR assigned to this pool is 10.0.0.0/8 and you enter 16 here, new allocations will default to 10.0.0.0/16.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-allocationdefaultnetmasklength
	//
	AllocationDefaultNetmaskLength *float64 `field:"optional" json:"allocationDefaultNetmaskLength" yaml:"allocationDefaultNetmaskLength"`
	// The maximum netmask length possible for CIDR allocations in this IPAM pool to be compliant.
	//
	// The maximum netmask length must be greater than the minimum netmask length. Possible netmask lengths for IPv4 addresses are 0 - 32. Possible netmask lengths for IPv6 addresses are 0 - 128.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-allocationmaxnetmasklength
	//
	AllocationMaxNetmaskLength *float64 `field:"optional" json:"allocationMaxNetmaskLength" yaml:"allocationMaxNetmaskLength"`
	// The minimum netmask length required for CIDR allocations in this IPAM pool to be compliant.
	//
	// The minimum netmask length must be less than the maximum netmask length. Possible netmask lengths for IPv4 addresses are 0 - 32. Possible netmask lengths for IPv6 addresses are 0 - 128.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-allocationminnetmasklength
	//
	AllocationMinNetmaskLength *float64 `field:"optional" json:"allocationMinNetmaskLength" yaml:"allocationMinNetmaskLength"`
	// Tags that are required for resources that use CIDRs from this IPAM pool.
	//
	// Resources that do not have these tags will not be allowed to allocate space from the pool. If the resources have their tags changed after they have allocated space or if the allocation tagging requirements are changed on the pool, the resource may be marked as noncompliant.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-allocationresourcetags
	//
	AllocationResourceTags interface{} `field:"optional" json:"allocationResourceTags" yaml:"allocationResourceTags"`
	// If selected, IPAM will continuously look for resources within the CIDR range of this pool and automatically import them as allocations into your IPAM.
	//
	// The CIDRs that will be allocated for these resources must not already be allocated to other resources in order for the import to succeed. IPAM will import a CIDR regardless of its compliance with the pool's allocation rules, so a resource might be imported and subsequently marked as noncompliant. If IPAM discovers multiple CIDRs that overlap, IPAM will import the largest CIDR only. If IPAM discovers multiple CIDRs with matching CIDRs, IPAM will randomly import one of them only.
	//
	// A locale must be set on the pool for this feature to work.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-autoimport
	//
	AutoImport interface{} `field:"optional" json:"autoImport" yaml:"autoImport"`
	// Limits which service in AWS that the pool can be used in.
	//
	// "ec2", for example, allows users to use space for Elastic IP addresses and VPCs.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-awsservice
	//
	AwsService *string `field:"optional" json:"awsService" yaml:"awsService"`
	// The description of the IPAM pool.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The locale of the IPAM pool.
	//
	// The locale for the pool should be one of the following:
	//
	// - An AWS Region where you want this IPAM pool to be available for allocations.
	// - The network border group for an AWS Local Zone where you want this IPAM pool to be available for allocations ( [supported Local Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail) ). This option is only available for IPAM IPv4 pools in the public scope.
	//
	// If you choose an AWS Region for locale that has not been configured as an operating Region for the IPAM, you'll get an error.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-locale
	//
	Locale *string `field:"optional" json:"locale" yaml:"locale"`
	// Information about the CIDRs provisioned to an IPAM pool.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-provisionedcidrs
	//
	ProvisionedCidrs interface{} `field:"optional" json:"provisionedCidrs" yaml:"provisionedCidrs"`
	// The IP address source for pools in the public scope.
	//
	// Only used for provisioning IP address CIDRs to pools in the public scope. Default is `BYOIP` . For more information, see [Create IPv6 pools](https://docs.aws.amazon.com//vpc/latest/ipam/intro-create-ipv6-pools.html) in the *Amazon VPC IPAM User Guide* . By default, you can add only one Amazon-provided IPv6 CIDR block to a top-level IPv6 pool. For information on increasing the default limit, see [Quotas for your IPAM](https://docs.aws.amazon.com//vpc/latest/ipam/quotas-ipam.html) in the *Amazon VPC IPAM User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-publicipsource
	//
	PublicIpSource *string `field:"optional" json:"publicIpSource" yaml:"publicIpSource"`
	// Determines if a pool is publicly advertisable.
	//
	// This option is not available for pools with AddressFamily set to `ipv4` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-publiclyadvertisable
	//
	PubliclyAdvertisable interface{} `field:"optional" json:"publiclyAdvertisable" yaml:"publiclyAdvertisable"`
	// The ID of the source IPAM pool.
	//
	// You can use this option to create an IPAM pool within an existing source pool.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-sourceipampoolid
	//
	SourceIpamPoolId *string `field:"optional" json:"sourceIpamPoolId" yaml:"sourceIpamPoolId"`
	// The resource used to provision CIDRs to a resource planning pool.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-sourceresource
	//
	SourceResource interface{} `field:"optional" json:"sourceResource" yaml:"sourceResource"`
	// The key/value combination of a tag assigned to the resource.
	//
	// Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key `Owner` and the value `TeamA` , specify `tag:Owner` for the filter name and `TeamA` for the filter value.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnIPAMPool`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMPoolProps := &CfnIPAMPoolProps{
	AddressFamily: jsii.String("addressFamily"),
	IpamScopeId: jsii.String("ipamScopeId"),

	// the properties below are optional
	AllocationDefaultNetmaskLength: jsii.Number(123),
	AllocationMaxNetmaskLength: jsii.Number(123),
	AllocationMinNetmaskLength: jsii.Number(123),
	AllocationResourceTags: []interface{}{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	AutoImport: jsii.Boolean(false),
	AwsService: jsii.String("awsService"),
	Description: jsii.String("description"),
	Locale: jsii.String("locale"),
	ProvisionedCidrs: []interface{}{
		&ProvisionedCidrProperty{
			Cidr: jsii.String("cidr"),
		},
	},
	PublicIpSource: jsii.String("publicIpSource"),
	PubliclyAdvertisable: jsii.Boolean(false),
	SourceIpamPoolId: jsii.String("sourceIpamPoolId"),
	SourceResource: &SourceResourceProperty{
		ResourceId: jsii.String("resourceId"),
		ResourceOwner: jsii.String("resourceOwner"),
		ResourceRegion: jsii.String("resourceRegion"),
		ResourceType: jsii.String("resourceType"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html

type CfnIPAMPool_ProvisionedCidrProperty added in v2.2.0

type CfnIPAMPool_ProvisionedCidrProperty struct {
	// The CIDR provisioned to the IPAM pool.
	//
	// A CIDR is a representation of an IP address and its associated network mask (or netmask) and refers to a range of IP addresses. An IPv4 CIDR example is `10.24.34.0/23` . An IPv6 CIDR example is `2001:DB8::/32` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipampool-provisionedcidr.html#cfn-ec2-ipampool-provisionedcidr-cidr
	//
	Cidr *string `field:"required" json:"cidr" yaml:"cidr"`
}

The CIDR provisioned to the IPAM pool.

A CIDR is a representation of an IP address and its associated network mask (or netmask) and refers to a range of IP addresses. An IPv4 CIDR example is `10.24.34.0/23` . An IPv6 CIDR example is `2001:DB8::/32` .

> This resource type does not allow you to provision a CIDR using the netmask length. To provision a CIDR using netmask length, use [AWS::EC2::IPAMPoolCidr](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampoolcidr.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

provisionedCidrProperty := &ProvisionedCidrProperty{
	Cidr: jsii.String("cidr"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipampool-provisionedcidr.html

type CfnIPAMPool_SourceResourceProperty added in v2.122.0

type CfnIPAMPool_SourceResourceProperty struct {
	// The source resource ID.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipampool-sourceresource.html#cfn-ec2-ipampool-sourceresource-resourceid
	//
	ResourceId *string `field:"required" json:"resourceId" yaml:"resourceId"`
	// The source resource owner.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipampool-sourceresource.html#cfn-ec2-ipampool-sourceresource-resourceowner
	//
	ResourceOwner *string `field:"required" json:"resourceOwner" yaml:"resourceOwner"`
	// The source resource Region.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipampool-sourceresource.html#cfn-ec2-ipampool-sourceresource-resourceregion
	//
	ResourceRegion *string `field:"required" json:"resourceRegion" yaml:"resourceRegion"`
	// The source resource type.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipampool-sourceresource.html#cfn-ec2-ipampool-sourceresource-resourcetype
	//
	ResourceType *string `field:"required" json:"resourceType" yaml:"resourceType"`
}

The resource used to provision CIDRs to a resource planning pool.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

sourceResourceProperty := &SourceResourceProperty{
	ResourceId: jsii.String("resourceId"),
	ResourceOwner: jsii.String("resourceOwner"),
	ResourceRegion: jsii.String("resourceRegion"),
	ResourceType: jsii.String("resourceType"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipampool-sourceresource.html

type CfnIPAMPrefixListResolver added in v2.241.0

type CfnIPAMPrefixListResolver interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIPAMPrefixListResolverRef
	awscdk.ITaggableV2
	// The address family of the address space in this Prefix List Resolver.
	AddressFamily() *string
	SetAddressFamily(val *string)
	// The Amazon Resource Name (ARN) of the IPAM this Prefix List Resolver is a part of.
	AttrIpamArn() *string
	// The Amazon Resource Name (ARN) of the IPAM Prefix List Resolver.
	AttrIpamPrefixListResolverArn() *string
	// Id of the IPAM Prefix List Resolver.
	AttrIpamPrefixListResolverId() *string
	// Tag Manager which manages the tags for this resource.
	CdkTagManager() awscdk.TagManager
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Description() *string
	SetDescription(val *string)
	Env() *interfaces.ResourceEnvironment
	// The Id of the IPAM this Prefix List Resolver is a part of.
	IpamId() *string
	SetIpamId(val *string)
	// A reference to a IPAMPrefixListResolver resource.
	IpamPrefixListResolverRef() *interfacesawsec2.IPAMPrefixListResolverReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// Rules define the business logic for selecting CIDRs from IPAM.
	Rules() interface{}
	SetRules(val interface{})
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// An array of key-value pairs to apply to this resource.
	Tags() *[]*awscdk.CfnTag
	SetTags(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Resource Type definition for AWS::EC2::IPAMPrefixListResolver.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMPrefixListResolver := awscdk.Aws_ec2.NewCfnIPAMPrefixListResolver(this, jsii.String("MyCfnIPAMPrefixListResolver"), &CfnIPAMPrefixListResolverProps{
	AddressFamily: jsii.String("addressFamily"),

	// the properties below are optional
	Description: jsii.String("description"),
	IpamId: jsii.String("ipamId"),
	Rules: []interface{}{
		&IpamPrefixListResolverRuleProperty{
			RuleType: jsii.String("ruleType"),

			// the properties below are optional
			Conditions: []interface{}{
				&IpamPrefixListResolverRuleConditionProperty{
					Operation: jsii.String("operation"),

					// the properties below are optional
					Cidr: jsii.String("cidr"),
					IpamPoolId: jsii.String("ipamPoolId"),
					ResourceId: jsii.String("resourceId"),
					ResourceOwner: jsii.String("resourceOwner"),
					ResourceRegion: jsii.String("resourceRegion"),
					ResourceTag: &CfnTag{
						Key: jsii.String("key"),
						Value: jsii.String("value"),
					},
				},
			},
			IpamScopeId: jsii.String("ipamScopeId"),
			ResourceType: jsii.String("resourceType"),
			StaticCidr: jsii.String("staticCidr"),
		},
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolver.html

func NewCfnIPAMPrefixListResolver added in v2.241.0

func NewCfnIPAMPrefixListResolver(scope constructs.Construct, id *string, props *CfnIPAMPrefixListResolverProps) CfnIPAMPrefixListResolver

Create a new `AWS::EC2::IPAMPrefixListResolver`.

type CfnIPAMPrefixListResolverProps added in v2.241.0

type CfnIPAMPrefixListResolverProps struct {
	// The address family of the address space in this Prefix List Resolver.
	//
	// Either IPv4 or IPv6.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolver.html#cfn-ec2-ipamprefixlistresolver-addressfamily
	//
	AddressFamily *string `field:"required" json:"addressFamily" yaml:"addressFamily"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolver.html#cfn-ec2-ipamprefixlistresolver-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The Id of the IPAM this Prefix List Resolver is a part of.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolver.html#cfn-ec2-ipamprefixlistresolver-ipamid
	//
	IpamId *string `field:"optional" json:"ipamId" yaml:"ipamId"`
	// Rules define the business logic for selecting CIDRs from IPAM.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolver.html#cfn-ec2-ipamprefixlistresolver-rules
	//
	Rules interface{} `field:"optional" json:"rules" yaml:"rules"`
	// An array of key-value pairs to apply to this resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolver.html#cfn-ec2-ipamprefixlistresolver-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnIPAMPrefixListResolver`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMPrefixListResolverProps := &CfnIPAMPrefixListResolverProps{
	AddressFamily: jsii.String("addressFamily"),

	// the properties below are optional
	Description: jsii.String("description"),
	IpamId: jsii.String("ipamId"),
	Rules: []interface{}{
		&IpamPrefixListResolverRuleProperty{
			RuleType: jsii.String("ruleType"),

			// the properties below are optional
			Conditions: []interface{}{
				&IpamPrefixListResolverRuleConditionProperty{
					Operation: jsii.String("operation"),

					// the properties below are optional
					Cidr: jsii.String("cidr"),
					IpamPoolId: jsii.String("ipamPoolId"),
					ResourceId: jsii.String("resourceId"),
					ResourceOwner: jsii.String("resourceOwner"),
					ResourceRegion: jsii.String("resourceRegion"),
					ResourceTag: &CfnTag{
						Key: jsii.String("key"),
						Value: jsii.String("value"),
					},
				},
			},
			IpamScopeId: jsii.String("ipamScopeId"),
			ResourceType: jsii.String("resourceType"),
			StaticCidr: jsii.String("staticCidr"),
		},
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolver.html

type CfnIPAMPrefixListResolverTarget added in v2.245.0

type CfnIPAMPrefixListResolverTarget interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIPAMPrefixListResolverTargetRef
	awscdk.ITaggableV2
	// Id of the IPAM Prefix List Resolver Target.
	AttrIpamPrefixListResolverTargetArn() *string
	// Id of the IPAM Prefix List Resolver Target.
	AttrIpamPrefixListResolverTargetId() *string
	// Tag Manager which manages the tags for this resource.
	CdkTagManager() awscdk.TagManager
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The desired version of the Prefix List Resolver that this Target should synchronize with.
	DesiredVersion() *float64
	SetDesiredVersion(val *float64)
	Env() *interfaces.ResourceEnvironment
	// The Id of the IPAM Prefix List Resolver associated with this Target.
	IpamPrefixListResolverId() *string
	SetIpamPrefixListResolverId(val *string)
	// A reference to a IPAMPrefixListResolverTarget resource.
	IpamPrefixListResolverTargetRef() *interfacesawsec2.IPAMPrefixListResolverTargetReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// The Id of the Managed Prefix List.
	PrefixListId() *string
	SetPrefixListId(val *string)
	// The region that the Managed Prefix List is located in.
	PrefixListRegion() *string
	SetPrefixListRegion(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// An array of key-value pairs to apply to this resource.
	Tags() *[]*awscdk.CfnTag
	SetTags(val *[]*awscdk.CfnTag)
	// Indicates whether this Target automatically tracks the latest version of the Prefix List Resolver.
	TrackLatestVersion() interface{}
	SetTrackLatestVersion(val interface{})
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Resource Type definition for AWS::EC2::IPAMPrefixListResolverTarget.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMPrefixListResolverTarget := awscdk.Aws_ec2.NewCfnIPAMPrefixListResolverTarget(this, jsii.String("MyCfnIPAMPrefixListResolverTarget"), &CfnIPAMPrefixListResolverTargetProps{
	IpamPrefixListResolverId: jsii.String("ipamPrefixListResolverId"),
	PrefixListId: jsii.String("prefixListId"),
	PrefixListRegion: jsii.String("prefixListRegion"),
	TrackLatestVersion: jsii.Boolean(false),

	// the properties below are optional
	DesiredVersion: jsii.Number(123),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolvertarget.html

func NewCfnIPAMPrefixListResolverTarget added in v2.245.0

func NewCfnIPAMPrefixListResolverTarget(scope constructs.Construct, id *string, props *CfnIPAMPrefixListResolverTargetProps) CfnIPAMPrefixListResolverTarget

Create a new `AWS::EC2::IPAMPrefixListResolverTarget`.

type CfnIPAMPrefixListResolverTargetProps added in v2.245.0

type CfnIPAMPrefixListResolverTargetProps struct {
	// The Id of the IPAM Prefix List Resolver associated with this Target.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolvertarget.html#cfn-ec2-ipamprefixlistresolvertarget-ipamprefixlistresolverid
	//
	IpamPrefixListResolverId *string `field:"required" json:"ipamPrefixListResolverId" yaml:"ipamPrefixListResolverId"`
	// The Id of the Managed Prefix List.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolvertarget.html#cfn-ec2-ipamprefixlistresolvertarget-prefixlistid
	//
	PrefixListId *string `field:"required" json:"prefixListId" yaml:"prefixListId"`
	// The region that the Managed Prefix List is located in.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolvertarget.html#cfn-ec2-ipamprefixlistresolvertarget-prefixlistregion
	//
	PrefixListRegion *string `field:"required" json:"prefixListRegion" yaml:"prefixListRegion"`
	// Indicates whether this Target automatically tracks the latest version of the Prefix List Resolver.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolvertarget.html#cfn-ec2-ipamprefixlistresolvertarget-tracklatestversion
	//
	TrackLatestVersion interface{} `field:"required" json:"trackLatestVersion" yaml:"trackLatestVersion"`
	// The desired version of the Prefix List Resolver that this Target should synchronize with.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolvertarget.html#cfn-ec2-ipamprefixlistresolvertarget-desiredversion
	//
	DesiredVersion *float64 `field:"optional" json:"desiredVersion" yaml:"desiredVersion"`
	// An array of key-value pairs to apply to this resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolvertarget.html#cfn-ec2-ipamprefixlistresolvertarget-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnIPAMPrefixListResolverTarget`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMPrefixListResolverTargetProps := &CfnIPAMPrefixListResolverTargetProps{
	IpamPrefixListResolverId: jsii.String("ipamPrefixListResolverId"),
	PrefixListId: jsii.String("prefixListId"),
	PrefixListRegion: jsii.String("prefixListRegion"),
	TrackLatestVersion: jsii.Boolean(false),

	// the properties below are optional
	DesiredVersion: jsii.Number(123),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamprefixlistresolvertarget.html

type CfnIPAMPrefixListResolver_IpamPrefixListResolverRuleConditionProperty added in v2.241.0

type CfnIPAMPrefixListResolver_IpamPrefixListResolverRuleConditionProperty struct {
	// Equals, Not equals, or Subnet Of.
	//
	// The subnet-of operation only applies to cidr conditions.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition-operation
	//
	Operation *string `field:"required" json:"operation" yaml:"operation"`
	// Condition for the IPAM Resource CIDR rule type.
	//
	// CIDR (like 10.24.34.0/23).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition-cidr
	//
	Cidr *string `field:"optional" json:"cidr" yaml:"cidr"`
	// Condition for the IPAM Pool CIDR rule type.
	//
	// If not chosen, the resolver applies to all IPAM Pool CIDRs in the scope.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition-ipampoolid
	//
	IpamPoolId *string `field:"optional" json:"ipamPoolId" yaml:"ipamPoolId"`
	// Condition for the IPAM Resource CIDR rule type.
	//
	// The unique ID of a resource (like vpc-1234567890abcdef0).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition-resourceid
	//
	ResourceId *string `field:"optional" json:"resourceId" yaml:"resourceId"`
	// Condition for the IPAM Resource CIDR rule type.
	//
	// Resource owner (like 111122223333).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition-resourceowner
	//
	ResourceOwner *string `field:"optional" json:"resourceOwner" yaml:"resourceOwner"`
	// Condition for the IPAM Resource CIDR rule type.
	//
	// Resource region (like us-east-1).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition-resourceregion
	//
	ResourceRegion *string `field:"optional" json:"resourceRegion" yaml:"resourceRegion"`
	// A key-value pair to associate with a resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition-resourcetag
	//
	ResourceTag interface{} `field:"optional" json:"resourceTag" yaml:"resourceTag"`
}

Two of the rule types allow you to add conditions to the rules.

(1) For IPAM Pool CIDR rules, you can specify an ipamPoolId; if not specified, the rule will apply to all IPAM Pool CIDRs in the scope. (2) For IPAM Resource CIDR rules, you can specify resourceId, resourceOwner, resourceRegion, cidr, or resourceTag.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipamPrefixListResolverRuleConditionProperty := &IpamPrefixListResolverRuleConditionProperty{
	Operation: jsii.String("operation"),

	// the properties below are optional
	Cidr: jsii.String("cidr"),
	IpamPoolId: jsii.String("ipamPoolId"),
	ResourceId: jsii.String("resourceId"),
	ResourceOwner: jsii.String("resourceOwner"),
	ResourceRegion: jsii.String("resourceRegion"),
	ResourceTag: &CfnTag{
		Key: jsii.String("key"),
		Value: jsii.String("value"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrulecondition.html

type CfnIPAMPrefixListResolver_IpamPrefixListResolverRuleProperty added in v2.241.0

type CfnIPAMPrefixListResolver_IpamPrefixListResolverRuleProperty struct {
	// There are three rule types: (1) Static CIDR: A fixed list of CIDRs that don't change (like a manual list replicated across Regions).
	//
	// (2) IPAM pool CIDR: CIDRs from specific IPAM pools (like all CIDRs from your IPAM production pool).  (3) IPAM resource CIDR: CIDRs for AWS resources like VPCs, subnets, and EIPs within a specific IPAM scope.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule-ruletype
	//
	RuleType *string `field:"required" json:"ruleType" yaml:"ruleType"`
	// Two of the rule types allow you to add conditions to the rules.
	//
	// (1) For IPAM Pool CIDR rules, you can specify an ipamPoolId; if not specified, the rule will apply to all IPAM Pool CIDRs in the scope.  (2) For IPAM Resource CIDR rules, you can specify resourceId, resourceOwner, resourceRegion, cidr, or resourceTag.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule-conditions
	//
	Conditions interface{} `field:"optional" json:"conditions" yaml:"conditions"`
	// This rule will only match resources that are in this IPAM Scope.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule-ipamscopeid
	//
	IpamScopeId *string `field:"optional" json:"ipamScopeId" yaml:"ipamScopeId"`
	// The resourceType property only applies to ipam-resource-cidr rules;
	//
	// this property specifies what type of resources this rule will apply to, such as VPCs or Subnets.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule-resourcetype
	//
	ResourceType *string `field:"optional" json:"resourceType" yaml:"resourceType"`
	// A fixed CIDR that doesn't change.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule.html#cfn-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule-staticcidr
	//
	StaticCidr *string `field:"optional" json:"staticCidr" yaml:"staticCidr"`
}

CIDR selection rules define the business logic for selecting CIDRs from IPAM.

If a CIDR matches any of the rules, it will be included. If a rule has multiple conditions, the CIDR has to match every condition of that rule. You can create a prefix list resolver without rules, but you'll need to add at least one rule before it can actually automate your prefix list updates.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipamPrefixListResolverRuleProperty := &IpamPrefixListResolverRuleProperty{
	RuleType: jsii.String("ruleType"),

	// the properties below are optional
	Conditions: []interface{}{
		&IpamPrefixListResolverRuleConditionProperty{
			Operation: jsii.String("operation"),

			// the properties below are optional
			Cidr: jsii.String("cidr"),
			IpamPoolId: jsii.String("ipamPoolId"),
			ResourceId: jsii.String("resourceId"),
			ResourceOwner: jsii.String("resourceOwner"),
			ResourceRegion: jsii.String("resourceRegion"),
			ResourceTag: &CfnTag{
				Key: jsii.String("key"),
				Value: jsii.String("value"),
			},
		},
	},
	IpamScopeId: jsii.String("ipamScopeId"),
	ResourceType: jsii.String("resourceType"),
	StaticCidr: jsii.String("staticCidr"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamprefixlistresolver-ipamprefixlistresolverrule.html

type CfnIPAMProps added in v2.2.0

type CfnIPAMProps struct {
	// If your IPAM is integrated with AWS Organizations, you can exclude an [organizational unit (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) from being managed by IPAM. When you exclude an OU, IPAM will not manage the IP addresses in accounts in that OU. For more information, see [Exclude organizational units from IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/exclude-ous.html) in the *Amazon Virtual Private Cloud IP Address Manager User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html#cfn-ec2-ipam-defaultresourcediscoveryorganizationalunitexclusions
	//
	DefaultResourceDiscoveryOrganizationalUnitExclusions interface{} `` /* 136-byte string literal not displayed */
	// The description for the IPAM.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html#cfn-ec2-ipam-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// Enable this option to use your own GUA ranges as private IPv6 addresses.
	//
	// This option is disabled by default.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html#cfn-ec2-ipam-enableprivategua
	//
	EnablePrivateGua interface{} `field:"optional" json:"enablePrivateGua" yaml:"enablePrivateGua"`
	// A metered account is an AWS account that is charged for active IP addresses managed in IPAM.
	//
	// For more information, see [Enable cost distribution](https://docs.aws.amazon.com/vpc/latest/ipam/ipam-enable-cost-distro.html) in the *Amazon VPC IPAM User Guide* .
	//
	// Possible values:
	//
	// - `ipam-owner` (default): The AWS account which owns the IPAM is charged for all active IP addresses managed in IPAM.
	// - `resource-owner` : The AWS account that owns the IP address is charged for the active IP address.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html#cfn-ec2-ipam-meteredaccount
	//
	MeteredAccount *string `field:"optional" json:"meteredAccount" yaml:"meteredAccount"`
	// The operating Regions for an IPAM.
	//
	// Operating Regions are AWS Regions where the IPAM is allowed to manage IP address CIDRs. IPAM only discovers and monitors resources in the AWS Regions you select as operating Regions.
	//
	// For more information about operating Regions, see [Create an IPAM](https://docs.aws.amazon.com//vpc/latest/ipam/create-ipam.html) in the *Amazon VPC IPAM User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html#cfn-ec2-ipam-operatingregions
	//
	OperatingRegions interface{} `field:"optional" json:"operatingRegions" yaml:"operatingRegions"`
	// The key/value combination of a tag assigned to the resource.
	//
	// Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key `Owner` and the value `TeamA` , specify `tag:Owner` for the filter name and `TeamA` for the filter value.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html#cfn-ec2-ipam-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// IPAM is offered in a Free Tier and an Advanced Tier.
	//
	// For more information about the features available in each tier and the costs associated with the tiers, see the [VPC IPAM product pricing page](https://docs.aws.amazon.com/vpc/pricing/) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html#cfn-ec2-ipam-tier
	//
	Tier *string `field:"optional" json:"tier" yaml:"tier"`
}

Properties for defining a `CfnIPAM`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMProps := &CfnIPAMProps{
	DefaultResourceDiscoveryOrganizationalUnitExclusions: []interface{}{
		&IpamOrganizationalUnitExclusionProperty{
			OrganizationsEntityPath: jsii.String("organizationsEntityPath"),
		},
	},
	Description: jsii.String("description"),
	EnablePrivateGua: jsii.Boolean(false),
	MeteredAccount: jsii.String("meteredAccount"),
	OperatingRegions: []interface{}{
		&IpamOperatingRegionProperty{
			RegionName: jsii.String("regionName"),
		},
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	Tier: jsii.String("tier"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html

type CfnIPAMResourceDiscovery added in v2.64.0

type CfnIPAMResourceDiscovery interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIPAMResourceDiscoveryRef
	awscdk.ITaggable
	// The resource discovery ARN.
	AttrIpamResourceDiscoveryArn() *string
	// The resource discovery ID.
	AttrIpamResourceDiscoveryId() *string
	// The resource discovery Region.
	AttrIpamResourceDiscoveryRegion() *string
	// Defines if the resource discovery is the default.
	//
	// The default resource discovery is the resource discovery automatically created when you create an IPAM.
	AttrIsDefault() awscdk.IResolvable
	// The owner ID.
	AttrOwnerId() *string
	// The resource discovery's state.
	//
	// - `create-in-progress` - Resource discovery is being created.
	// - `create-complete` - Resource discovery creation is complete.
	// - `create-failed` - Resource discovery creation has failed.
	// - `modify-in-progress` - Resource discovery is being modified.
	// - `modify-complete` - Resource discovery modification is complete.
	// - `modify-failed` - Resource discovery modification has failed.
	// - `delete-in-progress` - Resource discovery is being deleted.
	// - `delete-complete` - Resource discovery deletion is complete.
	// - `delete-failed` - Resource discovery deletion has failed.
	// - `isolate-in-progress` - AWS account that created the resource discovery has been removed and the resource discovery is being isolated.
	// - `isolate-complete` - Resource discovery isolation is complete.
	// - `restore-in-progress` - AWS account that created the resource discovery and was isolated has been restored.
	AttrState() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The resource discovery description.
	Description() *string
	SetDescription(val *string)
	Env() *interfaces.ResourceEnvironment
	// A reference to a IPAMResourceDiscovery resource.
	IpamResourceDiscoveryRef() *interfacesawsec2.IPAMResourceDiscoveryReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// The operating Regions for the resource discovery.
	OperatingRegions() interface{}
	SetOperatingRegions(val interface{})
	// If your IPAM is integrated with AWS Organizations, you can exclude an [organizational unit (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) from being managed by IPAM. When you exclude an OU, IPAM will not manage the IP addresses in accounts in that OU. For more information, see [Exclude organizational units from IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/exclude-ous.html) in the *Amazon Virtual Private Cloud IP Address Manager User Guide* .
	OrganizationalUnitExclusions() interface{}
	SetOrganizationalUnitExclusions(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// A tag is a label that you assign to an AWS resource.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

A resource discovery is an IPAM component that enables IPAM to manage and monitor resources that belong to the owning account.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMResourceDiscovery := awscdk.Aws_ec2.NewCfnIPAMResourceDiscovery(this, jsii.String("MyCfnIPAMResourceDiscovery"), &CfnIPAMResourceDiscoveryProps{
	Description: jsii.String("description"),
	OperatingRegions: []interface{}{
		&IpamOperatingRegionProperty{
			RegionName: jsii.String("regionName"),
		},
	},
	OrganizationalUnitExclusions: []interface{}{
		&IpamResourceDiscoveryOrganizationalUnitExclusionProperty{
			OrganizationsEntityPath: jsii.String("organizationsEntityPath"),
		},
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscovery.html

func NewCfnIPAMResourceDiscovery added in v2.64.0

func NewCfnIPAMResourceDiscovery(scope constructs.Construct, id *string, props *CfnIPAMResourceDiscoveryProps) CfnIPAMResourceDiscovery

Create a new `AWS::EC2::IPAMResourceDiscovery`.

type CfnIPAMResourceDiscoveryAssociation added in v2.64.0

type CfnIPAMResourceDiscoveryAssociation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIPAMResourceDiscoveryAssociationRef
	awscdk.ITaggable
	// The IPAM ARN.
	AttrIpamArn() *string
	// The IPAM home Region.
	AttrIpamRegion() *string
	// The resource discovery association ARN.
	AttrIpamResourceDiscoveryAssociationArn() *string
	// The resource discovery association ID.
	AttrIpamResourceDiscoveryAssociationId() *string
	// Defines if the resource discovery is the default.
	//
	// When you create an IPAM, a default resource discovery is created for your IPAM and it's associated with your IPAM.
	AttrIsDefault() awscdk.IResolvable
	// The owner ID.
	AttrOwnerId() *string
	// The resource discovery status.
	//
	// - `active` - Connection or permissions required to read the results of the resource discovery are intact.
	// - `not-found` - Connection or permissions required to read the results of the resource discovery are broken. This may happen if the owner of the resource discovery stopped sharing it or deleted the resource discovery. Verify the resource discovery still exists and the AWS RAM resource share is still intact.
	AttrResourceDiscoveryStatus() *string
	// The lifecycle state of the association when you associate or disassociate a resource discovery.
	//
	// - `associate-in-progress` - Resource discovery is being associated.
	// - `associate-complete` - Resource discovery association is complete.
	// - `associate-failed` - Resource discovery association has failed.
	// - `disassociate-in-progress` - Resource discovery is being disassociated.
	// - `disassociate-complete` - Resource discovery disassociation is complete.
	// - `disassociate-failed` - Resource discovery disassociation has failed.
	// - `isolate-in-progress` - AWS account that created the resource discovery association has been removed and the resource discovery associatation is being isolated.
	// - `isolate-complete` - Resource discovery isolation is complete..
	// - `restore-in-progress` - Resource discovery is being restored.
	AttrState() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The IPAM ID.
	IpamId() *string
	SetIpamId(val *string)
	// A reference to a IPAMResourceDiscoveryAssociation resource.
	IpamResourceDiscoveryAssociationRef() *interfacesawsec2.IPAMResourceDiscoveryAssociationReference
	// The resource discovery ID.
	IpamResourceDiscoveryId() *string
	SetIpamResourceDiscoveryId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// A tag is a label that you assign to an AWS resource.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

An IPAM resource discovery association.

An associated resource discovery is a resource discovery that has been associated with an IPAM. IPAM aggregates the resource CIDRs discovered by the associated resource discovery.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMResourceDiscoveryAssociation := awscdk.Aws_ec2.NewCfnIPAMResourceDiscoveryAssociation(this, jsii.String("MyCfnIPAMResourceDiscoveryAssociation"), &CfnIPAMResourceDiscoveryAssociationProps{
	IpamId: jsii.String("ipamId"),
	IpamResourceDiscoveryId: jsii.String("ipamResourceDiscoveryId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscoveryassociation.html

func NewCfnIPAMResourceDiscoveryAssociation added in v2.64.0

func NewCfnIPAMResourceDiscoveryAssociation(scope constructs.Construct, id *string, props *CfnIPAMResourceDiscoveryAssociationProps) CfnIPAMResourceDiscoveryAssociation

Create a new `AWS::EC2::IPAMResourceDiscoveryAssociation`.

type CfnIPAMResourceDiscoveryAssociationProps added in v2.64.0

type CfnIPAMResourceDiscoveryAssociationProps struct {
	// The IPAM ID.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscoveryassociation.html#cfn-ec2-ipamresourcediscoveryassociation-ipamid
	//
	IpamId *string `field:"required" json:"ipamId" yaml:"ipamId"`
	// The resource discovery ID.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscoveryassociation.html#cfn-ec2-ipamresourcediscoveryassociation-ipamresourcediscoveryid
	//
	IpamResourceDiscoveryId *string `field:"required" json:"ipamResourceDiscoveryId" yaml:"ipamResourceDiscoveryId"`
	// A tag is a label that you assign to an AWS resource.
	//
	// Each tag consists of a key and an optional value. You can use tags to search and filter your resources or track your AWS costs.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscoveryassociation.html#cfn-ec2-ipamresourcediscoveryassociation-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnIPAMResourceDiscoveryAssociation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMResourceDiscoveryAssociationProps := &CfnIPAMResourceDiscoveryAssociationProps{
	IpamId: jsii.String("ipamId"),
	IpamResourceDiscoveryId: jsii.String("ipamResourceDiscoveryId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscoveryassociation.html

type CfnIPAMResourceDiscoveryProps added in v2.64.0

type CfnIPAMResourceDiscoveryProps struct {
	// The resource discovery description.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscovery.html#cfn-ec2-ipamresourcediscovery-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The operating Regions for the resource discovery.
	//
	// Operating Regions are AWS Regions where the IPAM is allowed to manage IP address CIDRs. IPAM only discovers and monitors resources in the AWS Regions you select as operating Regions.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscovery.html#cfn-ec2-ipamresourcediscovery-operatingregions
	//
	OperatingRegions interface{} `field:"optional" json:"operatingRegions" yaml:"operatingRegions"`
	// If your IPAM is integrated with AWS Organizations, you can exclude an [organizational unit (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) from being managed by IPAM. When you exclude an OU, IPAM will not manage the IP addresses in accounts in that OU. For more information, see [Exclude organizational units from IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/exclude-ous.html) in the *Amazon Virtual Private Cloud IP Address Manager User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscovery.html#cfn-ec2-ipamresourcediscovery-organizationalunitexclusions
	//
	OrganizationalUnitExclusions interface{} `field:"optional" json:"organizationalUnitExclusions" yaml:"organizationalUnitExclusions"`
	// A tag is a label that you assign to an AWS resource.
	//
	// Each tag consists of a key and an optional value. You can use tags to search and filter your resources or track your AWS costs.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscovery.html#cfn-ec2-ipamresourcediscovery-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnIPAMResourceDiscovery`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMResourceDiscoveryProps := &CfnIPAMResourceDiscoveryProps{
	Description: jsii.String("description"),
	OperatingRegions: []interface{}{
		&IpamOperatingRegionProperty{
			RegionName: jsii.String("regionName"),
		},
	},
	OrganizationalUnitExclusions: []interface{}{
		&IpamResourceDiscoveryOrganizationalUnitExclusionProperty{
			OrganizationsEntityPath: jsii.String("organizationsEntityPath"),
		},
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamresourcediscovery.html

type CfnIPAMResourceDiscovery_IpamOperatingRegionProperty added in v2.64.0

type CfnIPAMResourceDiscovery_IpamOperatingRegionProperty struct {
	// The name of the operating Region.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamresourcediscovery-ipamoperatingregion.html#cfn-ec2-ipamresourcediscovery-ipamoperatingregion-regionname
	//
	RegionName *string `field:"required" json:"regionName" yaml:"regionName"`
}

The operating Regions for an IPAM.

Operating Regions are AWS Regions where the IPAM is allowed to manage IP address CIDRs. IPAM only discovers and monitors resources in the AWS Regions you select as operating Regions.

For more information about operating Regions, see [Create an IPAM](https://docs.aws.amazon.com//vpc/latest/ipam/create-ipam.html) in the *Amazon VPC IPAM User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipamOperatingRegionProperty := &IpamOperatingRegionProperty{
	RegionName: jsii.String("regionName"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamresourcediscovery-ipamoperatingregion.html

type CfnIPAMResourceDiscovery_IpamResourceDiscoveryOrganizationalUnitExclusionProperty added in v2.180.0

type CfnIPAMResourceDiscovery_IpamResourceDiscoveryOrganizationalUnitExclusionProperty struct {
	// An AWS Organizations entity path.
	//
	// For more information on the entity path, see [Understand the AWS Organizations entity path](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_last-accessed-view-data-orgs.html#access_policies_access-advisor-viewing-orgs-entity-path) in the *AWS Identity and Access Management User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamresourcediscovery-ipamresourcediscoveryorganizationalunitexclusion.html#cfn-ec2-ipamresourcediscovery-ipamresourcediscoveryorganizationalunitexclusion-organizationsentitypath
	//
	OrganizationsEntityPath *string `field:"required" json:"organizationsEntityPath" yaml:"organizationsEntityPath"`
}

If your IPAM is integrated with AWS Organizations, you can exclude an [organizational unit (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) from being managed by IPAM. When you exclude an OU, IPAM will not manage the IP addresses in accounts in that OU. For more information, see [Exclude organizational units from IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/exclude-ous.html) in the *Amazon Virtual Private Cloud IP Address Manager User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipamResourceDiscoveryOrganizationalUnitExclusionProperty := &IpamResourceDiscoveryOrganizationalUnitExclusionProperty{
	OrganizationsEntityPath: jsii.String("organizationsEntityPath"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamresourcediscovery-ipamresourcediscoveryorganizationalunitexclusion.html

type CfnIPAMScope added in v2.2.0

type CfnIPAMScope interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIPAMScopeRef
	awscdk.ITaggable
	// The ARN of the scope.
	AttrArn() *string
	// The ARN of an IPAM.
	AttrIpamArn() *string
	// The ID of an IPAM scope.
	AttrIpamScopeId() *string
	// The type of the scope.
	AttrIpamScopeType() *string
	// Defines if the scope is the default scope or not.
	AttrIsDefault() awscdk.IResolvable
	// The number of pools in a scope.
	AttrPoolCount() *float64
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The description of the scope.
	Description() *string
	SetDescription(val *string)
	Env() *interfaces.ResourceEnvironment
	// The configuration that links an Amazon VPC IPAM scope to an external authority system.
	ExternalAuthorityConfiguration() interface{}
	SetExternalAuthorityConfiguration(val interface{})
	// The ID of the IPAM for which you're creating this scope.
	IpamId() *string
	SetIpamId(val *string)
	// A reference to a IPAMScope resource.
	IpamScopeRef() *interfacesawsec2.IPAMScopeReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The key/value combination of a tag assigned to the resource.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

In IPAM, a scope is the highest-level container within IPAM.

An IPAM contains two default scopes. Each scope represents the IP space for a single network. The private scope is intended for all private IP address space. The public scope is intended for all public IP address space. Scopes enable you to reuse IP addresses across multiple unconnected networks without causing IP address overlap or conflict.

For more information, see [How IPAM works](https://docs.aws.amazon.com//vpc/latest/ipam/how-it-works-ipam.html) in the *Amazon VPC IPAM User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMScope := awscdk.Aws_ec2.NewCfnIPAMScope(this, jsii.String("MyCfnIPAMScope"), &CfnIPAMScopeProps{
	IpamId: jsii.String("ipamId"),

	// the properties below are optional
	Description: jsii.String("description"),
	ExternalAuthorityConfiguration: &IpamScopeExternalAuthorityConfigurationProperty{
		ExternalResourceIdentifier: jsii.String("externalResourceIdentifier"),
		IpamScopeExternalAuthorityType: jsii.String("ipamScopeExternalAuthorityType"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamscope.html

func NewCfnIPAMScope added in v2.2.0

func NewCfnIPAMScope(scope constructs.Construct, id *string, props *CfnIPAMScopeProps) CfnIPAMScope

Create a new `AWS::EC2::IPAMScope`.

type CfnIPAMScopeProps added in v2.2.0

type CfnIPAMScopeProps struct {
	// The ID of the IPAM for which you're creating this scope.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamscope.html#cfn-ec2-ipamscope-ipamid
	//
	IpamId *string `field:"required" json:"ipamId" yaml:"ipamId"`
	// The description of the scope.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamscope.html#cfn-ec2-ipamscope-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The configuration that links an Amazon VPC IPAM scope to an external authority system.
	//
	// It specifies the type of external system and the external resource identifier that identifies your account or instance in that system.
	//
	// For more information, see [Integrate VPC IPAM with Infoblox infrastructure](https://docs.aws.amazon.com/vpc/latest/ipam/integrate-infoblox-ipam.html) in the *Amazon VPC IPAM User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamscope.html#cfn-ec2-ipamscope-externalauthorityconfiguration
	//
	ExternalAuthorityConfiguration interface{} `field:"optional" json:"externalAuthorityConfiguration" yaml:"externalAuthorityConfiguration"`
	// The key/value combination of a tag assigned to the resource.
	//
	// Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key `Owner` and the value `TeamA` , specify `tag:Owner` for the filter name and `TeamA` for the filter value.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamscope.html#cfn-ec2-ipamscope-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnIPAMScope`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIPAMScopeProps := &CfnIPAMScopeProps{
	IpamId: jsii.String("ipamId"),

	// the properties below are optional
	Description: jsii.String("description"),
	ExternalAuthorityConfiguration: &IpamScopeExternalAuthorityConfigurationProperty{
		ExternalResourceIdentifier: jsii.String("externalResourceIdentifier"),
		IpamScopeExternalAuthorityType: jsii.String("ipamScopeExternalAuthorityType"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamscope.html

type CfnIPAMScope_IpamScopeExternalAuthorityConfigurationProperty added in v2.225.0

type CfnIPAMScope_IpamScopeExternalAuthorityConfigurationProperty struct {
	// The identifier for the external resource managing this scope.
	//
	// For Infoblox integrations, this is the Infoblox resource identifier in the format `<version>.identity.account.<entity_realm>.<entity_id>` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamscope-ipamscopeexternalauthorityconfiguration.html#cfn-ec2-ipamscope-ipamscopeexternalauthorityconfiguration-externalresourceidentifier
	//
	ExternalResourceIdentifier *string `field:"required" json:"externalResourceIdentifier" yaml:"externalResourceIdentifier"`
	// The type of external authority managing this scope.
	//
	// Currently supports `Infoblox` for integration with Infoblox Universal DDI.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamscope-ipamscopeexternalauthorityconfiguration.html#cfn-ec2-ipamscope-ipamscopeexternalauthorityconfiguration-ipamscopeexternalauthoritytype
	//
	IpamScopeExternalAuthorityType *string `field:"required" json:"ipamScopeExternalAuthorityType" yaml:"ipamScopeExternalAuthorityType"`
}

The configuration that links an Amazon VPC IPAM scope to an external authority system.

It specifies the type of external system and the external resource identifier that identifies your account or instance in that system.

In IPAM, an external authority is a third-party IP address management system that provides CIDR blocks when you provision address space for top-level IPAM pools. This allows you to use your existing IP management system to control which address ranges are allocated to AWS while using Amazon VPC IPAM to manage subnets within those ranges.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipamScopeExternalAuthorityConfigurationProperty := &IpamScopeExternalAuthorityConfigurationProperty{
	ExternalResourceIdentifier: jsii.String("externalResourceIdentifier"),
	IpamScopeExternalAuthorityType: jsii.String("ipamScopeExternalAuthorityType"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipamscope-ipamscopeexternalauthorityconfiguration.html

type CfnIPAM_IpamOperatingRegionProperty added in v2.2.0

type CfnIPAM_IpamOperatingRegionProperty struct {
	// The name of the operating Region.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipam-ipamoperatingregion.html#cfn-ec2-ipam-ipamoperatingregion-regionname
	//
	RegionName *string `field:"required" json:"regionName" yaml:"regionName"`
}

The operating Regions for an IPAM.

Operating Regions are AWS Regions where the IPAM is allowed to manage IP address CIDRs. IPAM only discovers and monitors resources in the AWS Regions you select as operating Regions.

For more information about operating Regions, see [Create an IPAM](https://docs.aws.amazon.com//vpc/latest/ipam/create-ipam.html) in the *Amazon VPC IPAM User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipamOperatingRegionProperty := &IpamOperatingRegionProperty{
	RegionName: jsii.String("regionName"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipam-ipamoperatingregion.html

type CfnIPAM_IpamOrganizationalUnitExclusionProperty added in v2.180.0

type CfnIPAM_IpamOrganizationalUnitExclusionProperty struct {
	// An AWS Organizations entity path.
	//
	// For more information on the entity path, see [Understand the AWS Organizations entity path](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_last-accessed-view-data-orgs.html#access_policies_access-advisor-viewing-orgs-entity-path) in the *AWS Identity and Access Management User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipam-ipamorganizationalunitexclusion.html#cfn-ec2-ipam-ipamorganizationalunitexclusion-organizationsentitypath
	//
	OrganizationsEntityPath *string `field:"required" json:"organizationsEntityPath" yaml:"organizationsEntityPath"`
}

If your IPAM is integrated with AWS Organizations, you can exclude an [organizational unit (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) from being managed by IPAM. When you exclude an OU, IPAM will not manage the IP addresses in accounts in that OU. For more information, see [Exclude organizational units from IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/exclude-ous.html) in the *Amazon Virtual Private Cloud IP Address Manager User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipamOrganizationalUnitExclusionProperty := &IpamOrganizationalUnitExclusionProperty{
	OrganizationsEntityPath: jsii.String("organizationsEntityPath"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ipam-ipamorganizationalunitexclusion.html

type CfnInstance

type CfnInstance interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IInstanceRef
	awscdk.ITaggable
	// This property is reserved for internal use.
	AdditionalInfo() *string
	SetAdditionalInfo(val *string)
	// Indicates whether the instance is associated with a dedicated host.
	Affinity() *string
	SetAffinity(val *string)
	AttrAvailabilityZone() *string
	// The ID of the instance.
	AttrInstanceId() *string
	// The private DNS name of the specified instance.
	//
	// For example: `ip-10-24-34-0.ec2.internal` .
	AttrPrivateDnsName() *string
	// The private IP address of the specified instance.
	//
	// For example: `10.24.34.0` .
	AttrPrivateIp() *string
	// The public DNS name of the specified instance.
	//
	// For example: `ec2-107-20-50-45.compute-1.amazonaws.com` .
	AttrPublicDnsName() *string
	// The public IP address of the specified instance.
	//
	// For example: `192.0.2.0` .
	AttrPublicIp() *string
	// The current state of the instance.
	AttrState() awscdk.IResolvable
	// The ID of the VPC in which the instance is running.
	AttrVpcId() *string
	// The Availability Zone of the instance.
	AvailabilityZone() *string
	SetAvailabilityZone(val *string)
	// The block device mapping entries that defines the block devices to attach to the instance at launch.
	BlockDeviceMappings() interface{}
	SetBlockDeviceMappings(val interface{})
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// The CPU options for the instance.
	CpuOptions() interface{}
	SetCpuOptions(val interface{})
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The credit option for CPU usage of the burstable performance instance.
	CreditSpecification() interface{}
	SetCreditSpecification(val interface{})
	// Indicates whether termination protection is enabled for the instance.
	DisableApiTermination() interface{}
	SetDisableApiTermination(val interface{})
	// Indicates whether the instance is optimized for Amazon EBS I/O.
	EbsOptimized() interface{}
	SetEbsOptimized(val interface{})
	// An elastic GPU to associate with the instance.
	ElasticGpuSpecifications() interface{}
	SetElasticGpuSpecifications(val interface{})
	// An elastic inference accelerator to associate with the instance.
	ElasticInferenceAccelerators() interface{}
	SetElasticInferenceAccelerators(val interface{})
	// Indicates whether the instance is enabled for AWS Nitro Enclaves.
	EnclaveOptions() interface{}
	SetEnclaveOptions(val interface{})
	Env() *interfaces.ResourceEnvironment
	// Indicates whether an instance is enabled for hibernation.
	HibernationOptions() interface{}
	SetHibernationOptions(val interface{})
	// If you specify host for the `Affinity` property, the ID of a dedicated host that the instance is associated with.
	HostId() *string
	SetHostId(val *string)
	// The ARN of the host resource group in which to launch the instances.
	HostResourceGroupArn() *string
	SetHostResourceGroupArn(val *string)
	// The name of an IAM instance profile.
	IamInstanceProfile() *string
	SetIamInstanceProfile(val *string)
	// The ID of the AMI.
	ImageId() *string
	SetImageId(val *string)
	// Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).
	InstanceInitiatedShutdownBehavior() *string
	SetInstanceInitiatedShutdownBehavior(val *string)
	// A reference to a Instance resource.
	InstanceRef() *interfacesawsec2.InstanceReference
	// The instance type.
	//
	// For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide* .
	InstanceType() *string
	SetInstanceType(val *string)
	// The number of IPv6 addresses to associate with the primary network interface.
	Ipv6AddressCount() *float64
	SetIpv6AddressCount(val *float64)
	// The IPv6 addresses from the range of the subnet to associate with the primary network interface.
	Ipv6Addresses() interface{}
	SetIpv6Addresses(val interface{})
	// The ID of the kernel.
	KernelId() *string
	SetKernelId(val *string)
	// The name of the key pair.
	//
	// For more information, see [Create a key pair for your EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html) .
	KeyName() *string
	SetKeyName(val *string)
	// The launch template.
	LaunchTemplate() interface{}
	SetLaunchTemplate(val interface{})
	// The license configurations.
	LicenseSpecifications() interface{}
	SetLicenseSpecifications(val interface{})
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The metadata options for the instance.
	MetadataOptions() interface{}
	SetMetadataOptions(val interface{})
	// Specifies whether detailed monitoring is enabled for the instance.
	Monitoring() interface{}
	SetMonitoring(val interface{})
	// The network interfaces to associate with the instance.
	NetworkInterfaces() interface{}
	SetNetworkInterfaces(val interface{})
	// The tree node.
	Node() constructs.Node
	// The name of an existing placement group that you want to launch the instance into (cluster | partition | spread).
	PlacementGroupName() *string
	SetPlacementGroupName(val *string)
	// The options for the instance hostname.
	PrivateDnsNameOptions() interface{}
	SetPrivateDnsNameOptions(val interface{})
	// The primary IPv4 address.
	//
	// You must specify a value from the IPv4 address range of the subnet.
	PrivateIpAddress() *string
	SetPrivateIpAddress(val *string)
	// Indicates whether to assign the tags specified in the `Tags` property to the volumes specified in the `BlockDeviceMappings` property.
	PropagateTagsToVolumeOnCreation() interface{}
	SetPropagateTagsToVolumeOnCreation(val interface{})
	// The ID of the RAM disk to select.
	RamdiskId() *string
	SetRamdiskId(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The IDs of the security groups.
	SecurityGroupIds() *[]*string
	SetSecurityGroupIds(val *[]*string)
	// [Default VPC] The names of the security groups.
	//
	// For a nondefault VPC, you must use security group IDs instead.
	SecurityGroups() *[]*string
	SetSecurityGroups(val *[]*string)
	// Enable or disable source/destination checks, which ensure that the instance is either the source or the destination of any traffic that it receives.
	SourceDestCheck() interface{}
	SetSourceDestCheck(val interface{})
	// The SSM [document](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html) and parameter values in AWS Systems Manager to associate with this instance. To use this property, you must specify an IAM instance profile role for the instance. For more information, see [Create an IAM instance profile for Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-configuring-access-role.html) in the *AWS Systems Manager User Guide* .
	SsmAssociations() interface{}
	SetSsmAssociations(val interface{})
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The ID of the subnet to launch the instance into.
	SubnetId() *string
	SetSubnetId(val *string)
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags to add to the instance.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// The tenancy of the instance.
	Tenancy() *string
	SetTenancy(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The parameters or scripts to store as user data.
	UserData() *string
	SetUserData(val *string)
	// The volumes to attach to the instance.
	Volumes() interface{}
	SetVolumes(val interface{})
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies an EC2 instance.

If an Elastic IP address is attached to your instance, AWS CloudFormation reattaches the Elastic IP address after it updates the instance. For more information about updating stacks, see [AWS CloudFormation Stacks Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnInstance := awscdk.Aws_ec2.NewCfnInstance(this, jsii.String("MyCfnInstance"), &CfnInstanceProps{
	AdditionalInfo: jsii.String("additionalInfo"),
	Affinity: jsii.String("affinity"),
	AvailabilityZone: jsii.String("availabilityZone"),
	BlockDeviceMappings: []interface{}{
		&BlockDeviceMappingProperty{
			DeviceName: jsii.String("deviceName"),

			// the properties below are optional
			Ebs: &EbsProperty{
				DeleteOnTermination: jsii.Boolean(false),
				Encrypted: jsii.Boolean(false),
				Iops: jsii.Number(123),
				KmsKeyId: jsii.String("kmsKeyId"),
				SnapshotId: jsii.String("snapshotId"),
				VolumeSize: jsii.Number(123),
				VolumeType: jsii.String("volumeType"),
			},
			NoDevice: &NoDeviceProperty{
			},
			VirtualName: jsii.String("virtualName"),
		},
	},
	CpuOptions: &CpuOptionsProperty{
		CoreCount: jsii.Number(123),
		ThreadsPerCore: jsii.Number(123),
	},
	CreditSpecification: &CreditSpecificationProperty{
		CpuCredits: jsii.String("cpuCredits"),
	},
	DisableApiTermination: jsii.Boolean(false),
	EbsOptimized: jsii.Boolean(false),
	ElasticGpuSpecifications: []interface{}{
		&ElasticGpuSpecificationProperty{
			Type: jsii.String("type"),
		},
	},
	ElasticInferenceAccelerators: []interface{}{
		&ElasticInferenceAcceleratorProperty{
			Type: jsii.String("type"),

			// the properties below are optional
			Count: jsii.Number(123),
		},
	},
	EnclaveOptions: &EnclaveOptionsProperty{
		Enabled: jsii.Boolean(false),
	},
	HibernationOptions: &HibernationOptionsProperty{
		Configured: jsii.Boolean(false),
	},
	HostId: jsii.String("hostId"),
	HostResourceGroupArn: jsii.String("hostResourceGroupArn"),
	IamInstanceProfile: jsii.String("iamInstanceProfile"),
	ImageId: jsii.String("imageId"),
	InstanceInitiatedShutdownBehavior: jsii.String("instanceInitiatedShutdownBehavior"),
	InstanceType: jsii.String("instanceType"),
	Ipv6AddressCount: jsii.Number(123),
	Ipv6Addresses: []interface{}{
		&InstanceIpv6AddressProperty{
			Ipv6Address: jsii.String("ipv6Address"),
		},
	},
	KernelId: jsii.String("kernelId"),
	KeyName: jsii.String("keyName"),
	LaunchTemplate: &LaunchTemplateSpecificationProperty{
		Version: jsii.String("version"),

		// the properties below are optional
		LaunchTemplateId: jsii.String("launchTemplateId"),
		LaunchTemplateName: jsii.String("launchTemplateName"),
	},
	LicenseSpecifications: []interface{}{
		&LicenseSpecificationProperty{
			LicenseConfigurationArn: jsii.String("licenseConfigurationArn"),
		},
	},
	MetadataOptions: &MetadataOptionsProperty{
		HttpEndpoint: jsii.String("httpEndpoint"),
		HttpProtocolIpv6: jsii.String("httpProtocolIpv6"),
		HttpPutResponseHopLimit: jsii.Number(123),
		HttpTokens: jsii.String("httpTokens"),
		InstanceMetadataTags: jsii.String("instanceMetadataTags"),
	},
	Monitoring: jsii.Boolean(false),
	NetworkInterfaces: []interface{}{
		&NetworkInterfaceProperty{
			DeviceIndex: jsii.String("deviceIndex"),

			// the properties below are optional
			AssociateCarrierIpAddress: jsii.Boolean(false),
			AssociatePublicIpAddress: jsii.Boolean(false),
			DeleteOnTermination: jsii.Boolean(false),
			Description: jsii.String("description"),
			EnaSrdSpecification: &EnaSrdSpecificationProperty{
				EnaSrdEnabled: jsii.Boolean(false),
				EnaSrdUdpSpecification: &EnaSrdUdpSpecificationProperty{
					EnaSrdUdpEnabled: jsii.Boolean(false),
				},
			},
			GroupSet: []*string{
				jsii.String("groupSet"),
			},
			Ipv6AddressCount: jsii.Number(123),
			Ipv6Addresses: []interface{}{
				&InstanceIpv6AddressProperty{
					Ipv6Address: jsii.String("ipv6Address"),
				},
			},
			NetworkInterfaceId: jsii.String("networkInterfaceId"),
			PrivateIpAddress: jsii.String("privateIpAddress"),
			PrivateIpAddresses: []interface{}{
				&PrivateIpAddressSpecificationProperty{
					Primary: jsii.Boolean(false),
					PrivateIpAddress: jsii.String("privateIpAddress"),
				},
			},
			SecondaryPrivateIpAddressCount: jsii.Number(123),
			SubnetId: jsii.String("subnetId"),
		},
	},
	PlacementGroupName: jsii.String("placementGroupName"),
	PrivateDnsNameOptions: &PrivateDnsNameOptionsProperty{
		EnableResourceNameDnsAaaaRecord: jsii.Boolean(false),
		EnableResourceNameDnsARecord: jsii.Boolean(false),
		HostnameType: jsii.String("hostnameType"),
	},
	PrivateIpAddress: jsii.String("privateIpAddress"),
	PropagateTagsToVolumeOnCreation: jsii.Boolean(false),
	RamdiskId: jsii.String("ramdiskId"),
	SecurityGroupIds: []interface{}{
		jsii.String("securityGroupIds"),
	},
	SecurityGroups: []*string{
		jsii.String("securityGroups"),
	},
	SourceDestCheck: jsii.Boolean(false),
	SsmAssociations: []interface{}{
		&SsmAssociationProperty{
			DocumentName: jsii.String("documentName"),

			// the properties below are optional
			AssociationParameters: []interface{}{
				&AssociationParameterProperty{
					Key: jsii.String("key"),
					Value: []*string{
						jsii.String("value"),
					},
				},
			},
		},
	},
	SubnetId: jsii.String("subnetId"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	Tenancy: jsii.String("tenancy"),
	UserData: jsii.String("userData"),
	Volumes: []interface{}{
		&VolumeProperty{
			Device: jsii.String("device"),
			VolumeId: jsii.String("volumeId"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html

func NewCfnInstance

func NewCfnInstance(scope constructs.Construct, id *string, props *CfnInstanceProps) CfnInstance

Create a new `AWS::EC2::Instance`.

type CfnInstanceConnectEndpoint added in v2.97.0

type CfnInstanceConnectEndpoint interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IInstanceConnectEndpointRef
	awscdk.ITaggableV2
	// The Availability Zone of the EC2 Instance Connect Endpoint.
	AttrAvailabilityZone() *string
	// The ID of the Availability Zone of the EC2 Instance Connect Endpoint.
	AttrAvailabilityZoneId() *string
	// The date and time that the EC2 Instance Connect Endpoint was created.
	AttrCreatedAt() *string
	// The ID of the EC2 Instance Connect Endpoint.
	AttrId() *string
	// The Amazon Resource Name (ARN) of the EC2 Instance Connect Endpoint.
	AttrInstanceConnectEndpointArn() *string
	// The ID of the elastic network interface that Amazon EC2 automatically created when creating the EC2 Instance Connect Endpoint.
	AttrNetworkInterfaceIds() *[]*string
	// The ID of the AWS account that created the EC2 Instance Connect Endpoint.
	AttrOwnerId() *string
	// The public DNS names of the endpoint, including IPv4-only and dualstack DNS names.
	AttrPublicDnsNames() awscdk.IResolvable
	// The current state of the EC2 Instance Connect Endpoint.
	AttrState() *string
	// The message for the current state of the EC2 Instance Connect Endpoint.
	//
	// Can include a failure message.
	AttrStateMessage() *string
	// The ID of the VPC in which the EC2 Instance Connect Endpoint was created.
	AttrVpcId() *string
	// Tag Manager which manages the tags for this resource.
	CdkTagManager() awscdk.TagManager
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.
	ClientToken() *string
	SetClientToken(val *string)
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// A reference to a InstanceConnectEndpoint resource.
	InstanceConnectEndpointRef() *interfacesawsec2.InstanceConnectEndpointReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Indicates whether the client IP address is preserved as the source.
	//
	// The following are the possible values.
	PreserveClientIp() interface{}
	SetPreserveClientIp(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// One or more security groups to associate with the endpoint.
	SecurityGroupIds() *[]*string
	SetSecurityGroupIds(val *[]*string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The ID of the subnet in which to create the EC2 Instance Connect Endpoint.
	SubnetId() *string
	SetSubnetId(val *string)
	// The tags to apply to the EC2 Instance Connect Endpoint during creation.
	Tags() *[]*awscdk.CfnTag
	SetTags(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Creates an EC2 Instance Connect Endpoint.

An EC2 Instance Connect Endpoint allows you to connect to an instance, without requiring the instance to have a public IPv4 address. For more information, see [Connect to your instances using EC2 Instance Connect Endpoint](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect-Endpoint.html) in the *Amazon EC2 User Guide* .

With the replacement update behavior, CloudFormation usually creates the new resource first, changes references to point to the new resource, and then deletes the old resource. However, you can create only one EC2 Instance Connect Endpoint per VPC, so the replacement process fails. If you need to modify an EC2 Instance Connect Endpoint, you must replace the resource manually.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnInstanceConnectEndpoint := awscdk.Aws_ec2.NewCfnInstanceConnectEndpoint(this, jsii.String("MyCfnInstanceConnectEndpoint"), &CfnInstanceConnectEndpointProps{
	SubnetId: jsii.String("subnetId"),

	// the properties below are optional
	ClientToken: jsii.String("clientToken"),
	PreserveClientIp: jsii.Boolean(false),
	SecurityGroupIds: []*string{
		jsii.String("securityGroupIds"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instanceconnectendpoint.html

func NewCfnInstanceConnectEndpoint added in v2.97.0

func NewCfnInstanceConnectEndpoint(scope constructs.Construct, id *string, props *CfnInstanceConnectEndpointProps) CfnInstanceConnectEndpoint

Create a new `AWS::EC2::InstanceConnectEndpoint`.

type CfnInstanceConnectEndpointProps added in v2.97.0

type CfnInstanceConnectEndpointProps struct {
	// The ID of the subnet in which to create the EC2 Instance Connect Endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instanceconnectendpoint.html#cfn-ec2-instanceconnectendpoint-subnetid
	//
	SubnetId *string `field:"required" json:"subnetId" yaml:"subnetId"`
	// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instanceconnectendpoint.html#cfn-ec2-instanceconnectendpoint-clienttoken
	//
	ClientToken *string `field:"optional" json:"clientToken" yaml:"clientToken"`
	// Indicates whether the client IP address is preserved as the source. The following are the possible values.
	//
	// - `true` - Use the client IP address as the source.
	// - `false` - Use the network interface IP address as the source.
	//
	// > `PreserveClientIp` is only supported on IPv4 EC2 Instance Connect Endpoints. To use `PreserveClientIp` , the value for `IpAddressType` must be `ipv4` .
	//
	// Default: `false`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instanceconnectendpoint.html#cfn-ec2-instanceconnectendpoint-preserveclientip
	//
	PreserveClientIp interface{} `field:"optional" json:"preserveClientIp" yaml:"preserveClientIp"`
	// One or more security groups to associate with the endpoint.
	//
	// If you don't specify a security group, the default security group for your VPC will be associated with the endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instanceconnectendpoint.html#cfn-ec2-instanceconnectendpoint-securitygroupids
	//
	SecurityGroupIds *[]*string `field:"optional" json:"securityGroupIds" yaml:"securityGroupIds"`
	// The tags to apply to the EC2 Instance Connect Endpoint during creation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instanceconnectendpoint.html#cfn-ec2-instanceconnectendpoint-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnInstanceConnectEndpoint`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnInstanceConnectEndpointProps := &CfnInstanceConnectEndpointProps{
	SubnetId: jsii.String("subnetId"),

	// the properties below are optional
	ClientToken: jsii.String("clientToken"),
	PreserveClientIp: jsii.Boolean(false),
	SecurityGroupIds: []*string{
		jsii.String("securityGroupIds"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instanceconnectendpoint.html

type CfnInstanceConnectEndpoint_InstanceConnectEndpointDnsNamesProperty added in v2.245.0

type CfnInstanceConnectEndpoint_InstanceConnectEndpointDnsNamesProperty struct {
	// The DNS name of the EC2 Instance Connect Endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instanceconnectendpoint-instanceconnectendpointdnsnames.html#cfn-ec2-instanceconnectendpoint-instanceconnectendpointdnsnames-dnsname
	//
	DnsName *string `field:"optional" json:"dnsName" yaml:"dnsName"`
	// The Federal Information Processing Standards (FIPS) compliant DNS name of the EC2 Instance Connect Endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instanceconnectendpoint-instanceconnectendpointdnsnames.html#cfn-ec2-instanceconnectendpoint-instanceconnectendpointdnsnames-fipsdnsname
	//
	FipsDnsName *string `field:"optional" json:"fipsDnsName" yaml:"fipsDnsName"`
}

The DNS names of the endpoint.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

instanceConnectEndpointDnsNamesProperty := &InstanceConnectEndpointDnsNamesProperty{
	DnsName: jsii.String("dnsName"),
	FipsDnsName: jsii.String("fipsDnsName"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instanceconnectendpoint-instanceconnectendpointdnsnames.html

type CfnInstanceConnectEndpoint_InstanceConnectEndpointPublicDnsNamesProperty added in v2.245.0

type CfnInstanceConnectEndpoint_InstanceConnectEndpointPublicDnsNamesProperty struct {
	// The DNS names of the endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instanceconnectendpoint-instanceconnectendpointpublicdnsnames.html#cfn-ec2-instanceconnectendpoint-instanceconnectendpointpublicdnsnames-dualstack
	//
	Dualstack interface{} `field:"optional" json:"dualstack" yaml:"dualstack"`
	// The DNS names of the endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instanceconnectendpoint-instanceconnectendpointpublicdnsnames.html#cfn-ec2-instanceconnectendpoint-instanceconnectendpointpublicdnsnames-ipv4
	//
	Ipv4 interface{} `field:"optional" json:"ipv4" yaml:"ipv4"`
}

The public DNS names of the endpoint, including IPv4-only and dualstack DNS names.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

instanceConnectEndpointPublicDnsNamesProperty := &InstanceConnectEndpointPublicDnsNamesProperty{
	Dualstack: &InstanceConnectEndpointDnsNamesProperty{
		DnsName: jsii.String("dnsName"),
		FipsDnsName: jsii.String("fipsDnsName"),
	},
	Ipv4: &InstanceConnectEndpointDnsNamesProperty{
		DnsName: jsii.String("dnsName"),
		FipsDnsName: jsii.String("fipsDnsName"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instanceconnectendpoint-instanceconnectendpointpublicdnsnames.html

type CfnInstanceProps

type CfnInstanceProps struct {
	// This property is reserved for internal use.
	//
	// If you use it, the stack fails with this error: `Bad property set: [Testing this property] (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 0XXXXXX-49c7-4b40-8bcc-76885dcXXXXX)` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-additionalinfo
	//
	AdditionalInfo *string `field:"optional" json:"additionalInfo" yaml:"additionalInfo"`
	// Indicates whether the instance is associated with a dedicated host.
	//
	// If you want the instance to always restart on the same host on which it was launched, specify `host` . If you want the instance to restart on any available host, but try to launch onto the last host it ran on (on a best-effort basis), specify `default` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-affinity
	//
	Affinity *string `field:"optional" json:"affinity" yaml:"affinity"`
	// The Availability Zone of the instance.
	//
	// If not specified, an Availability Zone will be automatically chosen for you based on the load balancing criteria for the Region.
	//
	// This parameter is not supported by [DescribeImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImageAttribute.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-availabilityzone
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The block device mapping entries that defines the block devices to attach to the instance at launch.
	//
	// By default, the block devices specified in the block device mapping for the AMI are used. You can override the AMI block device mapping using the instance block device mapping. For the root volume, you can override only the volume size, volume type, volume encryption settings, and the `DeleteOnTermination` setting.
	//
	// > After the instance is running, you can modify only the `DeleteOnTermination` parameter for the attached volumes without interrupting the instance. Modifying any other parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-blockdevicemappings
	//
	BlockDeviceMappings interface{} `field:"optional" json:"blockDeviceMappings" yaml:"blockDeviceMappings"`
	// The CPU options for the instance.
	//
	// For more information, see [Optimize CPU options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *Amazon Elastic Compute Cloud User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-cpuoptions
	//
	CpuOptions interface{} `field:"optional" json:"cpuOptions" yaml:"cpuOptions"`
	// The credit option for CPU usage of the burstable performance instance.
	//
	// Valid values are `standard` and `unlimited` . To change this attribute after launch, use [ModifyInstanceCreditSpecification](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceCreditSpecification.html) . For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) in the *Amazon EC2 User Guide* .
	//
	// Default: `standard` (T2 instances) or `unlimited` (T3/T3a/T4g instances)
	//
	// For T3 instances with `host` tenancy, only `standard` is supported.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-creditspecification
	//
	CreditSpecification interface{} `field:"optional" json:"creditSpecification" yaml:"creditSpecification"`
	// Indicates whether termination protection is enabled for the instance.
	//
	// The default is `false` , which means that you can terminate the instance using the Amazon EC2 console, command line tools, or API. You can enable termination protection when you launch an instance, while the instance is running, or while the instance is stopped.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-disableapitermination
	//
	DisableApiTermination interface{} `field:"optional" json:"disableApiTermination" yaml:"disableApiTermination"`
	// Indicates whether the instance is optimized for Amazon EBS I/O.
	//
	// This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.
	//
	// Default: `false`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ebsoptimized
	//
	EbsOptimized interface{} `field:"optional" json:"ebsOptimized" yaml:"ebsOptimized"`
	// An elastic GPU to associate with the instance.
	//
	// > Amazon Elastic Graphics reached end of life on January 8, 2024.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-elasticgpuspecifications
	//
	ElasticGpuSpecifications interface{} `field:"optional" json:"elasticGpuSpecifications" yaml:"elasticGpuSpecifications"`
	// An elastic inference accelerator to associate with the instance.
	//
	// > Amazon Elastic Inference is no longer available.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-elasticinferenceaccelerators
	//
	ElasticInferenceAccelerators interface{} `field:"optional" json:"elasticInferenceAccelerators" yaml:"elasticInferenceAccelerators"`
	// Indicates whether the instance is enabled for AWS Nitro Enclaves.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-enclaveoptions
	//
	EnclaveOptions interface{} `field:"optional" json:"enclaveOptions" yaml:"enclaveOptions"`
	// Indicates whether an instance is enabled for hibernation.
	//
	// This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html) . For more information, see [Hibernate your Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide* .
	//
	// You can't enable hibernation and AWS Nitro Enclaves on the same instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-hibernationoptions
	//
	HibernationOptions interface{} `field:"optional" json:"hibernationOptions" yaml:"hibernationOptions"`
	// If you specify host for the `Affinity` property, the ID of a dedicated host that the instance is associated with.
	//
	// If you don't specify an ID, Amazon EC2 launches the instance onto any available, compatible dedicated host in your account. This type of launch is called an untargeted launch. Note that for untargeted launches, you must have a compatible, dedicated host available to successfully launch instances.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-hostid
	//
	HostId interface{} `field:"optional" json:"hostId" yaml:"hostId"`
	// The ARN of the host resource group in which to launch the instances.
	//
	// If you specify a host resource group ARN, omit the *Tenancy* parameter or set it to `host` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-hostresourcegrouparn
	//
	HostResourceGroupArn *string `field:"optional" json:"hostResourceGroupArn" yaml:"hostResourceGroupArn"`
	// The name of an IAM instance profile.
	//
	// To create a new IAM instance profile, use the [AWS::IAM::InstanceProfile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html) resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-iaminstanceprofile
	//
	IamInstanceProfile interface{} `field:"optional" json:"iamInstanceProfile" yaml:"iamInstanceProfile"`
	// The ID of the AMI.
	//
	// An AMI ID is required to launch an instance and must be specified here or in a launch template.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-imageid
	//
	ImageId *string `field:"optional" json:"imageId" yaml:"imageId"`
	// Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).
	//
	// Default: `stop`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-instanceinitiatedshutdownbehavior
	//
	InstanceInitiatedShutdownBehavior *string `field:"optional" json:"instanceInitiatedShutdownBehavior" yaml:"instanceInitiatedShutdownBehavior"`
	// The instance type. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide* .
	//
	// When you change your EBS-backed instance type, instance restart or replacement behavior depends on the instance type compatibility between the old and new types. An instance with an instance store volume as the root volume is always replaced. For more information, see [Change the instance type](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-instancetype
	//
	InstanceType *string `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The number of IPv6 addresses to associate with the primary network interface.
	//
	// Amazon EC2 chooses the IPv6 addresses from the range of your subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch.
	//
	// You cannot specify this option and the network interfaces option in the same request.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ipv6addresscount
	//
	Ipv6AddressCount *float64 `field:"optional" json:"ipv6AddressCount" yaml:"ipv6AddressCount"`
	// The IPv6 addresses from the range of the subnet to associate with the primary network interface.
	//
	// You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
	//
	// You cannot specify this option and the network interfaces option in the same request.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ipv6addresses
	//
	Ipv6Addresses interface{} `field:"optional" json:"ipv6Addresses" yaml:"ipv6Addresses"`
	// The ID of the kernel.
	//
	// > We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [PV-GRUB](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-kernelid
	//
	KernelId *string `field:"optional" json:"kernelId" yaml:"kernelId"`
	// The name of the key pair. For more information, see [Create a key pair for your EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html) .
	//
	// > If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-keyname
	//
	KeyName *string `field:"optional" json:"keyName" yaml:"keyName"`
	// The launch template.
	//
	// Any additional parameters that you specify for the new instance overwrite the corresponding parameters included in the launch template.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-launchtemplate
	//
	LaunchTemplate interface{} `field:"optional" json:"launchTemplate" yaml:"launchTemplate"`
	// The license configurations.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-licensespecifications
	//
	LicenseSpecifications interface{} `field:"optional" json:"licenseSpecifications" yaml:"licenseSpecifications"`
	// The metadata options for the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-metadataoptions
	//
	MetadataOptions interface{} `field:"optional" json:"metadataOptions" yaml:"metadataOptions"`
	// Specifies whether detailed monitoring is enabled for the instance.
	//
	// Specify `true` to enable detailed monitoring. Otherwise, basic monitoring is enabled. For more information about detailed monitoring, see [Enable or turn off detailed monitoring for your instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch-new.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-monitoring
	//
	Monitoring interface{} `field:"optional" json:"monitoring" yaml:"monitoring"`
	// The network interfaces to associate with the instance.
	//
	// > If you use this property to point to a network interface, you must terminate the original interface before attaching a new one to allow the update of the instance to succeed.
	// >
	// > If this resource has a public IP address and is also in a VPC that is defined in the same template, you must use the [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) to declare a dependency on the VPC-gateway attachment.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-networkinterfaces
	//
	NetworkInterfaces interface{} `field:"optional" json:"networkInterfaces" yaml:"networkInterfaces"`
	// The name of an existing placement group that you want to launch the instance into (cluster | partition | spread).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-placementgroupname
	//
	PlacementGroupName interface{} `field:"optional" json:"placementGroupName" yaml:"placementGroupName"`
	// The options for the instance hostname.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-privatednsnameoptions
	//
	PrivateDnsNameOptions interface{} `field:"optional" json:"privateDnsNameOptions" yaml:"privateDnsNameOptions"`
	// The primary IPv4 address. You must specify a value from the IPv4 address range of the subnet.
	//
	// Only one private IP address can be designated as primary. You can't specify this option if you've specified the option to designate a private IP address as the primary IP address in a network interface specification. You cannot specify this option if you're launching more than one instance in the request.
	//
	// You cannot specify this option and the network interfaces option in the same request.
	//
	// If you make an update to an instance that requires replacement, you must assign a new private IP address. During a replacement, AWS CloudFormation creates a new instance but doesn't delete the old instance until the stack has successfully updated. If the stack update fails, AWS CloudFormation uses the old instance to roll back the stack to the previous working state. The old and new instances cannot have the same private IP address.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-privateipaddress
	//
	PrivateIpAddress *string `field:"optional" json:"privateIpAddress" yaml:"privateIpAddress"`
	// Indicates whether to assign the tags specified in the `Tags` property to the volumes specified in the `BlockDeviceMappings` property.
	//
	// Note that using this feature does not assign the tags to volumes that are created separately and then attached using `AWS::EC2::VolumeAttachment` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-propagatetagstovolumeoncreation
	//
	PropagateTagsToVolumeOnCreation interface{} `field:"optional" json:"propagateTagsToVolumeOnCreation" yaml:"propagateTagsToVolumeOnCreation"`
	// The ID of the RAM disk to select.
	//
	// Some kernels require additional drivers at launch. Check the kernel requirements for information about whether you need to specify a RAM disk. To find kernel requirements, go to the AWS Resource Center and search for the kernel ID.
	//
	// > We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [PV-GRUB](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ramdiskid
	//
	RamdiskId *string `field:"optional" json:"ramdiskId" yaml:"ramdiskId"`
	// The IDs of the security groups.
	//
	// You can specify the IDs of existing security groups and references to resources created by the stack template.
	//
	// If you specify a network interface, you must specify any security groups as part of the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroupids
	//
	SecurityGroupIds *[]interface{} `field:"optional" json:"securityGroupIds" yaml:"securityGroupIds"`
	// [Default VPC] The names of the security groups. For a nondefault VPC, you must use security group IDs instead.
	//
	// You cannot specify this option and the network interfaces option in the same request. The list can contain both the name of existing Amazon EC2 security groups or references to AWS::EC2::SecurityGroup resources created in the template.
	//
	// Default: Amazon EC2 uses the default security group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroups
	//
	SecurityGroups *[]*string `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// Enable or disable source/destination checks, which ensure that the instance is either the source or the destination of any traffic that it receives.
	//
	// If the value is `true` , source/destination checks are enabled; otherwise, they are disabled. The default value is `true` . You must disable source/destination checks if the instance runs services such as network address translation, routing, or firewalls.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-sourcedestcheck
	//
	SourceDestCheck interface{} `field:"optional" json:"sourceDestCheck" yaml:"sourceDestCheck"`
	// The SSM [document](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html) and parameter values in AWS Systems Manager to associate with this instance. To use this property, you must specify an IAM instance profile role for the instance. For more information, see [Create an IAM instance profile for Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-configuring-access-role.html) in the *AWS Systems Manager User Guide* .
	//
	// > You can associate only one document with an instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ssmassociations
	//
	SsmAssociations interface{} `field:"optional" json:"ssmAssociations" yaml:"ssmAssociations"`
	// The ID of the subnet to launch the instance into.
	//
	// If you specify a network interface, you must specify any subnets as part of the network interface instead of using this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-subnetid
	//
	SubnetId interface{} `field:"optional" json:"subnetId" yaml:"subnetId"`
	// The tags to add to the instance.
	//
	// These tags are not applied to the EBS volumes, such as the root volume, unless [PropagateTagsToVolumeOnCreation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-propagatetagstovolumeoncreation) is `true` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The tenancy of the instance.
	//
	// An instance with a tenancy of `dedicated` runs on single-tenant hardware.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-tenancy
	//
	Tenancy *string `field:"optional" json:"tenancy" yaml:"tenancy"`
	// The parameters or scripts to store as user data.
	//
	// Any scripts in user data are run when you launch the instance. User data is limited to 16 KB. You must provide base64-encoded text. For more information, see [Fn::Base64](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-base64.html) .
	//
	// If the root volume is an EBS volume and you update user data, CloudFormation restarts the instance. If the root volume is an instance store volume and you update user data, the instance is replaced.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-userdata
	//
	UserData *string `field:"optional" json:"userData" yaml:"userData"`
	// The volumes to attach to the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-volumes
	//
	Volumes interface{} `field:"optional" json:"volumes" yaml:"volumes"`
}

Properties for defining a `CfnInstance`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnInstanceProps := &CfnInstanceProps{
	AdditionalInfo: jsii.String("additionalInfo"),
	Affinity: jsii.String("affinity"),
	AvailabilityZone: jsii.String("availabilityZone"),
	BlockDeviceMappings: []interface{}{
		&BlockDeviceMappingProperty{
			DeviceName: jsii.String("deviceName"),

			// the properties below are optional
			Ebs: &EbsProperty{
				DeleteOnTermination: jsii.Boolean(false),
				Encrypted: jsii.Boolean(false),
				Iops: jsii.Number(123),
				KmsKeyId: jsii.String("kmsKeyId"),
				SnapshotId: jsii.String("snapshotId"),
				VolumeSize: jsii.Number(123),
				VolumeType: jsii.String("volumeType"),
			},
			NoDevice: &NoDeviceProperty{
			},
			VirtualName: jsii.String("virtualName"),
		},
	},
	CpuOptions: &CpuOptionsProperty{
		CoreCount: jsii.Number(123),
		ThreadsPerCore: jsii.Number(123),
	},
	CreditSpecification: &CreditSpecificationProperty{
		CpuCredits: jsii.String("cpuCredits"),
	},
	DisableApiTermination: jsii.Boolean(false),
	EbsOptimized: jsii.Boolean(false),
	ElasticGpuSpecifications: []interface{}{
		&ElasticGpuSpecificationProperty{
			Type: jsii.String("type"),
		},
	},
	ElasticInferenceAccelerators: []interface{}{
		&ElasticInferenceAcceleratorProperty{
			Type: jsii.String("type"),

			// the properties below are optional
			Count: jsii.Number(123),
		},
	},
	EnclaveOptions: &EnclaveOptionsProperty{
		Enabled: jsii.Boolean(false),
	},
	HibernationOptions: &HibernationOptionsProperty{
		Configured: jsii.Boolean(false),
	},
	HostId: jsii.String("hostId"),
	HostResourceGroupArn: jsii.String("hostResourceGroupArn"),
	IamInstanceProfile: jsii.String("iamInstanceProfile"),
	ImageId: jsii.String("imageId"),
	InstanceInitiatedShutdownBehavior: jsii.String("instanceInitiatedShutdownBehavior"),
	InstanceType: jsii.String("instanceType"),
	Ipv6AddressCount: jsii.Number(123),
	Ipv6Addresses: []interface{}{
		&InstanceIpv6AddressProperty{
			Ipv6Address: jsii.String("ipv6Address"),
		},
	},
	KernelId: jsii.String("kernelId"),
	KeyName: jsii.String("keyName"),
	LaunchTemplate: &LaunchTemplateSpecificationProperty{
		Version: jsii.String("version"),

		// the properties below are optional
		LaunchTemplateId: jsii.String("launchTemplateId"),
		LaunchTemplateName: jsii.String("launchTemplateName"),
	},
	LicenseSpecifications: []interface{}{
		&LicenseSpecificationProperty{
			LicenseConfigurationArn: jsii.String("licenseConfigurationArn"),
		},
	},
	MetadataOptions: &MetadataOptionsProperty{
		HttpEndpoint: jsii.String("httpEndpoint"),
		HttpProtocolIpv6: jsii.String("httpProtocolIpv6"),
		HttpPutResponseHopLimit: jsii.Number(123),
		HttpTokens: jsii.String("httpTokens"),
		InstanceMetadataTags: jsii.String("instanceMetadataTags"),
	},
	Monitoring: jsii.Boolean(false),
	NetworkInterfaces: []interface{}{
		&NetworkInterfaceProperty{
			DeviceIndex: jsii.String("deviceIndex"),

			// the properties below are optional
			AssociateCarrierIpAddress: jsii.Boolean(false),
			AssociatePublicIpAddress: jsii.Boolean(false),
			DeleteOnTermination: jsii.Boolean(false),
			Description: jsii.String("description"),
			EnaSrdSpecification: &EnaSrdSpecificationProperty{
				EnaSrdEnabled: jsii.Boolean(false),
				EnaSrdUdpSpecification: &EnaSrdUdpSpecificationProperty{
					EnaSrdUdpEnabled: jsii.Boolean(false),
				},
			},
			GroupSet: []*string{
				jsii.String("groupSet"),
			},
			Ipv6AddressCount: jsii.Number(123),
			Ipv6Addresses: []interface{}{
				&InstanceIpv6AddressProperty{
					Ipv6Address: jsii.String("ipv6Address"),
				},
			},
			NetworkInterfaceId: jsii.String("networkInterfaceId"),
			PrivateIpAddress: jsii.String("privateIpAddress"),
			PrivateIpAddresses: []interface{}{
				&PrivateIpAddressSpecificationProperty{
					Primary: jsii.Boolean(false),
					PrivateIpAddress: jsii.String("privateIpAddress"),
				},
			},
			SecondaryPrivateIpAddressCount: jsii.Number(123),
			SubnetId: jsii.String("subnetId"),
		},
	},
	PlacementGroupName: jsii.String("placementGroupName"),
	PrivateDnsNameOptions: &PrivateDnsNameOptionsProperty{
		EnableResourceNameDnsAaaaRecord: jsii.Boolean(false),
		EnableResourceNameDnsARecord: jsii.Boolean(false),
		HostnameType: jsii.String("hostnameType"),
	},
	PrivateIpAddress: jsii.String("privateIpAddress"),
	PropagateTagsToVolumeOnCreation: jsii.Boolean(false),
	RamdiskId: jsii.String("ramdiskId"),
	SecurityGroupIds: []interface{}{
		jsii.String("securityGroupIds"),
	},
	SecurityGroups: []*string{
		jsii.String("securityGroups"),
	},
	SourceDestCheck: jsii.Boolean(false),
	SsmAssociations: []interface{}{
		&SsmAssociationProperty{
			DocumentName: jsii.String("documentName"),

			// the properties below are optional
			AssociationParameters: []interface{}{
				&AssociationParameterProperty{
					Key: jsii.String("key"),
					Value: []*string{
						jsii.String("value"),
					},
				},
			},
		},
	},
	SubnetId: jsii.String("subnetId"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	Tenancy: jsii.String("tenancy"),
	UserData: jsii.String("userData"),
	Volumes: []interface{}{
		&VolumeProperty{
			Device: jsii.String("device"),
			VolumeId: jsii.String("volumeId"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html

type CfnInstance_AssociationParameterProperty

type CfnInstance_AssociationParameterProperty struct {
	// The name of an input parameter that is in the associated SSM document.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-associationparameter.html#cfn-ec2-instance-associationparameter-key
	//
	Key *string `field:"required" json:"key" yaml:"key"`
	// The value of an input parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-associationparameter.html#cfn-ec2-instance-associationparameter-value
	//
	Value *[]*string `field:"required" json:"value" yaml:"value"`
}

Specifies input parameter values for an SSM document in AWS Systems Manager .

`AssociationParameter` is a property of the [SsmAssociation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociation.html) property type.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

associationParameterProperty := &AssociationParameterProperty{
	Key: jsii.String("key"),
	Value: []*string{
		jsii.String("value"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-associationparameter.html

type CfnInstance_BlockDeviceMappingProperty

type CfnInstance_BlockDeviceMappingProperty struct {
	// The device name. For available device names, see [Device names for volumes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html) .
	//
	// > After the instance is running, this parameter is used to specify the device name of the block device mapping to update.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-blockdevicemapping.html#cfn-ec2-instance-blockdevicemapping-devicename
	//
	DeviceName *string `field:"required" json:"deviceName" yaml:"deviceName"`
	// Parameters used to automatically set up EBS volumes when the instance is launched.
	//
	// > After the instance is running, you can modify only the `DeleteOnTermination` parameter for the attached volumes without interrupting the instance. Modifying any other parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-blockdevicemapping.html#cfn-ec2-instance-blockdevicemapping-ebs
	//
	Ebs interface{} `field:"optional" json:"ebs" yaml:"ebs"`
	// To omit the device from the block device mapping, specify an empty string.
	//
	// > After the instance is running, modifying this parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-blockdevicemapping.html#cfn-ec2-instance-blockdevicemapping-nodevice
	//
	NoDevice interface{} `field:"optional" json:"noDevice" yaml:"noDevice"`
	// The virtual device name ( `ephemeral` N).
	//
	// The name must be in the form `ephemeral` *X* where *X* is a number starting from zero (0). For example, an instance type with 2 available instance store volumes can specify mappings for `ephemeral0` and `ephemeral1` . The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume.
	//
	// NVMe instance store volumes are automatically enumerated and assigned a device name. Including them in your block device mapping has no effect.
	//
	// *Constraints* : For M3 instances, you must specify instance store volumes in the block device mapping for the instance. When you launch an M3 instance, we ignore any instance store volumes specified in the block device mapping for the AMI.
	//
	// > After the instance is running, modifying this parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-blockdevicemapping.html#cfn-ec2-instance-blockdevicemapping-virtualname
	//
	VirtualName *string `field:"optional" json:"virtualName" yaml:"virtualName"`
}

Specifies a block device mapping for an instance.

You must specify exactly one of the following properties: `VirtualName` , `Ebs` , or `NoDevice` .

`BlockDeviceMapping` is a property of the [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource.

> After the instance is running, you can modify only the `DeleteOnTermination` parameter for the attached volumes without interrupting the instance. Modifying any other parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

blockDeviceMappingProperty := &BlockDeviceMappingProperty{
	DeviceName: jsii.String("deviceName"),

	// the properties below are optional
	Ebs: &EbsProperty{
		DeleteOnTermination: jsii.Boolean(false),
		Encrypted: jsii.Boolean(false),
		Iops: jsii.Number(123),
		KmsKeyId: jsii.String("kmsKeyId"),
		SnapshotId: jsii.String("snapshotId"),
		VolumeSize: jsii.Number(123),
		VolumeType: jsii.String("volumeType"),
	},
	NoDevice: &NoDeviceProperty{
	},
	VirtualName: jsii.String("virtualName"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-blockdevicemapping.html

type CfnInstance_CpuOptionsProperty

type CfnInstance_CpuOptionsProperty struct {
	// The number of CPU cores for the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-corecount
	//
	CoreCount *float64 `field:"optional" json:"coreCount" yaml:"coreCount"`
	// The number of threads per CPU core.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-threadspercore
	//
	ThreadsPerCore *float64 `field:"optional" json:"threadsPerCore" yaml:"threadsPerCore"`
}

Specifies the CPU options for the instance.

When you specify CPU options, you must specify both the number of CPU cores and threads per core.

Modifying the CPU options for an instance results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .

For more information, see [Optimize CPU options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *Amazon Elastic Compute Cloud User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cpuOptionsProperty := &CpuOptionsProperty{
	CoreCount: jsii.Number(123),
	ThreadsPerCore: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html

type CfnInstance_CreditSpecificationProperty

type CfnInstance_CreditSpecificationProperty struct {
	// The credit option for CPU usage of the instance.
	//
	// Valid values: `standard` | `unlimited`
	//
	// T3 instances with `host` tenancy do not support the `unlimited` CPU credit option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html#cfn-ec2-instance-creditspecification-cpucredits
	//
	CpuCredits *string `field:"optional" json:"cpuCredits" yaml:"cpuCredits"`
}

Specifies the credit option for CPU usage of a T instance.

`CreditSpecification` is a property of the [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource.

For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

creditSpecificationProperty := &CreditSpecificationProperty{
	CpuCredits: jsii.String("cpuCredits"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html

type CfnInstance_EbsProperty

type CfnInstance_EbsProperty struct {
	// Indicates whether the EBS volume is deleted on instance termination.
	//
	// For more information, see [Preserving Amazon EBS volumes on instance termination](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#preserving-volumes-on-termination) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ebs.html#cfn-ec2-instance-ebs-deleteontermination
	//
	DeleteOnTermination interface{} `field:"optional" json:"deleteOnTermination" yaml:"deleteOnTermination"`
	// Indicates whether the volume should be encrypted.
	//
	// The effect of setting the encryption state to `true` depends on the volume origin (new or from a snapshot), starting encryption state, ownership, and whether encryption by default is enabled. For more information, see [Encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default) in the *Amazon Elastic Compute Cloud User Guide* .
	//
	// Encrypted Amazon EBS volumes must be attached to instances that support Amazon EBS encryption. For more information, see [Supported instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances) .
	//
	// > After the instance is running, modifying this parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ebs.html#cfn-ec2-instance-ebs-encrypted
	//
	Encrypted interface{} `field:"optional" json:"encrypted" yaml:"encrypted"`
	// The number of I/O operations per second (IOPS).
	//
	// For `gp3` , `io1` , and `io2` volumes, this represents the number of IOPS that are provisioned for the volume. For `gp2` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.
	//
	// The following are the supported values for each volume type:
	//
	// - `gp3` : 3,000-16,000 IOPS
	// - `io1` : 100-64,000 IOPS
	// - `io2` : 100-64,000 IOPS
	//
	// For `io1` and `io2` volumes, we guarantee 64,000 IOPS only for [Instances built on the Nitro System](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances) . Other instance families guarantee performance up to 32,000 IOPS.
	//
	// This parameter is required for `io1` and `io2` volumes. The default for `gp3` volumes is 3,000 IOPS. This parameter is not supported for `gp2` , `st1` , `sc1` , or `standard` volumes.
	//
	// > After the instance is running, modifying this parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ebs.html#cfn-ec2-instance-ebs-iops
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// The identifier of the AWS KMS key to use for Amazon EBS encryption.
	//
	// If `KmsKeyId` is specified, the encrypted state must be `true` . If the encrypted state is `true` but you do not specify `KmsKeyId` , your KMS key for EBS is used.
	//
	// You can specify the KMS key using any of the following:
	//
	// - Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.
	// - Key alias. For example, alias/ExampleAlias.
	// - Key ARN. For example, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.
	// - Alias ARN. For example, arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias.
	//
	// > After the instance is running, modifying this parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ebs.html#cfn-ec2-instance-ebs-kmskeyid
	//
	KmsKeyId *string `field:"optional" json:"kmsKeyId" yaml:"kmsKeyId"`
	// The ID of the snapshot.
	//
	// If you specify both `SnapshotId` and `VolumeSize` , `VolumeSize` must be equal or greater than the size of the snapshot.
	//
	// > After the instance is running, modifying this parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ebs.html#cfn-ec2-instance-ebs-snapshotid
	//
	SnapshotId *string `field:"optional" json:"snapshotId" yaml:"snapshotId"`
	// The size of the volume, in GiBs.
	//
	// You must specify either a snapshot ID or a volume size. If you specify a snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the snapshot size.
	//
	// The following are the supported volumes sizes for each volume type:
	//
	// - `gp2` and `gp3` :1-16,384
	// - `io1` and `io2` : 4-16,384
	// - `st1` and `sc1` : 125-16,384
	// - `standard` : 1-1,024
	//
	// > After the instance is running, modifying this parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ebs.html#cfn-ec2-instance-ebs-volumesize
	//
	VolumeSize *float64 `field:"optional" json:"volumeSize" yaml:"volumeSize"`
	// The volume type.
	//
	// For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) in the *Amazon EC2 User Guide* . If the volume type is `io1` or `io2` , you must specify the IOPS that the volume supports.
	//
	// > After the instance is running, modifying this parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ebs.html#cfn-ec2-instance-ebs-volumetype
	//
	VolumeType *string `field:"optional" json:"volumeType" yaml:"volumeType"`
}

Specifies a block device for an EBS volume.

`Ebs` is a property of the [BlockDeviceMapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-blockdevicemapping.html) property type.

> After the instance is running, you can modify only the `DeleteOnTermination` parameters for the attached volumes without interrupting the instance. Modifying any other parameter results in instance [replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ebsProperty := &EbsProperty{
	DeleteOnTermination: jsii.Boolean(false),
	Encrypted: jsii.Boolean(false),
	Iops: jsii.Number(123),
	KmsKeyId: jsii.String("kmsKeyId"),
	SnapshotId: jsii.String("snapshotId"),
	VolumeSize: jsii.Number(123),
	VolumeType: jsii.String("volumeType"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ebs.html

type CfnInstance_ElasticGpuSpecificationProperty

type CfnInstance_ElasticGpuSpecificationProperty struct {
	// The type of Elastic Graphics accelerator.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html#cfn-ec2-instance-elasticgpuspecification-type
	//
	Type *string `field:"required" json:"type" yaml:"type"`
}

> Amazon Elastic Graphics reached end of life on January 8, 2024.

Specifies the type of Elastic GPU. An Elastic GPU is a GPU resource that you can attach to your Amazon EC2 instance to accelerate the graphics performance of your applications.

`ElasticGpuSpecification` is a property of the [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

elasticGpuSpecificationProperty := &ElasticGpuSpecificationProperty{
	Type: jsii.String("type"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html

type CfnInstance_ElasticInferenceAcceleratorProperty

type CfnInstance_ElasticInferenceAcceleratorProperty struct {
	// The type of elastic inference accelerator.
	//
	// The possible values are `eia1.medium` , `eia1.large` , `eia1.xlarge` , `eia2.medium` , `eia2.large` , and `eia2.xlarge` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-type
	//
	Type *string `field:"required" json:"type" yaml:"type"`
	// The number of elastic inference accelerators to attach to the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-count
	//
	Count *float64 `field:"optional" json:"count" yaml:"count"`
}

> Amazon Elastic Inference is no longer available.

Specifies the Elastic Inference Accelerator for the instance.

`ElasticInferenceAccelerator` is a property of the [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

elasticInferenceAcceleratorProperty := &ElasticInferenceAcceleratorProperty{
	Type: jsii.String("type"),

	// the properties below are optional
	Count: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html

type CfnInstance_EnaSrdSpecificationProperty added in v2.188.0

type CfnInstance_EnaSrdSpecificationProperty struct {
	// Indicates whether ENA Express is enabled for the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-enasrdspecification.html#cfn-ec2-instance-enasrdspecification-enasrdenabled
	//
	EnaSrdEnabled interface{} `field:"optional" json:"enaSrdEnabled" yaml:"enaSrdEnabled"`
	// Configures ENA Express for UDP network traffic.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-enasrdspecification.html#cfn-ec2-instance-enasrdspecification-enasrdudpspecification
	//
	EnaSrdUdpSpecification interface{} `field:"optional" json:"enaSrdUdpSpecification" yaml:"enaSrdUdpSpecification"`
}

ENA Express uses AWS Scalable Reliable Datagram (SRD) technology to increase the maximum bandwidth used per stream and minimize tail latency of network traffic between EC2 instances.

With ENA Express, you can communicate between two EC2 instances in the same subnet within the same account, or in different accounts. Both sending and receiving instances must have ENA Express enabled.

To improve the reliability of network packet delivery, ENA Express reorders network packets on the receiving end by default. However, some UDP-based applications are designed to handle network packets that are out of order to reduce the overhead for packet delivery at the network layer. When ENA Express is enabled, you can specify whether UDP network traffic uses it.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

enaSrdSpecificationProperty := &EnaSrdSpecificationProperty{
	EnaSrdEnabled: jsii.Boolean(false),
	EnaSrdUdpSpecification: &EnaSrdUdpSpecificationProperty{
		EnaSrdUdpEnabled: jsii.Boolean(false),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-enasrdspecification.html

type CfnInstance_EnaSrdUdpSpecificationProperty added in v2.188.0

type CfnInstance_EnaSrdUdpSpecificationProperty struct {
	// Indicates whether UDP traffic to and from the instance uses ENA Express.
	//
	// To specify this setting, you must first enable ENA Express.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-enasrdudpspecification.html#cfn-ec2-instance-enasrdudpspecification-enasrdudpenabled
	//
	EnaSrdUdpEnabled interface{} `field:"optional" json:"enaSrdUdpEnabled" yaml:"enaSrdUdpEnabled"`
}

ENA Express is compatible with both TCP and UDP transport protocols.

When it's enabled, TCP traffic automatically uses it. However, some UDP-based applications are designed to handle network packets that are out of order, without a need for retransmission, such as live video broadcasting or other near-real-time applications. For UDP traffic, you can specify whether to use ENA Express, based on your application environment needs.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

enaSrdUdpSpecificationProperty := &EnaSrdUdpSpecificationProperty{
	EnaSrdUdpEnabled: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-enasrdudpspecification.html

type CfnInstance_EnclaveOptionsProperty

type CfnInstance_EnclaveOptionsProperty struct {
	// If this parameter is set to `true` , the instance is enabled for AWS Nitro Enclaves;
	//
	// otherwise, it is not enabled for AWS Nitro Enclaves.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-enclaveoptions.html#cfn-ec2-instance-enclaveoptions-enabled
	//
	Enabled interface{} `field:"optional" json:"enabled" yaml:"enabled"`
}

Indicates whether the instance is enabled for AWS Nitro Enclaves.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

enclaveOptionsProperty := &EnclaveOptionsProperty{
	Enabled: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-enclaveoptions.html

type CfnInstance_HibernationOptionsProperty

type CfnInstance_HibernationOptionsProperty struct {
	// Set to `true` to enable your instance for hibernation.
	//
	// For Spot Instances, if you set `Configured` to `true` , either omit the `InstanceInterruptionBehavior` parameter (for [`SpotMarketOptions`](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SpotMarketOptions.html) ), or set it to `hibernate` . When `Configured` is true:
	//
	// - If you omit `InstanceInterruptionBehavior` , it defaults to `hibernate` .
	// - If you set `InstanceInterruptionBehavior` to a value other than `hibernate` , you'll get an error.
	//
	// Default: `false`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html#cfn-ec2-instance-hibernationoptions-configured
	//
	// Default: - false.
	//
	Configured interface{} `field:"optional" json:"configured" yaml:"configured"`
}

Specifies the hibernation options for the instance.

`HibernationOptions` is a property of the [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

hibernationOptionsProperty := &HibernationOptionsProperty{
	Configured: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html

type CfnInstance_InstanceIpv6AddressProperty

type CfnInstance_InstanceIpv6AddressProperty struct {
	// The IPv6 address.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html#cfn-ec2-instance-instanceipv6address-ipv6address
	//
	Ipv6Address *string `field:"required" json:"ipv6Address" yaml:"ipv6Address"`
}

Specifies the IPv6 address for the instance.

`InstanceIpv6Address` is a property of the [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

instanceIpv6AddressProperty := &InstanceIpv6AddressProperty{
	Ipv6Address: jsii.String("ipv6Address"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html

type CfnInstance_LaunchTemplateSpecificationProperty

type CfnInstance_LaunchTemplateSpecificationProperty struct {
	// The version number of the launch template. You must specify this property.
	//
	// To specify the default version of the template, use the `Fn::GetAtt` intrinsic function to retrieve the `DefaultVersionNumber` attribute of the launch template. To specify the latest version of the template, use `Fn::GetAtt` to retrieve the `LatestVersionNumber` attribute. For more information, see [AWS::EC2:LaunchTemplate return values for Fn::GetAtt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#aws-resource-ec2-launchtemplate-return-values-fn--getatt) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-version
	//
	Version *string `field:"required" json:"version" yaml:"version"`
	// The ID of the launch template.
	//
	// You must specify either the launch template ID or the launch template name, but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplateid
	//
	LaunchTemplateId *string `field:"optional" json:"launchTemplateId" yaml:"launchTemplateId"`
	// The name of the launch template.
	//
	// You must specify either the launch template ID or the launch template name, but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplatename
	//
	LaunchTemplateName *string `field:"optional" json:"launchTemplateName" yaml:"launchTemplateName"`
}

Specifies a launch template to use when launching an Amazon EC2 instance.

You must specify the following:

- The ID or the name of the launch template, but not both. - The version of the launch template.

For information about creating a launch template, see [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html) and [Create a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template) in the *Amazon EC2 User Guide* . For example launch templates, see the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#aws-resource-ec2-launchtemplate--examples) for `AWS::EC2::LaunchTemplate` .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

launchTemplateSpecificationProperty := &LaunchTemplateSpecificationProperty{
	Version: jsii.String("version"),

	// the properties below are optional
	LaunchTemplateId: jsii.String("launchTemplateId"),
	LaunchTemplateName: jsii.String("launchTemplateName"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html

type CfnInstance_LicenseSpecificationProperty

type CfnInstance_LicenseSpecificationProperty struct {
	// The Amazon Resource Name (ARN) of the license configuration.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html#cfn-ec2-instance-licensespecification-licenseconfigurationarn
	//
	LicenseConfigurationArn *string `field:"required" json:"licenseConfigurationArn" yaml:"licenseConfigurationArn"`
}

Specifies the license configuration to use.

`LicenseSpecification` is a property of the [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

licenseSpecificationProperty := &LicenseSpecificationProperty{
	LicenseConfigurationArn: jsii.String("licenseConfigurationArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html

type CfnInstance_MetadataOptionsProperty added in v2.198.0

type CfnInstance_MetadataOptionsProperty struct {
	// Enables or disables the HTTP metadata endpoint on your instances.
	//
	// If you specify a value of `disabled` , you cannot access your instance metadata.
	//
	// Default: `enabled`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-metadataoptions.html#cfn-ec2-instance-metadataoptions-httpendpoint
	//
	HttpEndpoint *string `field:"optional" json:"httpEndpoint" yaml:"httpEndpoint"`
	// Enables or disables the IPv6 endpoint for the instance metadata service.
	//
	// Default: `disabled`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-metadataoptions.html#cfn-ec2-instance-metadataoptions-httpprotocolipv6
	//
	HttpProtocolIpv6 *string `field:"optional" json:"httpProtocolIpv6" yaml:"httpProtocolIpv6"`
	// The maximum number of hops that the metadata token can travel.
	//
	// Possible values: Integers from 1 to 64.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-metadataoptions.html#cfn-ec2-instance-metadataoptions-httpputresponsehoplimit
	//
	// Default: - 1.
	//
	HttpPutResponseHopLimit *float64 `field:"optional" json:"httpPutResponseHopLimit" yaml:"httpPutResponseHopLimit"`
	// Indicates whether IMDSv2 is required.
	//
	// - `optional` - IMDSv2 is optional, which means that you can use either IMDSv2 or IMDSv1.
	// - `required` - IMDSv2 is required, which means that IMDSv1 is disabled, and you must use IMDSv2.
	//
	// Default:
	//
	// - If the value of `ImdsSupport` for the Amazon Machine Image (AMI) for your instance is `v2.0` and the account level default is set to `no-preference` , the default is `required` .
	// - If the value of `ImdsSupport` for the Amazon Machine Image (AMI) for your instance is `v2.0` , but the account level default is set to `V1 or V2` , the default is `optional` .
	//
	// The default value can also be affected by other combinations of parameters. For more information, see [Order of precedence for instance metadata options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html#instance-metadata-options-order-of-precedence) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-metadataoptions.html#cfn-ec2-instance-metadataoptions-httptokens
	//
	HttpTokens *string `field:"optional" json:"httpTokens" yaml:"httpTokens"`
	// Set to `enabled` to allow access to instance tags from the instance metadata.
	//
	// Set to `disabled` to turn off access to instance tags from the instance metadata. For more information, see [Work with instance tags using the instance metadata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#work-with-tags-in-IMDS) .
	//
	// Default: `disabled`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-metadataoptions.html#cfn-ec2-instance-metadataoptions-instancemetadatatags
	//
	InstanceMetadataTags *string `field:"optional" json:"instanceMetadataTags" yaml:"instanceMetadataTags"`
}

Specifies the metadata options for the instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

metadataOptionsProperty := &MetadataOptionsProperty{
	HttpEndpoint: jsii.String("httpEndpoint"),
	HttpProtocolIpv6: jsii.String("httpProtocolIpv6"),
	HttpPutResponseHopLimit: jsii.Number(123),
	HttpTokens: jsii.String("httpTokens"),
	InstanceMetadataTags: jsii.String("instanceMetadataTags"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-metadataoptions.html

type CfnInstance_NetworkInterfaceProperty

type CfnInstance_NetworkInterfaceProperty struct {
	// The position of the network interface in the attachment order.
	//
	// A primary network interface has a device index of 0.
	//
	// If you create a network interface when launching an instance, you must specify the device index.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-deviceindex
	//
	DeviceIndex *string `field:"required" json:"deviceIndex" yaml:"deviceIndex"`
	// Indicates whether to assign a carrier IP address to the network interface.
	//
	// You can only assign a carrier IP address to a network interface that is in a subnet in a Wavelength Zone. For more information about carrier IP addresses, see [Carrier IP address](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) in the *AWS Wavelength Developer Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-associatecarrieripaddress
	//
	AssociateCarrierIpAddress interface{} `field:"optional" json:"associateCarrierIpAddress" yaml:"associateCarrierIpAddress"`
	// Indicates whether to assign a public IPv4 address to an instance.
	//
	// Applies only if creating a network interface when launching an instance. The network interface must be the primary network interface. If launching into a default subnet, the default value is `true` .
	//
	// AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-associatepublicipaddress
	//
	AssociatePublicIpAddress interface{} `field:"optional" json:"associatePublicIpAddress" yaml:"associatePublicIpAddress"`
	// Indicates whether the network interface is deleted when the instance is terminated.
	//
	// Applies only if creating a network interface when launching an instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-deleteontermination
	//
	DeleteOnTermination interface{} `field:"optional" json:"deleteOnTermination" yaml:"deleteOnTermination"`
	// The description of the network interface.
	//
	// Applies only if creating a network interface when launching an instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// Configures ENA Express for UDP network traffic.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-enasrdspecification
	//
	EnaSrdSpecification interface{} `field:"optional" json:"enaSrdSpecification" yaml:"enaSrdSpecification"`
	// The IDs of the security groups for the network interface.
	//
	// Applies only if creating a network interface when launching an instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-groupset
	//
	GroupSet *[]*string `field:"optional" json:"groupSet" yaml:"groupSet"`
	// A number of IPv6 addresses to assign to the network interface.
	//
	// Amazon EC2 chooses the IPv6 addresses from the range of the subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-ipv6addresscount
	//
	Ipv6AddressCount *float64 `field:"optional" json:"ipv6AddressCount" yaml:"ipv6AddressCount"`
	// The IPv6 addresses to assign to the network interface.
	//
	// You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-ipv6addresses
	//
	Ipv6Addresses interface{} `field:"optional" json:"ipv6Addresses" yaml:"ipv6Addresses"`
	// The ID of the network interface, when attaching an existing network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-networkinterfaceid
	//
	NetworkInterfaceId *string `field:"optional" json:"networkInterfaceId" yaml:"networkInterfaceId"`
	// The private IPv4 address of the network interface.
	//
	// Applies only if creating a network interface when launching an instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-privateipaddress
	//
	PrivateIpAddress *string `field:"optional" json:"privateIpAddress" yaml:"privateIpAddress"`
	// One or more private IPv4 addresses to assign to the network interface.
	//
	// Only one private IPv4 address can be designated as primary.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-privateipaddresses
	//
	PrivateIpAddresses interface{} `field:"optional" json:"privateIpAddresses" yaml:"privateIpAddresses"`
	// The number of secondary private IPv4 addresses.
	//
	// You can't specify this option and specify more than one private IP address using the private IP addresses option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-secondaryprivateipaddresscount
	//
	SecondaryPrivateIpAddressCount *float64 `field:"optional" json:"secondaryPrivateIpAddressCount" yaml:"secondaryPrivateIpAddressCount"`
	// The ID of the subnet associated with the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html#cfn-ec2-instance-networkinterface-subnetid
	//
	SubnetId *string `field:"optional" json:"subnetId" yaml:"subnetId"`
}

Specifies a network interface that is to be attached to an instance.

You can create a network interface when launching an instance. For an example, see the [AWS::EC2::Instance examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#aws-properties-ec2-instance--examples--Automatically_assign_a_public_IP_address) .

Alternatively, you can attach an existing network interface when launching an instance. For an example, see the [AWS::EC2:NetworkInterface examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinterface.html#aws-resource-ec2-networkinterface--examples) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

networkInterfaceProperty := &NetworkInterfaceProperty{
	DeviceIndex: jsii.String("deviceIndex"),

	// the properties below are optional
	AssociateCarrierIpAddress: jsii.Boolean(false),
	AssociatePublicIpAddress: jsii.Boolean(false),
	DeleteOnTermination: jsii.Boolean(false),
	Description: jsii.String("description"),
	EnaSrdSpecification: &EnaSrdSpecificationProperty{
		EnaSrdEnabled: jsii.Boolean(false),
		EnaSrdUdpSpecification: &EnaSrdUdpSpecificationProperty{
			EnaSrdUdpEnabled: jsii.Boolean(false),
		},
	},
	GroupSet: []*string{
		jsii.String("groupSet"),
	},
	Ipv6AddressCount: jsii.Number(123),
	Ipv6Addresses: []interface{}{
		&InstanceIpv6AddressProperty{
			Ipv6Address: jsii.String("ipv6Address"),
		},
	},
	NetworkInterfaceId: jsii.String("networkInterfaceId"),
	PrivateIpAddress: jsii.String("privateIpAddress"),
	PrivateIpAddresses: []interface{}{
		&PrivateIpAddressSpecificationProperty{
			Primary: jsii.Boolean(false),
			PrivateIpAddress: jsii.String("privateIpAddress"),
		},
	},
	SecondaryPrivateIpAddressCount: jsii.Number(123),
	SubnetId: jsii.String("subnetId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-networkinterface.html

type CfnInstance_NoDeviceProperty

type CfnInstance_NoDeviceProperty struct {
}

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

noDeviceProperty := &NoDeviceProperty{
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-nodevice.html

type CfnInstance_PrivateDnsNameOptionsProperty added in v2.13.0

type CfnInstance_PrivateDnsNameOptionsProperty struct {
	// Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.
	//
	// For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *Amazon Elastic Compute Cloud User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-privatednsnameoptions.html#cfn-ec2-instance-privatednsnameoptions-enableresourcenamednsaaaarecord
	//
	EnableResourceNameDnsAaaaRecord interface{} `field:"optional" json:"enableResourceNameDnsAaaaRecord" yaml:"enableResourceNameDnsAaaaRecord"`
	// Indicates whether to respond to DNS queries for instance hostnames with DNS A records.
	//
	// For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *Amazon Elastic Compute Cloud User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-privatednsnameoptions.html#cfn-ec2-instance-privatednsnameoptions-enableresourcenamednsarecord
	//
	EnableResourceNameDnsARecord interface{} `field:"optional" json:"enableResourceNameDnsARecord" yaml:"enableResourceNameDnsARecord"`
	// The type of hostnames to assign to instances in the subnet at launch.
	//
	// For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *Amazon Elastic Compute Cloud User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-privatednsnameoptions.html#cfn-ec2-instance-privatednsnameoptions-hostnametype
	//
	HostnameType *string `field:"optional" json:"hostnameType" yaml:"hostnameType"`
}

The type of hostnames to assign to instances in the subnet at launch.

For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *Amazon Elastic Compute Cloud User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

privateDnsNameOptionsProperty := &PrivateDnsNameOptionsProperty{
	EnableResourceNameDnsAaaaRecord: jsii.Boolean(false),
	EnableResourceNameDnsARecord: jsii.Boolean(false),
	HostnameType: jsii.String("hostnameType"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-privatednsnameoptions.html

type CfnInstance_PrivateIpAddressSpecificationProperty

type CfnInstance_PrivateIpAddressSpecificationProperty struct {
	// Indicates whether the private IPv4 address is the primary private IPv4 address.
	//
	// Only one IPv4 address can be designated as primary.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-privateipaddressspecification.html#cfn-ec2-instance-privateipaddressspecification-primary
	//
	Primary interface{} `field:"required" json:"primary" yaml:"primary"`
	// The private IPv4 address.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-privateipaddressspecification.html#cfn-ec2-instance-privateipaddressspecification-privateipaddress
	//
	PrivateIpAddress *string `field:"required" json:"privateIpAddress" yaml:"privateIpAddress"`
}

Specifies a secondary private IPv4 address for a network interface.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

privateIpAddressSpecificationProperty := &PrivateIpAddressSpecificationProperty{
	Primary: jsii.Boolean(false),
	PrivateIpAddress: jsii.String("privateIpAddress"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-privateipaddressspecification.html

type CfnInstance_SsmAssociationProperty

type CfnInstance_SsmAssociationProperty struct {
	// The name of an SSM document to associate with the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociation.html#cfn-ec2-instance-ssmassociation-documentname
	//
	DocumentName *string `field:"required" json:"documentName" yaml:"documentName"`
	// The input parameter values to use with the associated SSM document.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociation.html#cfn-ec2-instance-ssmassociation-associationparameters
	//
	AssociationParameters interface{} `field:"optional" json:"associationParameters" yaml:"associationParameters"`
}

Specifies the SSM document and parameter values in AWS Systems Manager to associate with an instance.

`SsmAssociations` is a property of the [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ssmAssociationProperty := &SsmAssociationProperty{
	DocumentName: jsii.String("documentName"),

	// the properties below are optional
	AssociationParameters: []interface{}{
		&AssociationParameterProperty{
			Key: jsii.String("key"),
			Value: []*string{
				jsii.String("value"),
			},
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociation.html

type CfnInstance_StateProperty added in v2.141.0

type CfnInstance_StateProperty struct {
	// The state of the instance as a 16-bit unsigned integer.
	//
	// The high byte is all of the bits between 2^8 and (2^16)-1, which equals decimal values between 256 and 65,535. These numerical values are used for internal purposes and should be ignored.
	//
	// The low byte is all of the bits between 2^0 and (2^8)-1, which equals decimal values between 0 and 255.
	//
	// The valid values for instance-state-code will all be in the range of the low byte and they are:
	//
	// - `0` : `pending`
	// - `16` : `running`
	// - `32` : `shutting-down`
	// - `48` : `terminated`
	// - `64` : `stopping`
	// - `80` : `stopped`
	//
	// You can ignore the high byte value by zeroing out all of the bits above 2^8 or 256 in decimal.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-state.html#cfn-ec2-instance-state-code
	//
	Code *string `field:"optional" json:"code" yaml:"code"`
	// The current state of the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-state.html#cfn-ec2-instance-state-name
	//
	Name *string `field:"optional" json:"name" yaml:"name"`
}

Describes the current state of an instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

stateProperty := &StateProperty{
	Code: jsii.String("code"),
	Name: jsii.String("name"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-state.html

type CfnInstance_VolumeProperty

type CfnInstance_VolumeProperty struct {
	// The device name (for example, `/dev/sdh` or `xvdh` ).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-volume.html#cfn-ec2-instance-volume-device
	//
	Device *string `field:"required" json:"device" yaml:"device"`
	// The ID of the EBS volume.
	//
	// The volume and instance must be within the same Availability Zone.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-volume.html#cfn-ec2-instance-volume-volumeid
	//
	VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"`
}

Specifies a volume to attach to an instance.

`Volume` is an embedded property of the [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

volumeProperty := &VolumeProperty{
	Device: jsii.String("device"),
	VolumeId: jsii.String("volumeId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-volume.html

type CfnInternetGateway

type CfnInternetGateway interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IInternetGatewayRef
	awscdk.ITaggable
	// The ID of the internet gateway.
	AttrInternetGatewayId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// A reference to a InternetGateway resource.
	InternetGatewayRef() *interfacesawsec2.InternetGatewayReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// Any tags to assign to the internet gateway.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Allocates an internet gateway for use with a VPC.

After creating the Internet gateway, you then attach it to a VPC.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnInternetGateway := awscdk.Aws_ec2.NewCfnInternetGateway(this, jsii.String("MyCfnInternetGateway"), &CfnInternetGatewayProps{
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html

func NewCfnInternetGateway

func NewCfnInternetGateway(scope constructs.Construct, id *string, props *CfnInternetGatewayProps) CfnInternetGateway

Create a new `AWS::EC2::InternetGateway`.

type CfnInternetGatewayProps

type CfnInternetGatewayProps struct {
	// Any tags to assign to the internet gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html#cfn-ec2-internetgateway-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnInternetGateway`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnInternetGatewayProps := &CfnInternetGatewayProps{
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html

type CfnIpPoolRouteTableAssociation added in v2.212.0

type CfnIpPoolRouteTableAssociation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IIpPoolRouteTableAssociationRef
	// The ID of a route table association.
	AttrAssociationId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// A reference to a IpPoolRouteTableAssociation resource.
	IpPoolRouteTableAssociationRef() *interfacesawsec2.IpPoolRouteTableAssociationReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// The ID of a public IPv4 address pool.
	PublicIpv4Pool() *string
	SetPublicIpv4Pool(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The ID of a route table.
	RouteTableId() *string
	SetRouteTableId(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

A route server association is the connection established between a route server and a VPC.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIpPoolRouteTableAssociation := awscdk.Aws_ec2.NewCfnIpPoolRouteTableAssociation(this, jsii.String("MyCfnIpPoolRouteTableAssociation"), &CfnIpPoolRouteTableAssociationProps{
	PublicIpv4Pool: jsii.String("publicIpv4Pool"),
	RouteTableId: jsii.String("routeTableId"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ippoolroutetableassociation.html

func NewCfnIpPoolRouteTableAssociation added in v2.212.0

func NewCfnIpPoolRouteTableAssociation(scope constructs.Construct, id *string, props *CfnIpPoolRouteTableAssociationProps) CfnIpPoolRouteTableAssociation

Create a new `AWS::EC2::IpPoolRouteTableAssociation`.

type CfnIpPoolRouteTableAssociationProps added in v2.212.0

type CfnIpPoolRouteTableAssociationProps struct {
	// The ID of a public IPv4 address pool.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ippoolroutetableassociation.html#cfn-ec2-ippoolroutetableassociation-publicipv4pool
	//
	PublicIpv4Pool *string `field:"required" json:"publicIpv4Pool" yaml:"publicIpv4Pool"`
	// The ID of a route table.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ippoolroutetableassociation.html#cfn-ec2-ippoolroutetableassociation-routetableid
	//
	RouteTableId *string `field:"required" json:"routeTableId" yaml:"routeTableId"`
}

Properties for defining a `CfnIpPoolRouteTableAssociation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnIpPoolRouteTableAssociationProps := &CfnIpPoolRouteTableAssociationProps{
	PublicIpv4Pool: jsii.String("publicIpv4Pool"),
	RouteTableId: jsii.String("routeTableId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ippoolroutetableassociation.html

type CfnKeyPair added in v2.25.0

type CfnKeyPair interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.IKeyPairRef
	awscdk.ITaggable
	// If you created the key pair using Amazon EC2:.
	//
	// - For RSA key pairs, the key fingerprint is the SHA-1 digest of the DER encoded private key.
	// - For ED25519 key pairs, the key fingerprint is the base64-encoded SHA-256 digest, which is the default for OpenSSH, starting with [OpenSSH 6.8](https://docs.aws.amazon.com/http://www.openssh.com/txt/release-6.8) .
	//
	// If you imported the key pair to Amazon EC2:
	//
	// - For RSA key pairs, the key fingerprint is the MD5 public key fingerprint as specified in section 4 of RFC 4716.
	// - For ED25519 key pairs, the key fingerprint is the base64-encoded SHA-256 digest, which is the default for OpenSSH, starting with [OpenSSH 6.8](https://docs.aws.amazon.com/http://www.openssh.com/txt/release-6.8) .
	AttrKeyFingerprint() *string
	// The ID of the key pair.
	AttrKeyPairId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The format of the key pair.
	KeyFormat() *string
	SetKeyFormat(val *string)
	// A unique name for the key pair.
	KeyName() *string
	SetKeyName(val *string)
	// A reference to a KeyPair resource.
	KeyPairRef() *interfacesawsec2.KeyPairReference
	// The type of key pair.
	//
	// Note that ED25519 keys are not supported for Windows instances.
	KeyType() *string
	SetKeyType(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// The public key material.
	PublicKeyMaterial() *string
	SetPublicKeyMaterial(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags to apply to the key pair.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a key pair for use with an Amazon Elastic Compute Cloud instance as follows:.

- To import an existing key pair, include the `PublicKeyMaterial` property. - To create a new key pair, omit the `PublicKeyMaterial` property.

When you import an existing key pair, you specify the public key material for the key. We assume that you have the private key material for the key. AWS CloudFormation does not create or return the private key material when you import a key pair.

When you create a new key pair, the private key is saved to AWS Systems Manager Parameter Store, using a parameter with the following name: `/ec2/keypair/{key_pair_id}` . For more information about retrieving private key, and the required permissions, see [Create a key pair using CloudFormation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html#create-key-pair-cloudformation) in the *Amazon EC2 User Guide* .

When CloudFormation deletes a key pair that was created or imported by a stack, it also deletes the parameter that was used to store the private key material in Parameter Store.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnKeyPair := awscdk.Aws_ec2.NewCfnKeyPair(this, jsii.String("MyCfnKeyPair"), &CfnKeyPairProps{
	KeyName: jsii.String("keyName"),

	// the properties below are optional
	KeyFormat: jsii.String("keyFormat"),
	KeyType: jsii.String("keyType"),
	PublicKeyMaterial: jsii.String("publicKeyMaterial"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html

func NewCfnKeyPair added in v2.25.0

func NewCfnKeyPair(scope constructs.Construct, id *string, props *CfnKeyPairProps) CfnKeyPair

Create a new `AWS::EC2::KeyPair`.

type CfnKeyPairProps added in v2.25.0

type CfnKeyPairProps struct {
	// A unique name for the key pair.
	//
	// Constraints: Up to 255 ASCII characters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html#cfn-ec2-keypair-keyname
	//
	KeyName *string `field:"required" json:"keyName" yaml:"keyName"`
	// The format of the key pair.
	//
	// Default: `pem`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html#cfn-ec2-keypair-keyformat
	//
	// Default: - "pem".
	//
	KeyFormat *string `field:"optional" json:"keyFormat" yaml:"keyFormat"`
	// The type of key pair. Note that ED25519 keys are not supported for Windows instances.
	//
	// If the `PublicKeyMaterial` property is specified, the `KeyType` property is ignored, and the key type is inferred from the `PublicKeyMaterial` value.
	//
	// Default: `rsa`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html#cfn-ec2-keypair-keytype
	//
	// Default: - "rsa".
	//
	KeyType *string `field:"optional" json:"keyType" yaml:"keyType"`
	// The public key material.
	//
	// The `PublicKeyMaterial` property is used to import a key pair. If this property is not specified, then a new key pair will be created.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html#cfn-ec2-keypair-publickeymaterial
	//
	PublicKeyMaterial *string `field:"optional" json:"publicKeyMaterial" yaml:"publicKeyMaterial"`
	// The tags to apply to the key pair.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html#cfn-ec2-keypair-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnKeyPair`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnKeyPairProps := &CfnKeyPairProps{
	KeyName: jsii.String("keyName"),

	// the properties below are optional
	KeyFormat: jsii.String("keyFormat"),
	KeyType: jsii.String("keyType"),
	PublicKeyMaterial: jsii.String("publicKeyMaterial"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html

type CfnLaunchTemplate

type CfnLaunchTemplate interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ILaunchTemplateRef
	// The default version of the launch template, such as 2.
	//
	// The default version of a launch template cannot be specified in AWS CloudFormation . The default version can be set in the Amazon EC2 console or by using the `modify-launch-template` AWS CLI command.
	AttrDefaultVersionNumber() *string
	// The latest version of the launch template, such as `5` .
	AttrLatestVersionNumber() *string
	// The ID of the launch template.
	AttrLaunchTemplateId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The information for the launch template.
	LaunchTemplateData() interface{}
	SetLaunchTemplateData(val interface{})
	// A name for the launch template.
	LaunchTemplateName() *string
	SetLaunchTemplateName(val *string)
	// A reference to a LaunchTemplate resource.
	LaunchTemplateRef() *interfacesawsec2.LaunchTemplateReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The tags to apply to the launch template on creation.
	TagSpecifications() interface{}
	SetTagSpecifications(val interface{})
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// A description for the first version of the launch template.
	VersionDescription() *string
	SetVersionDescription(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies the properties for creating a launch template.

The minimum required properties for specifying a launch template are as follows:

- You must specify at least one property for the launch template data. - You can optionally specify a name for the launch template. If you do not specify a name, CloudFormation creates a name for you.

A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the `ImageId` property, which has no default value. If you do not specify an AMI ID for the launch template `ImageId` property, you must specify an AMI ID for the instance `ImageId` property.

For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide* .

Example:

var cluster Cluster

userData := `MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
echo "Running custom user data script"

--==MYBOUNDARY==--\\
`
lt := ec2.NewCfnLaunchTemplate(this, jsii.String("LaunchTemplate"), &CfnLaunchTemplateProps{
	LaunchTemplateData: &LaunchTemplateDataProperty{
		InstanceType: jsii.String("t3.small"),
		UserData: awscdk.Fn_Base64(userData),
	},
})

cluster.AddNodegroupCapacity(jsii.String("extra-ng"), &NodegroupOptions{
	LaunchTemplateSpec: &LaunchTemplateSpec{
		Id: lt.ref,
		Version: lt.attrLatestVersionNumber,
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html

func NewCfnLaunchTemplate

func NewCfnLaunchTemplate(scope constructs.Construct, id *string, props *CfnLaunchTemplateProps) CfnLaunchTemplate

Create a new `AWS::EC2::LaunchTemplate`.

type CfnLaunchTemplateProps

type CfnLaunchTemplateProps struct {
	// The information for the launch template.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-launchtemplatedata
	//
	LaunchTemplateData interface{} `field:"required" json:"launchTemplateData" yaml:"launchTemplateData"`
	// A name for the launch template.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-launchtemplatename
	//
	LaunchTemplateName *string `field:"optional" json:"launchTemplateName" yaml:"launchTemplateName"`
	// The tags to apply to the launch template on creation.
	//
	// To tag the launch template, the resource type must be `launch-template` .
	//
	// To specify the tags for resources that are created during instance launch, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications
	//
	TagSpecifications interface{} `field:"optional" json:"tagSpecifications" yaml:"tagSpecifications"`
	// A description for the first version of the launch template.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-versiondescription
	//
	VersionDescription *string `field:"optional" json:"versionDescription" yaml:"versionDescription"`
}

Properties for defining a `CfnLaunchTemplate`.

Example:

var cluster Cluster

userData := `MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
echo "Running custom user data script"

--==MYBOUNDARY==--\\
`
lt := ec2.NewCfnLaunchTemplate(this, jsii.String("LaunchTemplate"), &CfnLaunchTemplateProps{
	LaunchTemplateData: &LaunchTemplateDataProperty{
		InstanceType: jsii.String("t3.small"),
		UserData: awscdk.Fn_Base64(userData),
	},
})

cluster.AddNodegroupCapacity(jsii.String("extra-ng"), &NodegroupOptions{
	LaunchTemplateSpec: &LaunchTemplateSpec{
		Id: lt.ref,
		Version: lt.attrLatestVersionNumber,
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html

type CfnLaunchTemplate_AcceleratorCountProperty

type CfnLaunchTemplate_AcceleratorCountProperty struct {
	// The maximum number of accelerators.
	//
	// To specify no maximum limit, omit this parameter. To exclude accelerator-enabled instance types, set `Max` to `0` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-acceleratorcount.html#cfn-ec2-launchtemplate-acceleratorcount-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum number of accelerators.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-acceleratorcount.html#cfn-ec2-launchtemplate-acceleratorcount-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

acceleratorCountProperty := &AcceleratorCountProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-acceleratorcount.html

type CfnLaunchTemplate_AcceleratorTotalMemoryMiBProperty

type CfnLaunchTemplate_AcceleratorTotalMemoryMiBProperty struct {
	// The maximum amount of accelerator memory, in MiB.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-acceleratortotalmemorymib.html#cfn-ec2-launchtemplate-acceleratortotalmemorymib-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of accelerator memory, in MiB.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-acceleratortotalmemorymib.html#cfn-ec2-launchtemplate-acceleratortotalmemorymib-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of total accelerator memory, in MiB.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

acceleratorTotalMemoryMiBProperty := &AcceleratorTotalMemoryMiBProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-acceleratortotalmemorymib.html

type CfnLaunchTemplate_BaselineEbsBandwidthMbpsProperty

type CfnLaunchTemplate_BaselineEbsBandwidthMbpsProperty struct {
	// The maximum baseline bandwidth, in Mbps.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-baselineebsbandwidthmbps.html#cfn-ec2-launchtemplate-baselineebsbandwidthmbps-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum baseline bandwidth, in Mbps.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-baselineebsbandwidthmbps.html#cfn-ec2-launchtemplate-baselineebsbandwidthmbps-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps.

For more information, see [Amazon EBS–optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

baselineEbsBandwidthMbpsProperty := &BaselineEbsBandwidthMbpsProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-baselineebsbandwidthmbps.html

type CfnLaunchTemplate_BaselinePerformanceFactorsProperty added in v2.172.0

type CfnLaunchTemplate_BaselinePerformanceFactorsProperty struct {
	// The CPU performance to consider, using an instance family as the baseline reference.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-baselineperformancefactors.html#cfn-ec2-launchtemplate-baselineperformancefactors-cpu
	//
	Cpu interface{} `field:"optional" json:"cpu" yaml:"cpu"`
}

The baseline performance to consider, using an instance family as a baseline reference.

The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application.

Currently, this parameter only supports CPU performance as a baseline performance factor. For example, specifying `c6i` would use the CPU performance of the `c6i` family as the baseline reference.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

baselinePerformanceFactorsProperty := &BaselinePerformanceFactorsProperty{
	Cpu: &CpuProperty{
		References: []interface{}{
			&ReferenceProperty{
				InstanceFamily: jsii.String("instanceFamily"),
			},
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-baselineperformancefactors.html

type CfnLaunchTemplate_BlockDeviceMappingProperty

type CfnLaunchTemplate_BlockDeviceMappingProperty struct {
	// The device name (for example, /dev/sdh or xvdh).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-devicename
	//
	DeviceName *string `field:"optional" json:"deviceName" yaml:"deviceName"`
	// Parameters used to automatically set up EBS volumes when the instance is launched.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-ebs
	//
	Ebs interface{} `field:"optional" json:"ebs" yaml:"ebs"`
	// To omit the device from the block device mapping, specify an empty string.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-nodevice
	//
	NoDevice *string `field:"optional" json:"noDevice" yaml:"noDevice"`
	// The virtual device name (ephemeralN).
	//
	// Instance store volumes are numbered starting from 0. An instance type with 2 available instance store volumes can specify mappings for ephemeral0 and ephemeral1. The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-virtualname
	//
	VirtualName *string `field:"optional" json:"virtualName" yaml:"virtualName"`
}

Specifies a block device mapping for a launch template.

You must specify `DeviceName` plus exactly one of the following properties: `Ebs` , `NoDevice` , or `VirtualName` .

`BlockDeviceMapping` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

blockDeviceMappingProperty := &BlockDeviceMappingProperty{
	DeviceName: jsii.String("deviceName"),
	Ebs: &EbsProperty{
		DeleteOnTermination: jsii.Boolean(false),
		EbsCardIndex: jsii.Number(123),
		Encrypted: jsii.Boolean(false),
		Iops: jsii.Number(123),
		KmsKeyId: jsii.String("kmsKeyId"),
		SnapshotId: jsii.String("snapshotId"),
		Throughput: jsii.Number(123),
		VolumeInitializationRate: jsii.Number(123),
		VolumeSize: jsii.Number(123),
		VolumeType: jsii.String("volumeType"),
	},
	NoDevice: jsii.String("noDevice"),
	VirtualName: jsii.String("virtualName"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html

type CfnLaunchTemplate_CapacityReservationSpecificationProperty

type CfnLaunchTemplate_CapacityReservationSpecificationProperty struct {
	// Indicates the instance's Capacity Reservation preferences. Possible preferences include:.
	//
	// - `capacity-reservations-only` - The instance will only run in a Capacity Reservation or Capacity Reservation group. If capacity isn't available, the instance will fail to launch.
	// - `open` - The instance can run in any `open` Capacity Reservation that has matching attributes (instance type, platform, Availability Zone, tenancy).
	// - `none` - The instance avoids running in a Capacity Reservation even if one is available. The instance runs in On-Demand capacity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationspecification.html#cfn-ec2-launchtemplate-capacityreservationspecification-capacityreservationpreference
	//
	CapacityReservationPreference *string `field:"optional" json:"capacityReservationPreference" yaml:"capacityReservationPreference"`
	// Information about the target Capacity Reservation or Capacity Reservation group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationspecification.html#cfn-ec2-launchtemplate-capacityreservationspecification-capacityreservationtarget
	//
	CapacityReservationTarget interface{} `field:"optional" json:"capacityReservationTarget" yaml:"capacityReservationTarget"`
}

Specifies an instance's Capacity Reservation targeting option. You can specify only one option at a time.

`CapacityReservationSpecification` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

capacityReservationSpecificationProperty := &CapacityReservationSpecificationProperty{
	CapacityReservationPreference: jsii.String("capacityReservationPreference"),
	CapacityReservationTarget: &CapacityReservationTargetProperty{
		CapacityReservationId: jsii.String("capacityReservationId"),
		CapacityReservationResourceGroupArn: jsii.String("capacityReservationResourceGroupArn"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationspecification.html

type CfnLaunchTemplate_CapacityReservationTargetProperty

type CfnLaunchTemplate_CapacityReservationTargetProperty struct {
	// The ID of the Capacity Reservation in which to run the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html#cfn-ec2-launchtemplate-capacityreservationtarget-capacityreservationid
	//
	CapacityReservationId *string `field:"optional" json:"capacityReservationId" yaml:"capacityReservationId"`
	// The ARN of the Capacity Reservation resource group in which to run the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html#cfn-ec2-launchtemplate-capacityreservationtarget-capacityreservationresourcegrouparn
	//
	CapacityReservationResourceGroupArn *string `field:"optional" json:"capacityReservationResourceGroupArn" yaml:"capacityReservationResourceGroupArn"`
}

Specifies a target Capacity Reservation.

`CapacityReservationTarget` is a property of the [Amazon EC2 LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) property type.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

capacityReservationTargetProperty := &CapacityReservationTargetProperty{
	CapacityReservationId: jsii.String("capacityReservationId"),
	CapacityReservationResourceGroupArn: jsii.String("capacityReservationResourceGroupArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html

type CfnLaunchTemplate_ConnectionTrackingSpecificationProperty added in v2.112.0

type CfnLaunchTemplate_ConnectionTrackingSpecificationProperty struct {
	// Timeout (in seconds) for idle TCP connections in an established state.
	//
	// Min: 60 seconds. Max: 432000 seconds (5 days). Default: 432000 seconds. Recommended: Less than 432000 seconds.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-connectiontrackingspecification.html#cfn-ec2-launchtemplate-connectiontrackingspecification-tcpestablishedtimeout
	//
	TcpEstablishedTimeout *float64 `field:"optional" json:"tcpEstablishedTimeout" yaml:"tcpEstablishedTimeout"`
	// Timeout (in seconds) for idle UDP flows classified as streams which have seen more than one request-response transaction.
	//
	// Min: 60 seconds. Max: 180 seconds (3 minutes). Default: 180 seconds.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-connectiontrackingspecification.html#cfn-ec2-launchtemplate-connectiontrackingspecification-udpstreamtimeout
	//
	UdpStreamTimeout *float64 `field:"optional" json:"udpStreamTimeout" yaml:"udpStreamTimeout"`
	// Timeout (in seconds) for idle UDP flows that have seen traffic only in a single direction or a single request-response transaction.
	//
	// Min: 30 seconds. Max: 60 seconds. Default: 30 seconds.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-connectiontrackingspecification.html#cfn-ec2-launchtemplate-connectiontrackingspecification-udptimeout
	//
	UdpTimeout *float64 `field:"optional" json:"udpTimeout" yaml:"udpTimeout"`
}

A security group connection tracking specification that enables you to set the idle timeout for connection tracking on an Elastic network interface.

For more information, see [Connection tracking timeouts](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-timeouts) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

connectionTrackingSpecificationProperty := &ConnectionTrackingSpecificationProperty{
	TcpEstablishedTimeout: jsii.Number(123),
	UdpStreamTimeout: jsii.Number(123),
	UdpTimeout: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-connectiontrackingspecification.html

type CfnLaunchTemplate_CpuOptionsProperty

type CfnLaunchTemplate_CpuOptionsProperty struct {
	// Indicates whether to enable the instance for AMD SEV-SNP.
	//
	// AMD SEV-SNP is supported with M6a, R6a, and C6a instance types only. For more information, see [AMD SEV-SNP for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-cpuoptions.html#cfn-ec2-launchtemplate-cpuoptions-amdsevsnp
	//
	AmdSevSnp *string `field:"optional" json:"amdSevSnp" yaml:"amdSevSnp"`
	// The number of CPU cores for the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-cpuoptions.html#cfn-ec2-launchtemplate-cpuoptions-corecount
	//
	CoreCount *float64 `field:"optional" json:"coreCount" yaml:"coreCount"`
	// Indicates whether the instance is enabled for nested virtualization.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-cpuoptions.html#cfn-ec2-launchtemplate-cpuoptions-nestedvirtualization
	//
	NestedVirtualization *string `field:"optional" json:"nestedVirtualization" yaml:"nestedVirtualization"`
	// The number of threads per CPU core.
	//
	// To disable multithreading for the instance, specify a value of `1` . Otherwise, specify the default value of `2` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-cpuoptions.html#cfn-ec2-launchtemplate-cpuoptions-threadspercore
	//
	ThreadsPerCore *float64 `field:"optional" json:"threadsPerCore" yaml:"threadsPerCore"`
}

Specifies the CPU options for an instance.

For more information, see [Optimize CPU options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *Amazon Elastic Compute Cloud User Guide* .

`CpuOptions` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cpuOptionsProperty := &CpuOptionsProperty{
	AmdSevSnp: jsii.String("amdSevSnp"),
	CoreCount: jsii.Number(123),
	NestedVirtualization: jsii.String("nestedVirtualization"),
	ThreadsPerCore: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-cpuoptions.html

type CfnLaunchTemplate_CpuProperty added in v2.172.0

type CfnLaunchTemplate_CpuProperty struct {
	// The instance family to use as the baseline reference for CPU performance.
	//
	// All instance types that match your specified attributes are compared against the CPU performance of the referenced instance family, regardless of CPU manufacturer or architecture differences.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-cpu.html#cfn-ec2-launchtemplate-cpu-references
	//
	References interface{} `field:"optional" json:"references" yaml:"references"`
}

Specifies the CPU performance to consider when using an instance family as the baseline reference.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cpuProperty := &CpuProperty{
	References: []interface{}{
		&ReferenceProperty{
			InstanceFamily: jsii.String("instanceFamily"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-cpu.html

type CfnLaunchTemplate_CreditSpecificationProperty

type CfnLaunchTemplate_CreditSpecificationProperty struct {
	// The credit option for CPU usage of a T instance.
	//
	// Valid values: `standard` | `unlimited`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-creditspecification.html#cfn-ec2-launchtemplate-creditspecification-cpucredits
	//
	CpuCredits *string `field:"optional" json:"cpuCredits" yaml:"cpuCredits"`
}

Specifies the credit option for CPU usage of a T2, T3, or T3a instance.

`CreditSpecification` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

creditSpecificationProperty := &CreditSpecificationProperty{
	CpuCredits: jsii.String("cpuCredits"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-creditspecification.html

type CfnLaunchTemplate_EbsProperty

type CfnLaunchTemplate_EbsProperty struct {
	// Indicates whether the EBS volume is deleted on instance termination.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-deleteontermination
	//
	DeleteOnTermination interface{} `field:"optional" json:"deleteOnTermination" yaml:"deleteOnTermination"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-ebscardindex
	//
	EbsCardIndex *float64 `field:"optional" json:"ebsCardIndex" yaml:"ebsCardIndex"`
	// Indicates whether the EBS volume is encrypted.
	//
	// Encrypted volumes can only be attached to instances that support Amazon EBS encryption. If you are creating a volume from a snapshot, you can't specify an encryption value.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-encrypted
	//
	Encrypted interface{} `field:"optional" json:"encrypted" yaml:"encrypted"`
	// The number of I/O operations per second (IOPS).
	//
	// For `gp3` , `io1` , and `io2` volumes, this represents the number of IOPS that are provisioned for the volume. For `gp2` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.
	//
	// The following are the supported values for each volume type:
	//
	// - `gp3` : 3,000 - 80,000 IOPS
	// - `io1` : 100 - 64,000 IOPS
	// - `io2` : 100 - 256,000 IOPS
	//
	// For `io2` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html) . On other instances, you can achieve performance up to 32,000 IOPS.
	//
	// This parameter is supported for `io1` , `io2` , and `gp3` volumes only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-iops
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// Identifier (key ID, key alias, key ARN, or alias ARN) of the customer managed KMS key to use for EBS encryption.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-kmskeyid
	//
	KmsKeyId *string `field:"optional" json:"kmsKeyId" yaml:"kmsKeyId"`
	// The ID of the snapshot.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-snapshotid
	//
	SnapshotId *string `field:"optional" json:"snapshotId" yaml:"snapshotId"`
	// The throughput to provision for a `gp3` volume, with a maximum of 2,000 MiB/s.
	//
	// Valid Range: Minimum value of 125. Maximum value of 2,000.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-throughput
	//
	Throughput *float64 `field:"optional" json:"throughput" yaml:"throughput"`
	// Specifies the Amazon EBS Provisioned Rate for Volume Initialization (volume initialization rate), in MiB/s, at which to download the snapshot blocks from Amazon S3 to the volume.
	//
	// This is also known as *volume initialization* . Specifying a volume initialization rate ensures that the volume is initialized at a predictable and consistent rate after creation.
	//
	// This parameter is supported only for volumes created from snapshots. Omit this parameter if:
	//
	// - You want to create the volume using fast snapshot restore. You must specify a snapshot that is enabled for fast snapshot restore. In this case, the volume is fully initialized at creation.
	//
	// > If you specify a snapshot that is enabled for fast snapshot restore and a volume initialization rate, the volume will be initialized at the specified rate instead of fast snapshot restore.
	// - You want to create a volume that is initialized at the default rate.
	//
	// For more information, see [Initialize Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/initalize-volume.html) in the *Amazon EC2 User Guide* .
	//
	// Valid range: 100 - 300 MiB/s.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-volumeinitializationrate
	//
	VolumeInitializationRate *float64 `field:"optional" json:"volumeInitializationRate" yaml:"volumeInitializationRate"`
	// The size of the volume, in GiBs.
	//
	// You must specify either a snapshot ID or a volume size. The following are the supported volumes sizes for each volume type:
	//
	// - `gp2` : 1 - 16,384 GiB
	// - `gp3` : 1 - 65,536 GiB
	// - `io1` : 4 - 16,384 GiB
	// - `io2` : 4 - 65,536 GiB
	// - `st1` and `sc1` : 125 - 16,384 GiB
	// - `standard` : 1 - 1024 GiB.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-volumesize
	//
	VolumeSize *float64 `field:"optional" json:"volumeSize" yaml:"volumeSize"`
	// The volume type.
	//
	// For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) in the *Amazon EBS User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html#cfn-ec2-launchtemplate-ebs-volumetype
	//
	VolumeType *string `field:"optional" json:"volumeType" yaml:"volumeType"`
}

Parameters for a block device for an EBS volume in an Amazon EC2 launch template.

`Ebs` is a property of [AWS::EC2::LaunchTemplate BlockDeviceMapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ebsProperty := &EbsProperty{
	DeleteOnTermination: jsii.Boolean(false),
	EbsCardIndex: jsii.Number(123),
	Encrypted: jsii.Boolean(false),
	Iops: jsii.Number(123),
	KmsKeyId: jsii.String("kmsKeyId"),
	SnapshotId: jsii.String("snapshotId"),
	Throughput: jsii.Number(123),
	VolumeInitializationRate: jsii.Number(123),
	VolumeSize: jsii.Number(123),
	VolumeType: jsii.String("volumeType"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ebs.html

type CfnLaunchTemplate_ElasticGpuSpecificationProperty

type CfnLaunchTemplate_ElasticGpuSpecificationProperty struct {
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-elasticgpuspecification.html#cfn-ec2-launchtemplate-elasticgpuspecification-type
	//
	Type *string `field:"optional" json:"type" yaml:"type"`
}

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

elasticGpuSpecificationProperty := &ElasticGpuSpecificationProperty{
	Type: jsii.String("type"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-elasticgpuspecification.html

type CfnLaunchTemplate_EnaSrdSpecificationProperty added in v2.109.0

type CfnLaunchTemplate_EnaSrdSpecificationProperty struct {
	// Indicates whether ENA Express is enabled for the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-enasrdspecification.html#cfn-ec2-launchtemplate-enasrdspecification-enasrdenabled
	//
	EnaSrdEnabled interface{} `field:"optional" json:"enaSrdEnabled" yaml:"enaSrdEnabled"`
	// Configures ENA Express for UDP network traffic.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-enasrdspecification.html#cfn-ec2-launchtemplate-enasrdspecification-enasrdudpspecification
	//
	EnaSrdUdpSpecification interface{} `field:"optional" json:"enaSrdUdpSpecification" yaml:"enaSrdUdpSpecification"`
}

ENA Express uses AWS Scalable Reliable Datagram (SRD) technology to increase the maximum bandwidth used per stream and minimize tail latency of network traffic between EC2 instances.

With ENA Express, you can communicate between two EC2 instances in the same subnet within the same account, or in different accounts. Both sending and receiving instances must have ENA Express enabled.

To improve the reliability of network packet delivery, ENA Express reorders network packets on the receiving end by default. However, some UDP-based applications are designed to handle network packets that are out of order to reduce the overhead for packet delivery at the network layer. When ENA Express is enabled, you can specify whether UDP network traffic uses it.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

enaSrdSpecificationProperty := &EnaSrdSpecificationProperty{
	EnaSrdEnabled: jsii.Boolean(false),
	EnaSrdUdpSpecification: &EnaSrdUdpSpecificationProperty{
		EnaSrdUdpEnabled: jsii.Boolean(false),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-enasrdspecification.html

type CfnLaunchTemplate_EnaSrdUdpSpecificationProperty added in v2.109.0

type CfnLaunchTemplate_EnaSrdUdpSpecificationProperty struct {
	// Indicates whether UDP traffic to and from the instance uses ENA Express.
	//
	// To specify this setting, you must first enable ENA Express.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-enasrdudpspecification.html#cfn-ec2-launchtemplate-enasrdudpspecification-enasrdudpenabled
	//
	EnaSrdUdpEnabled interface{} `field:"optional" json:"enaSrdUdpEnabled" yaml:"enaSrdUdpEnabled"`
}

ENA Express is compatible with both TCP and UDP transport protocols.

When it's enabled, TCP traffic automatically uses it. However, some UDP-based applications are designed to handle network packets that are out of order, without a need for retransmission, such as live video broadcasting or other near-real-time applications. For UDP traffic, you can specify whether to use ENA Express, based on your application environment needs.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

enaSrdUdpSpecificationProperty := &EnaSrdUdpSpecificationProperty{
	EnaSrdUdpEnabled: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-enasrdudpspecification.html

type CfnLaunchTemplate_EnclaveOptionsProperty

type CfnLaunchTemplate_EnclaveOptionsProperty struct {
	// If this parameter is set to `true` , the instance is enabled for AWS Nitro Enclaves;
	//
	// otherwise, it is not enabled for AWS Nitro Enclaves.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-enclaveoptions.html#cfn-ec2-launchtemplate-enclaveoptions-enabled
	//
	Enabled interface{} `field:"optional" json:"enabled" yaml:"enabled"`
}

Indicates whether the instance is enabled for AWS Nitro Enclaves.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

enclaveOptionsProperty := &EnclaveOptionsProperty{
	Enabled: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-enclaveoptions.html

type CfnLaunchTemplate_HibernationOptionsProperty

type CfnLaunchTemplate_HibernationOptionsProperty struct {
	// If you set this parameter to `true` , the instance is enabled for hibernation.
	//
	// Default: `false`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-hibernationoptions.html#cfn-ec2-launchtemplate-hibernationoptions-configured
	//
	Configured interface{} `field:"optional" json:"configured" yaml:"configured"`
}

Specifies whether your instance is configured for hibernation.

This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites) . For more information, see [Hibernate Your Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide* .

`HibernationOptions` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

hibernationOptionsProperty := &HibernationOptionsProperty{
	Configured: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-hibernationoptions.html

type CfnLaunchTemplate_IamInstanceProfileProperty

type CfnLaunchTemplate_IamInstanceProfileProperty struct {
	// The Amazon Resource Name (ARN) of the instance profile.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-iaminstanceprofile.html#cfn-ec2-launchtemplate-iaminstanceprofile-arn
	//
	Arn *string `field:"optional" json:"arn" yaml:"arn"`
	// The name of the instance profile.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-iaminstanceprofile.html#cfn-ec2-launchtemplate-iaminstanceprofile-name
	//
	Name *string `field:"optional" json:"name" yaml:"name"`
}

Specifies an IAM instance profile, which is a container for an IAM role for your instance.

You can use an IAM role to distribute your AWS credentials to your instances.

If you are creating the launch template for use with an Amazon EC2 Auto Scaling group, you can specify either the name or the ARN of the instance profile, but not both.

`IamInstanceProfile` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

iamInstanceProfileProperty := &IamInstanceProfileProperty{
	Arn: jsii.String("arn"),
	Name: jsii.String("name"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-iaminstanceprofile.html

type CfnLaunchTemplate_InstanceMarketOptionsProperty

type CfnLaunchTemplate_InstanceMarketOptionsProperty struct {
	// The market type.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancemarketoptions.html#cfn-ec2-launchtemplate-instancemarketoptions-markettype
	//
	MarketType *string `field:"optional" json:"marketType" yaml:"marketType"`
	// The options for Spot Instances.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancemarketoptions.html#cfn-ec2-launchtemplate-instancemarketoptions-spotoptions
	//
	SpotOptions interface{} `field:"optional" json:"spotOptions" yaml:"spotOptions"`
}

Specifies the market (purchasing) option for an instance.

`InstanceMarketOptions` is a property of the [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

instanceMarketOptionsProperty := &InstanceMarketOptionsProperty{
	MarketType: jsii.String("marketType"),
	SpotOptions: &SpotOptionsProperty{
		BlockDurationMinutes: jsii.Number(123),
		InstanceInterruptionBehavior: jsii.String("instanceInterruptionBehavior"),
		MaxPrice: jsii.String("maxPrice"),
		SpotInstanceType: jsii.String("spotInstanceType"),
		ValidUntil: jsii.String("validUntil"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancemarketoptions.html

type CfnLaunchTemplate_InstanceRequirementsProperty added in v2.9.0

type CfnLaunchTemplate_InstanceRequirementsProperty struct {
	// The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.
	//
	// To exclude accelerator-enabled instance types, set `Max` to `0` .
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-acceleratorcount
	//
	AcceleratorCount interface{} `field:"optional" json:"acceleratorCount" yaml:"acceleratorCount"`
	// Indicates whether instance types must have accelerators by specific manufacturers.
	//
	// - For instance types with AWS devices, specify `amazon-web-services` .
	// - For instance types with AMD devices, specify `amd` .
	// - For instance types with Habana devices, specify `habana` .
	// - For instance types with NVIDIA devices, specify `nvidia` .
	// - For instance types with Xilinx devices, specify `xilinx` .
	//
	// Default: Any manufacturer.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-acceleratormanufacturers
	//
	AcceleratorManufacturers *[]*string `field:"optional" json:"acceleratorManufacturers" yaml:"acceleratorManufacturers"`
	// The accelerators that must be on the instance type.
	//
	// - For instance types with NVIDIA A10G GPUs, specify `a10g` .
	// - For instance types with NVIDIA A100 GPUs, specify `a100` .
	// - For instance types with NVIDIA H100 GPUs, specify `h100` .
	// - For instance types with AWS Inferentia chips, specify `inferentia` .
	// - For instance types with AWS Inferentia2 chips, specify `inferentia2` .
	// - For instance types with Habana Gaudi HL-205 GPUs, specify `gaudi-hl-205` .
	// - For instance types with NVIDIA GRID K520 GPUs, specify `k520` .
	// - For instance types with NVIDIA K80 GPUs, specify `k80` .
	// - For instance types with NVIDIA L4 GPUs, specify `l4` .
	// - For instance types with NVIDIA L40S GPUs, specify `l40s` .
	// - For instance types with NVIDIA M60 GPUs, specify `m60` .
	// - For instance types with AMD Radeon Pro V520 GPUs, specify `radeon-pro-v520` .
	// - For instance types with AWS Trainium chips, specify `trainium` .
	// - For instance types with AWS Trainium2 chips, specify `trainium2` .
	// - For instance types with NVIDIA T4 GPUs, specify `t4` .
	// - For instance types with NVIDIA T4G GPUs, specify `t4g` .
	// - For instance types with Xilinx U30 cards, specify `u30` .
	// - For instance types with Xilinx VU9P FPGAs, specify `vu9p` .
	// - For instance types with NVIDIA V100 GPUs, specify `v100` .
	//
	// Default: Any accelerator.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-acceleratornames
	//
	AcceleratorNames *[]*string `field:"optional" json:"acceleratorNames" yaml:"acceleratorNames"`
	// The minimum and maximum amount of total accelerator memory, in MiB.
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-acceleratortotalmemorymib
	//
	AcceleratorTotalMemoryMiB interface{} `field:"optional" json:"acceleratorTotalMemoryMiB" yaml:"acceleratorTotalMemoryMiB"`
	// The accelerator types that must be on the instance type.
	//
	// - For instance types with FPGA accelerators, specify `fpga` .
	// - For instance types with GPU accelerators, specify `gpu` .
	// - For instance types with Inference accelerators, specify `inference` .
	// - For instance types with Media accelerators, specify `media` .
	//
	// Default: Any accelerator type.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-acceleratortypes
	//
	AcceleratorTypes *[]*string `field:"optional" json:"acceleratorTypes" yaml:"acceleratorTypes"`
	// The instance types to apply your specified attributes against.
	//
	// All other instance types are ignored, even if they match your specified attributes.
	//
	// You can use strings with one or more wild cards, represented by an asterisk ( `*` ), to allow an instance type, size, or generation. The following are examples: `m5.8xlarge` , `c5*.*` , `m5a.*` , `r*` , `*3*` .
	//
	// For example, if you specify `c5*` ,Amazon EC2 will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify `m5a.*` , Amazon EC2 will allow all the M5a instance types, but not the M5n instance types.
	//
	// > If you specify `AllowedInstanceTypes` , you can't specify `ExcludedInstanceTypes` .
	//
	// Default: All instance types.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-allowedinstancetypes
	//
	AllowedInstanceTypes *[]*string `field:"optional" json:"allowedInstanceTypes" yaml:"allowedInstanceTypes"`
	// Indicates whether bare metal instance types must be included, excluded, or required.
	//
	// - To include bare metal instance types, specify `included` .
	// - To require only bare metal instance types, specify `required` .
	// - To exclude bare metal instance types, specify `excluded` .
	//
	// Default: `excluded`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-baremetal
	//
	BareMetal *string `field:"optional" json:"bareMetal" yaml:"bareMetal"`
	// The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps.
	//
	// For more information, see [Amazon EBS–optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide* .
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-baselineebsbandwidthmbps
	//
	BaselineEbsBandwidthMbps interface{} `field:"optional" json:"baselineEbsBandwidthMbps" yaml:"baselineEbsBandwidthMbps"`
	// The baseline performance to consider, using an instance family as a baseline reference.
	//
	// The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application. Currently, this parameter only supports CPU performance as a baseline performance factor. For more information, see [Performance protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html#ec2fleet-abis-performance-protection) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-baselineperformancefactors
	//
	BaselinePerformanceFactors interface{} `field:"optional" json:"baselinePerformanceFactors" yaml:"baselinePerformanceFactors"`
	// Indicates whether burstable performance T instance types are included, excluded, or required.
	//
	// For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) .
	//
	// - To include burstable performance instance types, specify `included` .
	// - To require only burstable performance instance types, specify `required` .
	// - To exclude burstable performance instance types, specify `excluded` .
	//
	// Default: `excluded`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-burstableperformance
	//
	BurstablePerformance *string `field:"optional" json:"burstablePerformance" yaml:"burstablePerformance"`
	// The CPU manufacturers to include.
	//
	// - For instance types with Intel CPUs, specify `intel` .
	// - For instance types with AMD CPUs, specify `amd` .
	// - For instance types with AWS CPUs, specify `amazon-web-services` .
	// - For instance types with Apple CPUs, specify `apple` .
	//
	// > Don't confuse the CPU manufacturer with the CPU architecture. Instances will be launched with a compatible CPU architecture based on the Amazon Machine Image (AMI) that you specify in your launch template.
	//
	// Default: Any manufacturer.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-cpumanufacturers
	//
	CpuManufacturers *[]*string `field:"optional" json:"cpuManufacturers" yaml:"cpuManufacturers"`
	// The instance types to exclude.
	//
	// You can use strings with one or more wild cards, represented by an asterisk ( `*` ), to exclude an instance type, size, or generation. The following are examples: `m5.8xlarge` , `c5*.*` , `m5a.*` , `r*` , `*3*` .
	//
	// For example, if you specify `c5*` ,Amazon EC2 will exclude the entire C5 instance family, which includes all C5a and C5n instance types. If you specify `m5a.*` , Amazon EC2 will exclude all the M5a instance types, but not the M5n instance types.
	//
	// > If you specify `ExcludedInstanceTypes` , you can't specify `AllowedInstanceTypes` .
	//
	// Default: No excluded instance types.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-excludedinstancetypes
	//
	ExcludedInstanceTypes *[]*string `field:"optional" json:"excludedInstanceTypes" yaml:"excludedInstanceTypes"`
	// Indicates whether current or previous generation instance types are included.
	//
	// The current generation instance types are recommended for use. Current generation instance types are typically the latest two to three generations in each instance family. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide* .
	//
	// For current generation instance types, specify `current` .
	//
	// For previous generation instance types, specify `previous` .
	//
	// Default: Current and previous generation instance types.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-instancegenerations
	//
	InstanceGenerations *[]*string `field:"optional" json:"instanceGenerations" yaml:"instanceGenerations"`
	// Indicates whether instance types with instance store volumes are included, excluded, or required.
	//
	// For more information, [Amazon EC2 instance store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) in the *Amazon EC2 User Guide* .
	//
	// - To include instance types with instance store volumes, specify `included` .
	// - To require only instance types with instance store volumes, specify `required` .
	// - To exclude instance types with instance store volumes, specify `excluded` .
	//
	// Default: `included`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-localstorage
	//
	LocalStorage *string `field:"optional" json:"localStorage" yaml:"localStorage"`
	// The type of local storage that is required.
	//
	// - For instance types with hard disk drive (HDD) storage, specify `hdd` .
	// - For instance types with solid state drive (SSD) storage, specify `ssd` .
	//
	// Default: `hdd` and `ssd`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-localstoragetypes
	//
	LocalStorageTypes *[]*string `field:"optional" json:"localStorageTypes" yaml:"localStorageTypes"`
	// [Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price.
	//
	// The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.
	//
	// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
	//
	// If you set `TargetCapacityUnitType` to `vcpu` or `memory-mib` , the price protection threshold is based on the per vCPU or per memory price instead of the per instance price.
	//
	// > Only one of `SpotMaxPricePercentageOverLowestPrice` or `MaxSpotPriceAsPercentageOfOptimalOnDemandPrice` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as `999999` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-maxspotpriceaspercentageofoptimalondemandprice
	//
	MaxSpotPriceAsPercentageOfOptimalOnDemandPrice *float64 `field:"optional" json:"maxSpotPriceAsPercentageOfOptimalOnDemandPrice" yaml:"maxSpotPriceAsPercentageOfOptimalOnDemandPrice"`
	// The minimum and maximum amount of memory per vCPU, in GiB.
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-memorygibpervcpu
	//
	MemoryGiBPerVCpu interface{} `field:"optional" json:"memoryGiBPerVCpu" yaml:"memoryGiBPerVCpu"`
	// The minimum and maximum amount of memory, in MiB.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-memorymib
	//
	MemoryMiB interface{} `field:"optional" json:"memoryMiB" yaml:"memoryMiB"`
	// The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-networkbandwidthgbps
	//
	NetworkBandwidthGbps interface{} `field:"optional" json:"networkBandwidthGbps" yaml:"networkBandwidthGbps"`
	// The minimum and maximum number of network interfaces.
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-networkinterfacecount
	//
	NetworkInterfaceCount interface{} `field:"optional" json:"networkInterfaceCount" yaml:"networkInterfaceCount"`
	// [Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price.
	//
	// The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.
	//
	// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
	//
	// To turn off price protection, specify a high value, such as `999999` .
	//
	// This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html) .
	//
	// > If you set `TargetCapacityUnitType` to `vcpu` or `memory-mib` , the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.
	//
	// Default: `20`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-ondemandmaxpricepercentageoverlowestprice
	//
	OnDemandMaxPricePercentageOverLowestPrice *float64 `field:"optional" json:"onDemandMaxPricePercentageOverLowestPrice" yaml:"onDemandMaxPricePercentageOverLowestPrice"`
	// Indicates whether instance types must support hibernation for On-Demand Instances.
	//
	// This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) .
	//
	// Default: `false`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-requirehibernatesupport
	//
	RequireHibernateSupport interface{} `field:"optional" json:"requireHibernateSupport" yaml:"requireHibernateSupport"`
	// [Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price.
	//
	// The identified Spot price is the Spot price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified Spot price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose Spot price exceeds your specified threshold.
	//
	// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
	//
	// If you set `TargetCapacityUnitType` to `vcpu` or `memory-mib` , the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.
	//
	// This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html) .
	//
	// > Only one of `SpotMaxPricePercentageOverLowestPrice` or `MaxSpotPriceAsPercentageOfOptimalOnDemandPrice` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as `999999` .
	//
	// Default: `100`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-spotmaxpricepercentageoverlowestprice
	//
	SpotMaxPricePercentageOverLowestPrice *float64 `field:"optional" json:"spotMaxPricePercentageOverLowestPrice" yaml:"spotMaxPricePercentageOverLowestPrice"`
	// The minimum and maximum amount of total local storage, in GB.
	//
	// Default: No minimum or maximum limits.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-totallocalstoragegb
	//
	TotalLocalStorageGb interface{} `field:"optional" json:"totalLocalStorageGb" yaml:"totalLocalStorageGb"`
	// The minimum and maximum number of vCPUs.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html#cfn-ec2-launchtemplate-instancerequirements-vcpucount
	//
	VCpuCount interface{} `field:"optional" json:"vCpuCount" yaml:"vCpuCount"`
}

The attributes for the instance types.

When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.

You must specify `VCpuCount` and `MemoryMiB` . All other attributes are optional. Any unspecified optional attribute is set to its default.

When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.

To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:

- `AllowedInstanceTypes` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes. - `ExcludedInstanceTypes` - The instance types to exclude from the list, even if they match your specified attributes.

> If you specify `InstanceRequirements` , you can't specify `InstanceType` . > > Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) , or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) AWS CloudFormation resource, you can't specify `InstanceRequirements` .

For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

instanceRequirementsProperty := &InstanceRequirementsProperty{
	AcceleratorCount: &AcceleratorCountProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	AcceleratorManufacturers: []*string{
		jsii.String("acceleratorManufacturers"),
	},
	AcceleratorNames: []*string{
		jsii.String("acceleratorNames"),
	},
	AcceleratorTotalMemoryMiB: &AcceleratorTotalMemoryMiBProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	AcceleratorTypes: []*string{
		jsii.String("acceleratorTypes"),
	},
	AllowedInstanceTypes: []*string{
		jsii.String("allowedInstanceTypes"),
	},
	BareMetal: jsii.String("bareMetal"),
	BaselineEbsBandwidthMbps: &BaselineEbsBandwidthMbpsProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	BaselinePerformanceFactors: &BaselinePerformanceFactorsProperty{
		Cpu: &CpuProperty{
			References: []interface{}{
				&ReferenceProperty{
					InstanceFamily: jsii.String("instanceFamily"),
				},
			},
		},
	},
	BurstablePerformance: jsii.String("burstablePerformance"),
	CpuManufacturers: []*string{
		jsii.String("cpuManufacturers"),
	},
	ExcludedInstanceTypes: []*string{
		jsii.String("excludedInstanceTypes"),
	},
	InstanceGenerations: []*string{
		jsii.String("instanceGenerations"),
	},
	LocalStorage: jsii.String("localStorage"),
	LocalStorageTypes: []*string{
		jsii.String("localStorageTypes"),
	},
	MaxSpotPriceAsPercentageOfOptimalOnDemandPrice: jsii.Number(123),
	MemoryGiBPerVCpu: &MemoryGiBPerVCpuProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	MemoryMiB: &MemoryMiBProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	NetworkBandwidthGbps: &NetworkBandwidthGbpsProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	NetworkInterfaceCount: &NetworkInterfaceCountProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(123),
	RequireHibernateSupport: jsii.Boolean(false),
	SpotMaxPricePercentageOverLowestPrice: jsii.Number(123),
	TotalLocalStorageGb: &TotalLocalStorageGBProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
	VCpuCount: &VCpuCountProperty{
		Max: jsii.Number(123),
		Min: jsii.Number(123),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancerequirements.html

type CfnLaunchTemplate_Ipv4PrefixSpecificationProperty added in v2.18.0

type CfnLaunchTemplate_Ipv4PrefixSpecificationProperty struct {
	// The IPv4 prefix.
	//
	// For information, see [Assigning prefixes to network interfaces](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-prefix-eni.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ipv4prefixspecification.html#cfn-ec2-launchtemplate-ipv4prefixspecification-ipv4prefix
	//
	Ipv4Prefix *string `field:"optional" json:"ipv4Prefix" yaml:"ipv4Prefix"`
}

Specifies an IPv4 prefix for a network interface.

`Ipv4PrefixSpecification` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipv4PrefixSpecificationProperty := &Ipv4PrefixSpecificationProperty{
	Ipv4Prefix: jsii.String("ipv4Prefix"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ipv4prefixspecification.html

type CfnLaunchTemplate_Ipv6AddProperty

type CfnLaunchTemplate_Ipv6AddProperty struct {
	// One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet.
	//
	// You can't use this option if you're specifying a number of IPv6 addresses.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ipv6add.html#cfn-ec2-launchtemplate-ipv6add-ipv6address
	//
	Ipv6Address *string `field:"optional" json:"ipv6Address" yaml:"ipv6Address"`
}

Specifies an IPv6 address in an Amazon EC2 launch template.

`Ipv6Add` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipv6AddProperty := &Ipv6AddProperty{
	Ipv6Address: jsii.String("ipv6Address"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ipv6add.html

type CfnLaunchTemplate_Ipv6PrefixSpecificationProperty added in v2.18.0

type CfnLaunchTemplate_Ipv6PrefixSpecificationProperty struct {
	// The IPv6 prefix.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ipv6prefixspecification.html#cfn-ec2-launchtemplate-ipv6prefixspecification-ipv6prefix
	//
	Ipv6Prefix *string `field:"optional" json:"ipv6Prefix" yaml:"ipv6Prefix"`
}

Specifies an IPv6 prefix for a network interface.

`Ipv6PrefixSpecification` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ipv6PrefixSpecificationProperty := &Ipv6PrefixSpecificationProperty{
	Ipv6Prefix: jsii.String("ipv6Prefix"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ipv6prefixspecification.html

type CfnLaunchTemplate_LaunchTemplateDataProperty

type CfnLaunchTemplate_LaunchTemplateDataProperty struct {
	// The block device mapping.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-blockdevicemappings
	//
	BlockDeviceMappings interface{} `field:"optional" json:"blockDeviceMappings" yaml:"blockDeviceMappings"`
	// The Capacity Reservation targeting option.
	//
	// If you do not specify this parameter, the instance's Capacity Reservation preference defaults to `open` , which enables it to run in any open Capacity Reservation that has matching attributes (instance type, platform, Availability Zone).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification
	//
	CapacityReservationSpecification interface{} `field:"optional" json:"capacityReservationSpecification" yaml:"capacityReservationSpecification"`
	// The CPU options for the instance.
	//
	// For more information, see [CPU options for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-cpuoptions
	//
	CpuOptions interface{} `field:"optional" json:"cpuOptions" yaml:"cpuOptions"`
	// The credit option for CPU usage of the instance.
	//
	// Valid only for T instances.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-creditspecification
	//
	CreditSpecification interface{} `field:"optional" json:"creditSpecification" yaml:"creditSpecification"`
	// Indicates whether to enable the instance for stop protection.
	//
	// For more information, see [Enable stop protection for your EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-stop-protection.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-disableapistop
	//
	DisableApiStop interface{} `field:"optional" json:"disableApiStop" yaml:"disableApiStop"`
	// Indicates whether termination protection is enabled for the instance.
	//
	// The default is `false` , which means that you can terminate the instance using the Amazon EC2 console, command line tools, or API. You can enable termination protection when you launch an instance, while the instance is running, or while the instance is stopped.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-disableapitermination
	//
	DisableApiTermination interface{} `field:"optional" json:"disableApiTermination" yaml:"disableApiTermination"`
	// Indicates whether the instance is optimized for Amazon EBS I/O.
	//
	// This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-ebsoptimized
	//
	EbsOptimized interface{} `field:"optional" json:"ebsOptimized" yaml:"ebsOptimized"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-elasticgpuspecifications
	//
	ElasticGpuSpecifications interface{} `field:"optional" json:"elasticGpuSpecifications" yaml:"elasticGpuSpecifications"`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-elasticinferenceaccelerators
	//
	ElasticInferenceAccelerators interface{} `field:"optional" json:"elasticInferenceAccelerators" yaml:"elasticInferenceAccelerators"`
	// Indicates whether the instance is enabled for AWS Nitro Enclaves.
	//
	// For more information, see [What is Nitro Enclaves?](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html) in the *AWS Nitro Enclaves User Guide* .
	//
	// You can't enable AWS Nitro Enclaves and hibernation on the same instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-enclaveoptions
	//
	EnclaveOptions interface{} `field:"optional" json:"enclaveOptions" yaml:"enclaveOptions"`
	// Indicates whether an instance is enabled for hibernation.
	//
	// This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html) . For more information, see [Hibernate your Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-hibernationoptions
	//
	HibernationOptions interface{} `field:"optional" json:"hibernationOptions" yaml:"hibernationOptions"`
	// The name or Amazon Resource Name (ARN) of an IAM instance profile.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-iaminstanceprofile
	//
	IamInstanceProfile interface{} `field:"optional" json:"iamInstanceProfile" yaml:"iamInstanceProfile"`
	// The ID of the AMI.
	//
	// Alternatively, you can specify a Systems Manager parameter, which will resolve to an AMI ID on launch.
	//
	// Valid formats:
	//
	// - `ami-0ac394d6a3example`
	// - `resolve:ssm:parameter-name`
	// - `resolve:ssm:parameter-name:version-number`
	// - `resolve:ssm:parameter-name:label`
	//
	// For more information, see [Use a Systems Manager parameter to find an AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html#using-systems-manager-parameter-to-find-AMI) in the *Amazon Elastic Compute Cloud User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-imageid
	//
	ImageId *string `field:"optional" json:"imageId" yaml:"imageId"`
	// Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).
	//
	// Default: `stop`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-instanceinitiatedshutdownbehavior
	//
	InstanceInitiatedShutdownBehavior *string `field:"optional" json:"instanceInitiatedShutdownBehavior" yaml:"instanceInitiatedShutdownBehavior"`
	// The market (purchasing) option for the instances.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-instancemarketoptions
	//
	InstanceMarketOptions interface{} `field:"optional" json:"instanceMarketOptions" yaml:"instanceMarketOptions"`
	// The attributes for the instance types.
	//
	// When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.
	//
	// You must specify `VCpuCount` and `MemoryMiB` . All other attributes are optional. Any unspecified optional attribute is set to its default.
	//
	// When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.
	//
	// To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:
	//
	// - `AllowedInstanceTypes` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.
	// - `ExcludedInstanceTypes` - The instance types to exclude from the list, even if they match your specified attributes.
	//
	// > If you specify `InstanceRequirements` , you can't specify `InstanceType` .
	// >
	// > Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) , or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) AWS CloudFormation resource, you can't specify `InstanceRequirements` .
	//
	// For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-instancerequirements
	//
	InstanceRequirements interface{} `field:"optional" json:"instanceRequirements" yaml:"instanceRequirements"`
	// The instance type. For more information, see [Amazon EC2 instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide* .
	//
	// If you specify `InstanceType` , you can't specify `InstanceRequirements` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-instancetype
	//
	InstanceType *string `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The ID of the kernel.
	//
	// We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User Provided Kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-kernelid
	//
	KernelId *string `field:"optional" json:"kernelId" yaml:"kernelId"`
	// The name of the key pair. You can create a key pair using [CreateKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html) or [ImportKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html) .
	//
	// > If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-keyname
	//
	KeyName *string `field:"optional" json:"keyName" yaml:"keyName"`
	// The license configurations.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-licensespecifications
	//
	LicenseSpecifications interface{} `field:"optional" json:"licenseSpecifications" yaml:"licenseSpecifications"`
	// The maintenance options of your instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-maintenanceoptions
	//
	MaintenanceOptions interface{} `field:"optional" json:"maintenanceOptions" yaml:"maintenanceOptions"`
	// The metadata options for the instance.
	//
	// For more information, see [Configure the Instance Metadata Service options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-metadataoptions
	//
	MetadataOptions interface{} `field:"optional" json:"metadataOptions" yaml:"metadataOptions"`
	// The monitoring for the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-monitoring
	//
	Monitoring interface{} `field:"optional" json:"monitoring" yaml:"monitoring"`
	// The network interfaces for the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-networkinterfaces
	//
	NetworkInterfaces interface{} `field:"optional" json:"networkInterfaces" yaml:"networkInterfaces"`
	// The settings for the network performance options for the instance.
	//
	// For more information, see [EC2 instance bandwidth weighting configuration](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-bandwidth-weighting.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-networkperformanceoptions
	//
	NetworkPerformanceOptions interface{} `field:"optional" json:"networkPerformanceOptions" yaml:"networkPerformanceOptions"`
	// The placement for the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-placement
	//
	Placement interface{} `field:"optional" json:"placement" yaml:"placement"`
	// The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled.
	//
	// For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *Amazon Elastic Compute Cloud User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-privatednsnameoptions
	//
	PrivateDnsNameOptions interface{} `field:"optional" json:"privateDnsNameOptions" yaml:"privateDnsNameOptions"`
	// The ID of the RAM disk.
	//
	// > We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User provided kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-ramdiskid
	//
	RamDiskId *string `field:"optional" json:"ramDiskId" yaml:"ramDiskId"`
	// The IDs of the security groups.
	//
	// You can specify the IDs of existing security groups and references to resources created by the stack template.
	//
	// If you specify a network interface, you must specify any security groups as part of the network interface instead.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-securitygroupids
	//
	SecurityGroupIds *[]*string `field:"optional" json:"securityGroupIds" yaml:"securityGroupIds"`
	// The names of the security groups. For a nondefault VPC, you must use security group IDs instead.
	//
	// If you specify a network interface, you must specify any security groups as part of the network interface instead of using this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-securitygroups
	//
	SecurityGroups *[]*string `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The tags to apply to resources that are created during instance launch.
	//
	// To tag the launch template itself, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications
	//
	TagSpecifications interface{} `field:"optional" json:"tagSpecifications" yaml:"tagSpecifications"`
	// The user data to make available to the instance.
	//
	// You must provide base64-encoded text. User data is limited to 16 KB. For more information, see [Run commands when you launch an EC2 instance with user data input](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) in the *Amazon EC2 User Guide* .
	//
	// If you are creating the launch template for use with AWS Batch , the user data must be provided in the [MIME multi-part archive format](https://docs.aws.amazon.com/https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive) . For more information, see [Amazon EC2 user data in launch templates](https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html#lt-user-data) in the *AWS Batch User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-userdata
	//
	UserData *string `field:"optional" json:"userData" yaml:"userData"`
}

The information to include in the launch template.

> You must specify at least one parameter for the launch template data.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

launchTemplateDataProperty := &LaunchTemplateDataProperty{
	BlockDeviceMappings: []interface{}{
		&BlockDeviceMappingProperty{
			DeviceName: jsii.String("deviceName"),
			Ebs: &EbsProperty{
				DeleteOnTermination: jsii.Boolean(false),
				EbsCardIndex: jsii.Number(123),
				Encrypted: jsii.Boolean(false),
				Iops: jsii.Number(123),
				KmsKeyId: jsii.String("kmsKeyId"),
				SnapshotId: jsii.String("snapshotId"),
				Throughput: jsii.Number(123),
				VolumeInitializationRate: jsii.Number(123),
				VolumeSize: jsii.Number(123),
				VolumeType: jsii.String("volumeType"),
			},
			NoDevice: jsii.String("noDevice"),
			VirtualName: jsii.String("virtualName"),
		},
	},
	CapacityReservationSpecification: &CapacityReservationSpecificationProperty{
		CapacityReservationPreference: jsii.String("capacityReservationPreference"),
		CapacityReservationTarget: &CapacityReservationTargetProperty{
			CapacityReservationId: jsii.String("capacityReservationId"),
			CapacityReservationResourceGroupArn: jsii.String("capacityReservationResourceGroupArn"),
		},
	},
	CpuOptions: &CpuOptionsProperty{
		AmdSevSnp: jsii.String("amdSevSnp"),
		CoreCount: jsii.Number(123),
		NestedVirtualization: jsii.String("nestedVirtualization"),
		ThreadsPerCore: jsii.Number(123),
	},
	CreditSpecification: &CreditSpecificationProperty{
		CpuCredits: jsii.String("cpuCredits"),
	},
	DisableApiStop: jsii.Boolean(false),
	DisableApiTermination: jsii.Boolean(false),
	EbsOptimized: jsii.Boolean(false),
	ElasticGpuSpecifications: []interface{}{
		&ElasticGpuSpecificationProperty{
			Type: jsii.String("type"),
		},
	},
	ElasticInferenceAccelerators: []interface{}{
		&LaunchTemplateElasticInferenceAcceleratorProperty{
			Count: jsii.Number(123),
			Type: jsii.String("type"),
		},
	},
	EnclaveOptions: &EnclaveOptionsProperty{
		Enabled: jsii.Boolean(false),
	},
	HibernationOptions: &HibernationOptionsProperty{
		Configured: jsii.Boolean(false),
	},
	IamInstanceProfile: &IamInstanceProfileProperty{
		Arn: jsii.String("arn"),
		Name: jsii.String("name"),
	},
	ImageId: jsii.String("imageId"),
	InstanceInitiatedShutdownBehavior: jsii.String("instanceInitiatedShutdownBehavior"),
	InstanceMarketOptions: &InstanceMarketOptionsProperty{
		MarketType: jsii.String("marketType"),
		SpotOptions: &SpotOptionsProperty{
			BlockDurationMinutes: jsii.Number(123),
			InstanceInterruptionBehavior: jsii.String("instanceInterruptionBehavior"),
			MaxPrice: jsii.String("maxPrice"),
			SpotInstanceType: jsii.String("spotInstanceType"),
			ValidUntil: jsii.String("validUntil"),
		},
	},
	InstanceRequirements: &InstanceRequirementsProperty{
		AcceleratorCount: &AcceleratorCountProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		AcceleratorManufacturers: []*string{
			jsii.String("acceleratorManufacturers"),
		},
		AcceleratorNames: []*string{
			jsii.String("acceleratorNames"),
		},
		AcceleratorTotalMemoryMiB: &AcceleratorTotalMemoryMiBProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		AcceleratorTypes: []*string{
			jsii.String("acceleratorTypes"),
		},
		AllowedInstanceTypes: []*string{
			jsii.String("allowedInstanceTypes"),
		},
		BareMetal: jsii.String("bareMetal"),
		BaselineEbsBandwidthMbps: &BaselineEbsBandwidthMbpsProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		BaselinePerformanceFactors: &BaselinePerformanceFactorsProperty{
			Cpu: &CpuProperty{
				References: []interface{}{
					&ReferenceProperty{
						InstanceFamily: jsii.String("instanceFamily"),
					},
				},
			},
		},
		BurstablePerformance: jsii.String("burstablePerformance"),
		CpuManufacturers: []*string{
			jsii.String("cpuManufacturers"),
		},
		ExcludedInstanceTypes: []*string{
			jsii.String("excludedInstanceTypes"),
		},
		InstanceGenerations: []*string{
			jsii.String("instanceGenerations"),
		},
		LocalStorage: jsii.String("localStorage"),
		LocalStorageTypes: []*string{
			jsii.String("localStorageTypes"),
		},
		MaxSpotPriceAsPercentageOfOptimalOnDemandPrice: jsii.Number(123),
		MemoryGiBPerVCpu: &MemoryGiBPerVCpuProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		MemoryMiB: &MemoryMiBProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		NetworkBandwidthGbps: &NetworkBandwidthGbpsProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		NetworkInterfaceCount: &NetworkInterfaceCountProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		OnDemandMaxPricePercentageOverLowestPrice: jsii.Number(123),
		RequireHibernateSupport: jsii.Boolean(false),
		SpotMaxPricePercentageOverLowestPrice: jsii.Number(123),
		TotalLocalStorageGb: &TotalLocalStorageGBProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
		VCpuCount: &VCpuCountProperty{
			Max: jsii.Number(123),
			Min: jsii.Number(123),
		},
	},
	InstanceType: jsii.String("instanceType"),
	KernelId: jsii.String("kernelId"),
	KeyName: jsii.String("keyName"),
	LicenseSpecifications: []interface{}{
		&LicenseSpecificationProperty{
			LicenseConfigurationArn: jsii.String("licenseConfigurationArn"),
		},
	},
	MaintenanceOptions: &MaintenanceOptionsProperty{
		AutoRecovery: jsii.String("autoRecovery"),
	},
	MetadataOptions: &MetadataOptionsProperty{
		HttpEndpoint: jsii.String("httpEndpoint"),
		HttpProtocolIpv6: jsii.String("httpProtocolIpv6"),
		HttpPutResponseHopLimit: jsii.Number(123),
		HttpTokens: jsii.String("httpTokens"),
		InstanceMetadataTags: jsii.String("instanceMetadataTags"),
	},
	Monitoring: &MonitoringProperty{
		Enabled: jsii.Boolean(false),
	},
	NetworkInterfaces: []interface{}{
		&NetworkInterfaceProperty{
			AssociateCarrierIpAddress: jsii.Boolean(false),
			AssociatePublicIpAddress: jsii.Boolean(false),
			ConnectionTrackingSpecification: &ConnectionTrackingSpecificationProperty{
				TcpEstablishedTimeout: jsii.Number(123),
				UdpStreamTimeout: jsii.Number(123),
				UdpTimeout: jsii.Number(123),
			},
			DeleteOnTermination: jsii.Boolean(false),
			Description: jsii.String("description"),
			DeviceIndex: jsii.Number(123),
			EnaQueueCount: jsii.Number(123),
			EnaSrdSpecification: &EnaSrdSpecificationProperty{
				EnaSrdEnabled: jsii.Boolean(false),
				EnaSrdUdpSpecification: &EnaSrdUdpSpecificationProperty{
					EnaSrdUdpEnabled: jsii.Boolean(false),
				},
			},
			Groups: []*string{
				jsii.String("groups"),
			},
			InterfaceType: jsii.String("interfaceType"),
			Ipv4PrefixCount: jsii.Number(123),
			Ipv4Prefixes: []interface{}{
				&Ipv4PrefixSpecificationProperty{
					Ipv4Prefix: jsii.String("ipv4Prefix"),
				},
			},
			Ipv6AddressCount: jsii.Number(123),
			Ipv6Addresses: []interface{}{
				&Ipv6AddProperty{
					Ipv6Address: jsii.String("ipv6Address"),
				},
			},
			Ipv6PrefixCount: jsii.Number(123),
			Ipv6Prefixes: []interface{}{
				&Ipv6PrefixSpecificationProperty{
					Ipv6Prefix: jsii.String("ipv6Prefix"),
				},
			},
			NetworkCardIndex: jsii.Number(123),
			NetworkInterfaceId: jsii.String("networkInterfaceId"),
			PrimaryIpv6: jsii.Boolean(false),
			PrivateIpAddress: jsii.String("privateIpAddress"),
			PrivateIpAddresses: []interface{}{
				&PrivateIpAddProperty{
					Primary: jsii.Boolean(false),
					PrivateIpAddress: jsii.String("privateIpAddress"),
				},
			},
			SecondaryPrivateIpAddressCount: jsii.Number(123),
			SubnetId: jsii.String("subnetId"),
		},
	},
	NetworkPerformanceOptions: &NetworkPerformanceOptionsProperty{
		BandwidthWeighting: jsii.String("bandwidthWeighting"),
	},
	Placement: &PlacementProperty{
		Affinity: jsii.String("affinity"),
		AvailabilityZone: jsii.String("availabilityZone"),
		GroupId: jsii.String("groupId"),
		GroupName: jsii.String("groupName"),
		HostId: jsii.String("hostId"),
		HostResourceGroupArn: jsii.String("hostResourceGroupArn"),
		PartitionNumber: jsii.Number(123),
		SpreadDomain: jsii.String("spreadDomain"),
		Tenancy: jsii.String("tenancy"),
	},
	PrivateDnsNameOptions: &PrivateDnsNameOptionsProperty{
		EnableResourceNameDnsAaaaRecord: jsii.Boolean(false),
		EnableResourceNameDnsARecord: jsii.Boolean(false),
		HostnameType: jsii.String("hostnameType"),
	},
	RamDiskId: jsii.String("ramDiskId"),
	SecurityGroupIds: []*string{
		jsii.String("securityGroupIds"),
	},
	SecurityGroups: []*string{
		jsii.String("securityGroups"),
	},
	TagSpecifications: []interface{}{
		&TagSpecificationProperty{
			ResourceType: jsii.String("resourceType"),
			Tags: []CfnTag{
				&CfnTag{
					Key: jsii.String("key"),
					Value: jsii.String("value"),
				},
			},
		},
	},
	UserData: jsii.String("userData"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html

type CfnLaunchTemplate_LaunchTemplateElasticInferenceAcceleratorProperty

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

launchTemplateElasticInferenceAcceleratorProperty := &LaunchTemplateElasticInferenceAcceleratorProperty{
	Count: jsii.Number(123),
	Type: jsii.String("type"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator.html

type CfnLaunchTemplate_LaunchTemplateTagSpecificationProperty

type CfnLaunchTemplate_LaunchTemplateTagSpecificationProperty struct {
	// The type of resource.
	//
	// To tag a launch template, `ResourceType` must be `launch-template` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatetagspecification.html#cfn-ec2-launchtemplate-launchtemplatetagspecification-resourcetype
	//
	ResourceType *string `field:"optional" json:"resourceType" yaml:"resourceType"`
	// The tags for the resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatetagspecification.html#cfn-ec2-launchtemplate-launchtemplatetagspecification-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Specifies the tags to apply to the launch template during creation.

To specify the tags for the resources that are created during instance launch, use [AWS::EC2::LaunchTemplate TagSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html) .

`LaunchTemplateTagSpecification` is a property of [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

launchTemplateTagSpecificationProperty := &LaunchTemplateTagSpecificationProperty{
	ResourceType: jsii.String("resourceType"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatetagspecification.html

type CfnLaunchTemplate_LicenseSpecificationProperty

type CfnLaunchTemplate_LicenseSpecificationProperty struct {
	// The Amazon Resource Name (ARN) of the license configuration.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-licensespecification.html#cfn-ec2-launchtemplate-licensespecification-licenseconfigurationarn
	//
	LicenseConfigurationArn *string `field:"optional" json:"licenseConfigurationArn" yaml:"licenseConfigurationArn"`
}

Specifies a license configuration for an instance.

`LicenseSpecification` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

licenseSpecificationProperty := &LicenseSpecificationProperty{
	LicenseConfigurationArn: jsii.String("licenseConfigurationArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-licensespecification.html

type CfnLaunchTemplate_MaintenanceOptionsProperty added in v2.21.0

type CfnLaunchTemplate_MaintenanceOptionsProperty struct {
	// Disables the automatic recovery behavior of your instance or sets it to default.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-maintenanceoptions.html#cfn-ec2-launchtemplate-maintenanceoptions-autorecovery
	//
	AutoRecovery *string `field:"optional" json:"autoRecovery" yaml:"autoRecovery"`
}

The maintenance options of your instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

maintenanceOptionsProperty := &MaintenanceOptionsProperty{
	AutoRecovery: jsii.String("autoRecovery"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-maintenanceoptions.html

type CfnLaunchTemplate_MemoryGiBPerVCpuProperty

type CfnLaunchTemplate_MemoryGiBPerVCpuProperty struct {
	// The maximum amount of memory per vCPU, in GiB.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-memorygibpervcpu.html#cfn-ec2-launchtemplate-memorygibpervcpu-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of memory per vCPU, in GiB.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-memorygibpervcpu.html#cfn-ec2-launchtemplate-memorygibpervcpu-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of memory per vCPU, in GiB.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

memoryGiBPerVCpuProperty := &MemoryGiBPerVCpuProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-memorygibpervcpu.html

type CfnLaunchTemplate_MemoryMiBProperty

type CfnLaunchTemplate_MemoryMiBProperty struct {
	// The maximum amount of memory, in MiB.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-memorymib.html#cfn-ec2-launchtemplate-memorymib-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of memory, in MiB.
	//
	// To specify no minimum limit, specify `0` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-memorymib.html#cfn-ec2-launchtemplate-memorymib-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of memory, in MiB.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

memoryMiBProperty := &MemoryMiBProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-memorymib.html

type CfnLaunchTemplate_MetadataOptionsProperty

type CfnLaunchTemplate_MetadataOptionsProperty struct {
	// Enables or disables the HTTP metadata endpoint on your instances.
	//
	// If the parameter is not specified, the default state is `enabled` .
	//
	// > If you specify a value of `disabled` , you will not be able to access your instance metadata.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html#cfn-ec2-launchtemplate-metadataoptions-httpendpoint
	//
	HttpEndpoint *string `field:"optional" json:"httpEndpoint" yaml:"httpEndpoint"`
	// Enables or disables the IPv6 endpoint for the instance metadata service.
	//
	// Default: `disabled`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html#cfn-ec2-launchtemplate-metadataoptions-httpprotocolipv6
	//
	HttpProtocolIpv6 *string `field:"optional" json:"httpProtocolIpv6" yaml:"httpProtocolIpv6"`
	// The desired HTTP PUT response hop limit for instance metadata requests.
	//
	// The larger the number, the further instance metadata requests can travel.
	//
	// Default: `1`
	//
	// Possible values: Integers from 1 to 64.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html#cfn-ec2-launchtemplate-metadataoptions-httpputresponsehoplimit
	//
	HttpPutResponseHopLimit *float64 `field:"optional" json:"httpPutResponseHopLimit" yaml:"httpPutResponseHopLimit"`
	// Indicates whether IMDSv2 is required.
	//
	// - `optional` - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.
	// - `required` - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.
	//
	// Default: If the value of `ImdsSupport` for the Amazon Machine Image (AMI) for your instance is `v2.0` , the default is `required` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html#cfn-ec2-launchtemplate-metadataoptions-httptokens
	//
	HttpTokens *string `field:"optional" json:"httpTokens" yaml:"httpTokens"`
	// Set to `enabled` to allow access to instance tags from the instance metadata.
	//
	// Set to `disabled` to turn off access to instance tags from the instance metadata. For more information, see [View tags for your EC2 instances using instance metadata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/work-with-tags-in-IMDS.html) .
	//
	// Default: `disabled`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html#cfn-ec2-launchtemplate-metadataoptions-instancemetadatatags
	//
	InstanceMetadataTags *string `field:"optional" json:"instanceMetadataTags" yaml:"instanceMetadataTags"`
}

The metadata options for the instance.

For more information, see [Instance metadata and user data](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) in the *Amazon EC2 User Guide* .

`MetadataOptions` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

metadataOptionsProperty := &MetadataOptionsProperty{
	HttpEndpoint: jsii.String("httpEndpoint"),
	HttpProtocolIpv6: jsii.String("httpProtocolIpv6"),
	HttpPutResponseHopLimit: jsii.Number(123),
	HttpTokens: jsii.String("httpTokens"),
	InstanceMetadataTags: jsii.String("instanceMetadataTags"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html

type CfnLaunchTemplate_MonitoringProperty

type CfnLaunchTemplate_MonitoringProperty struct {
	// Specify `true` to enable detailed monitoring.
	//
	// Otherwise, basic monitoring is enabled.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-monitoring.html#cfn-ec2-launchtemplate-monitoring-enabled
	//
	Enabled interface{} `field:"optional" json:"enabled" yaml:"enabled"`
}

Specifies whether detailed monitoring is enabled for an instance.

For more information about detailed monitoring, see [Enable or turn off detailed monitoring for your instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch-new.html) in the *Amazon EC2 User Guide* .

`Monitoring` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

monitoringProperty := &MonitoringProperty{
	Enabled: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-monitoring.html

type CfnLaunchTemplate_NetworkBandwidthGbpsProperty added in v2.51.0

type CfnLaunchTemplate_NetworkBandwidthGbpsProperty struct {
	// The maximum amount of network bandwidth, in Gbps.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkbandwidthgbps.html#cfn-ec2-launchtemplate-networkbandwidthgbps-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of network bandwidth, in Gbps.
	//
	// If this parameter is not specified, there is no minimum limit.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkbandwidthgbps.html#cfn-ec2-launchtemplate-networkbandwidthgbps-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).

> Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the *Amazon EC2 User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

networkBandwidthGbpsProperty := &NetworkBandwidthGbpsProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkbandwidthgbps.html

type CfnLaunchTemplate_NetworkInterfaceCountProperty

type CfnLaunchTemplate_NetworkInterfaceCountProperty struct {
	// The maximum number of network interfaces.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterfacecount.html#cfn-ec2-launchtemplate-networkinterfacecount-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum number of network interfaces.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterfacecount.html#cfn-ec2-launchtemplate-networkinterfacecount-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum number of network interfaces.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

networkInterfaceCountProperty := &NetworkInterfaceCountProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterfacecount.html

type CfnLaunchTemplate_NetworkInterfaceProperty

type CfnLaunchTemplate_NetworkInterfaceProperty struct {
	// Associates a Carrier IP address with eth0 for a new network interface.
	//
	// Use this option when you launch an instance in a Wavelength Zone and want to associate a Carrier IP address with the network interface. For more information about Carrier IP addresses, see [Carrier IP addresses](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) in the *AWS Wavelength Developer Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-associatecarrieripaddress
	//
	AssociateCarrierIpAddress interface{} `field:"optional" json:"associateCarrierIpAddress" yaml:"associateCarrierIpAddress"`
	// Associates a public IPv4 address with eth0 for a new network interface.
	//
	// AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [Amazon VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-associatepublicipaddress
	//
	AssociatePublicIpAddress interface{} `field:"optional" json:"associatePublicIpAddress" yaml:"associatePublicIpAddress"`
	// A connection tracking specification for the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-connectiontrackingspecification
	//
	ConnectionTrackingSpecification interface{} `field:"optional" json:"connectionTrackingSpecification" yaml:"connectionTrackingSpecification"`
	// Indicates whether the network interface is deleted when the instance is terminated.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-deleteontermination
	//
	DeleteOnTermination interface{} `field:"optional" json:"deleteOnTermination" yaml:"deleteOnTermination"`
	// A description for the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The device index for the network interface attachment.
	//
	// The primary network interface has a device index of 0. If the network interface is of type `interface` , you must specify a device index.
	//
	// If you create a launch template that includes secondary network interfaces but no primary network interface, and you specify it using the `LaunchTemplate` property of `AWS::EC2::Instance` , then you must include a primary network interface using the `NetworkInterfaces` property of `AWS::EC2::Instance` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-deviceindex
	//
	DeviceIndex *float64 `field:"optional" json:"deviceIndex" yaml:"deviceIndex"`
	// The number of ENA queues to be created with the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-enaqueuecount
	//
	EnaQueueCount *float64 `field:"optional" json:"enaQueueCount" yaml:"enaQueueCount"`
	// The ENA Express configuration for the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-enasrdspecification
	//
	EnaSrdSpecification interface{} `field:"optional" json:"enaSrdSpecification" yaml:"enaSrdSpecification"`
	// The IDs of one or more security groups.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-groups
	//
	Groups *[]*string `field:"optional" json:"groups" yaml:"groups"`
	// The type of network interface.
	//
	// To create an Elastic Fabric Adapter (EFA), specify `efa` or `efa` . For more information, see [Elastic Fabric Adapter for AI/ML and HPC workloads on Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) in the *Amazon EC2 User Guide* .
	//
	// If you are not creating an EFA, specify `interface` or omit this parameter.
	//
	// If you specify `efa-only` , do not assign any IP addresses to the network interface. EFA-only network interfaces do not support IP addresses.
	//
	// Valid values: `interface` | `efa` | `efa-only`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-interfacetype
	//
	InterfaceType *string `field:"optional" json:"interfaceType" yaml:"interfaceType"`
	// The number of IPv4 prefixes to be automatically assigned to the network interface.
	//
	// You cannot use this option if you use the `Ipv4Prefix` option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-ipv4prefixcount
	//
	Ipv4PrefixCount *float64 `field:"optional" json:"ipv4PrefixCount" yaml:"ipv4PrefixCount"`
	// One or more IPv4 prefixes to be assigned to the network interface.
	//
	// You cannot use this option if you use the `Ipv4PrefixCount` option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-ipv4prefixes
	//
	Ipv4Prefixes interface{} `field:"optional" json:"ipv4Prefixes" yaml:"ipv4Prefixes"`
	// The number of IPv6 addresses to assign to a network interface.
	//
	// Amazon EC2 automatically selects the IPv6 addresses from the subnet range. You can't use this option if specifying specific IPv6 addresses.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-ipv6addresscount
	//
	Ipv6AddressCount *float64 `field:"optional" json:"ipv6AddressCount" yaml:"ipv6AddressCount"`
	// One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet.
	//
	// You can't use this option if you're specifying a number of IPv6 addresses.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-ipv6addresses
	//
	Ipv6Addresses interface{} `field:"optional" json:"ipv6Addresses" yaml:"ipv6Addresses"`
	// The number of IPv6 prefixes to be automatically assigned to the network interface.
	//
	// You cannot use this option if you use the `Ipv6Prefix` option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-ipv6prefixcount
	//
	Ipv6PrefixCount *float64 `field:"optional" json:"ipv6PrefixCount" yaml:"ipv6PrefixCount"`
	// One or more IPv6 prefixes to be assigned to the network interface.
	//
	// You cannot use this option if you use the `Ipv6PrefixCount` option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-ipv6prefixes
	//
	Ipv6Prefixes interface{} `field:"optional" json:"ipv6Prefixes" yaml:"ipv6Prefixes"`
	// The index of the network card.
	//
	// Some instance types support multiple network cards. The primary network interface must be assigned to network card index 0. The default is network card index 0.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-networkcardindex
	//
	NetworkCardIndex *float64 `field:"optional" json:"networkCardIndex" yaml:"networkCardIndex"`
	// The ID of the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-networkinterfaceid
	//
	NetworkInterfaceId *string `field:"optional" json:"networkInterfaceId" yaml:"networkInterfaceId"`
	// The primary IPv6 address of the network interface.
	//
	// When you enable an IPv6 GUA address to be a primary IPv6, the first IPv6 GUA will be made the primary IPv6 address until the instance is terminated or the network interface is detached. For more information about primary IPv6 addresses, see [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-primaryipv6
	//
	PrimaryIpv6 interface{} `field:"optional" json:"primaryIpv6" yaml:"primaryIpv6"`
	// The primary private IPv4 address of the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-privateipaddress
	//
	PrivateIpAddress *string `field:"optional" json:"privateIpAddress" yaml:"privateIpAddress"`
	// One or more private IPv4 addresses.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-privateipaddresses
	//
	PrivateIpAddresses interface{} `field:"optional" json:"privateIpAddresses" yaml:"privateIpAddresses"`
	// The number of secondary private IPv4 addresses to assign to a network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-secondaryprivateipaddresscount
	//
	SecondaryPrivateIpAddressCount *float64 `field:"optional" json:"secondaryPrivateIpAddressCount" yaml:"secondaryPrivateIpAddressCount"`
	// The ID of the subnet for the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html#cfn-ec2-launchtemplate-networkinterface-subnetid
	//
	SubnetId *string `field:"optional" json:"subnetId" yaml:"subnetId"`
}

Specifies the parameters for a network interface.

`NetworkInterface` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

networkInterfaceProperty := &NetworkInterfaceProperty{
	AssociateCarrierIpAddress: jsii.Boolean(false),
	AssociatePublicIpAddress: jsii.Boolean(false),
	ConnectionTrackingSpecification: &ConnectionTrackingSpecificationProperty{
		TcpEstablishedTimeout: jsii.Number(123),
		UdpStreamTimeout: jsii.Number(123),
		UdpTimeout: jsii.Number(123),
	},
	DeleteOnTermination: jsii.Boolean(false),
	Description: jsii.String("description"),
	DeviceIndex: jsii.Number(123),
	EnaQueueCount: jsii.Number(123),
	EnaSrdSpecification: &EnaSrdSpecificationProperty{
		EnaSrdEnabled: jsii.Boolean(false),
		EnaSrdUdpSpecification: &EnaSrdUdpSpecificationProperty{
			EnaSrdUdpEnabled: jsii.Boolean(false),
		},
	},
	Groups: []*string{
		jsii.String("groups"),
	},
	InterfaceType: jsii.String("interfaceType"),
	Ipv4PrefixCount: jsii.Number(123),
	Ipv4Prefixes: []interface{}{
		&Ipv4PrefixSpecificationProperty{
			Ipv4Prefix: jsii.String("ipv4Prefix"),
		},
	},
	Ipv6AddressCount: jsii.Number(123),
	Ipv6Addresses: []interface{}{
		&Ipv6AddProperty{
			Ipv6Address: jsii.String("ipv6Address"),
		},
	},
	Ipv6PrefixCount: jsii.Number(123),
	Ipv6Prefixes: []interface{}{
		&Ipv6PrefixSpecificationProperty{
			Ipv6Prefix: jsii.String("ipv6Prefix"),
		},
	},
	NetworkCardIndex: jsii.Number(123),
	NetworkInterfaceId: jsii.String("networkInterfaceId"),
	PrimaryIpv6: jsii.Boolean(false),
	PrivateIpAddress: jsii.String("privateIpAddress"),
	PrivateIpAddresses: []interface{}{
		&PrivateIpAddProperty{
			Primary: jsii.Boolean(false),
			PrivateIpAddress: jsii.String("privateIpAddress"),
		},
	},
	SecondaryPrivateIpAddressCount: jsii.Number(123),
	SubnetId: jsii.String("subnetId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html

type CfnLaunchTemplate_NetworkPerformanceOptionsProperty added in v2.185.0

type CfnLaunchTemplate_NetworkPerformanceOptionsProperty struct {
	// Specify the bandwidth weighting option to boost the associated type of baseline bandwidth, as follows:.
	//
	// - **default** - This option uses the standard bandwidth configuration for your instance type.
	// - **vpc-1** - This option boosts your networking baseline bandwidth and reduces your EBS baseline bandwidth.
	// - **ebs-1** - This option boosts your EBS baseline bandwidth and reduces your networking baseline bandwidth.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkperformanceoptions.html#cfn-ec2-launchtemplate-networkperformanceoptions-bandwidthweighting
	//
	BandwidthWeighting *string `field:"optional" json:"bandwidthWeighting" yaml:"bandwidthWeighting"`
}

Contains settings for the network performance options for the instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

networkPerformanceOptionsProperty := &NetworkPerformanceOptionsProperty{
	BandwidthWeighting: jsii.String("bandwidthWeighting"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkperformanceoptions.html

type CfnLaunchTemplate_PlacementProperty

type CfnLaunchTemplate_PlacementProperty struct {
	// The affinity setting for an instance on a Dedicated Host.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html#cfn-ec2-launchtemplate-placement-affinity
	//
	Affinity *string `field:"optional" json:"affinity" yaml:"affinity"`
	// The Availability Zone for the instance.
	//
	// Either `AvailabilityZone` or `AvailabilityZoneId` can be specified, but not both.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html#cfn-ec2-launchtemplate-placement-availabilityzone
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The Group Id of a placement group.
	//
	// You must specify the Placement Group *Group Id* to launch an instance in a shared placement group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html#cfn-ec2-launchtemplate-placement-groupid
	//
	GroupId *string `field:"optional" json:"groupId" yaml:"groupId"`
	// The name of the placement group for the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html#cfn-ec2-launchtemplate-placement-groupname
	//
	GroupName *string `field:"optional" json:"groupName" yaml:"groupName"`
	// The ID of the Dedicated Host for the instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html#cfn-ec2-launchtemplate-placement-hostid
	//
	HostId *string `field:"optional" json:"hostId" yaml:"hostId"`
	// The ARN of the host resource group in which to launch the instances.
	//
	// If you specify a host resource group ARN, omit the *Tenancy* parameter or set it to `host` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html#cfn-ec2-launchtemplate-placement-hostresourcegrouparn
	//
	HostResourceGroupArn *string `field:"optional" json:"hostResourceGroupArn" yaml:"hostResourceGroupArn"`
	// The number of the partition the instance should launch in.
	//
	// Valid only if the placement group strategy is set to `partition` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html#cfn-ec2-launchtemplate-placement-partitionnumber
	//
	PartitionNumber *float64 `field:"optional" json:"partitionNumber" yaml:"partitionNumber"`
	// Reserved for future use.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html#cfn-ec2-launchtemplate-placement-spreaddomain
	//
	SpreadDomain *string `field:"optional" json:"spreadDomain" yaml:"spreadDomain"`
	// The tenancy of the instance.
	//
	// An instance with a tenancy of dedicated runs on single-tenant hardware.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html#cfn-ec2-launchtemplate-placement-tenancy
	//
	Tenancy *string `field:"optional" json:"tenancy" yaml:"tenancy"`
}

Specifies the placement of an instance.

`Placement` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

placementProperty := &PlacementProperty{
	Affinity: jsii.String("affinity"),
	AvailabilityZone: jsii.String("availabilityZone"),
	GroupId: jsii.String("groupId"),
	GroupName: jsii.String("groupName"),
	HostId: jsii.String("hostId"),
	HostResourceGroupArn: jsii.String("hostResourceGroupArn"),
	PartitionNumber: jsii.Number(123),
	SpreadDomain: jsii.String("spreadDomain"),
	Tenancy: jsii.String("tenancy"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-placement.html

type CfnLaunchTemplate_PrivateDnsNameOptionsProperty added in v2.11.0

type CfnLaunchTemplate_PrivateDnsNameOptionsProperty struct {
	// Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-privatednsnameoptions.html#cfn-ec2-launchtemplate-privatednsnameoptions-enableresourcenamednsaaaarecord
	//
	EnableResourceNameDnsAaaaRecord interface{} `field:"optional" json:"enableResourceNameDnsAaaaRecord" yaml:"enableResourceNameDnsAaaaRecord"`
	// Indicates whether to respond to DNS queries for instance hostnames with DNS A records.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-privatednsnameoptions.html#cfn-ec2-launchtemplate-privatednsnameoptions-enableresourcenamednsarecord
	//
	EnableResourceNameDnsARecord interface{} `field:"optional" json:"enableResourceNameDnsARecord" yaml:"enableResourceNameDnsARecord"`
	// The type of hostname for EC2 instances.
	//
	// For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *Amazon Elastic Compute Cloud User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-privatednsnameoptions.html#cfn-ec2-launchtemplate-privatednsnameoptions-hostnametype
	//
	HostnameType *string `field:"optional" json:"hostnameType" yaml:"hostnameType"`
}

The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled.

For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *Amazon Elastic Compute Cloud User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

privateDnsNameOptionsProperty := &PrivateDnsNameOptionsProperty{
	EnableResourceNameDnsAaaaRecord: jsii.Boolean(false),
	EnableResourceNameDnsARecord: jsii.Boolean(false),
	HostnameType: jsii.String("hostnameType"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-privatednsnameoptions.html

type CfnLaunchTemplate_PrivateIpAddProperty

type CfnLaunchTemplate_PrivateIpAddProperty struct {
	// Indicates whether the private IPv4 address is the primary private IPv4 address.
	//
	// Only one IPv4 address can be designated as primary.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-privateipadd.html#cfn-ec2-launchtemplate-privateipadd-primary
	//
	Primary interface{} `field:"optional" json:"primary" yaml:"primary"`
	// The private IPv4 address.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-privateipadd.html#cfn-ec2-launchtemplate-privateipadd-privateipaddress
	//
	PrivateIpAddress *string `field:"optional" json:"privateIpAddress" yaml:"privateIpAddress"`
}

Specifies a secondary private IPv4 address for a network interface.

`PrivateIpAdd` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

privateIpAddProperty := &PrivateIpAddProperty{
	Primary: jsii.Boolean(false),
	PrivateIpAddress: jsii.String("privateIpAddress"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-privateipadd.html

type CfnLaunchTemplate_ReferenceProperty added in v2.172.0

type CfnLaunchTemplate_ReferenceProperty struct {
	// The instance family to use as a baseline reference.
	//
	// > Ensure that you specify the correct value for the instance family. The instance family is everything before the period ( `.` ) in the instance type name. For example, in the instance type `c6i.large` , the instance family is `c6i` , not `c6` . For more information, see [Amazon EC2 instance type naming conventions](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-type-names.html) in *Amazon EC2 Instance Types* .
	//
	// The following instance families are *not supported* for performance protection:
	//
	// - `c1`
	// - `g3` | `g3s`
	// - `hpc7g`
	// - `m1` | `m2`
	// - `mac1` | `mac2` | `mac2-m1ultra` | `mac2-m2` | `mac2-m2pro`
	// - `p3dn` | `p4d` | `p5`
	// - `t1`
	// - `u-12tb1` | `u-18tb1` | `u-24tb1` | `u-3tb1` | `u-6tb1` | `u-9tb1` | `u7i-12tb` | `u7in-16tb` | `u7in-24tb` | `u7in-32tb`
	//
	// If you enable performance protection by specifying a supported instance family, the returned instance types will exclude the above unsupported instance families.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-reference.html#cfn-ec2-launchtemplate-reference-instancefamily
	//
	InstanceFamily *string `field:"optional" json:"instanceFamily" yaml:"instanceFamily"`
}

Specifies an instance family to use as the baseline reference for CPU performance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

referenceProperty := &ReferenceProperty{
	InstanceFamily: jsii.String("instanceFamily"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-reference.html

type CfnLaunchTemplate_SpotOptionsProperty

type CfnLaunchTemplate_SpotOptionsProperty struct {
	// Deprecated.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-spotoptions.html#cfn-ec2-launchtemplate-spotoptions-blockdurationminutes
	//
	BlockDurationMinutes *float64 `field:"optional" json:"blockDurationMinutes" yaml:"blockDurationMinutes"`
	// The behavior when a Spot Instance is interrupted.
	//
	// The default is `terminate` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-spotoptions.html#cfn-ec2-launchtemplate-spotoptions-instanceinterruptionbehavior
	//
	InstanceInterruptionBehavior *string `field:"optional" json:"instanceInterruptionBehavior" yaml:"instanceInterruptionBehavior"`
	// The maximum hourly price you're willing to pay for a Spot Instance.
	//
	// We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price. If you do specify this parameter, it must be more than USD $0.001. Specifying a value below USD $0.001 will result in an `InvalidParameterValue` error message when the launch template is used to launch an instance.
	//
	// > If you specify a maximum price, your Spot Instances will be interrupted more frequently than if you do not specify this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-spotoptions.html#cfn-ec2-launchtemplate-spotoptions-maxprice
	//
	MaxPrice *string `field:"optional" json:"maxPrice" yaml:"maxPrice"`
	// The Spot Instance request type.
	//
	// If you are using Spot Instances with an Auto Scaling group, use `one-time` requests, as the Amazon EC2 Auto Scaling service handles requesting new Spot Instances whenever the group is below its desired capacity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-spotoptions.html#cfn-ec2-launchtemplate-spotoptions-spotinstancetype
	//
	SpotInstanceType *string `field:"optional" json:"spotInstanceType" yaml:"spotInstanceType"`
	// The end date of the request, in UTC format ( *YYYY-MM-DD* T *HH:MM:SS* Z). Supported only for persistent requests.
	//
	// - For a persistent request, the request remains active until the `ValidUntil` date and time is reached. Otherwise, the request remains active until you cancel it.
	// - For a one-time request, `ValidUntil` is not supported. The request remains active until all instances launch or you cancel the request.
	//
	// Default: 7 days from the current date.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-spotoptions.html#cfn-ec2-launchtemplate-spotoptions-validuntil
	//
	ValidUntil *string `field:"optional" json:"validUntil" yaml:"validUntil"`
}

Specifies options for Spot Instances.

`SpotOptions` is a property of [AWS::EC2::LaunchTemplate InstanceMarketOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-instancemarketoptions.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

spotOptionsProperty := &SpotOptionsProperty{
	BlockDurationMinutes: jsii.Number(123),
	InstanceInterruptionBehavior: jsii.String("instanceInterruptionBehavior"),
	MaxPrice: jsii.String("maxPrice"),
	SpotInstanceType: jsii.String("spotInstanceType"),
	ValidUntil: jsii.String("validUntil"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-spotoptions.html

type CfnLaunchTemplate_TagSpecificationProperty

type CfnLaunchTemplate_TagSpecificationProperty struct {
	// The type of resource to tag.
	//
	// You can specify tags for the following resource types only: `instance` | `volume` | `network-interface` | `spot-instances-request` . If the instance does not include the resource type that you specify, the instance launch fails. For example, not all instance types include a volume.
	//
	// To tag a resource after it has been created, see [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html#cfn-ec2-launchtemplate-tagspecification-resourcetype
	//
	ResourceType *string `field:"optional" json:"resourceType" yaml:"resourceType"`
	// The tags to apply to the resource.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html#cfn-ec2-launchtemplate-tagspecification-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Specifies the tags to apply to resources that are created during instance launch.

`TagSpecification` is a property type of [`TagSpecifications`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications) . [`TagSpecifications`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications) is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

tagSpecificationProperty := &TagSpecificationProperty{
	ResourceType: jsii.String("resourceType"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html

type CfnLaunchTemplate_TotalLocalStorageGBProperty

type CfnLaunchTemplate_TotalLocalStorageGBProperty struct {
	// The maximum amount of total local storage, in GB.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-totallocalstoragegb.html#cfn-ec2-launchtemplate-totallocalstoragegb-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum amount of total local storage, in GB.
	//
	// To specify no minimum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-totallocalstoragegb.html#cfn-ec2-launchtemplate-totallocalstoragegb-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum amount of total local storage, in GB.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

totalLocalStorageGBProperty := &TotalLocalStorageGBProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-totallocalstoragegb.html

type CfnLaunchTemplate_VCpuCountProperty

type CfnLaunchTemplate_VCpuCountProperty struct {
	// The maximum number of vCPUs.
	//
	// To specify no maximum limit, omit this parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-vcpucount.html#cfn-ec2-launchtemplate-vcpucount-max
	//
	Max *float64 `field:"optional" json:"max" yaml:"max"`
	// The minimum number of vCPUs.
	//
	// To specify no minimum limit, specify `0` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-vcpucount.html#cfn-ec2-launchtemplate-vcpucount-min
	//
	Min *float64 `field:"optional" json:"min" yaml:"min"`
}

The minimum and maximum number of vCPUs.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

vCpuCountProperty := &VCpuCountProperty{
	Max: jsii.Number(123),
	Min: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-vcpucount.html

type CfnLocalGatewayRoute

type CfnLocalGatewayRoute interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ILocalGatewayRouteRef
	// The state of the local gateway route table.
	AttrState() *string
	// The type of local gateway route.
	AttrType() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The CIDR block used for destination matches.
	DestinationCidrBlock() *string
	SetDestinationCidrBlock(val *string)
	Env() *interfaces.ResourceEnvironment
	// A reference to a LocalGatewayRoute resource.
	LocalGatewayRouteRef() *interfacesawsec2.LocalGatewayRouteReference
	// The ID of the local gateway route table.
	LocalGatewayRouteTableId() *string
	SetLocalGatewayRouteTableId(val *string)
	// The ID of the virtual interface group.
	LocalGatewayVirtualInterfaceGroupId() *string
	SetLocalGatewayVirtualInterfaceGroupId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The ID of the network interface.
	NetworkInterfaceId() *string
	SetNetworkInterfaceId(val *string)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Creates a static route for the specified local gateway route table. You must specify one of the following targets:.

- `LocalGatewayVirtualInterfaceGroupId` - `NetworkInterfaceId`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayRoute := awscdk.Aws_ec2.NewCfnLocalGatewayRoute(this, jsii.String("MyCfnLocalGatewayRoute"), &CfnLocalGatewayRouteProps{
	DestinationCidrBlock: jsii.String("destinationCidrBlock"),
	LocalGatewayRouteTableId: jsii.String("localGatewayRouteTableId"),

	// the properties below are optional
	LocalGatewayVirtualInterfaceGroupId: jsii.String("localGatewayVirtualInterfaceGroupId"),
	NetworkInterfaceId: jsii.String("networkInterfaceId"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html

func NewCfnLocalGatewayRoute

func NewCfnLocalGatewayRoute(scope constructs.Construct, id *string, props *CfnLocalGatewayRouteProps) CfnLocalGatewayRoute

Create a new `AWS::EC2::LocalGatewayRoute`.

type CfnLocalGatewayRouteProps

type CfnLocalGatewayRouteProps struct {
	// The CIDR block used for destination matches.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html#cfn-ec2-localgatewayroute-destinationcidrblock
	//
	DestinationCidrBlock *string `field:"required" json:"destinationCidrBlock" yaml:"destinationCidrBlock"`
	// The ID of the local gateway route table.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html#cfn-ec2-localgatewayroute-localgatewayroutetableid
	//
	LocalGatewayRouteTableId *string `field:"required" json:"localGatewayRouteTableId" yaml:"localGatewayRouteTableId"`
	// The ID of the virtual interface group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html#cfn-ec2-localgatewayroute-localgatewayvirtualinterfacegroupid
	//
	LocalGatewayVirtualInterfaceGroupId *string `field:"optional" json:"localGatewayVirtualInterfaceGroupId" yaml:"localGatewayVirtualInterfaceGroupId"`
	// The ID of the network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html#cfn-ec2-localgatewayroute-networkinterfaceid
	//
	NetworkInterfaceId *string `field:"optional" json:"networkInterfaceId" yaml:"networkInterfaceId"`
}

Properties for defining a `CfnLocalGatewayRoute`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayRouteProps := &CfnLocalGatewayRouteProps{
	DestinationCidrBlock: jsii.String("destinationCidrBlock"),
	LocalGatewayRouteTableId: jsii.String("localGatewayRouteTableId"),

	// the properties below are optional
	LocalGatewayVirtualInterfaceGroupId: jsii.String("localGatewayVirtualInterfaceGroupId"),
	NetworkInterfaceId: jsii.String("networkInterfaceId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html

type CfnLocalGatewayRouteTable added in v2.70.0

type CfnLocalGatewayRouteTable interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ILocalGatewayRouteTableRef
	awscdk.ITaggable
	// The Amazon Resource Name (ARN) of the local gateway route table.
	AttrLocalGatewayRouteTableArn() *string
	// The ID of the local gateway route table.
	AttrLocalGatewayRouteTableId() *string
	// The Amazon Resource Name (ARN) of the Outpost.
	AttrOutpostArn() *string
	// The ID of the AWS account that owns the local gateway route table.
	AttrOwnerId() *string
	// The state of the local gateway route table.
	AttrState() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The ID of the local gateway.
	LocalGatewayId() *string
	SetLocalGatewayId(val *string)
	// A reference to a LocalGatewayRouteTable resource.
	LocalGatewayRouteTableRef() *interfacesawsec2.LocalGatewayRouteTableReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The mode of the local gateway route table.
	Mode() *string
	SetMode(val *string)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags assigned to the local gateway route table.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Describes a local gateway route table.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayRouteTable := awscdk.Aws_ec2.NewCfnLocalGatewayRouteTable(this, jsii.String("MyCfnLocalGatewayRouteTable"), &CfnLocalGatewayRouteTableProps{
	LocalGatewayId: jsii.String("localGatewayId"),

	// the properties below are optional
	Mode: jsii.String("mode"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetable.html

func NewCfnLocalGatewayRouteTable added in v2.70.0

func NewCfnLocalGatewayRouteTable(scope constructs.Construct, id *string, props *CfnLocalGatewayRouteTableProps) CfnLocalGatewayRouteTable

Create a new `AWS::EC2::LocalGatewayRouteTable`.

type CfnLocalGatewayRouteTableProps added in v2.70.0

type CfnLocalGatewayRouteTableProps struct {
	// The ID of the local gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetable.html#cfn-ec2-localgatewayroutetable-localgatewayid
	//
	LocalGatewayId *string `field:"required" json:"localGatewayId" yaml:"localGatewayId"`
	// The mode of the local gateway route table.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetable.html#cfn-ec2-localgatewayroutetable-mode
	//
	Mode *string `field:"optional" json:"mode" yaml:"mode"`
	// The tags assigned to the local gateway route table.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetable.html#cfn-ec2-localgatewayroutetable-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnLocalGatewayRouteTable`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayRouteTableProps := &CfnLocalGatewayRouteTableProps{
	LocalGatewayId: jsii.String("localGatewayId"),

	// the properties below are optional
	Mode: jsii.String("mode"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetable.html

type CfnLocalGatewayRouteTableVPCAssociation

type CfnLocalGatewayRouteTableVPCAssociation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ILocalGatewayRouteTableVPCAssociationRef
	awscdk.ITaggable
	// The ID of the local gateway.
	AttrLocalGatewayId() *string
	// The ID of the association.
	AttrLocalGatewayRouteTableVpcAssociationId() *string
	// The state of the association.
	AttrState() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The ID of the local gateway route table.
	LocalGatewayRouteTableId() *string
	SetLocalGatewayRouteTableId(val *string)
	// A reference to a LocalGatewayRouteTableVPCAssociation resource.
	LocalGatewayRouteTableVpcAssociationRef() *interfacesawsec2.LocalGatewayRouteTableVPCAssociationReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags assigned to the association.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The ID of the VPC.
	VpcId() *string
	SetVpcId(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Associates the specified VPC with the specified local gateway route table.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayRouteTableVPCAssociation := awscdk.Aws_ec2.NewCfnLocalGatewayRouteTableVPCAssociation(this, jsii.String("MyCfnLocalGatewayRouteTableVPCAssociation"), &CfnLocalGatewayRouteTableVPCAssociationProps{
	LocalGatewayRouteTableId: jsii.String("localGatewayRouteTableId"),
	VpcId: jsii.String("vpcId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html

func NewCfnLocalGatewayRouteTableVPCAssociation

func NewCfnLocalGatewayRouteTableVPCAssociation(scope constructs.Construct, id *string, props *CfnLocalGatewayRouteTableVPCAssociationProps) CfnLocalGatewayRouteTableVPCAssociation

Create a new `AWS::EC2::LocalGatewayRouteTableVPCAssociation`.

type CfnLocalGatewayRouteTableVPCAssociationProps

type CfnLocalGatewayRouteTableVPCAssociationProps struct {
	// The ID of the local gateway route table.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html#cfn-ec2-localgatewayroutetablevpcassociation-localgatewayroutetableid
	//
	LocalGatewayRouteTableId *string `field:"required" json:"localGatewayRouteTableId" yaml:"localGatewayRouteTableId"`
	// The ID of the VPC.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html#cfn-ec2-localgatewayroutetablevpcassociation-vpcid
	//
	VpcId interface{} `field:"required" json:"vpcId" yaml:"vpcId"`
	// The tags assigned to the association.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html#cfn-ec2-localgatewayroutetablevpcassociation-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnLocalGatewayRouteTableVPCAssociation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayRouteTableVPCAssociationProps := &CfnLocalGatewayRouteTableVPCAssociationProps{
	LocalGatewayRouteTableId: jsii.String("localGatewayRouteTableId"),
	VpcId: jsii.String("vpcId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html

type CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation added in v2.70.0

type CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ILocalGatewayRouteTableVirtualInterfaceGroupAssociationRef
	awscdk.ITaggable
	// The ID of the local gateway.
	AttrLocalGatewayId() *string
	// The Amazon Resource Name (ARN) of the local gateway route table for the virtual interface group.
	AttrLocalGatewayRouteTableArn() *string
	// The ID of the association.
	AttrLocalGatewayRouteTableVirtualInterfaceGroupAssociationId() *string
	// The ID of the AWS account that owns the local gateway virtual interface group association.
	AttrOwnerId() *string
	// The state of the association.
	AttrState() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The ID of the local gateway route table.
	LocalGatewayRouteTableId() *string
	SetLocalGatewayRouteTableId(val *string)
	// A reference to a LocalGatewayRouteTableVirtualInterfaceGroupAssociation resource.
	LocalGatewayRouteTableVirtualInterfaceGroupAssociationRef() *interfacesawsec2.LocalGatewayRouteTableVirtualInterfaceGroupAssociationReference
	// The ID of the virtual interface group.
	LocalGatewayVirtualInterfaceGroupId() *string
	SetLocalGatewayVirtualInterfaceGroupId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags assigned to the association.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Describes an association between a local gateway route table and a virtual interface group.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation := awscdk.Aws_ec2.NewCfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation(this, jsii.String("MyCfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation"), &CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociationProps{
	LocalGatewayRouteTableId: jsii.String("localGatewayRouteTableId"),
	LocalGatewayVirtualInterfaceGroupId: jsii.String("localGatewayVirtualInterfaceGroupId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevirtualinterfacegroupassociation.html

func NewCfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation added in v2.70.0

Create a new `AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation`.

type CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociationProps added in v2.70.0

type CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociationProps struct {
	// The ID of the local gateway route table.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevirtualinterfacegroupassociation.html#cfn-ec2-localgatewayroutetablevirtualinterfacegroupassociation-localgatewayroutetableid
	//
	LocalGatewayRouteTableId *string `field:"required" json:"localGatewayRouteTableId" yaml:"localGatewayRouteTableId"`
	// The ID of the virtual interface group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevirtualinterfacegroupassociation.html#cfn-ec2-localgatewayroutetablevirtualinterfacegroupassociation-localgatewayvirtualinterfacegroupid
	//
	LocalGatewayVirtualInterfaceGroupId *string `field:"required" json:"localGatewayVirtualInterfaceGroupId" yaml:"localGatewayVirtualInterfaceGroupId"`
	// The tags assigned to the association.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevirtualinterfacegroupassociation.html#cfn-ec2-localgatewayroutetablevirtualinterfacegroupassociation-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociation`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayRouteTableVirtualInterfaceGroupAssociationProps := &CfnLocalGatewayRouteTableVirtualInterfaceGroupAssociationProps{
	LocalGatewayRouteTableId: jsii.String("localGatewayRouteTableId"),
	LocalGatewayVirtualInterfaceGroupId: jsii.String("localGatewayVirtualInterfaceGroupId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevirtualinterfacegroupassociation.html

type CfnLocalGatewayVirtualInterface added in v2.219.0

type CfnLocalGatewayVirtualInterface interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ILocalGatewayVirtualInterfaceRef
	awscdk.ITaggableV2
	// The current state of the local gateway virtual interface.
	AttrConfigurationState() *string
	// The Border Gateway Protocol (BGP) Autonomous System Number (ASN) of the local gateway.
	AttrLocalBgpAsn() *float64
	// The ID of the local gateway.
	AttrLocalGatewayId() *string
	// The ID of the virtual interface.
	AttrLocalGatewayVirtualInterfaceId() *string
	// The ID of the AWS account that owns the local gateway virtual interface.
	AttrOwnerId() *string
	// Tag Manager which manages the tags for this resource.
	CdkTagManager() awscdk.TagManager
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The local address.
	LocalAddress() *string
	SetLocalAddress(val *string)
	// The ID of the local gateway virtual interface group.
	LocalGatewayVirtualInterfaceGroupId() *string
	SetLocalGatewayVirtualInterfaceGroupId(val *string)
	// A reference to a LocalGatewayVirtualInterface resource.
	LocalGatewayVirtualInterfaceRef() *interfacesawsec2.LocalGatewayVirtualInterfaceReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// The Outpost LAG ID.
	OutpostLagId() *string
	SetOutpostLagId(val *string)
	// The peer address.
	PeerAddress() *string
	SetPeerAddress(val *string)
	// The peer BGP ASN.
	PeerBgpAsn() *float64
	SetPeerBgpAsn(val *float64)
	// The extended 32-bit ASN of the BGP peer for use with larger ASN values.
	PeerBgpAsnExtended() *float64
	SetPeerBgpAsnExtended(val *float64)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The tags assigned to the virtual interface.
	Tags() *[]*awscdk.CfnTag
	SetTags(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The ID of the VLAN.
	Vlan() *float64
	SetVlan(val *float64)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Describes a local gateway virtual interface.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayVirtualInterface := awscdk.Aws_ec2.NewCfnLocalGatewayVirtualInterface(this, jsii.String("MyCfnLocalGatewayVirtualInterface"), &CfnLocalGatewayVirtualInterfaceProps{
	LocalAddress: jsii.String("localAddress"),
	LocalGatewayVirtualInterfaceGroupId: jsii.String("localGatewayVirtualInterfaceGroupId"),
	OutpostLagId: jsii.String("outpostLagId"),
	PeerAddress: jsii.String("peerAddress"),
	Vlan: jsii.Number(123),

	// the properties below are optional
	PeerBgpAsn: jsii.Number(123),
	PeerBgpAsnExtended: jsii.Number(123),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html

func NewCfnLocalGatewayVirtualInterface added in v2.219.0

func NewCfnLocalGatewayVirtualInterface(scope constructs.Construct, id *string, props *CfnLocalGatewayVirtualInterfaceProps) CfnLocalGatewayVirtualInterface

Create a new `AWS::EC2::LocalGatewayVirtualInterface`.

type CfnLocalGatewayVirtualInterfaceGroup added in v2.219.0

type CfnLocalGatewayVirtualInterfaceGroup interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.ILocalGatewayVirtualInterfaceGroupRef
	awscdk.ITaggableV2
	// The current state of the local gateway virtual interface group.
	AttrConfigurationState() *string
	// The Amazon Resource Number (ARN) of the local gateway virtual interface group.
	AttrLocalGatewayVirtualInterfaceGroupArn() *string
	// The ID of the virtual interface group.
	AttrLocalGatewayVirtualInterfaceGroupId() *string
	// The IDs of the virtual interfaces.
	AttrLocalGatewayVirtualInterfaceIds() *[]*string
	// The ID of the AWS account that owns the local gateway virtual interface group.
	AttrOwnerId() *string
	// Tag Manager which manages the tags for this resource.
	CdkTagManager() awscdk.TagManager
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The Autonomous System Number(ASN) for the local Border Gateway Protocol (BGP).
	LocalBgpAsn() *float64
	SetLocalBgpAsn(val *float64)
	// The extended 32-bit ASN for the local BGP configuration.
	LocalBgpAsnExtended() *float64
	SetLocalBgpAsnExtended(val *float64)
	// The ID of the local gateway.
	LocalGatewayId() *string
	SetLocalGatewayId(val *string)
	// A reference to a LocalGatewayVirtualInterfaceGroup resource.
	LocalGatewayVirtualInterfaceGroupRef() *interfacesawsec2.LocalGatewayVirtualInterfaceGroupReference
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The tags assigned to the virtual interface group.
	Tags() *[]*awscdk.CfnTag
	SetTags(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Describes a local gateway virtual interface group.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayVirtualInterfaceGroup := awscdk.Aws_ec2.NewCfnLocalGatewayVirtualInterfaceGroup(this, jsii.String("MyCfnLocalGatewayVirtualInterfaceGroup"), &CfnLocalGatewayVirtualInterfaceGroupProps{
	LocalGatewayId: jsii.String("localGatewayId"),

	// the properties below are optional
	LocalBgpAsn: jsii.Number(123),
	LocalBgpAsnExtended: jsii.Number(123),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterfacegroup.html

func NewCfnLocalGatewayVirtualInterfaceGroup added in v2.219.0

func NewCfnLocalGatewayVirtualInterfaceGroup(scope constructs.Construct, id *string, props *CfnLocalGatewayVirtualInterfaceGroupProps) CfnLocalGatewayVirtualInterfaceGroup

Create a new `AWS::EC2::LocalGatewayVirtualInterfaceGroup`.

type CfnLocalGatewayVirtualInterfaceGroupProps added in v2.219.0

type CfnLocalGatewayVirtualInterfaceGroupProps struct {
	// The ID of the local gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterfacegroup.html#cfn-ec2-localgatewayvirtualinterfacegroup-localgatewayid
	//
	LocalGatewayId *string `field:"required" json:"localGatewayId" yaml:"localGatewayId"`
	// The Autonomous System Number(ASN) for the local Border Gateway Protocol (BGP).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterfacegroup.html#cfn-ec2-localgatewayvirtualinterfacegroup-localbgpasn
	//
	LocalBgpAsn *float64 `field:"optional" json:"localBgpAsn" yaml:"localBgpAsn"`
	// The extended 32-bit ASN for the local BGP configuration.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterfacegroup.html#cfn-ec2-localgatewayvirtualinterfacegroup-localbgpasnextended
	//
	LocalBgpAsnExtended *float64 `field:"optional" json:"localBgpAsnExtended" yaml:"localBgpAsnExtended"`
	// The tags assigned to the virtual interface group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterfacegroup.html#cfn-ec2-localgatewayvirtualinterfacegroup-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnLocalGatewayVirtualInterfaceGroup`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayVirtualInterfaceGroupProps := &CfnLocalGatewayVirtualInterfaceGroupProps{
	LocalGatewayId: jsii.String("localGatewayId"),

	// the properties below are optional
	LocalBgpAsn: jsii.Number(123),
	LocalBgpAsnExtended: jsii.Number(123),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterfacegroup.html

type CfnLocalGatewayVirtualInterfaceProps added in v2.219.0

type CfnLocalGatewayVirtualInterfaceProps struct {
	// The local address.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html#cfn-ec2-localgatewayvirtualinterface-localaddress
	//
	LocalAddress *string `field:"required" json:"localAddress" yaml:"localAddress"`
	// The ID of the local gateway virtual interface group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html#cfn-ec2-localgatewayvirtualinterface-localgatewayvirtualinterfacegroupid
	//
	LocalGatewayVirtualInterfaceGroupId *string `field:"required" json:"localGatewayVirtualInterfaceGroupId" yaml:"localGatewayVirtualInterfaceGroupId"`
	// The Outpost LAG ID.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html#cfn-ec2-localgatewayvirtualinterface-outpostlagid
	//
	OutpostLagId *string `field:"required" json:"outpostLagId" yaml:"outpostLagId"`
	// The peer address.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html#cfn-ec2-localgatewayvirtualinterface-peeraddress
	//
	PeerAddress *string `field:"required" json:"peerAddress" yaml:"peerAddress"`
	// The ID of the VLAN.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html#cfn-ec2-localgatewayvirtualinterface-vlan
	//
	Vlan *float64 `field:"required" json:"vlan" yaml:"vlan"`
	// The peer BGP ASN.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html#cfn-ec2-localgatewayvirtualinterface-peerbgpasn
	//
	PeerBgpAsn *float64 `field:"optional" json:"peerBgpAsn" yaml:"peerBgpAsn"`
	// The extended 32-bit ASN of the BGP peer for use with larger ASN values.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html#cfn-ec2-localgatewayvirtualinterface-peerbgpasnextended
	//
	PeerBgpAsnExtended *float64 `field:"optional" json:"peerBgpAsnExtended" yaml:"peerBgpAsnExtended"`
	// The tags assigned to the virtual interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html#cfn-ec2-localgatewayvirtualinterface-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnLocalGatewayVirtualInterface`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLocalGatewayVirtualInterfaceProps := &CfnLocalGatewayVirtualInterfaceProps{
	LocalAddress: jsii.String("localAddress"),
	LocalGatewayVirtualInterfaceGroupId: jsii.String("localGatewayVirtualInterfaceGroupId"),
	OutpostLagId: jsii.String("outpostLagId"),
	PeerAddress: jsii.String("peerAddress"),
	Vlan: jsii.Number(123),

	// the properties below are optional
	PeerBgpAsn: jsii.Number(123),
	PeerBgpAsnExtended: jsii.Number(123),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayvirtualinterface.html

type CfnNatGateway

type CfnNatGateway interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.INatGatewayRef
	awscdk.ITaggable
	// [Public NAT gateway only] The allocation ID of the Elastic IP address that's associated with the NAT gateway.
	AllocationId() *string
	SetAllocationId(val *string)
	// For regional NAT gateways only: Indicates whether AWS automatically manages AZ coverage.
	//
	// When enabled, the NAT gateway associates EIPs in all AZs where your VPC has subnets to handle outbound NAT traffic, expands to new AZs when you create subnets there, and retracts from AZs where you've removed all subnets. When disabled, you must manually manage which AZs the NAT gateway supports and their corresponding EIPs.
	//
	// A regional NAT gateway is a single NAT Gateway that works across multiple availability zones (AZs) in your VPC, providing redundancy, scalability and availability across all the AZs in a Region.
	//
	// For more information, see [Regional NAT gateways for automatic multi-AZ expansion](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateways-regional.html) in the *Amazon VPC User Guide* .
	AttrAutoProvisionZones() *string
	// For regional NAT gateways only: Indicates whether AWS automatically allocates additional Elastic IP addresses (EIPs) in an AZ when the NAT gateway needs more ports due to increased concurrent connections to a single destination from that AZ.
	//
	// For more information, see [Regional NAT gateways for automatic multi-AZ expansion](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateways-regional.html) in the *Amazon VPC User Guide* .
	AttrAutoScalingIps() *string
	// The ID of the network interface.
	AttrEniId() *string
	// The ID of the NAT gateway.
	AttrNatGatewayId() *string
	// For regional NAT gateways only, this is the ID of the NAT gateway.
	AttrRouteTableId() *string
	// Indicates whether this is a zonal (single-AZ) or regional (multi-AZ) NAT gateway.
	AvailabilityMode() *string
	SetAvailabilityMode(val *string)
	// For regional NAT gateways only: Specifies which Availability Zones you want the NAT gateway to support and the Elastic IP addresses (EIPs) to use in each AZ.
	AvailabilityZoneAddresses() interface{}
	SetAvailabilityZoneAddresses(val interface{})
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Indicates whether the NAT gateway supports public or private connectivity.
	ConnectivityType() *string
	SetConnectivityType(val *string)
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The maximum amount of time to wait (in seconds) before forcibly releasing the IP addresses if connections are still in progress.
	MaxDrainDurationSeconds() *float64
	SetMaxDrainDurationSeconds(val *float64)
	// A reference to a NatGateway resource.
	NatGatewayRef() *interfacesawsec2.NatGatewayReference
	// The tree node.
	Node() constructs.Node
	// The private IPv4 address to assign to the NAT gateway.
	PrivateIpAddress() *string
	SetPrivateIpAddress(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// Secondary EIP allocation IDs.
	SecondaryAllocationIds() *[]*string
	SetSecondaryAllocationIds(val *[]*string)
	// [Private NAT gateway only] The number of secondary private IPv4 addresses you want to assign to the NAT gateway.
	SecondaryPrivateIpAddressCount() *float64
	SetSecondaryPrivateIpAddressCount(val *float64)
	// Secondary private IPv4 addresses.
	SecondaryPrivateIpAddresses() *[]*string
	SetSecondaryPrivateIpAddresses(val *[]*string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The ID of the subnet in which the NAT gateway is located.
	SubnetId() *string
	SetSubnetId(val *string)
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags for the NAT gateway.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The ID of the VPC in which the NAT gateway is located.
	VpcId() *string
	SetVpcId(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a network address translation (NAT) gateway in the specified subnet.

You can create either a public NAT gateway or a private NAT gateway. The default is a public NAT gateway. If you create a public NAT gateway, you must specify an elastic IP address.

With a NAT gateway, instances in a private subnet can connect to the internet, other AWS services, or an on-premises network using the IP address of the NAT gateway. For more information, see [NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) in the *Amazon VPC User Guide* .

If you add a default route ( `AWS::EC2::Route` resource) that points to a NAT gateway, specify the NAT gateway ID for the route's `NatGatewayId` property.

> When you associate an Elastic IP address or secondary Elastic IP address with a public NAT gateway, the network border group of the Elastic IP address must match the network border group of the Availability Zone (AZ) that the public NAT gateway is in. Otherwise, the NAT gateway fails to launch. You can see the network border group for the AZ by viewing the details of the subnet. Similarly, you can view the network border group for the Elastic IP address by viewing its details. For more information, see [Allocate an Elastic IP address](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#allocate-eip) in the *Amazon VPC User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNatGateway := awscdk.Aws_ec2.NewCfnNatGateway(this, jsii.String("MyCfnNatGateway"), &CfnNatGatewayProps{
	AllocationId: jsii.String("allocationId"),
	AvailabilityMode: jsii.String("availabilityMode"),
	AvailabilityZoneAddresses: []interface{}{
		&AvailabilityZoneAddressProperty{
			AllocationIds: []*string{
				jsii.String("allocationIds"),
			},

			// the properties below are optional
			AvailabilityZone: jsii.String("availabilityZone"),
			AvailabilityZoneId: jsii.String("availabilityZoneId"),
		},
	},
	ConnectivityType: jsii.String("connectivityType"),
	MaxDrainDurationSeconds: jsii.Number(123),
	PrivateIpAddress: jsii.String("privateIpAddress"),
	SecondaryAllocationIds: []*string{
		jsii.String("secondaryAllocationIds"),
	},
	SecondaryPrivateIpAddressCount: jsii.Number(123),
	SecondaryPrivateIpAddresses: []*string{
		jsii.String("secondaryPrivateIpAddresses"),
	},
	SubnetId: jsii.String("subnetId"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	VpcId: jsii.String("vpcId"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html

func NewCfnNatGateway

func NewCfnNatGateway(scope constructs.Construct, id *string, props *CfnNatGatewayProps) CfnNatGateway

Create a new `AWS::EC2::NatGateway`.

type CfnNatGatewayProps

type CfnNatGatewayProps struct {
	// [Public NAT gateway only] The allocation ID of the Elastic IP address that's associated with the NAT gateway.
	//
	// This property is required for a public NAT gateway and cannot be specified with a private NAT gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-allocationid
	//
	AllocationId interface{} `field:"optional" json:"allocationId" yaml:"allocationId"`
	// Indicates whether this is a zonal (single-AZ) or regional (multi-AZ) NAT gateway.
	//
	// A zonal NAT gateway is a NAT Gateway that provides redundancy and scalability within a single availability zone. A regional NAT gateway is a single NAT Gateway that works across multiple availability zones (AZs) in your VPC, providing redundancy, scalability and availability across all the AZs in a Region.
	//
	// For more information, see [Regional NAT gateways for automatic multi-AZ expansion](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateways-regional.html) in the *Amazon VPC User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-availabilitymode
	//
	AvailabilityMode *string `field:"optional" json:"availabilityMode" yaml:"availabilityMode"`
	// For regional NAT gateways only: Specifies which Availability Zones you want the NAT gateway to support and the Elastic IP addresses (EIPs) to use in each AZ.
	//
	// The regional NAT gateway uses these EIPs to handle outbound NAT traffic from their respective AZs. If not specified, the NAT gateway will automatically expand to new AZs and associate EIPs upon detection of an elastic network interface. If you specify this parameter, auto-expansion is disabled and you must manually manage AZ coverage.
	//
	// A regional NAT gateway is a single NAT Gateway that works across multiple availability zones (AZs) in your VPC, providing redundancy, scalability and availability across all the AZs in a Region.
	//
	// For more information, see [Regional NAT gateways for automatic multi-AZ expansion](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateways-regional.html) in the *Amazon VPC User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-availabilityzoneaddresses
	//
	AvailabilityZoneAddresses interface{} `field:"optional" json:"availabilityZoneAddresses" yaml:"availabilityZoneAddresses"`
	// Indicates whether the NAT gateway supports public or private connectivity.
	//
	// The default is public connectivity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-connectivitytype
	//
	ConnectivityType *string `field:"optional" json:"connectivityType" yaml:"connectivityType"`
	// The maximum amount of time to wait (in seconds) before forcibly releasing the IP addresses if connections are still in progress.
	//
	// Default value is 350 seconds.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-maxdraindurationseconds
	//
	MaxDrainDurationSeconds *float64 `field:"optional" json:"maxDrainDurationSeconds" yaml:"maxDrainDurationSeconds"`
	// The private IPv4 address to assign to the NAT gateway.
	//
	// If you don't provide an address, a private IPv4 address will be automatically assigned.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-privateipaddress
	//
	PrivateIpAddress *string `field:"optional" json:"privateIpAddress" yaml:"privateIpAddress"`
	// Secondary EIP allocation IDs.
	//
	// For more information, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html) in the *Amazon VPC User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-secondaryallocationids
	//
	SecondaryAllocationIds *[]*string `field:"optional" json:"secondaryAllocationIds" yaml:"secondaryAllocationIds"`
	// [Private NAT gateway only] The number of secondary private IPv4 addresses you want to assign to the NAT gateway.
	//
	// For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the *Amazon Virtual Private Cloud User Guide* .
	//
	// `SecondaryPrivateIpAddressCount` and `SecondaryPrivateIpAddresses` cannot be set at the same time.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-secondaryprivateipaddresscount
	//
	SecondaryPrivateIpAddressCount *float64 `field:"optional" json:"secondaryPrivateIpAddressCount" yaml:"secondaryPrivateIpAddressCount"`
	// Secondary private IPv4 addresses.
	//
	// For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the *Amazon Virtual Private Cloud User Guide* .
	//
	// `SecondaryPrivateIpAddressCount` and `SecondaryPrivateIpAddresses` cannot be set at the same time.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-secondaryprivateipaddresses
	//
	SecondaryPrivateIpAddresses *[]*string `field:"optional" json:"secondaryPrivateIpAddresses" yaml:"secondaryPrivateIpAddresses"`
	// The ID of the subnet in which the NAT gateway is located.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-subnetid
	//
	SubnetId interface{} `field:"optional" json:"subnetId" yaml:"subnetId"`
	// The tags for the NAT gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The ID of the VPC in which the NAT gateway is located.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-vpcid
	//
	VpcId *string `field:"optional" json:"vpcId" yaml:"vpcId"`
}

Properties for defining a `CfnNatGateway`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNatGatewayProps := &CfnNatGatewayProps{
	AllocationId: jsii.String("allocationId"),
	AvailabilityMode: jsii.String("availabilityMode"),
	AvailabilityZoneAddresses: []interface{}{
		&AvailabilityZoneAddressProperty{
			AllocationIds: []*string{
				jsii.String("allocationIds"),
			},

			// the properties below are optional
			AvailabilityZone: jsii.String("availabilityZone"),
			AvailabilityZoneId: jsii.String("availabilityZoneId"),
		},
	},
	ConnectivityType: jsii.String("connectivityType"),
	MaxDrainDurationSeconds: jsii.Number(123),
	PrivateIpAddress: jsii.String("privateIpAddress"),
	SecondaryAllocationIds: []*string{
		jsii.String("secondaryAllocationIds"),
	},
	SecondaryPrivateIpAddressCount: jsii.Number(123),
	SecondaryPrivateIpAddresses: []*string{
		jsii.String("secondaryPrivateIpAddresses"),
	},
	SubnetId: jsii.String("subnetId"),
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	VpcId: jsii.String("vpcId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html

type CfnNatGateway_AvailabilityZoneAddressProperty added in v2.230.0

type CfnNatGateway_AvailabilityZoneAddressProperty struct {
	// The allocation IDs of the Elastic IP addresses (EIPs) to be used for handling outbound NAT traffic in this specific Availability Zone.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-natgateway-availabilityzoneaddress.html#cfn-ec2-natgateway-availabilityzoneaddress-allocationids
	//
	AllocationIds *[]*string `field:"required" json:"allocationIds" yaml:"allocationIds"`
	// For regional NAT gateways only: The Availability Zone where this specific NAT gateway configuration will be active.
	//
	// Each AZ in a regional NAT gateway has its own configuration to handle outbound NAT traffic from that AZ.
	//
	// A regional NAT gateway is a single NAT Gateway that works across multiple availability zones (AZs) in your VPC, providing redundancy, scalability and availability across all the AZs in a Region.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-natgateway-availabilityzoneaddress.html#cfn-ec2-natgateway-availabilityzoneaddress-availabilityzone
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// For regional NAT gateways only: The ID of the Availability Zone where this specific NAT gateway configuration will be active.
	//
	// Each AZ in a regional NAT gateway has its own configuration to handle outbound NAT traffic from that AZ. Use this instead of AvailabilityZone for consistent identification of AZs across AWS Regions.
	//
	// A regional NAT gateway is a single NAT Gateway that works across multiple availability zones (AZs) in your VPC, providing redundancy, scalability and availability across all the AZs in a Region.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-natgateway-availabilityzoneaddress.html#cfn-ec2-natgateway-availabilityzoneaddress-availabilityzoneid
	//
	AvailabilityZoneId *string `field:"optional" json:"availabilityZoneId" yaml:"availabilityZoneId"`
}

For regional NAT gateways only: The configuration specifying which Elastic IP address (EIP) to use for handling outbound NAT traffic from a specific Availability Zone.

A regional NAT gateway is a single NAT Gateway that works across multiple availability zones (AZs) in your VPC, providing redundancy, scalability and availability across all the AZs in a Region.

For more information, see [Regional NAT gateways for automatic multi-AZ expansion](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateways-regional.html) in the *Amazon VPC User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

availabilityZoneAddressProperty := &AvailabilityZoneAddressProperty{
	AllocationIds: []*string{
		jsii.String("allocationIds"),
	},

	// the properties below are optional
	AvailabilityZone: jsii.String("availabilityZone"),
	AvailabilityZoneId: jsii.String("availabilityZoneId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-natgateway-availabilityzoneaddress.html

type CfnNetworkAcl

type CfnNetworkAcl interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.INetworkAclRef
	awscdk.ITaggable
	// The ID of the network ACL.
	AttrId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// A reference to a NetworkAcl resource.
	NetworkAclRef() *interfacesawsec2.NetworkAclReference
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags for the network ACL.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The ID of the VPC for the network ACL.
	VpcId() *string
	SetVpcId(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a network ACL for your VPC.

To add a network ACL entry, see [AWS::EC2::NetworkAclEntry](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkAcl := awscdk.Aws_ec2.NewCfnNetworkAcl(this, jsii.String("MyCfnNetworkAcl"), &CfnNetworkAclProps{
	VpcId: jsii.String("vpcId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkacl.html

func NewCfnNetworkAcl

func NewCfnNetworkAcl(scope constructs.Construct, id *string, props *CfnNetworkAclProps) CfnNetworkAcl

Create a new `AWS::EC2::NetworkAcl`.

type CfnNetworkAclEntry

type CfnNetworkAclEntry interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.INetworkAclEntryRef
	// The ID of the network ACL entry.
	AttrId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// The IPv4 CIDR range to allow or deny, in CIDR notation (for example, 172.16.0.0/24). You must specify an IPv4 CIDR block or an IPv6 CIDR block.
	CidrBlock() *string
	SetCidrBlock(val *string)
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// Whether this rule applies to egress traffic from the subnet ( `true` ) or ingress traffic to the subnet ( `false` ).
	Egress() interface{}
	SetEgress(val interface{})
	Env() *interfaces.ResourceEnvironment
	// The Internet Control Message Protocol (ICMP) code and type.
	Icmp() interface{}
	SetIcmp(val interface{})
	// The IPv6 network range to allow or deny, in CIDR notation.
	Ipv6CidrBlock() *string
	SetIpv6CidrBlock(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// A reference to a NetworkAclEntry resource.
	NetworkAclEntryRef() *interfacesawsec2.NetworkAclEntryReference
	// The ID of the ACL for the entry.
	NetworkAclId() *string
	SetNetworkAclId(val *string)
	// The tree node.
	Node() constructs.Node
	// The range of port numbers for the UDP/TCP protocol.
	PortRange() interface{}
	SetPortRange(val interface{})
	// The IP protocol that the rule applies to.
	Protocol() *float64
	SetProtocol(val *float64)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// Whether to allow or deny traffic that matches the rule;.
	RuleAction() *string
	SetRuleAction(val *string)
	// Rule number to assign to the entry, such as 100.
	RuleNumber() *float64
	SetRuleNumber(val *float64)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies an entry, known as a rule, in a network ACL with a rule number you specify.

Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules.

To create the network ACL, see [AWS::EC2::NetworkAcl](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkacl.html) .

For information about the protocol value, see [Protocol Numbers](https://docs.aws.amazon.com/https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml) on the Internet Assigned Numbers Authority (IANA) website.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkAclEntry := awscdk.Aws_ec2.NewCfnNetworkAclEntry(this, jsii.String("MyCfnNetworkAclEntry"), &CfnNetworkAclEntryProps{
	NetworkAclId: jsii.String("networkAclId"),
	Protocol: jsii.Number(123),
	RuleAction: jsii.String("ruleAction"),
	RuleNumber: jsii.Number(123),

	// the properties below are optional
	CidrBlock: jsii.String("cidrBlock"),
	Egress: jsii.Boolean(false),
	Icmp: &IcmpProperty{
		Code: jsii.Number(123),
		Type: jsii.Number(123),
	},
	Ipv6CidrBlock: jsii.String("ipv6CidrBlock"),
	PortRange: &PortRangeProperty{
		From: jsii.Number(123),
		To: jsii.Number(123),
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html

func NewCfnNetworkAclEntry

func NewCfnNetworkAclEntry(scope constructs.Construct, id *string, props *CfnNetworkAclEntryProps) CfnNetworkAclEntry

Create a new `AWS::EC2::NetworkAclEntry`.

type CfnNetworkAclEntryProps

type CfnNetworkAclEntryProps struct {
	// The ID of the ACL for the entry.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html#cfn-ec2-networkaclentry-networkaclid
	//
	NetworkAclId *string `field:"required" json:"networkAclId" yaml:"networkAclId"`
	// The IP protocol that the rule applies to.
	//
	// You must specify -1 or a protocol number. You can specify -1 for all protocols.
	//
	// > If you specify -1, all ports are opened and the `PortRange` property is ignored.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html#cfn-ec2-networkaclentry-protocol
	//
	Protocol *float64 `field:"required" json:"protocol" yaml:"protocol"`
	// Whether to allow or deny traffic that matches the rule;
	//
	// valid values are "allow" or "deny".
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html#cfn-ec2-networkaclentry-ruleaction
	//
	RuleAction *string `field:"required" json:"ruleAction" yaml:"ruleAction"`
	// Rule number to assign to the entry, such as 100.
	//
	// ACL entries are processed in ascending order by rule number. Entries can't use the same rule number unless one is an egress rule and the other is an ingress rule.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html#cfn-ec2-networkaclentry-rulenumber
	//
	RuleNumber *float64 `field:"required" json:"ruleNumber" yaml:"ruleNumber"`
	// The IPv4 CIDR range to allow or deny, in CIDR notation (for example, 172.16.0.0/24). You must specify an IPv4 CIDR block or an IPv6 CIDR block.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html#cfn-ec2-networkaclentry-cidrblock
	//
	CidrBlock *string `field:"optional" json:"cidrBlock" yaml:"cidrBlock"`
	// Whether this rule applies to egress traffic from the subnet ( `true` ) or ingress traffic to the subnet ( `false` ).
	//
	// By default, AWS CloudFormation specifies `false` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html#cfn-ec2-networkaclentry-egress
	//
	Egress interface{} `field:"optional" json:"egress" yaml:"egress"`
	// The Internet Control Message Protocol (ICMP) code and type.
	//
	// Required if specifying 1 (ICMP) for the protocol parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html#cfn-ec2-networkaclentry-icmp
	//
	Icmp interface{} `field:"optional" json:"icmp" yaml:"icmp"`
	// The IPv6 network range to allow or deny, in CIDR notation.
	//
	// You must specify an IPv4 CIDR block or an IPv6 CIDR block.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html#cfn-ec2-networkaclentry-ipv6cidrblock
	//
	Ipv6CidrBlock *string `field:"optional" json:"ipv6CidrBlock" yaml:"ipv6CidrBlock"`
	// The range of port numbers for the UDP/TCP protocol.
	//
	// Required if specifying 6 (TCP) or 17 (UDP) for the protocol parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html#cfn-ec2-networkaclentry-portrange
	//
	PortRange interface{} `field:"optional" json:"portRange" yaml:"portRange"`
}

Properties for defining a `CfnNetworkAclEntry`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkAclEntryProps := &CfnNetworkAclEntryProps{
	NetworkAclId: jsii.String("networkAclId"),
	Protocol: jsii.Number(123),
	RuleAction: jsii.String("ruleAction"),
	RuleNumber: jsii.Number(123),

	// the properties below are optional
	CidrBlock: jsii.String("cidrBlock"),
	Egress: jsii.Boolean(false),
	Icmp: &IcmpProperty{
		Code: jsii.Number(123),
		Type: jsii.Number(123),
	},
	Ipv6CidrBlock: jsii.String("ipv6CidrBlock"),
	PortRange: &PortRangeProperty{
		From: jsii.Number(123),
		To: jsii.Number(123),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html

type CfnNetworkAclEntry_IcmpProperty

type CfnNetworkAclEntry_IcmpProperty struct {
	// The Internet Control Message Protocol (ICMP) code.
	//
	// You can use -1 to specify all ICMP codes for the given ICMP type. Required if you specify 1 (ICMP) for the protocol parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html#cfn-ec2-networkaclentry-icmp-code
	//
	Code *float64 `field:"optional" json:"code" yaml:"code"`
	// The Internet Control Message Protocol (ICMP) type.
	//
	// You can use -1 to specify all ICMP types. Conditional requirement: Required if you specify 1 (ICMP) for the `CreateNetworkAclEntry` protocol parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html#cfn-ec2-networkaclentry-icmp-type
	//
	Type *float64 `field:"optional" json:"type" yaml:"type"`
}

Describes the ICMP type and code.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

icmpProperty := &IcmpProperty{
	Code: jsii.Number(123),
	Type: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html

type CfnNetworkAclEntry_PortRangeProperty

type CfnNetworkAclEntry_PortRangeProperty struct {
	// The first port in the range.
	//
	// Required if you specify 6 (TCP) or 17 (UDP) for the protocol parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html#cfn-ec2-networkaclentry-portrange-from
	//
	From *float64 `field:"optional" json:"from" yaml:"from"`
	// The last port in the range.
	//
	// Required if you specify 6 (TCP) or 17 (UDP) for the protocol parameter.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html#cfn-ec2-networkaclentry-portrange-to
	//
	To *float64 `field:"optional" json:"to" yaml:"to"`
}

Describes a range of ports.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

portRangeProperty := &PortRangeProperty{
	From: jsii.Number(123),
	To: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html

type CfnNetworkAclProps

type CfnNetworkAclProps struct {
	// The ID of the VPC for the network ACL.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkacl.html#cfn-ec2-networkacl-vpcid
	//
	VpcId interface{} `field:"required" json:"vpcId" yaml:"vpcId"`
	// The tags for the network ACL.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkacl.html#cfn-ec2-networkacl-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnNetworkAcl`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkAclProps := &CfnNetworkAclProps{
	VpcId: jsii.String("vpcId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkacl.html

type CfnNetworkInsightsAccessScope added in v2.9.0

type CfnNetworkInsightsAccessScope interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.INetworkInsightsAccessScopeRef
	awscdk.ITaggable
	// The creation date.
	AttrCreatedDate() *string
	// The ARN of the Network Access Scope.
	AttrNetworkInsightsAccessScopeArn() *string
	// The ID of the Network Access Scope.
	AttrNetworkInsightsAccessScopeId() *string
	// The last updated date.
	AttrUpdatedDate() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The paths to exclude.
	ExcludePaths() interface{}
	SetExcludePaths(val interface{})
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The paths to match.
	MatchPaths() interface{}
	SetMatchPaths(val interface{})
	// A reference to a NetworkInsightsAccessScope resource.
	NetworkInsightsAccessScopeRef() *interfacesawsec2.NetworkInsightsAccessScopeReference
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Describes a Network Access Scope.

A Network Access Scope defines outbound (egress) and inbound (ingress) traffic patterns, including sources, destinations, paths, and traffic types.

Network Access Analyzer identifies unintended network access to your resources on AWS . When you start an analysis on a Network Access Scope, Network Access Analyzer produces findings. For more information, see the [Network Access Analyzer User Guide](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkInsightsAccessScope := awscdk.Aws_ec2.NewCfnNetworkInsightsAccessScope(this, jsii.String("MyCfnNetworkInsightsAccessScope"), &CfnNetworkInsightsAccessScopeProps{
	ExcludePaths: []interface{}{
		&AccessScopePathRequestProperty{
			Destination: &PathStatementRequestProperty{
				PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
					DestinationAddresses: []*string{
						jsii.String("destinationAddresses"),
					},
					DestinationPorts: []*string{
						jsii.String("destinationPorts"),
					},
					DestinationPrefixLists: []*string{
						jsii.String("destinationPrefixLists"),
					},
					Protocols: []*string{
						jsii.String("protocols"),
					},
					SourceAddresses: []*string{
						jsii.String("sourceAddresses"),
					},
					SourcePorts: []*string{
						jsii.String("sourcePorts"),
					},
					SourcePrefixLists: []*string{
						jsii.String("sourcePrefixLists"),
					},
				},
				ResourceStatement: &ResourceStatementRequestProperty{
					Resources: []*string{
						jsii.String("resources"),
					},
					ResourceTypes: []*string{
						jsii.String("resourceTypes"),
					},
				},
			},
			Source: &PathStatementRequestProperty{
				PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
					DestinationAddresses: []*string{
						jsii.String("destinationAddresses"),
					},
					DestinationPorts: []*string{
						jsii.String("destinationPorts"),
					},
					DestinationPrefixLists: []*string{
						jsii.String("destinationPrefixLists"),
					},
					Protocols: []*string{
						jsii.String("protocols"),
					},
					SourceAddresses: []*string{
						jsii.String("sourceAddresses"),
					},
					SourcePorts: []*string{
						jsii.String("sourcePorts"),
					},
					SourcePrefixLists: []*string{
						jsii.String("sourcePrefixLists"),
					},
				},
				ResourceStatement: &ResourceStatementRequestProperty{
					Resources: []*string{
						jsii.String("resources"),
					},
					ResourceTypes: []*string{
						jsii.String("resourceTypes"),
					},
				},
			},
			ThroughResources: []interface{}{
				&ThroughResourcesStatementRequestProperty{
					ResourceStatement: &ResourceStatementRequestProperty{
						Resources: []*string{
							jsii.String("resources"),
						},
						ResourceTypes: []*string{
							jsii.String("resourceTypes"),
						},
					},
				},
			},
		},
	},
	MatchPaths: []interface{}{
		&AccessScopePathRequestProperty{
			Destination: &PathStatementRequestProperty{
				PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
					DestinationAddresses: []*string{
						jsii.String("destinationAddresses"),
					},
					DestinationPorts: []*string{
						jsii.String("destinationPorts"),
					},
					DestinationPrefixLists: []*string{
						jsii.String("destinationPrefixLists"),
					},
					Protocols: []*string{
						jsii.String("protocols"),
					},
					SourceAddresses: []*string{
						jsii.String("sourceAddresses"),
					},
					SourcePorts: []*string{
						jsii.String("sourcePorts"),
					},
					SourcePrefixLists: []*string{
						jsii.String("sourcePrefixLists"),
					},
				},
				ResourceStatement: &ResourceStatementRequestProperty{
					Resources: []*string{
						jsii.String("resources"),
					},
					ResourceTypes: []*string{
						jsii.String("resourceTypes"),
					},
				},
			},
			Source: &PathStatementRequestProperty{
				PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
					DestinationAddresses: []*string{
						jsii.String("destinationAddresses"),
					},
					DestinationPorts: []*string{
						jsii.String("destinationPorts"),
					},
					DestinationPrefixLists: []*string{
						jsii.String("destinationPrefixLists"),
					},
					Protocols: []*string{
						jsii.String("protocols"),
					},
					SourceAddresses: []*string{
						jsii.String("sourceAddresses"),
					},
					SourcePorts: []*string{
						jsii.String("sourcePorts"),
					},
					SourcePrefixLists: []*string{
						jsii.String("sourcePrefixLists"),
					},
				},
				ResourceStatement: &ResourceStatementRequestProperty{
					Resources: []*string{
						jsii.String("resources"),
					},
					ResourceTypes: []*string{
						jsii.String("resourceTypes"),
					},
				},
			},
			ThroughResources: []interface{}{
				&ThroughResourcesStatementRequestProperty{
					ResourceStatement: &ResourceStatementRequestProperty{
						Resources: []*string{
							jsii.String("resources"),
						},
						ResourceTypes: []*string{
							jsii.String("resourceTypes"),
						},
					},
				},
			},
		},
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsaccessscope.html

func NewCfnNetworkInsightsAccessScope added in v2.9.0

func NewCfnNetworkInsightsAccessScope(scope constructs.Construct, id *string, props *CfnNetworkInsightsAccessScopeProps) CfnNetworkInsightsAccessScope

Create a new `AWS::EC2::NetworkInsightsAccessScope`.

type CfnNetworkInsightsAccessScopeAnalysis added in v2.9.0

type CfnNetworkInsightsAccessScopeAnalysis interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.INetworkInsightsAccessScopeAnalysisRef
	awscdk.ITaggable
	// The number of network interfaces analyzed.
	AttrAnalyzedEniCount() *float64
	// The end date of the analysis.
	AttrEndDate() *string
	// Indicates whether there are findings (true | false | unknown).
	AttrFindingsFound() *string
	// The ARN of the Network Access Scope analysis.
	AttrNetworkInsightsAccessScopeAnalysisArn() *string
	// The ID of the Network Access Scope analysis.
	AttrNetworkInsightsAccessScopeAnalysisId() *string
	// The start date of the analysis.
	AttrStartDate() *string
	// The status of the analysis (running | succeeded | failed).
	AttrStatus() *string
	// The status message.
	AttrStatusMessage() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// A reference to a NetworkInsightsAccessScopeAnalysis resource.
	NetworkInsightsAccessScopeAnalysisRef() *interfacesawsec2.NetworkInsightsAccessScopeAnalysisReference
	// The ID of the Network Access Scope.
	NetworkInsightsAccessScopeId() *string
	SetNetworkInsightsAccessScopeId(val *string)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Describes a Network Access Scope analysis.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkInsightsAccessScopeAnalysis := awscdk.Aws_ec2.NewCfnNetworkInsightsAccessScopeAnalysis(this, jsii.String("MyCfnNetworkInsightsAccessScopeAnalysis"), &CfnNetworkInsightsAccessScopeAnalysisProps{
	NetworkInsightsAccessScopeId: jsii.String("networkInsightsAccessScopeId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsaccessscopeanalysis.html

func NewCfnNetworkInsightsAccessScopeAnalysis added in v2.9.0

func NewCfnNetworkInsightsAccessScopeAnalysis(scope constructs.Construct, id *string, props *CfnNetworkInsightsAccessScopeAnalysisProps) CfnNetworkInsightsAccessScopeAnalysis

Create a new `AWS::EC2::NetworkInsightsAccessScopeAnalysis`.

type CfnNetworkInsightsAccessScopeAnalysisProps added in v2.9.0

type CfnNetworkInsightsAccessScopeAnalysisProps struct {
	// The ID of the Network Access Scope.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsaccessscopeanalysis.html#cfn-ec2-networkinsightsaccessscopeanalysis-networkinsightsaccessscopeid
	//
	NetworkInsightsAccessScopeId *string `field:"required" json:"networkInsightsAccessScopeId" yaml:"networkInsightsAccessScopeId"`
	// The tags.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsaccessscopeanalysis.html#cfn-ec2-networkinsightsaccessscopeanalysis-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnNetworkInsightsAccessScopeAnalysis`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkInsightsAccessScopeAnalysisProps := &CfnNetworkInsightsAccessScopeAnalysisProps{
	NetworkInsightsAccessScopeId: jsii.String("networkInsightsAccessScopeId"),

	// the properties below are optional
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsaccessscopeanalysis.html

type CfnNetworkInsightsAccessScopeProps added in v2.9.0

type CfnNetworkInsightsAccessScopeProps struct {
	// The paths to exclude.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsaccessscope.html#cfn-ec2-networkinsightsaccessscope-excludepaths
	//
	ExcludePaths interface{} `field:"optional" json:"excludePaths" yaml:"excludePaths"`
	// The paths to match.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsaccessscope.html#cfn-ec2-networkinsightsaccessscope-matchpaths
	//
	MatchPaths interface{} `field:"optional" json:"matchPaths" yaml:"matchPaths"`
	// The tags.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsaccessscope.html#cfn-ec2-networkinsightsaccessscope-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnNetworkInsightsAccessScope`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkInsightsAccessScopeProps := &CfnNetworkInsightsAccessScopeProps{
	ExcludePaths: []interface{}{
		&AccessScopePathRequestProperty{
			Destination: &PathStatementRequestProperty{
				PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
					DestinationAddresses: []*string{
						jsii.String("destinationAddresses"),
					},
					DestinationPorts: []*string{
						jsii.String("destinationPorts"),
					},
					DestinationPrefixLists: []*string{
						jsii.String("destinationPrefixLists"),
					},
					Protocols: []*string{
						jsii.String("protocols"),
					},
					SourceAddresses: []*string{
						jsii.String("sourceAddresses"),
					},
					SourcePorts: []*string{
						jsii.String("sourcePorts"),
					},
					SourcePrefixLists: []*string{
						jsii.String("sourcePrefixLists"),
					},
				},
				ResourceStatement: &ResourceStatementRequestProperty{
					Resources: []*string{
						jsii.String("resources"),
					},
					ResourceTypes: []*string{
						jsii.String("resourceTypes"),
					},
				},
			},
			Source: &PathStatementRequestProperty{
				PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
					DestinationAddresses: []*string{
						jsii.String("destinationAddresses"),
					},
					DestinationPorts: []*string{
						jsii.String("destinationPorts"),
					},
					DestinationPrefixLists: []*string{
						jsii.String("destinationPrefixLists"),
					},
					Protocols: []*string{
						jsii.String("protocols"),
					},
					SourceAddresses: []*string{
						jsii.String("sourceAddresses"),
					},
					SourcePorts: []*string{
						jsii.String("sourcePorts"),
					},
					SourcePrefixLists: []*string{
						jsii.String("sourcePrefixLists"),
					},
				},
				ResourceStatement: &ResourceStatementRequestProperty{
					Resources: []*string{
						jsii.String("resources"),
					},
					ResourceTypes: []*string{
						jsii.String("resourceTypes"),
					},
				},
			},
			ThroughResources: []interface{}{
				&ThroughResourcesStatementRequestProperty{
					ResourceStatement: &ResourceStatementRequestProperty{
						Resources: []*string{
							jsii.String("resources"),
						},
						ResourceTypes: []*string{
							jsii.String("resourceTypes"),
						},
					},
				},
			},
		},
	},
	MatchPaths: []interface{}{
		&AccessScopePathRequestProperty{
			Destination: &PathStatementRequestProperty{
				PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
					DestinationAddresses: []*string{
						jsii.String("destinationAddresses"),
					},
					DestinationPorts: []*string{
						jsii.String("destinationPorts"),
					},
					DestinationPrefixLists: []*string{
						jsii.String("destinationPrefixLists"),
					},
					Protocols: []*string{
						jsii.String("protocols"),
					},
					SourceAddresses: []*string{
						jsii.String("sourceAddresses"),
					},
					SourcePorts: []*string{
						jsii.String("sourcePorts"),
					},
					SourcePrefixLists: []*string{
						jsii.String("sourcePrefixLists"),
					},
				},
				ResourceStatement: &ResourceStatementRequestProperty{
					Resources: []*string{
						jsii.String("resources"),
					},
					ResourceTypes: []*string{
						jsii.String("resourceTypes"),
					},
				},
			},
			Source: &PathStatementRequestProperty{
				PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
					DestinationAddresses: []*string{
						jsii.String("destinationAddresses"),
					},
					DestinationPorts: []*string{
						jsii.String("destinationPorts"),
					},
					DestinationPrefixLists: []*string{
						jsii.String("destinationPrefixLists"),
					},
					Protocols: []*string{
						jsii.String("protocols"),
					},
					SourceAddresses: []*string{
						jsii.String("sourceAddresses"),
					},
					SourcePorts: []*string{
						jsii.String("sourcePorts"),
					},
					SourcePrefixLists: []*string{
						jsii.String("sourcePrefixLists"),
					},
				},
				ResourceStatement: &ResourceStatementRequestProperty{
					Resources: []*string{
						jsii.String("resources"),
					},
					ResourceTypes: []*string{
						jsii.String("resourceTypes"),
					},
				},
			},
			ThroughResources: []interface{}{
				&ThroughResourcesStatementRequestProperty{
					ResourceStatement: &ResourceStatementRequestProperty{
						Resources: []*string{
							jsii.String("resources"),
						},
						ResourceTypes: []*string{
							jsii.String("resourceTypes"),
						},
					},
				},
			},
		},
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsaccessscope.html

type CfnNetworkInsightsAccessScope_AccessScopePathRequestProperty added in v2.9.0

type CfnNetworkInsightsAccessScope_AccessScopePathRequestProperty struct {
	// The destination.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-accessscopepathrequest.html#cfn-ec2-networkinsightsaccessscope-accessscopepathrequest-destination
	//
	Destination interface{} `field:"optional" json:"destination" yaml:"destination"`
	// The source.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-accessscopepathrequest.html#cfn-ec2-networkinsightsaccessscope-accessscopepathrequest-source
	//
	Source interface{} `field:"optional" json:"source" yaml:"source"`
	// The through resources.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-accessscopepathrequest.html#cfn-ec2-networkinsightsaccessscope-accessscopepathrequest-throughresources
	//
	ThroughResources interface{} `field:"optional" json:"throughResources" yaml:"throughResources"`
}

Describes a path.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

accessScopePathRequestProperty := &AccessScopePathRequestProperty{
	Destination: &PathStatementRequestProperty{
		PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
			DestinationAddresses: []*string{
				jsii.String("destinationAddresses"),
			},
			DestinationPorts: []*string{
				jsii.String("destinationPorts"),
			},
			DestinationPrefixLists: []*string{
				jsii.String("destinationPrefixLists"),
			},
			Protocols: []*string{
				jsii.String("protocols"),
			},
			SourceAddresses: []*string{
				jsii.String("sourceAddresses"),
			},
			SourcePorts: []*string{
				jsii.String("sourcePorts"),
			},
			SourcePrefixLists: []*string{
				jsii.String("sourcePrefixLists"),
			},
		},
		ResourceStatement: &ResourceStatementRequestProperty{
			Resources: []*string{
				jsii.String("resources"),
			},
			ResourceTypes: []*string{
				jsii.String("resourceTypes"),
			},
		},
	},
	Source: &PathStatementRequestProperty{
		PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
			DestinationAddresses: []*string{
				jsii.String("destinationAddresses"),
			},
			DestinationPorts: []*string{
				jsii.String("destinationPorts"),
			},
			DestinationPrefixLists: []*string{
				jsii.String("destinationPrefixLists"),
			},
			Protocols: []*string{
				jsii.String("protocols"),
			},
			SourceAddresses: []*string{
				jsii.String("sourceAddresses"),
			},
			SourcePorts: []*string{
				jsii.String("sourcePorts"),
			},
			SourcePrefixLists: []*string{
				jsii.String("sourcePrefixLists"),
			},
		},
		ResourceStatement: &ResourceStatementRequestProperty{
			Resources: []*string{
				jsii.String("resources"),
			},
			ResourceTypes: []*string{
				jsii.String("resourceTypes"),
			},
		},
	},
	ThroughResources: []interface{}{
		&ThroughResourcesStatementRequestProperty{
			ResourceStatement: &ResourceStatementRequestProperty{
				Resources: []*string{
					jsii.String("resources"),
				},
				ResourceTypes: []*string{
					jsii.String("resourceTypes"),
				},
			},
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-accessscopepathrequest.html

type CfnNetworkInsightsAccessScope_PacketHeaderStatementRequestProperty added in v2.9.0

type CfnNetworkInsightsAccessScope_PacketHeaderStatementRequestProperty struct {
	// The destination addresses.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-packetheaderstatementrequest.html#cfn-ec2-networkinsightsaccessscope-packetheaderstatementrequest-destinationaddresses
	//
	DestinationAddresses *[]*string `field:"optional" json:"destinationAddresses" yaml:"destinationAddresses"`
	// The destination ports.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-packetheaderstatementrequest.html#cfn-ec2-networkinsightsaccessscope-packetheaderstatementrequest-destinationports
	//
	DestinationPorts *[]*string `field:"optional" json:"destinationPorts" yaml:"destinationPorts"`
	// The destination prefix lists.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-packetheaderstatementrequest.html#cfn-ec2-networkinsightsaccessscope-packetheaderstatementrequest-destinationprefixlists
	//
	DestinationPrefixLists *[]*string `field:"optional" json:"destinationPrefixLists" yaml:"destinationPrefixLists"`
	// The protocols.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-packetheaderstatementrequest.html#cfn-ec2-networkinsightsaccessscope-packetheaderstatementrequest-protocols
	//
	Protocols *[]*string `field:"optional" json:"protocols" yaml:"protocols"`
	// The source addresses.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-packetheaderstatementrequest.html#cfn-ec2-networkinsightsaccessscope-packetheaderstatementrequest-sourceaddresses
	//
	SourceAddresses *[]*string `field:"optional" json:"sourceAddresses" yaml:"sourceAddresses"`
	// The source ports.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-packetheaderstatementrequest.html#cfn-ec2-networkinsightsaccessscope-packetheaderstatementrequest-sourceports
	//
	SourcePorts *[]*string `field:"optional" json:"sourcePorts" yaml:"sourcePorts"`
	// The source prefix lists.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-packetheaderstatementrequest.html#cfn-ec2-networkinsightsaccessscope-packetheaderstatementrequest-sourceprefixlists
	//
	SourcePrefixLists *[]*string `field:"optional" json:"sourcePrefixLists" yaml:"sourcePrefixLists"`
}

Describes a packet header statement.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

packetHeaderStatementRequestProperty := &PacketHeaderStatementRequestProperty{
	DestinationAddresses: []*string{
		jsii.String("destinationAddresses"),
	},
	DestinationPorts: []*string{
		jsii.String("destinationPorts"),
	},
	DestinationPrefixLists: []*string{
		jsii.String("destinationPrefixLists"),
	},
	Protocols: []*string{
		jsii.String("protocols"),
	},
	SourceAddresses: []*string{
		jsii.String("sourceAddresses"),
	},
	SourcePorts: []*string{
		jsii.String("sourcePorts"),
	},
	SourcePrefixLists: []*string{
		jsii.String("sourcePrefixLists"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-packetheaderstatementrequest.html

type CfnNetworkInsightsAccessScope_PathStatementRequestProperty added in v2.9.0

type CfnNetworkInsightsAccessScope_PathStatementRequestProperty struct {
	// The packet header statement.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-pathstatementrequest.html#cfn-ec2-networkinsightsaccessscope-pathstatementrequest-packetheaderstatement
	//
	PacketHeaderStatement interface{} `field:"optional" json:"packetHeaderStatement" yaml:"packetHeaderStatement"`
	// The resource statement.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-pathstatementrequest.html#cfn-ec2-networkinsightsaccessscope-pathstatementrequest-resourcestatement
	//
	ResourceStatement interface{} `field:"optional" json:"resourceStatement" yaml:"resourceStatement"`
}

Describes a path statement.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

pathStatementRequestProperty := &PathStatementRequestProperty{
	PacketHeaderStatement: &PacketHeaderStatementRequestProperty{
		DestinationAddresses: []*string{
			jsii.String("destinationAddresses"),
		},
		DestinationPorts: []*string{
			jsii.String("destinationPorts"),
		},
		DestinationPrefixLists: []*string{
			jsii.String("destinationPrefixLists"),
		},
		Protocols: []*string{
			jsii.String("protocols"),
		},
		SourceAddresses: []*string{
			jsii.String("sourceAddresses"),
		},
		SourcePorts: []*string{
			jsii.String("sourcePorts"),
		},
		SourcePrefixLists: []*string{
			jsii.String("sourcePrefixLists"),
		},
	},
	ResourceStatement: &ResourceStatementRequestProperty{
		Resources: []*string{
			jsii.String("resources"),
		},
		ResourceTypes: []*string{
			jsii.String("resourceTypes"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-pathstatementrequest.html

type CfnNetworkInsightsAccessScope_ResourceStatementRequestProperty added in v2.9.0

type CfnNetworkInsightsAccessScope_ResourceStatementRequestProperty struct {
	// The resources.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-resourcestatementrequest.html#cfn-ec2-networkinsightsaccessscope-resourcestatementrequest-resources
	//
	Resources *[]*string `field:"optional" json:"resources" yaml:"resources"`
	// The resource types.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-resourcestatementrequest.html#cfn-ec2-networkinsightsaccessscope-resourcestatementrequest-resourcetypes
	//
	ResourceTypes *[]*string `field:"optional" json:"resourceTypes" yaml:"resourceTypes"`
}

Describes a resource statement.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

resourceStatementRequestProperty := &ResourceStatementRequestProperty{
	Resources: []*string{
		jsii.String("resources"),
	},
	ResourceTypes: []*string{
		jsii.String("resourceTypes"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-resourcestatementrequest.html

type CfnNetworkInsightsAccessScope_ThroughResourcesStatementRequestProperty added in v2.9.0

type CfnNetworkInsightsAccessScope_ThroughResourcesStatementRequestProperty struct {
	// The resource statement.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-throughresourcesstatementrequest.html#cfn-ec2-networkinsightsaccessscope-throughresourcesstatementrequest-resourcestatement
	//
	ResourceStatement interface{} `field:"optional" json:"resourceStatement" yaml:"resourceStatement"`
}

Describes a through resource statement.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

throughResourcesStatementRequestProperty := &ThroughResourcesStatementRequestProperty{
	ResourceStatement: &ResourceStatementRequestProperty{
		Resources: []*string{
			jsii.String("resources"),
		},
		ResourceTypes: []*string{
			jsii.String("resourceTypes"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsaccessscope-throughresourcesstatementrequest.html

type CfnNetworkInsightsAnalysis

type CfnNetworkInsightsAnalysis interface {
	awscdk.CfnResource
	awscdk.IInspectable
	interfacesawsec2.INetworkInsightsAnalysisRef
	awscdk.ITaggable
	// The member accounts that contain resources that the path can traverse.
	AdditionalAccounts() *[]*string
	SetAdditionalAccounts(val *[]*string)
	// Potential intermediate components.
	AttrAlternatePathHints() awscdk.IResolvable
	// The explanations.
	//
	// For more information, see [Reachability Analyzer explanation codes](https://docs.aws.amazon.com/vpc/latest/reachability/explanation-codes.html) .
	AttrExplanations() awscdk.IResolvable
	// The components in the path from source to destination.
	AttrForwardPathComponents() awscdk.IResolvable
	// The Amazon Resource Name (ARN) of the network insights analysis.
	AttrNetworkInsightsAnalysisArn() *string
	// The ID of the network insights analysis.
	AttrNetworkInsightsAnalysisId() *string
	// Indicates whether the destination is reachable from the source.
	AttrNetworkPathFound() awscdk.IResolvable
	// The components in the path from destination to source.
	AttrReturnPathComponents() awscdk.IResolvable
	// The time the analysis started.
	AttrStartDate() *string
	// The status of the network insights analysis.
	AttrStatus() *string
	// The status message, if the status is `failed` .
	AttrStatusMessage() *string
	// The IDs of potential intermediate accounts.
	AttrSuggestedAccounts() *[]*string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	CfnPropertyNames() *map[string]*string
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	Env() *interfaces.ResourceEnvironment
	// The Amazon Resource Names (ARN) of the resources that the path must traverse.
	FilterInArns() *[]*string
	SetFilterInArns(val *[]*string)
	// The Amazon Resource Names (ARN) of the resources that the path must ignore.
	FilterOutArns() *[]*string
	SetFilterOutArns(val *[]*string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// A reference to a NetworkInsightsAnalysis resource.
	NetworkInsightsAnalysisRef() *interfacesawsec2.NetworkInsightsAnalysisReference
	// The ID of the path.
	NetworkInsightsPathId() *string
	SetNetworkInsightsPathId(val *string)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// The tags to apply.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the cross-stack reference strength for this resource.
	//
	// When set, any cross-stack reference to this resource will use the specified
	// strength instead of the global default from the consuming stack's context.
	ApplyCrossStackReferenceStrength(strength awscdk.ReferenceStrength)
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	CfnPropertyName(cdkPropertyName *string) *string
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
	// Applies one or more mixins to this construct.
	//
	// Mixins are applied in order. The list of constructs is captured at the
	// start of the call, so constructs added by a mixin will not be visited.
	// Use multiple `with()` calls if subsequent mixins should apply to added
	// constructs.
	With(mixins ...constructs.IMixin) constructs.IConstruct
}

Specifies a network insights analysis.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkInsightsAnalysis := awscdk.Aws_ec2.NewCfnNetworkInsightsAnalysis(this, jsii.String("MyCfnNetworkInsightsAnalysis"), &CfnNetworkInsightsAnalysisProps{
	NetworkInsightsPathId: jsii.String("networkInsightsPathId"),

	// the properties below are optional
	AdditionalAccounts: []*string{
		jsii.String("additionalAccounts"),
	},
	FilterInArns: []*string{
		jsii.String("filterInArns"),
	},
	FilterOutArns: []*string{
		jsii.String("filterOutArns"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html

func NewCfnNetworkInsightsAnalysis

func NewCfnNetworkInsightsAnalysis(scope constructs.Construct, id *string, props *CfnNetworkInsightsAnalysisProps) CfnNetworkInsightsAnalysis

Create a new `AWS::EC2::NetworkInsightsAnalysis`.

type CfnNetworkInsightsAnalysisProps

type CfnNetworkInsightsAnalysisProps struct {
	// The ID of the path.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html#cfn-ec2-networkinsightsanalysis-networkinsightspathid
	//
	NetworkInsightsPathId *string `field:"required" json:"networkInsightsPathId" yaml:"networkInsightsPathId"`
	// The member accounts that contain resources that the path can traverse.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html#cfn-ec2-networkinsightsanalysis-additionalaccounts
	//
	AdditionalAccounts *[]*string `field:"optional" json:"additionalAccounts" yaml:"additionalAccounts"`
	// The Amazon Resource Names (ARN) of the resources that the path must traverse.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html#cfn-ec2-networkinsightsanalysis-filterinarns
	//
	FilterInArns *[]*string `field:"optional" json:"filterInArns" yaml:"filterInArns"`
	// The Amazon Resource Names (ARN) of the resources that the path must ignore.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html#cfn-ec2-networkinsightsanalysis-filteroutarns
	//
	FilterOutArns *[]*string `field:"optional" json:"filterOutArns" yaml:"filterOutArns"`
	// The tags to apply.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html#cfn-ec2-networkinsightsanalysis-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnNetworkInsightsAnalysis`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnNetworkInsightsAnalysisProps := &CfnNetworkInsightsAnalysisProps{
	NetworkInsightsPathId: jsii.String("networkInsightsPathId"),

	// the properties below are optional
	AdditionalAccounts: []*string{
		jsii.String("additionalAccounts"),
	},
	FilterInArns: []*string{
		jsii.String("filterInArns"),
	},
	FilterOutArns: []*string{
		jsii.String("filterOutArns"),
	},
	Tags: []CfnTag{
		&CfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html

type CfnNetworkInsightsAnalysis_AdditionalDetailProperty added in v2.39.0

type CfnNetworkInsightsAnalysis_AdditionalDetailProperty struct {
	// The additional detail code.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-additionaldetail.html#cfn-ec2-networkinsightsanalysis-additionaldetail-additionaldetailtype
	//
	AdditionalDetailType *string `field:"optional" json:"additionalDetailType" yaml:"additionalDetailType"`
	// The path component.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-additionaldetail.html#cfn-ec2-networkinsightsanalysis-additionaldetail-component
	//
	Component interface{} `field:"optional" json:"component" yaml:"component"`
	// The load balancers.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-additionaldetail.html#cfn-ec2-networkinsightsanalysis-additionaldetail-loadbalancers
	//
	LoadBalancers interface{} `field:"optional" json:"loadBalancers" yaml:"loadBalancers"`
	// The name of the VPC endpoint service.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-additionaldetail.html#cfn-ec2-networkinsightsanalysis-additionaldetail-servicename
	//
	ServiceName *string `field:"optional" json:"serviceName" yaml:"serviceName"`
}

Describes an additional detail for a path analysis.

For more information, see [Reachability Analyzer additional detail codes](https://docs.aws.amazon.com/vpc/latest/reachability/additional-detail-codes.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

additionalDetailProperty := &AdditionalDetailProperty{
	AdditionalDetailType: jsii.String("additionalDetailType"),
	Component: &AnalysisComponentProperty{
		Arn: jsii.String("arn"),
		Id: jsii.String("id"),
	},
	LoadBalancers: []interface{}{
		&AnalysisComponentProperty{
			Arn: jsii.String("arn"),
			Id: jsii.String("id"),
		},
	},
	ServiceName: jsii.String("serviceName"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-additionaldetail.html

type CfnNetworkInsightsAnalysis_AlternatePathHintProperty

type CfnNetworkInsightsAnalysis_AlternatePathHintProperty struct {
	// The Amazon Resource Name (ARN) of the component.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-alternatepathhint.html#cfn-ec2-networkinsightsanalysis-alternatepathhint-componentarn
	//
	ComponentArn *string `field:"optional" json:"componentArn" yaml:"componentArn"`
	// The ID of the component.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-alternatepathhint.html#cfn-ec2-networkinsightsanalysis-alternatepathhint-componentid
	//
	ComponentId *string `field:"optional" json:"componentId" yaml:"componentId"`
}

Describes an potential intermediate component of a feasible path.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

alternatePathHintProperty := &AlternatePathHintProperty{
	ComponentArn: jsii.String("componentArn"),
	ComponentId: jsii.String("componentId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-alternatepathhint.html

type CfnNetworkInsightsAnalysis_AnalysisAclRuleProperty

type CfnNetworkInsightsAnalysis_AnalysisAclRuleProperty struct {
	// The IPv4 address range, in CIDR notation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisaclrule.html#cfn-ec2-networkinsightsanalysis-analysisaclrule-cidr
	//
	Cidr *string `field:"optional" json:"cidr" yaml:"cidr"`
	// Indicates whether the rule is an outbound rule.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisaclrule.html#cfn-ec2-networkinsightsanalysis-analysisaclrule-egress
	//
	Egress interface{} `field:"optional" json:"egress" yaml:"egress"`
	// The range of ports.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisaclrule.html#cfn-ec2-networkinsightsanalysis-analysisaclrule-portrange
	//
	PortRange interface{} `field:"optional" json:"portRange" yaml:"portRange"`
	// The protocol.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisaclrule.html#cfn-ec2-networkinsightsanalysis-analysisaclrule-protocol
	//
	Protocol *string `field:"optional" json:"protocol" yaml:"protocol"`
	// Indicates whether to allow or deny traffic that matches the rule.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisaclrule.html#cfn-ec2-networkinsightsanalysis-analysisaclrule-ruleaction
	//
	RuleAction *string `field:"optional" json:"ruleAction" yaml:"ruleAction"`
	// The rule number.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisaclrule.html#cfn-ec2-networkinsightsanalysis-analysisaclrule-rulenumber
	//
	RuleNumber *float64 `field:"optional" json:"ruleNumber" yaml:"ruleNumber"`
}

Describes a network access control (ACL) rule.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

analysisAclRuleProperty := &AnalysisAclRuleProperty{
	Cidr: jsii.String("cidr"),
	Egress: jsii.Boolean(false),
	PortRange: &PortRangeProperty{
		From: jsii.Number(123),
		To: jsii.Number(123),
	},
	Protocol: jsii.String("protocol"),
	RuleAction: jsii.String("ruleAction"),
	RuleNumber: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisaclrule.html

type CfnNetworkInsightsAnalysis_AnalysisComponentProperty

type CfnNetworkInsightsAnalysis_AnalysisComponentProperty struct {
	// The Amazon Resource Name (ARN) of the component.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysiscomponent.html#cfn-ec2-networkinsightsanalysis-analysiscomponent-arn
	//
	Arn *string `field:"optional" json:"arn" yaml:"arn"`
	// The ID of the component.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysiscomponent.html#cfn-ec2-networkinsightsanalysis-analysiscomponent-id
	//
	Id *string `field:"optional" json:"id" yaml:"id"`
}

Describes a path component.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

analysisComponentProperty := &AnalysisComponentProperty{
	Arn: jsii.String("arn"),
	Id: jsii.String("id"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysiscomponent.html

type CfnNetworkInsightsAnalysis_AnalysisLoadBalancerListenerProperty

type CfnNetworkInsightsAnalysis_AnalysisLoadBalancerListenerProperty struct {
	// [Classic Load Balancers] The back-end port for the listener.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisloadbalancerlistener.html#cfn-ec2-networkinsightsanalysis-analysisloadbalancerlistener-instanceport
	//
	InstancePort *float64 `field:"optional" json:"instancePort" yaml:"instancePort"`
	// The port on which the load balancer is listening.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisloadbalancerlistener.html#cfn-ec2-networkinsightsanalysis-analysisloadbalancerlistener-loadbalancerport
	//
	LoadBalancerPort *float64 `field:"optional" json:"loadBalancerPort" yaml:"loadBalancerPort"`
}

Describes a load balancer listener.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

analysisLoadBalancerListenerProperty := &AnalysisLoadBalancerListenerProperty{
	InstancePort: jsii.Number(123),
	LoadBalancerPort: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisloadbalancerlistener.html

type CfnNetworkInsightsAnalysis_AnalysisLoadBalancerTargetProperty

Describes a load balancer target.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

analysisLoadBalancerTargetProperty := &AnalysisLoadBalancerTargetProperty{
	Address: jsii.String("address"),
	AvailabilityZone: jsii.String("availabilityZone"),
	Instance: &AnalysisComponentProperty{
		Arn: jsii.String("arn"),
		Id: jsii.String("id"),
	},
	Port: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisloadbalancertarget.html

type CfnNetworkInsightsAnalysis_AnalysisPacketHeaderProperty

type CfnNetworkInsightsAnalysis_AnalysisPacketHeaderProperty struct {
	// The destination addresses.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysispacketheader.html#cfn-ec2-networkinsightsanalysis-analysispacketheader-destinationaddresses
	//
	DestinationAddresses *[]*string `field:"optional" json:"destinationAddresses" yaml:"destinationAddresses"`
	// The destination port ranges.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysispacketheader.html#cfn-ec2-networkinsightsanalysis-analysispacketheader-destinationportranges
	//
	DestinationPortRanges interface{} `field:"optional" json:"destinationPortRanges" yaml:"destinationPortRanges"`
	// The protocol.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysispacketheader.html#cfn-ec2-networkinsightsanalysis-analysispacketheader-protocol
	//
	Protocol *string `field:"optional" json:"protocol" yaml:"protocol"`
	// The source addresses.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysispacketheader.html#cfn-ec2-networkinsightsanalysis-analysispacketheader-sourceaddresses
	//
	SourceAddresses *[]*string `field:"optional" json:"sourceAddresses" yaml:"sourceAddresses"`
	// The source port ranges.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysispacketheader.html#cfn-ec2-networkinsightsanalysis-analysispacketheader-sourceportranges
	//
	SourcePortRanges interface{} `field:"optional" json:"sourcePortRanges" yaml:"sourcePortRanges"`
}

Describes a header.

Reflects any changes made by a component as traffic passes through. The fields of an inbound header are null except for the first component of a path.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

analysisPacketHeaderProperty := &AnalysisPacketHeaderProperty{
	DestinationAddresses: []*string{
		jsii.String("destinationAddresses"),
	},
	DestinationPortRanges: []interface{}{
		&PortRangeProperty{
			From: jsii.Number(123),
			To: jsii.Number(123),
		},
	},
	Protocol: jsii.String("protocol"),
	SourceAddresses: []*string{
		jsii.String("sourceAddresses"),
	},
	SourcePortRanges: []interface{}{
		&PortRangeProperty{
			From: jsii.Number(123),
			To: jsii.Number(123),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysispacketheader.html

type CfnNetworkInsightsAnalysis_AnalysisRouteTableRouteProperty

type CfnNetworkInsightsAnalysis_AnalysisRouteTableRouteProperty struct {
	// The destination IPv4 address, in CIDR notation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-destinationcidr
	//
	DestinationCidr *string `field:"optional" json:"destinationCidr" yaml:"destinationCidr"`
	// The prefix of the AWS service.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-destinationprefixlistid
	//
	DestinationPrefixListId *string `field:"optional" json:"destinationPrefixListId" yaml:"destinationPrefixListId"`
	// The ID of an egress-only internet gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-egressonlyinternetgatewayid
	//
	EgressOnlyInternetGatewayId *string `field:"optional" json:"egressOnlyInternetGatewayId" yaml:"egressOnlyInternetGatewayId"`
	// The ID of the gateway, such as an internet gateway or virtual private gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-gatewayid
	//
	GatewayId *string `field:"optional" json:"gatewayId" yaml:"gatewayId"`
	// The ID of the instance, such as a NAT instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-instanceid
	//
	InstanceId *string `field:"optional" json:"instanceId" yaml:"instanceId"`
	// The ID of a NAT gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-natgatewayid
	//
	NatGatewayId *string `field:"optional" json:"natGatewayId" yaml:"natGatewayId"`
	// The ID of a network interface.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-networkinterfaceid
	//
	NetworkInterfaceId *string `field:"optional" json:"networkInterfaceId" yaml:"networkInterfaceId"`
	// Describes how the route was created. The following are the possible values:.
	//
	// - CreateRouteTable - The route was automatically created when the route table was created.
	// - CreateRoute - The route was manually added to the route table.
	// - EnableVgwRoutePropagation - The route was propagated by route propagation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-origin
	//
	Origin *string `field:"optional" json:"origin" yaml:"origin"`
	// The state. The following are the possible values:.
	//
	// - active
	// - blackhole.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-state
	//
	State *string `field:"optional" json:"state" yaml:"state"`
	// The ID of a transit gateway.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-transitgatewayid
	//
	TransitGatewayId *string `field:"optional" json:"transitGatewayId" yaml:"transitGatewayId"`
	// The ID of a VPC peering connection.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html#cfn-ec2-networkinsightsanalysis-analysisroutetableroute-vpcpeeringconnectionid
	//
	VpcPeeringConnectionId *string `field:"optional" json:"vpcPeeringConnectionId" yaml:"vpcPeeringConnectionId"`
}

Describes a route table route.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

analysisRouteTableRouteProperty := &AnalysisRouteTableRouteProperty{
	DestinationCidr: jsii.String("destinationCidr"),
	DestinationPrefixListId: jsii.String("destinationPrefixListId"),
	EgressOnlyInternetGatewayId: jsii.String("egressOnlyInternetGatewayId"),
	GatewayId: jsii.String("gatewayId"),
	InstanceId: jsii.String("instanceId"),
	NatGatewayId: jsii.String("natGatewayId"),
	NetworkInterfaceId: jsii.String("networkInterfaceId"),
	Origin: jsii.String("origin"),
	State: jsii.String("state"),
	TransitGatewayId: jsii.String("transitGatewayId"),
	VpcPeeringConnectionId: jsii.String("vpcPeeringConnectionId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinsightsanalysis-analysisroutetableroute.html