From d377dfd296a989a07b8c1eaab1b5887a9e4ac14a Mon Sep 17 00:00:00 2001 From: awstools Date: Thu, 17 Aug 2023 18:22:42 +0000 Subject: [PATCH] feat(client-ec2): Adds support for SubnetConfigurations to allow users to select their own IPv4 and IPv6 addresses for Interface VPC endpoints --- clients/client-ec2/src/EC2Client.ts | 12 +++- clients/client-ec2/src/clientConfiguration.ts | 7 +++ .../src/commands/CreateVpcEndpointCommand.ts | 7 +++ ...nClientCertificateRevocationListCommand.ts | 6 +- .../src/commands/ModifyVpcEndpointCommand.ts | 7 +++ clients/client-ec2/src/models/models_2.ts | 62 +++++++++++------- clients/client-ec2/src/models/models_3.ts | 34 +++++----- clients/client-ec2/src/models/models_4.ts | 30 +++++---- clients/client-ec2/src/models/models_5.ts | 28 +++++---- clients/client-ec2/src/models/models_6.ts | 43 +++++++------ clients/client-ec2/src/models/models_7.ts | 19 +++++- clients/client-ec2/src/protocols/Aws_ec2.ts | 63 ++++++++++++++++++- .../client-ec2/src/runtimeConfig.shared.ts | 1 + clients/client-ec2/src/runtimeExtensions.ts | 36 +++++++++++ codegen/sdk-codegen/aws-models/ec2.json | 59 +++++++++++++++-- 15 files changed, 313 insertions(+), 101 deletions(-) create mode 100644 clients/client-ec2/src/clientConfiguration.ts create mode 100644 clients/client-ec2/src/runtimeExtensions.ts diff --git a/clients/client-ec2/src/EC2Client.ts b/clients/client-ec2/src/EC2Client.ts index bbcea071fe9f5..ee8141d9e8c4e 100644 --- a/clients/client-ec2/src/EC2Client.ts +++ b/clients/client-ec2/src/EC2Client.ts @@ -2067,6 +2067,7 @@ import { resolveClientEndpointParameters, } from "./endpoint/EndpointParameters"; import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions, RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; export { __Client }; @@ -3386,6 +3387,11 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__ */ logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. */ @@ -3416,6 +3422,7 @@ export interface EC2ClientConfig extends EC2ClientConfigType {} */ export type EC2ClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & + RuntimeExtensionsConfig & RegionResolvedConfig & EndpointResolvedConfig & RetryResolvedConfig & @@ -3479,8 +3486,9 @@ export class EC2Client extends __Client< const _config_5 = resolveHostHeaderConfig(_config_4); const _config_6 = resolveAwsAuthConfig(_config_5); const _config_7 = resolveUserAgentConfig(_config_6); - super(_config_7); - this.config = _config_7; + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + super(_config_8); + this.config = _config_8; this.middlewareStack.use(getRetryPlugin(this.config)); this.middlewareStack.use(getContentLengthPlugin(this.config)); this.middlewareStack.use(getHostHeaderPlugin(this.config)); diff --git a/clients/client-ec2/src/clientConfiguration.ts b/clients/client-ec2/src/clientConfiguration.ts new file mode 100644 index 0000000000000..0d84f500db567 --- /dev/null +++ b/clients/client-ec2/src/clientConfiguration.ts @@ -0,0 +1,7 @@ +// smithy-typescript generated code +import { DefaultClientConfiguration } from "@smithy/types"; + +/** + * @internal + */ +export interface EC2ClientConfiguration extends DefaultClientConfiguration {} diff --git a/clients/client-ec2/src/commands/CreateVpcEndpointCommand.ts b/clients/client-ec2/src/commands/CreateVpcEndpointCommand.ts index 1826358f9a7a7..be3fde7cadc9c 100644 --- a/clients/client-ec2/src/commands/CreateVpcEndpointCommand.ts +++ b/clients/client-ec2/src/commands/CreateVpcEndpointCommand.ts @@ -79,6 +79,13 @@ export interface CreateVpcEndpointCommandOutput extends CreateVpcEndpointResult, * ], * }, * ], + * SubnetConfigurations: [ // SubnetConfigurationsList + * { // SubnetConfiguration + * SubnetId: "STRING_VALUE", + * Ipv4: "STRING_VALUE", + * Ipv6: "STRING_VALUE", + * }, + * ], * }; * const command = new CreateVpcEndpointCommand(input); * const response = await client.send(command); diff --git a/clients/client-ec2/src/commands/ImportClientVpnClientCertificateRevocationListCommand.ts b/clients/client-ec2/src/commands/ImportClientVpnClientCertificateRevocationListCommand.ts index 33b44c864ae18..b39277ef5b6a8 100644 --- a/clients/client-ec2/src/commands/ImportClientVpnClientCertificateRevocationListCommand.ts +++ b/clients/client-ec2/src/commands/ImportClientVpnClientCertificateRevocationListCommand.ts @@ -14,10 +14,8 @@ import { } from "@smithy/types"; import { EC2ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../EC2Client"; -import { - ImportClientVpnClientCertificateRevocationListRequest, - ImportClientVpnClientCertificateRevocationListResult, -} from "../models/models_5"; +import { ImportClientVpnClientCertificateRevocationListRequest } from "../models/models_5"; +import { ImportClientVpnClientCertificateRevocationListResult } from "../models/models_6"; import { de_ImportClientVpnClientCertificateRevocationListCommand, se_ImportClientVpnClientCertificateRevocationListCommand, diff --git a/clients/client-ec2/src/commands/ModifyVpcEndpointCommand.ts b/clients/client-ec2/src/commands/ModifyVpcEndpointCommand.ts index da0823c22ff2e..a5ae9dd821cf6 100644 --- a/clients/client-ec2/src/commands/ModifyVpcEndpointCommand.ts +++ b/clients/client-ec2/src/commands/ModifyVpcEndpointCommand.ts @@ -75,6 +75,13 @@ export interface ModifyVpcEndpointCommandOutput extends ModifyVpcEndpointResult, * PrivateDnsOnlyForInboundResolverEndpoint: true || false, * }, * PrivateDnsEnabled: true || false, + * SubnetConfigurations: [ // SubnetConfigurationsList + * { // SubnetConfiguration + * SubnetId: "STRING_VALUE", + * Ipv4: "STRING_VALUE", + * Ipv6: "STRING_VALUE", + * }, + * ], * }; * const command = new ModifyVpcEndpointCommand(input); * const response = await client.send(command); diff --git a/clients/client-ec2/src/models/models_2.ts b/clients/client-ec2/src/models/models_2.ts index 57e8d4275045e..6ca93cfc72c86 100644 --- a/clients/client-ec2/src/models/models_2.ts +++ b/clients/client-ec2/src/models/models_2.ts @@ -5164,6 +5164,38 @@ export const IpAddressType = { */ export type IpAddressType = (typeof IpAddressType)[keyof typeof IpAddressType]; +/** + * @public + *

