# SubnetSelection

Customize subnets that are selected for placement of ENIs.

Constructs that allow customization of VPC placement use parameters of this
type to provide placement settings.

By default, the instances are placed in the private subnets.

- Source: [`aws-ec2/lib/vpc.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts#L357)
- Type last changed: v2.41.0 · 8 Sep 2022

## Example

```ts
declare const vpc: ec2.Vpc;

const cluster = new docdb.DatabaseCluster(this, 'Database', {
  masterUser: {
    username: 'myuser',
  },
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.MEMORY5, ec2.InstanceSize.LARGE),
  vpcSubnets: {
    subnetType: ec2.SubnetType.PUBLIC,
  },
  vpc,
  removalPolicy: RemovalPolicy.SNAPSHOT,
  instanceRemovalPolicy: RemovalPolicy.RETAIN,
});
```

## Properties

- `availabilityZones`: string[] — Select subnets only in the given AZs.

  **Default:** no filtering on AZs is done

- `onePerAz`: boolean = false — If true, return at most one subnet per AZ.

- `subnetFilters`: [SubnetFilter](/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.SubnetFilter.html)[] = none — List of provided subnet filters.

- `subnetGroupName`: string — Select the subnet group with the given name.

  **Default:** Selection by type instead of by name

  Select the subnet group with the given name. This only needs
  to be used if you have multiple subnet groups of the same type
  and you need to distinguish between them. Otherwise, prefer
  `subnetType`.

  This field does not select individual subnets, it selects all subnets that
  share the given subnet group name. This is the name supplied in
  `subnetConfiguration`.

  At most one of `subnetType` and `subnetGroupName` can be supplied.

- `subnets`: [ISubnet](/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.ISubnet.html)[] — Explicitly select individual subnets.

  **Default:** Use all subnets in a selected group (all private subnets by default)

  Use this if you don't want to automatically use all subnets in
  a group, but have a need to control selection down to
  individual subnets.

  Cannot be specified together with `subnetType` or `subnetGroupName`.

- `subnetType`: [SubnetType](/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.SubnetType.html) — Select all subnets of the given type.

  **Default:** SubnetType.PRIVATE_WITH_EGRESS (or ISOLATED or PUBLIC if there are no PRIVATE_WITH_EGRESS subnets)

  At most one of `subnetType` and `subnetGroupName` can be supplied.