Describes the configuration of a subnet for a VPC endpoint.

+ */ +export interface SubnetConfiguration { + /** + * @public + *

The ID of the subnet.

+ */ + SubnetId?: string; + + /** + * @public + *

The IPv4 address to assign to the endpoint network interface in the subnet. You must provide + * an IPv4 address if the VPC endpoint supports IPv4.

+ *

If you specify an IPv4 address when modifying a VPC endpoint, we replace the existing + * endpoint network interface with a new endpoint network interface with this IP address. + * This process temporarily disconnects the subnet and the VPC endpoint.

+ */ + Ipv4?: string; + + /** + * @public + *

The IPv6 address to assign to the endpoint network interface in the subnet. You must provide + * an IPv6 address if the VPC endpoint supports IPv6.

+ *

If you specify an IPv6 address when modifying a VPC endpoint, we replace the existing + * endpoint network interface with a new endpoint network interface with this IP address. + * This process temporarily disconnects the subnet and the VPC endpoint.

+ */ + Ipv6?: string; +} + /** * @public * @enum @@ -5226,15 +5258,15 @@ export interface CreateVpcEndpointRequest { /** * @public - *

(Interface and Gateway Load Balancer endpoints) The IDs of the subnets in which to create an endpoint - * network interface. For a Gateway Load Balancer endpoint, you can specify only one subnet.

+ *

(Interface and Gateway Load Balancer endpoints) The IDs of the subnets in which to create endpoint + * network interfaces. For a Gateway Load Balancer endpoint, you can specify only one subnet.

*/ SubnetIds?: string[]; /** * @public *

(Interface endpoint) The IDs of the security groups to associate with the - * endpoint network interface. If this parameter is not specified, we use the default + * endpoint network interfaces. If this parameter is not specified, we use the default * security group for the VPC.

*/ SecurityGroupIds?: string[]; @@ -5282,6 +5314,12 @@ export interface CreateVpcEndpointRequest { *

The tags to associate with the endpoint.

*/ TagSpecifications?: TagSpecification[]; + + /** + * @public + *

The subnet configurations for the endpoint.

+ */ + SubnetConfigurations?: SubnetConfiguration[]; } /** @@ -8642,24 +8680,6 @@ export const DeleteQueuedReservedInstancesErrorCode = { export type DeleteQueuedReservedInstancesErrorCode = (typeof DeleteQueuedReservedInstancesErrorCode)[keyof typeof DeleteQueuedReservedInstancesErrorCode]; -/** - * @public - *

Describes the error for a Reserved Instance whose queued purchase could not be deleted.

- */ -export interface DeleteQueuedReservedInstancesError { - /** - * @public - *

The error code.

- */ - Code?: DeleteQueuedReservedInstancesErrorCode | string; - - /** - * @public - *

The error message.

- */ - Message?: string; -} - /** * @internal */ diff --git a/clients/client-ec2/src/models/models_3.ts b/clients/client-ec2/src/models/models_3.ts index e6227ad65a762..4bf2530208aef 100644 --- a/clients/client-ec2/src/models/models_3.ts +++ b/clients/client-ec2/src/models/models_3.ts @@ -75,7 +75,7 @@ import { TransportProtocol, } from "./models_1"; import { - DeleteQueuedReservedInstancesError, + DeleteQueuedReservedInstancesErrorCode, FleetStateCode, SubnetCidrReservation, TransitGateway, @@ -91,6 +91,24 @@ import { VerifiedAccessGroup, } from "./models_2"; +/** + * @public + *

Describes the error for a Reserved Instance whose queued purchase could not be deleted.

+ */ +export interface DeleteQueuedReservedInstancesError { + /** + * @public + *

The error code.

+ */ + Code?: DeleteQueuedReservedInstancesErrorCode | string; + + /** + * @public + *

The error message.

+ */ + Message?: string; +} + /** * @public *

Describes a Reserved Instance whose queued purchase was not deleted.

@@ -10249,20 +10267,6 @@ export interface HibernationOptions { Configured?: boolean; } -/** - * @public - * @enum - */ -export const InstanceLifecycleType = { - scheduled: "scheduled", - spot: "spot", -} as const; - -/** - * @public - */ -export type InstanceLifecycleType = (typeof InstanceLifecycleType)[keyof typeof InstanceLifecycleType]; - /** * @internal */ diff --git a/clients/client-ec2/src/models/models_4.ts b/clients/client-ec2/src/models/models_4.ts index 5464247a4812d..f6c1508c52922 100644 --- a/clients/client-ec2/src/models/models_4.ts +++ b/clients/client-ec2/src/models/models_4.ts @@ -110,12 +110,25 @@ import { IdFormat, InstanceBlockDeviceMapping, InstanceBootModeValues, - InstanceLifecycleType, PermissionGroup, ProductCode, VirtualizationType, } from "./models_3"; +/** + * @public + * @enum + */ +export const InstanceLifecycleType = { + scheduled: "scheduled", + spot: "spot", +} as const; + +/** + * @public + */ +export type InstanceLifecycleType = (typeof InstanceLifecycleType)[keyof typeof InstanceLifecycleType]; + /** * @public *

Describes a license configuration.

@@ -12292,21 +12305,6 @@ export interface DescribeVerifiedAccessInstanceLoggingConfigurationsRequest { DryRun?: boolean; } -/** - * @public - * @enum - */ -export const VerifiedAccessLogDeliveryStatusCode = { - FAILED: "failed", - SUCCESS: "success", -} as const; - -/** - * @public - */ -export type VerifiedAccessLogDeliveryStatusCode = - (typeof VerifiedAccessLogDeliveryStatusCode)[keyof typeof VerifiedAccessLogDeliveryStatusCode]; - /** * @internal */ diff --git a/clients/client-ec2/src/models/models_5.ts b/clients/client-ec2/src/models/models_5.ts index af8ea61945c5d..8f3bf1488b3db 100644 --- a/clients/client-ec2/src/models/models_5.ts +++ b/clients/client-ec2/src/models/models_5.ts @@ -78,7 +78,22 @@ import { StatisticType, VirtualizationType, } from "./models_3"; -import { AnalysisStatus, ArchitectureType, VerifiedAccessLogDeliveryStatusCode } from "./models_4"; +import { AnalysisStatus, ArchitectureType } from "./models_4"; + +/** + * @public + * @enum + */ +export const VerifiedAccessLogDeliveryStatusCode = { + FAILED: "failed", + SUCCESS: "success", +} as const; + +/** + * @public + */ +export type VerifiedAccessLogDeliveryStatusCode = + (typeof VerifiedAccessLogDeliveryStatusCode)[keyof typeof VerifiedAccessLogDeliveryStatusCode]; /** * @public @@ -8541,17 +8556,6 @@ export interface ImportClientVpnClientCertificateRevocationListRequest { DryRun?: boolean; } -/** - * @public - */ -export interface ImportClientVpnClientCertificateRevocationListResult { - /** - * @public - *

Returns true if the request succeeds; otherwise, it returns an error.

- */ - Return?: boolean; -} - /** * @internal */ diff --git a/clients/client-ec2/src/models/models_6.ts b/clients/client-ec2/src/models/models_6.ts index 70046ebd13023..4bd331cc1a1a5 100644 --- a/clients/client-ec2/src/models/models_6.ts +++ b/clients/client-ec2/src/models/models_6.ts @@ -89,6 +89,7 @@ import { Phase2IntegrityAlgorithmsRequestListValue, SnapshotState, SSEType, + SubnetConfiguration, TrafficDirection, TrafficMirrorFilter, TrafficMirrorFilterRule, @@ -161,6 +162,17 @@ import { VolumeModification, } from "./models_5"; +/** + * @public + */ +export interface ImportClientVpnClientCertificateRevocationListResult { + /** + * @public + *

Returns true if the request succeeds; otherwise, it returns an error.

+ */ + Return?: boolean; +} + /** * @public *

Describes the client-specific data.

@@ -5165,13 +5177,13 @@ export interface ModifyVpcEndpointRequest { /** * @public - *

(Interface endpoint) The IDs of the security groups to associate with the network interface.

+ *

(Interface endpoint) The IDs of the security groups to associate with the endpoint network interfaces.

*/ AddSecurityGroupIds?: string[]; /** * @public - *

(Interface endpoint) The IDs of the security groups to disassociate from the network interface.

+ *

(Interface endpoint) The IDs of the security groups to disassociate from the endpoint network interfaces.

*/ RemoveSecurityGroupIds?: string[]; @@ -5189,10 +5201,15 @@ export interface ModifyVpcEndpointRequest { /** * @public - *

(Interface endpoint) Indicates whether a private hosted zone is associated with the - * VPC.

+ *

(Interface endpoint) Indicates whether a private hosted zone is associated with the VPC.

*/ PrivateDnsEnabled?: boolean; + + /** + * @public + *

The subnet configurations for the endpoint.

+ */ + SubnetConfigurations?: SubnetConfiguration[]; } /** @@ -9601,24 +9618,6 @@ export interface ScheduledInstancesIpv6Address { Ipv6Address?: string; } -/** - * @public - *

Describes a private IPv4 address for a Scheduled Instance.

- */ -export interface ScheduledInstancesPrivateIpAddressConfig { - /** - * @public - *

Indicates whether this is a primary IPv4 address. Otherwise, this is a secondary IPv4 address.

- */ - Primary?: boolean; - - /** - * @public - *

The IPv4 address.

- */ - PrivateIpAddress?: string; -} - /** * @internal */ diff --git a/clients/client-ec2/src/models/models_7.ts b/clients/client-ec2/src/models/models_7.ts index ca1ce4036e100..9a6d347c549f8 100644 --- a/clients/client-ec2/src/models/models_7.ts +++ b/clients/client-ec2/src/models/models_7.ts @@ -18,9 +18,26 @@ import { ScheduledInstancesIamInstanceProfile, ScheduledInstancesIpv6Address, ScheduledInstancesMonitoring, - ScheduledInstancesPrivateIpAddressConfig, } from "./models_6"; +/** + * @public + *

Describes a private IPv4 address for a Scheduled Instance.

+ */ +export interface ScheduledInstancesPrivateIpAddressConfig { + /** + * @public + *

Indicates whether this is a primary IPv4 address. Otherwise, this is a secondary IPv4 address.

+ */ + Primary?: boolean; + + /** + * @public + *

The IPv4 address.

+ */ + PrivateIpAddress?: string; +} + /** * @public *

Describes a network interface for a Scheduled Instance.

diff --git a/clients/client-ec2/src/protocols/Aws_ec2.ts b/clients/client-ec2/src/protocols/Aws_ec2.ts index f5b6e33f4c58a..5562176afa46c 100644 --- a/clients/client-ec2/src/protocols/Aws_ec2.ts +++ b/clients/client-ec2/src/protocols/Aws_ec2.ts @@ -2672,7 +2672,6 @@ import { DeletePlacementGroupRequest, DeletePublicIpv4PoolRequest, DeletePublicIpv4PoolResult, - DeleteQueuedReservedInstancesError, DeleteQueuedReservedInstancesRequest, DnsEntry, DnsOptions, @@ -2712,6 +2711,7 @@ import { SpotDatafeedSubscription, SpotInstanceStateFault, SubnetCidrReservation, + SubnetConfiguration, TrafficMirrorFilter, TrafficMirrorFilterRule, TrafficMirrorNetworkService, @@ -2778,6 +2778,7 @@ import { ConnectionLogResponseOptions, ConversionTask, CpuOptions, + DeleteQueuedReservedInstancesError, DeleteQueuedReservedInstancesResult, DeleteRouteRequest, DeleteRouteTableRequest, @@ -3518,7 +3519,6 @@ import { GetVpnTunnelReplacementStatusRequest, GetVpnTunnelReplacementStatusResult, ImportClientVpnClientCertificateRevocationListRequest, - ImportClientVpnClientCertificateRevocationListResult, InstanceEventWindowDisassociationRequest, InstanceFamilyCreditSpecification, InstanceRequirementsWithMetadataRequest, @@ -3584,6 +3584,7 @@ import { HibernationOptionsRequest, ImageDiskContainer, ImageRecycleBinInfo, + ImportClientVpnClientCertificateRevocationListResult, ImportImageLicenseConfigurationRequest, ImportImageRequest, ImportImageResult, @@ -3839,7 +3840,6 @@ import { ScheduledInstancesIamInstanceProfile, ScheduledInstancesIpv6Address, ScheduledInstancesMonitoring, - ScheduledInstancesPrivateIpAddressConfig, SecurityGroupRuleRequest, SecurityGroupRuleUpdate, SnapshotDiskContainer, @@ -3867,6 +3867,7 @@ import { ScheduledInstancesLaunchSpecification, ScheduledInstancesNetworkInterface, ScheduledInstancesPlacement, + ScheduledInstancesPrivateIpAddressConfig, SearchLocalGatewayRoutesRequest, SearchLocalGatewayRoutesResult, SearchTransitGatewayMulticastGroupsRequest, @@ -43313,6 +43314,16 @@ const se_CreateVpcEndpointRequest = (input: CreateVpcEndpointRequest, context: _ entries[loc] = value; }); } + if (input.SubnetConfigurations != null) { + const memberEntries = se_SubnetConfigurationsList(input.SubnetConfigurations, context); + if (input.SubnetConfigurations?.length === 0) { + entries.SubnetConfiguration = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `SubnetConfiguration.${key.substring(key.indexOf(".") + 1)}`; + entries[loc] = value; + }); + } return entries; }; @@ -58497,6 +58508,16 @@ const se_ModifyVpcEndpointRequest = (input: ModifyVpcEndpointRequest, context: _ if (input.PrivateDnsEnabled != null) { entries["PrivateDnsEnabled"] = input.PrivateDnsEnabled; } + if (input.SubnetConfigurations != null) { + const memberEntries = se_SubnetConfigurationsList(input.SubnetConfigurations, context); + if (input.SubnetConfigurations?.length === 0) { + entries.SubnetConfiguration = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `SubnetConfiguration.${key.substring(key.indexOf(".") + 1)}`; + entries[loc] = value; + }); + } return entries; }; @@ -63798,6 +63819,42 @@ const se_StorageLocation = (input: StorageLocation, context: __SerdeContext): an return entries; }; +/** + * serializeAws_ec2SubnetConfiguration + */ +const se_SubnetConfiguration = (input: SubnetConfiguration, context: __SerdeContext): any => { + const entries: any = {}; + if (input.SubnetId != null) { + entries["SubnetId"] = input.SubnetId; + } + if (input.Ipv4 != null) { + entries["Ipv4"] = input.Ipv4; + } + if (input.Ipv6 != null) { + entries["Ipv6"] = input.Ipv6; + } + return entries; +}; + +/** + * serializeAws_ec2SubnetConfigurationsList + */ +const se_SubnetConfigurationsList = (input: SubnetConfiguration[], context: __SerdeContext): any => { + const entries: any = {}; + let counter = 1; + for (const entry of input) { + if (entry === null) { + continue; + } + const memberEntries = se_SubnetConfiguration(entry, context); + Object.entries(memberEntries).forEach(([key, value]) => { + entries[`Item.${counter}.${key}`] = value; + }); + counter++; + } + return entries; +}; + /** * serializeAws_ec2SubnetIdStringList */ diff --git a/clients/client-ec2/src/runtimeConfig.shared.ts b/clients/client-ec2/src/runtimeConfig.shared.ts index 0c3ad3880eb79..98dcf8c3e6d14 100644 --- a/clients/client-ec2/src/runtimeConfig.shared.ts +++ b/clients/client-ec2/src/runtimeConfig.shared.ts @@ -16,6 +16,7 @@ export const getRuntimeConfig = (config: EC2ClientConfig) => ({ base64Encoder: config?.base64Encoder ?? toBase64, disableHostPrefix: config?.disableHostPrefix ?? false, endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], logger: config?.logger ?? new NoOpLogger(), serviceId: config?.serviceId ?? "EC2", urlParser: config?.urlParser ?? parseUrl, diff --git a/clients/client-ec2/src/runtimeExtensions.ts b/clients/client-ec2/src/runtimeExtensions.ts new file mode 100644 index 0000000000000..316fcf27f3cf2 --- /dev/null +++ b/clients/client-ec2/src/runtimeExtensions.ts @@ -0,0 +1,36 @@ +// smithy-typescript generated code +import { getDefaultClientConfiguration, resolveDefaultRuntimeConfig } from "@smithy/types"; + +import { EC2ClientConfiguration } from "./clientConfiguration"; + +/** + * @public + */ +export interface RuntimeExtension { + configureClient(clientConfiguration: EC2ClientConfiguration): void; +} + +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} + +const asPartial = >(t: T) => t; + +/** + * @internal + */ +export const resolveRuntimeExtensions = (runtimeConfig: any, extensions: RuntimeExtension[]) => { + const clientConfiguration: EC2ClientConfiguration = { + ...asPartial(getDefaultClientConfiguration(runtimeConfig)), + }; + + extensions.forEach((extension) => extension.configureClient(clientConfiguration)); + + return { + ...runtimeConfig, + ...resolveDefaultRuntimeConfig(clientConfiguration), + }; +}; diff --git a/codegen/sdk-codegen/aws-models/ec2.json b/codegen/sdk-codegen/aws-models/ec2.json index 3daeeda1ee5af..38ef798d2e9c9 100644 --- a/codegen/sdk-codegen/aws-models/ec2.json +++ b/codegen/sdk-codegen/aws-models/ec2.json @@ -20501,14 +20501,14 @@ "SubnetIds": { "target": "com.amazonaws.ec2#VpcEndpointSubnetIdList", "traits": { - "smithy.api#documentation": "

(Interface and Gateway Load Balancer endpoints) The IDs of the subnets in which to create an endpoint\n network interface. For a Gateway Load Balancer endpoint, you can specify only one subnet.

", + "smithy.api#documentation": "

(Interface and Gateway Load Balancer endpoints) The IDs of the subnets in which to create endpoint\n network interfaces. For a Gateway Load Balancer endpoint, you can specify only one subnet.

", "smithy.api#xmlName": "SubnetId" } }, "SecurityGroupIds": { "target": "com.amazonaws.ec2#VpcEndpointSecurityGroupIdList", "traits": { - "smithy.api#documentation": "

(Interface endpoint) The IDs of the security groups to associate with the\n endpoint network interface. If this parameter is not specified, we use the default \n security group for the VPC.

", + "smithy.api#documentation": "

(Interface endpoint) The IDs of the security groups to associate with the\n endpoint network interfaces. If this parameter is not specified, we use the default \n security group for the VPC.

", "smithy.api#xmlName": "SecurityGroupId" } }, @@ -20544,6 +20544,13 @@ "smithy.api#documentation": "

The tags to associate with the endpoint.

", "smithy.api#xmlName": "TagSpecification" } + }, + "SubnetConfigurations": { + "target": "com.amazonaws.ec2#SubnetConfigurationsList", + "traits": { + "smithy.api#documentation": "

The subnet configurations for the endpoint.

", + "smithy.api#xmlName": "SubnetConfiguration" + } } }, "traits": { @@ -75180,14 +75187,14 @@ "AddSecurityGroupIds": { "target": "com.amazonaws.ec2#VpcEndpointSecurityGroupIdList", "traits": { - "smithy.api#documentation": "

(Interface endpoint) The IDs of the security groups to associate with the network interface.

", + "smithy.api#documentation": "

(Interface endpoint) The IDs of the security groups to associate with the endpoint network interfaces.

", "smithy.api#xmlName": "AddSecurityGroupId" } }, "RemoveSecurityGroupIds": { "target": "com.amazonaws.ec2#VpcEndpointSecurityGroupIdList", "traits": { - "smithy.api#documentation": "

(Interface endpoint) The IDs of the security groups to disassociate from the network interface.

", + "smithy.api#documentation": "

(Interface endpoint) The IDs of the security groups to disassociate from the endpoint network interfaces.

", "smithy.api#xmlName": "RemoveSecurityGroupId" } }, @@ -75208,7 +75215,14 @@ "traits": { "smithy.api#clientOptional": {}, "smithy.api#default": false, - "smithy.api#documentation": "

(Interface endpoint) Indicates whether a private hosted zone is associated with the\n VPC.

" + "smithy.api#documentation": "

(Interface endpoint) Indicates whether a private hosted zone is associated with the VPC.

" + } + }, + "SubnetConfigurations": { + "target": "com.amazonaws.ec2#SubnetConfigurationsList", + "traits": { + "smithy.api#documentation": "

The subnet configurations for the endpoint.

", + "smithy.api#xmlName": "SubnetConfiguration" } } }, @@ -94173,6 +94187,41 @@ } } }, + "com.amazonaws.ec2#SubnetConfiguration": { + "type": "structure", + "members": { + "SubnetId": { + "target": "com.amazonaws.ec2#SubnetId", + "traits": { + "smithy.api#documentation": "

The ID of the subnet.

" + } + }, + "Ipv4": { + "target": "com.amazonaws.ec2#String", + "traits": { + "smithy.api#documentation": "

The IPv4 address to assign to the endpoint network interface in the subnet. You must provide \n an IPv4 address if the VPC endpoint supports IPv4.

\n

If you specify an IPv4 address when modifying a VPC endpoint, we replace the existing \n endpoint network interface with a new endpoint network interface with this IP address. \n This process temporarily disconnects the subnet and the VPC endpoint.

" + } + }, + "Ipv6": { + "target": "com.amazonaws.ec2#String", + "traits": { + "smithy.api#documentation": "

The IPv6 address to assign to the endpoint network interface in the subnet. You must provide \n an IPv6 address if the VPC endpoint supports IPv6.

\n

If you specify an IPv6 address when modifying a VPC endpoint, we replace the existing \n endpoint network interface with a new endpoint network interface with this IP address. \n This process temporarily disconnects the subnet and the VPC endpoint.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Describes the configuration of a subnet for a VPC endpoint.

" + } + }, + "com.amazonaws.ec2#SubnetConfigurationsList": { + "type": "list", + "member": { + "target": "com.amazonaws.ec2#SubnetConfiguration", + "traits": { + "smithy.api#xmlName": "item" + } + } + }, "com.amazonaws.ec2#SubnetId": { "type": "string" },