aws/api: Update EC2 API.
authorRicardo Wurmus <rekado@elephly.net>
Tue, 7 Jul 2020 20:46:39 +0000 (22:46 +0200)
committerRicardo Wurmus <rekado@elephly.net>
Tue, 7 Jul 2020 20:47:14 +0000 (22:47 +0200)
* aws/api/ec2-2016-11-15.normal.json: Replace with version v2.680.0.
* aws/api/README: Update version information.

aws/api/README
aws/api/ec2-2016-11-15.normal.json

index c1543715e8fbbdcc07c96b75236863af10889dca..5d094a639904235ca17c5dd415c432378c64eb26 100644 (file)
@@ -1,6 +1,4 @@
-These JSON files are unmodified copies taken from v2.484.0 of the AWS
+These JSON files are unmodified copies taken from v2.680.0 of the AWS
 SDK for JavaScript: https://github.com/aws/aws-sdk-js/tree/master/apis
 
-They are covered under the Apache 2.0 license.
-
-The ECS, ECR, EFS, and EBS APIs were taken from v2.680.0.
+They are covered under the Apache 2.0 license.
\ No newline at end of file
index cc0d5668e7c263c807aabfc3a2823a85cd66fdde..610f74532d946cb7eba334d927fc49f02af2cfaf 100644 (file)
       },
       "documentation": "<p>Accepts the Convertible Reserved Instance exchange quote described in the <a>GetReservedInstancesExchangeQuote</a> call.</p>"
     },
+    "AcceptTransitGatewayPeeringAttachment": {
+      "name": "AcceptTransitGatewayPeeringAttachment",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "AcceptTransitGatewayPeeringAttachmentRequest"
+      },
+      "output": {
+        "shape": "AcceptTransitGatewayPeeringAttachmentResult"
+      },
+      "documentation": "<p>Accepts a transit gateway peering attachment request. The peering attachment must be in the <code>pendingAcceptance</code> state.</p>"
+    },
     "AcceptTransitGatewayVpcAttachment": {
       "name": "AcceptTransitGatewayVpcAttachment",
       "http": {
@@ -80,7 +94,7 @@
       "output": {
         "shape": "AdvertiseByoipCidrResult"
       },
-      "documentation": "<p>Advertises an IPv4 address range that is provisioned for use with your AWS resources through bring your own IP addresses (BYOIP).</p> <p>You can perform this operation at most once every 10 seconds, even if you specify different address ranges each time.</p> <p>We recommend that you stop advertising the BYOIP CIDR from other locations when you advertise it from AWS. To minimize down time, you can configure your AWS resources to use an address from a BYOIP CIDR before it is advertised, and then simultaneously stop advertising it from the current location and start advertising it through AWS.</p> <p>It can take a few minutes before traffic to the specified addresses starts routing to AWS because of BGP propagation delays.</p> <p>To stop advertising the BYOIP CIDR, use <a>WithdrawByoipCidr</a>.</p>"
+      "documentation": "<p>Advertises an IPv4 or IPv6 address range that is provisioned for use with your AWS resources through bring your own IP addresses (BYOIP).</p> <p>You can perform this operation at most once every 10 seconds, even if you specify different address ranges each time.</p> <p>We recommend that you stop advertising the BYOIP CIDR from other locations when you advertise it from AWS. To minimize down time, you can configure your AWS resources to use an address from a BYOIP CIDR before it is advertised, and then simultaneously stop advertising it from the current location and start advertising it through AWS.</p> <p>It can take a few minutes before traffic to the specified addresses starts routing to AWS because of BGP propagation delays.</p> <p>To stop advertising the BYOIP CIDR, use <a>WithdrawByoipCidr</a>.</p>"
     },
     "AllocateAddress": {
       "name": "AllocateAddress",
       "output": {
         "shape": "AllocateHostsResult"
       },
-      "documentation": "<p>Allocates a Dedicated Host to your account. At a minimum, specify the instance size type, Availability Zone, and quantity of hosts to allocate.</p>"
+      "documentation": "<p>Allocates a Dedicated Host to your account. At a minimum, specify the supported instance type or instance family, the Availability Zone in which to allocate the host, and the number of hosts to allocate.</p>"
     },
     "ApplySecurityGroupsToClientVpnTargetNetwork": {
       "name": "ApplySecurityGroupsToClientVpnTargetNetwork",
       "output": {
         "shape": "AssignIpv6AddressesResult"
       },
-      "documentation": "<p>Assigns one or more IPv6 addresses to the specified network interface. You can specify one or more specific IPv6 addresses, or you can specify the number of IPv6 addresses to be automatically assigned from within the subnet's IPv6 CIDR block range. You can assign as many IPv6 addresses to a network interface as you can assign private IPv4 addresses, and the limit varies per instance type. For information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI\">IP Addresses Per Network Interface Per Instance Type</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Assigns one or more IPv6 addresses to the specified network interface. You can specify one or more specific IPv6 addresses, or you can specify the number of IPv6 addresses to be automatically assigned from within the subnet's IPv6 CIDR block range. You can assign as many IPv6 addresses to a network interface as you can assign private IPv4 addresses, and the limit varies per instance type. For information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI\">IP Addresses Per Network Interface Per Instance Type</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>You must specify either the IPv6 addresses or the IPv6 address count in the request.</p>"
     },
     "AssignPrivateIpAddresses": {
       "name": "AssignPrivateIpAddresses",
       "input": {
         "shape": "AssignPrivateIpAddressesRequest"
       },
-      "documentation": "<p>Assigns one or more secondary private IP addresses to the specified network interface.</p> <p>You can specify one or more specific secondary IP addresses, or you can specify the number of secondary IP addresses to be automatically assigned within the subnet's CIDR block range. The number of secondary IP addresses that you can assign to an instance varies by instance type. For information about instance types, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html\">Instance Types</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>. For more information about Elastic IP addresses, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html\">Elastic IP Addresses</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>When you move a secondary private IP address to another network interface, any Elastic IP address that is associated with the IP address is also moved.</p> <p>Remapping an IP address is an asynchronous operation. When you move an IP address from one network interface to another, check <code>network/interfaces/macs/mac/local-ipv4s</code> in the instance metadata to confirm that the remapping is complete.</p>"
+      "output": {
+        "shape": "AssignPrivateIpAddressesResult"
+      },
+      "documentation": "<p>Assigns one or more secondary private IP addresses to the specified network interface.</p> <p>You can specify one or more specific secondary IP addresses, or you can specify the number of secondary IP addresses to be automatically assigned within the subnet's CIDR block range. The number of secondary IP addresses that you can assign to an instance varies by instance type. For information about instance types, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html\">Instance Types</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>. For more information about Elastic IP addresses, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html\">Elastic IP Addresses</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>When you move a secondary private IP address to another network interface, any Elastic IP address that is associated with the IP address is also moved.</p> <p>Remapping an IP address is an asynchronous operation. When you move an IP address from one network interface to another, check <code>network/interfaces/macs/mac/local-ipv4s</code> in the instance metadata to confirm that the remapping is complete.</p> <p>You must specify either the IP addresses or the IP address count in the request.</p>"
     },
     "AssociateAddress": {
       "name": "AssociateAddress",
       "output": {
         "shape": "AssociateAddressResult"
       },
-      "documentation": "<p>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.</p> <p>An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html\">Elastic IP Addresses</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>[EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is already associated with a different instance, it is disassociated from that instance and associated with the specified instance. If you associate an Elastic IP address with an instance that has an existing Elastic IP address, the existing address is disassociated from the instance, but remains allocated to your account.</p> <p>[VPC in an EC2-Classic account] If you don't specify a private IP address, the Elastic IP address is associated with the primary IP address. If the Elastic IP address is already associated with a different instance or a network interface, you get an error unless you allow reassociation. You cannot associate an Elastic IP address with an instance or network interface that has an existing Elastic IP address.</p> <important> <p>This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error, and you may be charged for each time the Elastic IP address is remapped to the same instance. For more information, see the <i>Elastic IP Addresses</i> section of <a href=\"http://aws.amazon.com/ec2/pricing/\">Amazon EC2 Pricing</a>.</p> </important>"
+      "documentation": "<p>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.</p> <p>An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html\">Elastic IP Addresses</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>[EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is already associated with a different instance, it is disassociated from that instance and associated with the specified instance. If you associate an Elastic IP address with an instance that has an existing Elastic IP address, the existing address is disassociated from the instance, but remains allocated to your account.</p> <p>[VPC in an EC2-Classic account] If you don't specify a private IP address, the Elastic IP address is associated with the primary IP address. If the Elastic IP address is already associated with a different instance or a network interface, you get an error unless you allow reassociation. You cannot associate an Elastic IP address with an instance or network interface that has an existing Elastic IP address.</p> <p>You cannot associate an Elastic IP address with an interface in a different network border group.</p> <important> <p>This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error, and you may be charged for each time the Elastic IP address is remapped to the same instance. For more information, see the <i>Elastic IP Addresses</i> section of <a href=\"http://aws.amazon.com/ec2/pricing/\">Amazon EC2 Pricing</a>.</p> </important>"
     },
     "AssociateClientVpnTargetNetwork": {
       "name": "AssociateClientVpnTargetNetwork",
       "output": {
         "shape": "AssociateClientVpnTargetNetworkResult"
       },
-      "documentation": "<p>Associates a target network 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.</p>"
+      "documentation": "<p>Associates a target network 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.</p> <p>If you specified a VPC when you created the Client VPN endpoint or if you have previous subnet associations, the specified subnet must be in the same VPC. To specify a subnet that's in a different VPC, you must first modify the Client VPN endpoint (<a>ModifyClientVpnEndpoint</a>) and change the VPC that's associated with it.</p>"
     },
     "AssociateDhcpOptions": {
       "name": "AssociateDhcpOptions",
       "output": {
         "shape": "AssociateRouteTableResult"
       },
-      "documentation": "<p>Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. The action returns an association ID, which you need in order to disassociate the route table from the subnet later. A route table can be associated with multiple subnets.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
+      "documentation": "<p>Associates a subnet in your VPC or an internet gateway or virtual private gateway attached to your VPC with a route table in your VPC. This association causes traffic from the subnet or gateway to be routed according to the routes in the route table. The action returns an association ID, which you need in order to disassociate the route table later. A route table can be associated with multiple subnets.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
     },
     "AssociateSubnetCidrBlock": {
       "name": "AssociateSubnetCidrBlock",
       },
       "documentation": "<p>Associates a CIDR block with your subnet. You can only associate a single IPv6 CIDR block with your subnet. An IPv6 CIDR block must have a prefix length of /64.</p>"
     },
+    "AssociateTransitGatewayMulticastDomain": {
+      "name": "AssociateTransitGatewayMulticastDomain",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "AssociateTransitGatewayMulticastDomainRequest"
+      },
+      "output": {
+        "shape": "AssociateTransitGatewayMulticastDomainResult"
+      },
+      "documentation": "<p>Associates the specified subnets and transit gateway attachments with the specified transit gateway multicast domain.</p> <p>The transit gateway attachment must be in the available state before you can add a resource. Use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeTransitGatewayAttachments.html\">DescribeTransitGatewayAttachments</a> to see the state of the attachment.</p>"
+    },
     "AssociateTransitGatewayRouteTable": {
       "name": "AssociateTransitGatewayRouteTable",
       "http": {
       "output": {
         "shape": "AssociateVpcCidrBlockResult"
       },
-      "documentation": "<p>Associates a CIDR block with your VPC. You can associate a secondary IPv4 CIDR block, or you can associate an Amazon-provided IPv6 CIDR block. The IPv6 CIDR block size is fixed at /56.</p> <p>For more information about associating CIDR blocks with your VPC and applicable restrictions, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing\">VPC and Subnet Sizing</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
+      "documentation": "<p>Associates a CIDR block with your VPC. You can associate a secondary IPv4 CIDR block, an Amazon-provided IPv6 CIDR block, or an IPv6 CIDR block from an IPv6 address pool that you provisioned through bring your own IP addresses (<a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html\">BYOIP</a>). The IPv6 CIDR block size is fixed at /56.</p> <p>You must specify one of the following in the request: an IPv4 CIDR block, an IPv6 pool, or an Amazon-provided IPv6 CIDR block.</p> <p>For more information about associating CIDR blocks with your VPC and applicable restrictions, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing\">VPC and Subnet Sizing</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
     },
     "AttachClassicLinkVpc": {
       "name": "AttachClassicLinkVpc",
       "input": {
         "shape": "AttachInternetGatewayRequest"
       },
-      "documentation": "<p>Attaches an internet gateway to a VPC, enabling connectivity between the internet and the VPC. For more information about your VPC and internet gateway, see the <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/\">Amazon Virtual Private Cloud User Guide</a>.</p>"
+      "documentation": "<p>Attaches an internet gateway or a virtual private gateway to a VPC, enabling connectivity between the internet and the VPC. For more information about your VPC and internet gateway, see the <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/\">Amazon Virtual Private Cloud User Guide</a>.</p>"
     },
     "AttachNetworkInterface": {
       "name": "AttachNetworkInterface",
       "output": {
         "shape": "CreateCustomerGatewayResult"
       },
-      "documentation": "<p>Provides information to AWS about your VPN customer gateway device. The customer gateway is the appliance at your end of the VPN connection. (The device on the AWS side of the VPN connection is the virtual private gateway.) You must provide the Internet-routable IP address of the customer gateway's external interface. The IP address must be static and may be behind a device performing network address translation (NAT).</p> <p>For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN (in the 64512 - 65534 range).</p> <note> <p>Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with the exception of 7224, which is reserved in the <code>us-east-1</code> Region, and 9059, which is reserved in the <code>eu-west-1</code> Region.</p> </note> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html\">AWS Site-to-Site VPN</a> in the <i>AWS Site-to-Site VPN User Guide</i>.</p> <important> <p>You cannot create more than one customer gateway with the same VPN type, IP address, and BGP ASN parameter values. If you run an identical request more than one time, the first request creates the customer gateway, and subsequent requests return information about the existing customer gateway. The subsequent requests do not create new customer gateway resources.</p> </important>"
+      "documentation": "<p>Provides information to AWS about your VPN customer gateway device. The customer gateway is the appliance at your end of the VPN connection. (The device on the AWS side of the VPN connection is the virtual private gateway.) You must provide the Internet-routable IP address of the customer gateway's external interface. The IP address must be static and can be behind a device performing network address translation (NAT).</p> <p>For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN (in the 64512 - 65534 range).</p> <note> <p>Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with the exception of 7224, which is reserved in the <code>us-east-1</code> Region, and 9059, which is reserved in the <code>eu-west-1</code> Region.</p> </note> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html\">AWS Site-to-Site VPN</a> in the <i>AWS Site-to-Site VPN User Guide</i>.</p> <important> <p>To create more than one customer gateway with the same VPN type, IP address, and BGP ASN, specify a unique device name for each customer gateway. Identical requests return information about the existing customer gateway and do not create new customer gateways.</p> </important>"
     },
     "CreateDefaultSubnet": {
       "name": "CreateDefaultSubnet",
       "output": {
         "shape": "CreateDhcpOptionsResult"
       },
-      "documentation": "<p>Creates a set of DHCP options for your VPC. After creating the set, you must associate it with the VPC, causing all existing and new instances that you launch in the VPC to use this set of DHCP options. The following are the individual DHCP options you can specify. For more information about the options, see <a href=\"http://www.ietf.org/rfc/rfc2132.txt\">RFC 2132</a>.</p> <ul> <li> <p> <code>domain-name-servers</code> - The IP addresses of up to four domain name servers, or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. If specifying more than one domain name server, specify the IP addresses in a single parameter, separated by commas. ITo have your instance to receive a custom DNS hostname as specified in <code>domain-name</code>, you must set <code>domain-name-servers</code> to a custom DNS server.</p> </li> <li> <p> <code>domain-name</code> - If you're using AmazonProvidedDNS in <code>us-east-1</code>, specify <code>ec2.internal</code>. If you're using AmazonProvidedDNS in another Region, specify <code>region.compute.internal</code> (for example, <code>ap-northeast-1.compute.internal</code>). Otherwise, specify a domain name (for example, <code>MyCompany.com</code>). This value is used to complete unqualified DNS hostnames. <b>Important</b>: Some Linux operating systems accept multiple domain names separated by spaces. However, Windows and other Linux operating systems treat the value as a single domain, which results in unexpected behavior. If your DHCP options set is associated with a VPC that has instances with multiple operating systems, specify only one domain name.</p> </li> <li> <p> <code>ntp-servers</code> - The IP addresses of up to four Network Time Protocol (NTP) servers.</p> </li> <li> <p> <code>netbios-name-servers</code> - The IP addresses of up to four NetBIOS name servers.</p> </li> <li> <p> <code>netbios-node-type</code> - The NetBIOS node type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast are not currently supported). For more information about these node types, see <a href=\"http://www.ietf.org/rfc/rfc2132.txt\">RFC 2132</a>.</p> </li> </ul> <p>Your VPC automatically starts out with a set of DHCP options that includes only a DNS server that we provide (AmazonProvidedDNS). If you create a set of options, and if your VPC has an internet gateway, make sure to set the <code>domain-name-servers</code> option either to <code>AmazonProvidedDNS</code> or to a domain name server of your choice. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html\">DHCP Options Sets</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
+      "documentation": "<p>Creates a set of DHCP options for your VPC. After creating the set, you must associate it with the VPC, causing all existing and new instances that you launch in the VPC to use this set of DHCP options. The following are the individual DHCP options you can specify. For more information about the options, see <a href=\"http://www.ietf.org/rfc/rfc2132.txt\">RFC 2132</a>.</p> <ul> <li> <p> <code>domain-name-servers</code> - The IP addresses of up to four domain name servers, or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. If specifying more than one domain name server, specify the IP addresses in a single parameter, separated by commas. To have your instance receive a custom DNS hostname as specified in <code>domain-name</code>, you must set <code>domain-name-servers</code> to a custom DNS server.</p> </li> <li> <p> <code>domain-name</code> - If you're using AmazonProvidedDNS in <code>us-east-1</code>, specify <code>ec2.internal</code>. If you're using AmazonProvidedDNS in another Region, specify <code>region.compute.internal</code> (for example, <code>ap-northeast-1.compute.internal</code>). Otherwise, specify a domain name (for example, <code>MyCompany.com</code>). This value is used to complete unqualified DNS hostnames. <b>Important</b>: Some Linux operating systems accept multiple domain names separated by spaces. However, Windows and other Linux operating systems treat the value as a single domain, which results in unexpected behavior. If your DHCP options set is associated with a VPC that has instances with multiple operating systems, specify only one domain name.</p> </li> <li> <p> <code>ntp-servers</code> - The IP addresses of up to four Network Time Protocol (NTP) servers.</p> </li> <li> <p> <code>netbios-name-servers</code> - The IP addresses of up to four NetBIOS name servers.</p> </li> <li> <p> <code>netbios-node-type</code> - The NetBIOS node type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast are not currently supported). For more information about these node types, see <a href=\"http://www.ietf.org/rfc/rfc2132.txt\">RFC 2132</a>.</p> </li> </ul> <p>Your VPC automatically starts out with a set of DHCP options that includes only a DNS server that we provide (AmazonProvidedDNS). If you create a set of options, and if your VPC has an internet gateway, make sure to set the <code>domain-name-servers</code> option either to <code>AmazonProvidedDNS</code> or to a domain name server of your choice. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html\">DHCP Options Sets</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
     },
     "CreateEgressOnlyInternetGateway": {
       "name": "CreateEgressOnlyInternetGateway",
       "output": {
         "shape": "CreateLaunchTemplateResult"
       },
-      "documentation": "<p>Creates a launch template. A launch template contains the parameters to launch an instance. When you launch an instance using <a>RunInstances</a>, you can specify a launch template instead of providing the launch parameters in the request.</p>"
+      "documentation": "<p>Creates a launch template. A launch template contains the parameters to launch an instance. When you launch an instance using <a>RunInstances</a>, you can specify a launch template instead of providing the launch parameters in the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html\">Launching an instance from a launch template</a>in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "CreateLaunchTemplateVersion": {
       "name": "CreateLaunchTemplateVersion",
       "output": {
         "shape": "CreateLaunchTemplateVersionResult"
       },
-      "documentation": "<p>Creates a new version for a launch template. You can specify an existing version of launch template from which to base the new version.</p> <p>Launch template versions are numbered in the order in which they are created. You cannot specify, change, or replace the numbering of launch template versions.</p>"
+      "documentation": "<p>Creates a new version for a launch template. You can specify an existing version of launch template from which to base the new version.</p> <p>Launch template versions are numbered in the order in which they are created. You cannot specify, change, or replace the numbering of launch template versions.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#manage-launch-template-versions\">Managing launch template versions</a>in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+    },
+    "CreateLocalGatewayRoute": {
+      "name": "CreateLocalGatewayRoute",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "CreateLocalGatewayRouteRequest"
+      },
+      "output": {
+        "shape": "CreateLocalGatewayRouteResult"
+      },
+      "documentation": "<p>Creates a static route for the specified local gateway route table.</p>"
+    },
+    "CreateLocalGatewayRouteTableVpcAssociation": {
+      "name": "CreateLocalGatewayRouteTableVpcAssociation",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "CreateLocalGatewayRouteTableVpcAssociationRequest"
+      },
+      "output": {
+        "shape": "CreateLocalGatewayRouteTableVpcAssociationResult"
+      },
+      "documentation": "<p>Associates the specified VPC with the specified local gateway route table.</p>"
     },
     "CreateNatGateway": {
       "name": "CreateNatGateway",
       "input": {
         "shape": "CreatePlacementGroupRequest"
       },
+      "output": {
+        "shape": "CreatePlacementGroupResult"
+      },
       "documentation": "<p>Creates a placement group in which to launch instances. The strategy of the placement group determines how the instances are organized within the group. </p> <p>A <code>cluster</code> placement group is a logical grouping of instances within a single Availability Zone that benefit from low network latency, high network throughput. A <code>spread</code> placement group places instances on distinct hardware. A <code>partition</code> placement group places groups of instances in different partitions, where instances in one partition do not share the same hardware with instances in another partition.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html\">Placement Groups</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "CreateReservedInstancesListing": {
       "output": {
         "shape": "CreateRouteResult"
       },
-      "documentation": "<p>Creates a route in a route table within a VPC.</p> <p>You must specify one of the following targets: internet gateway or virtual private gateway, NAT instance, NAT gateway, VPC peering connection, network interface, or egress-only internet gateway.</p> <p>When determining how to route traffic, we use the route with the most specific match. For example, traffic is destined for the IPv4 address <code>192.0.2.3</code>, and the route table includes the following two IPv4 routes:</p> <ul> <li> <p> <code>192.0.2.0/24</code> (goes to some target A)</p> </li> <li> <p> <code>192.0.2.0/28</code> (goes to some target B)</p> </li> </ul> <p>Both routes apply to the traffic destined for <code>192.0.2.3</code>. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic.</p> <p>For more information about route tables, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
+      "documentation": "<p>Creates a route in a route table within a VPC.</p> <p>You must specify one of the following targets: internet gateway or virtual private gateway, NAT instance, NAT gateway, VPC peering connection, network interface, egress-only internet gateway, or transit gateway.</p> <p>When determining how to route traffic, we use the route with the most specific match. For example, traffic is destined for the IPv4 address <code>192.0.2.3</code>, and the route table includes the following two IPv4 routes:</p> <ul> <li> <p> <code>192.0.2.0/24</code> (goes to some target A)</p> </li> <li> <p> <code>192.0.2.0/28</code> (goes to some target B)</p> </li> </ul> <p>Both routes apply to the traffic destined for <code>192.0.2.3</code>. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic.</p> <p>For more information about route tables, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
     },
     "CreateRouteTable": {
       "name": "CreateRouteTable",
       "output": {
         "shape": "CreateSnapshotsResult"
       },
-      "documentation": "<p>Creates crash-consistent snapshots of multiple EBS volumes and stores the data in S3. Volumes are chosen by specifying an instance. Any attached volumes will produce one snapshot each that is crash-consistent across the instance. Boot volumes can be excluded by changing the paramaters. </p>"
+      "documentation": "<p>Creates crash-consistent snapshots of multiple EBS volumes and stores the data in S3. Volumes are chosen by specifying an instance. Any attached volumes will produce one snapshot each that is crash-consistent across the instance. Boot volumes can be excluded by changing the parameters. </p>"
     },
     "CreateSpotDatafeedSubscription": {
       "name": "CreateSpotDatafeedSubscription",
       "output": {
         "shape": "CreateTrafficMirrorFilterResult"
       },
-      "documentation": "<p>Creates a Traffic Mirror filter.</p> <p>A Traffic Mirror filter is a set of rules that defines the traffic to mirror.</p> <p>By default, no traffic is mirrored. To mirror traffic, use <a>CreateTrafficMirrorFilterRule</a> to add Traffic Mirror rules to the filter. The rules you add define what traffic gets mirrored. You can also use <a>ModifyTrafficMirrorFilterNetworkServices</a> to mirror supported network services.</p>"
+      "documentation": "<p>Creates a Traffic Mirror filter.</p> <p>A Traffic Mirror filter is a set of rules that defines the traffic to mirror.</p> <p>By default, no traffic is mirrored. To mirror traffic, use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTrafficMirrorFilterRule.htm\">CreateTrafficMirrorFilterRule</a> to add Traffic Mirror rules to the filter. The rules you add define what traffic gets mirrored. You can also use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyTrafficMirrorFilterNetworkServices.html\">ModifyTrafficMirrorFilterNetworkServices</a> to mirror supported network services.</p>"
     },
     "CreateTrafficMirrorFilterRule": {
       "name": "CreateTrafficMirrorFilterRule",
       "output": {
         "shape": "CreateTrafficMirrorFilterRuleResult"
       },
-      "documentation": "<p>Creates a Traffic Mirror rule. </p> <p>A Traffic Mirror rule defines the Traffic Mirror source traffic to mirror.</p> <p>You need the Traffic Mirror filter ID when you create the rule.</p>"
+      "documentation": "<p>Creates a Traffic Mirror filter rule. </p> <p>A Traffic Mirror rule defines the Traffic Mirror source traffic to mirror.</p> <p>You need the Traffic Mirror filter ID when you create the rule.</p>"
     },
     "CreateTrafficMirrorSession": {
       "name": "CreateTrafficMirrorSession",
       "output": {
         "shape": "CreateTrafficMirrorSessionResult"
       },
-      "documentation": "<p>Creates a Traffic Mirror session.</p> <p>A Traffic Mirror session actively copies packets from a Traffic Mirror source to a Traffic Mirror target. Create a filter, and then assign it to the session to define a subset of the traffic to mirror, for example all TCP traffic.</p> <p>The Traffic Mirror source and the Traffic Mirror target (monitoring appliances) can be in the same VPC, or in a different VPC connected via VPC peering or a transit gateway. </p> <p>By default, no traffic is mirrored. Use <a>CreateTrafficMirrorFilter</a> to create filter rules that specify the traffic to mirror.</p>"
+      "documentation": "<p>Creates a Traffic Mirror session.</p> <p>A Traffic Mirror session actively copies packets from a Traffic Mirror source to a Traffic Mirror target. Create a filter, and then assign it to the session to define a subset of the traffic to mirror, for example all TCP traffic.</p> <p>The Traffic Mirror source and the Traffic Mirror target (monitoring appliances) can be in the same VPC, or in a different VPC connected via VPC peering or a transit gateway. </p> <p>By default, no traffic is mirrored. Use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTrafficMirrorFilter.htm\">CreateTrafficMirrorFilter</a> to create filter rules that specify the traffic to mirror.</p>"
     },
     "CreateTrafficMirrorTarget": {
       "name": "CreateTrafficMirrorTarget",
       "output": {
         "shape": "CreateTrafficMirrorTargetResult"
       },
-      "documentation": "<p>Creates a target for your Traffic Mirror session.</p> <p>A Traffic Mirror target is the destination for mirrored traffic. The Traffic Mirror source and the Traffic Mirror target (monitoring appliances) can be in the same VPC, or in different VPCs connected via VPC peering or a transit gateway.</p> <p>A Traffic Mirror target can be a network interface, or a Network Load Balancer.</p> <p>To use the target in a Traffic Mirror session, use <a>CreateTrafficMirrorSession</a>.</p>"
+      "documentation": "<p>Creates a target for your Traffic Mirror session.</p> <p>A Traffic Mirror target is the destination for mirrored traffic. The Traffic Mirror source and the Traffic Mirror target (monitoring appliances) can be in the same VPC, or in different VPCs connected via VPC peering or a transit gateway.</p> <p>A Traffic Mirror target can be a network interface, or a Network Load Balancer.</p> <p>To use the target in a Traffic Mirror session, use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTrafficMirrorSession.htm\">CreateTrafficMirrorSession</a>.</p>"
     },
     "CreateTransitGateway": {
       "name": "CreateTransitGateway",
       },
       "documentation": "<p>Creates a transit gateway.</p> <p>You can use a transit gateway to interconnect your virtual private clouds (VPC) and on-premises networks. After the transit gateway enters the <code>available</code> state, you can attach your VPCs and VPN connections to the transit gateway.</p> <p>To attach your VPCs, use <a>CreateTransitGatewayVpcAttachment</a>.</p> <p>To attach a VPN connection, use <a>CreateCustomerGateway</a> to create a customer gateway and specify the ID of the customer gateway and the ID of the transit gateway in a call to <a>CreateVpnConnection</a>.</p> <p>When you create a transit gateway, we create a default transit gateway route table and use it as the default association route table and the default propagation route table. You can use <a>CreateTransitGatewayRouteTable</a> to create additional transit gateway route tables. If you disable automatic route propagation, we do not create a default transit gateway route table. You can use <a>EnableTransitGatewayRouteTablePropagation</a> to propagate routes from a resource attachment to a transit gateway route table. If you disable automatic associations, you can use <a>AssociateTransitGatewayRouteTable</a> to associate a resource attachment with a transit gateway route table.</p>"
     },
+    "CreateTransitGatewayMulticastDomain": {
+      "name": "CreateTransitGatewayMulticastDomain",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "CreateTransitGatewayMulticastDomainRequest"
+      },
+      "output": {
+        "shape": "CreateTransitGatewayMulticastDomainResult"
+      },
+      "documentation": "<p>Creates a multicast domain using the specified transit gateway.</p> <p>The transit gateway must be in the available state before you create a domain. Use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeTransitGateways.html\">DescribeTransitGateways</a> to see the state of transit gateway.</p>"
+    },
+    "CreateTransitGatewayPeeringAttachment": {
+      "name": "CreateTransitGatewayPeeringAttachment",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "CreateTransitGatewayPeeringAttachmentRequest"
+      },
+      "output": {
+        "shape": "CreateTransitGatewayPeeringAttachmentResult"
+      },
+      "documentation": "<p>Requests a transit gateway peering attachment between the specified transit gateway (requester) and a peer transit gateway (accepter). The transit gateways must be in different Regions. The peer transit gateway can be in your account or a different AWS account. </p> <p>After you create the peering attachment, the owner of the accepter transit gateway must accept the attachment request.</p>"
+    },
     "CreateTransitGatewayRoute": {
       "name": "CreateTransitGatewayRoute",
       "http": {
       "output": {
         "shape": "CreateVpcResult"
       },
-      "documentation": "<p>Creates a VPC with the specified IPv4 CIDR block. The smallest VPC you can create uses a /28 netmask (16 IPv4 addresses), and the largest uses a /16 netmask (65,536 IPv4 addresses). For more information about how large to make your VPC, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html\">Your VPC and Subnets</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p> <p>You can optionally request an Amazon-provided IPv6 CIDR block for the VPC. The IPv6 CIDR block uses a /56 prefix length, and is allocated from Amazon's pool of IPv6 addresses. You cannot choose the IPv6 range for your VPC.</p> <p>By default, each instance you launch in the VPC has the default DHCP options, which include only a default DNS server that we provide (AmazonProvidedDNS). For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html\">DHCP Options Sets</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p> <p>You can specify the instance tenancy value for the VPC when you create it. You can't change this value for the VPC after you create it. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html\">Dedicated Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Creates a VPC with the specified IPv4 CIDR block. The smallest VPC you can create uses a /28 netmask (16 IPv4 addresses), and the largest uses a /16 netmask (65,536 IPv4 addresses). For more information about how large to make your VPC, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html\">Your VPC and Subnets</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p> <p>You can optionally request an IPv6 CIDR block for the VPC. You can request an Amazon-provided IPv6 CIDR block from Amazon's pool of IPv6 addresses, or an IPv6 CIDR block from an IPv6 address pool that you provisioned through bring your own IP addresses (<a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html\">BYOIP</a>).</p> <p>By default, each instance you launch in the VPC has the default DHCP options, which include only a default DNS server that we provide (AmazonProvidedDNS). For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html\">DHCP Options Sets</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p> <p>You can specify the instance tenancy value for the VPC when you create it. You can't change this value for the VPC after you create it. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html\">Dedicated Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "CreateVpcEndpoint": {
       "name": "CreateVpcEndpoint",
       "output": {
         "shape": "CreateVpcEndpointResult"
       },
-      "documentation": "<p>Creates a VPC endpoint for a specified service. An endpoint enables you to create a private connection between your VPC and the service. The service may be provided by AWS, an AWS Marketplace partner, or another AWS account. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html\">VPC Endpoints</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p> <p>A <code>gateway</code> endpoint serves as a target for a route in your route table for traffic destined for the AWS service. You can specify an endpoint policy to attach to the endpoint that will control access to the service from your VPC. You can also specify the VPC route tables that use the endpoint.</p> <p>An <code>interface</code> endpoint is a network interface in your subnet that serves as an endpoint for communicating with the specified service. You can specify the subnets in which to create an endpoint, and the security groups to associate with the endpoint network interface.</p> <p>Use <a>DescribeVpcEndpointServices</a> to get a list of supported services.</p>"
+      "documentation": "<p>Creates a VPC endpoint for a specified service. An endpoint enables you to create a private connection between your VPC and the service. The service may be provided by AWS, an AWS Marketplace Partner, or another AWS account. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html\">VPC Endpoints</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p> <p>A <code>gateway</code> endpoint serves as a target for a route in your route table for traffic destined for the AWS service. You can specify an endpoint policy to attach to the endpoint, which will control access to the service from your VPC. You can also specify the VPC route tables that use the endpoint.</p> <p>An <code>interface</code> endpoint is a network interface in your subnet that serves as an endpoint for communicating with the specified service. You can specify the subnets in which to create an endpoint, and the security groups to associate with the endpoint network interface.</p> <p>Use <a>DescribeVpcEndpointServices</a> to get a list of supported services.</p>"
     },
     "CreateVpcEndpointConnectionNotification": {
       "name": "CreateVpcEndpointConnectionNotification",
       "output": {
         "shape": "CreateVpcEndpointServiceConfigurationResult"
       },
-      "documentation": "<p>Creates a VPC endpoint service configuration to which service consumers (AWS accounts, IAM users, and IAM roles) can connect. Service consumers can create an interface VPC endpoint to connect to your service.</p> <p>To create an endpoint service configuration, you must first create a Network Load Balancer for your service. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html\">VPC Endpoint Services</a> in the <i>Amazon Virtual Private Cloud User Guide</i>. </p>"
+      "documentation": "<p>Creates a VPC endpoint service configuration to which service consumers (AWS accounts, IAM users, and IAM roles) can connect. Service consumers can create an interface VPC endpoint to connect to your service.</p> <p>To create an endpoint service configuration, you must first create a Network Load Balancer for your service. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html\">VPC Endpoint Services</a> in the <i>Amazon Virtual Private Cloud User Guide</i>. </p> <p>If you set the private DNS name, you must prove that you own the private DNS domain name. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-dns-validation.html\">VPC Endpoint Service Private DNS Name Verification</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
     },
     "CreateVpcPeeringConnection": {
       "name": "CreateVpcPeeringConnection",
       "output": {
         "shape": "CreateVpnConnectionResult"
       },
-      "documentation": "<p>Creates a VPN connection between an existing virtual private gateway and a VPN customer gateway. The supported connection types is <code>ipsec.1</code>.</p> <p>The response includes information that you need to give to your network administrator to configure your customer gateway.</p> <important> <p>We strongly recommend that you use HTTPS when calling this operation because the response contains sensitive cryptographic information for configuring your customer gateway.</p> </important> <p>If you decide to shut down your VPN connection for any reason and later create a new VPN connection, you must reconfigure your customer gateway with the new information returned from this call.</p> <p>This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html\">AWS Site-to-Site VPN</a> in the <i>AWS Site-to-Site VPN User Guide</i>.</p>"
+      "documentation": "<p>Creates a VPN connection between an existing virtual private gateway and a VPN customer gateway. The supported connection type is <code>ipsec.1</code>.</p> <p>The response includes information that you need to give to your network administrator to configure your customer gateway.</p> <important> <p>We strongly recommend that you use HTTPS when calling this operation because the response contains sensitive cryptographic information for configuring your customer gateway.</p> </important> <p>If you decide to shut down your VPN connection for any reason and later create a new VPN connection, you must reconfigure your customer gateway with the new information returned from this call.</p> <p>This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html\">AWS Site-to-Site VPN</a> in the <i>AWS Site-to-Site VPN User Guide</i>.</p>"
     },
     "CreateVpnConnectionRoute": {
       "name": "CreateVpnConnectionRoute",
       },
       "documentation": "<p>Deletes one or more versions of a launch template. You cannot delete the default version of a launch template; you must first assign a different version as the default. If the default version is the only version for the launch template, you must delete the entire launch template using <a>DeleteLaunchTemplate</a>.</p>"
     },
+    "DeleteLocalGatewayRoute": {
+      "name": "DeleteLocalGatewayRoute",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DeleteLocalGatewayRouteRequest"
+      },
+      "output": {
+        "shape": "DeleteLocalGatewayRouteResult"
+      },
+      "documentation": "<p>Deletes the specified route from the specified local gateway route table.</p>"
+    },
+    "DeleteLocalGatewayRouteTableVpcAssociation": {
+      "name": "DeleteLocalGatewayRouteTableVpcAssociation",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DeleteLocalGatewayRouteTableVpcAssociationRequest"
+      },
+      "output": {
+        "shape": "DeleteLocalGatewayRouteTableVpcAssociationResult"
+      },
+      "documentation": "<p>Deletes the specified association between a VPC and local gateway route table.</p>"
+    },
     "DeleteNatGateway": {
       "name": "DeleteNatGateway",
       "http": {
       },
       "documentation": "<p>Deletes the specified placement group. You must terminate all instances in the placement group before you can delete the placement group. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html\">Placement Groups</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
+    "DeleteQueuedReservedInstances": {
+      "name": "DeleteQueuedReservedInstances",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DeleteQueuedReservedInstancesRequest"
+      },
+      "output": {
+        "shape": "DeleteQueuedReservedInstancesResult"
+      },
+      "documentation": "<p>Deletes the queued purchases for the specified Reserved Instances.</p>"
+    },
     "DeleteRoute": {
       "name": "DeleteRoute",
       "http": {
       },
       "documentation": "<p>Deletes the specified transit gateway.</p>"
     },
+    "DeleteTransitGatewayMulticastDomain": {
+      "name": "DeleteTransitGatewayMulticastDomain",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DeleteTransitGatewayMulticastDomainRequest"
+      },
+      "output": {
+        "shape": "DeleteTransitGatewayMulticastDomainResult"
+      },
+      "documentation": "<p>Deletes the specified transit gateway multicast domain.</p>"
+    },
+    "DeleteTransitGatewayPeeringAttachment": {
+      "name": "DeleteTransitGatewayPeeringAttachment",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DeleteTransitGatewayPeeringAttachmentRequest"
+      },
+      "output": {
+        "shape": "DeleteTransitGatewayPeeringAttachmentResult"
+      },
+      "documentation": "<p>Deletes a transit gateway peering attachment.</p>"
+    },
     "DeleteTransitGatewayRoute": {
       "name": "DeleteTransitGatewayRoute",
       "http": {
       "input": {
         "shape": "DeleteVpnConnectionRequest"
       },
-      "documentation": "<p>Deletes the specified VPN connection.</p> <p>If you're deleting the VPC and its associated components, we recommend that you detach the virtual private gateway from the VPC and delete the VPC before deleting the VPN connection. If you believe that the tunnel credentials for your VPN connection have been compromised, you can delete the VPN connection and create a new one that has new keys, without needing to delete the VPC or virtual private gateway. If you create a new VPN connection, you must reconfigure the customer gateway using the new configuration information returned with the new VPN connection ID.</p>"
+      "documentation": "<p>Deletes the specified VPN connection.</p> <p>If you're deleting the VPC and its associated components, we recommend that you detach the virtual private gateway from the VPC and delete the VPC before deleting the VPN connection. If you believe that the tunnel credentials for your VPN connection have been compromised, you can delete the VPN connection and create a new one that has new keys, without needing to delete the VPC or virtual private gateway. If you create a new VPN connection, you must reconfigure the customer gateway device using the new configuration information returned with the new VPN connection ID.</p> <p>For certificate-based authentication, delete all AWS Certificate Manager (ACM) private certificates used for the AWS-side tunnel endpoints for the VPN connection before deleting the VPN connection.</p>"
     },
     "DeleteVpnConnectionRoute": {
       "name": "DeleteVpnConnectionRoute",
       "input": {
         "shape": "DeleteVpnGatewayRequest"
       },
-      "documentation": "<p>Deletes the specified virtual private gateway. We recommend that before you delete a virtual private gateway, you detach it from the VPC and delete the VPN connection. Note that you don't need to delete the virtual private gateway if you plan to delete and recreate the VPN connection between your VPC and your network.</p>"
+      "documentation": "<p>Deletes the specified virtual private gateway. You must first detach the virtual private gateway from the VPC. Note that you don't need to delete the virtual private gateway if you plan to delete and recreate the VPN connection between your VPC and your network.</p>"
     },
     "DeprovisionByoipCidr": {
       "name": "DeprovisionByoipCidr",
       },
       "documentation": "<p>Deregisters the specified AMI. After you deregister an AMI, it can't be used to launch new instances; however, it doesn't affect any instances that you've already launched from the AMI. You'll continue to incur usage costs for those instances until you terminate them.</p> <p>When you deregister an Amazon EBS-backed AMI, it doesn't affect the snapshot that was created for the root volume of the instance during the AMI creation process. When you deregister an instance store-backed AMI, it doesn't affect the files that you uploaded to Amazon S3 when you created the AMI.</p>"
     },
+    "DeregisterInstanceEventNotificationAttributes": {
+      "name": "DeregisterInstanceEventNotificationAttributes",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DeregisterInstanceEventNotificationAttributesRequest"
+      },
+      "output": {
+        "shape": "DeregisterInstanceEventNotificationAttributesResult"
+      },
+      "documentation": "<p>Deregisters tag keys to prevent tags that have the specified tag keys from being included in scheduled event notifications for resources in the Region.</p>"
+    },
+    "DeregisterTransitGatewayMulticastGroupMembers": {
+      "name": "DeregisterTransitGatewayMulticastGroupMembers",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DeregisterTransitGatewayMulticastGroupMembersRequest"
+      },
+      "output": {
+        "shape": "DeregisterTransitGatewayMulticastGroupMembersResult"
+      },
+      "documentation": "<p>Deregisters the specified members (network interfaces) from the transit gateway multicast group.</p>"
+    },
+    "DeregisterTransitGatewayMulticastGroupSources": {
+      "name": "DeregisterTransitGatewayMulticastGroupSources",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DeregisterTransitGatewayMulticastGroupSourcesRequest"
+      },
+      "output": {
+        "shape": "DeregisterTransitGatewayMulticastGroupSourcesResult"
+      },
+      "documentation": "<p>Deregisters the specified sources (network interfaces) from the transit gateway multicast group.</p>"
+    },
     "DescribeAccountAttributes": {
       "name": "DescribeAccountAttributes",
       "http": {
       "output": {
         "shape": "DescribeAccountAttributesResult"
       },
-      "documentation": "<p>Describes attributes of your AWS account. The following are the supported account attributes:</p> <ul> <li> <p> <code>supported-platforms</code>: Indicates whether your account can launch instances into EC2-Classic and EC2-VPC, or only into EC2-VPC.</p> </li> <li> <p> <code>default-vpc</code>: The ID of the default VPC for your account, or <code>none</code>.</p> </li> <li> <p> <code>max-instances</code>: The maximum number of On-Demand Instances that you can run.</p> </li> <li> <p> <code>vpc-max-security-groups-per-interface</code>: The maximum number of security groups that you can assign to a network interface.</p> </li> <li> <p> <code>max-elastic-ips</code>: The maximum number of Elastic IP addresses that you can allocate for use with EC2-Classic. </p> </li> <li> <p> <code>vpc-max-elastic-ips</code>: The maximum number of Elastic IP addresses that you can allocate for use with EC2-VPC.</p> </li> </ul>"
+      "documentation": "<p>Describes attributes of your AWS account. The following are the supported account attributes:</p> <ul> <li> <p> <code>supported-platforms</code>: Indicates whether your account can launch instances into EC2-Classic and EC2-VPC, or only into EC2-VPC.</p> </li> <li> <p> <code>default-vpc</code>: The ID of the default VPC for your account, or <code>none</code>.</p> </li> <li> <p> <code>max-instances</code>: This attribute is no longer supported. The returned value does not reflect your actual vCPU limit for running On-Demand Instances. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-on-demand-instances.html#ec2-on-demand-instances-limits\">On-Demand Instance Limits</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> </li> <li> <p> <code>vpc-max-security-groups-per-interface</code>: The maximum number of security groups that you can assign to a network interface.</p> </li> <li> <p> <code>max-elastic-ips</code>: The maximum number of Elastic IP addresses that you can allocate for use with EC2-Classic. </p> </li> <li> <p> <code>vpc-max-elastic-ips</code>: The maximum number of Elastic IP addresses that you can allocate for use with EC2-VPC.</p> </li> </ul>"
     },
     "DescribeAddresses": {
       "name": "DescribeAddresses",
       "output": {
         "shape": "DescribeAvailabilityZonesResult"
       },
-      "documentation": "<p>Describes the Availability Zones that are available to you. The results include zones only for the Region you're currently using. If there is an event impacting an Availability Zone, you can use this request to view the state and any provided message for that Availability Zone.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html\">Regions and Availability Zones</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Describes the Availability Zones and Local Zones that are available to you. If there is an event impacting an Availability Zone or Local Zone, you can use this request to view the state and any provided messages for that Availability Zone or Local Zone.</p> <p>For more information about Availability Zones and Local Zones, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html\">Regions and Availability Zones</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "DescribeBundleTasks": {
       "name": "DescribeBundleTasks",
       "output": {
         "shape": "DescribeByoipCidrsResult"
       },
-      "documentation": "<p>Describes the IP address ranges that were specified in calls to <a>ProvisionByoipCidr</a>.</p> <p>To describe the address pools that were created when you provisioned the address ranges, use <a>DescribePublicIpv4Pools</a>.</p>"
+      "documentation": "<p>Describes the IP address ranges that were specified in calls to <a>ProvisionByoipCidr</a>.</p> <p>To describe the address pools that were created when you provisioned the address ranges, use <a>DescribePublicIpv4Pools</a> or <a>DescribeIpv6Pools</a>.</p>"
     },
     "DescribeCapacityReservations": {
       "name": "DescribeCapacityReservations",
       },
       "documentation": "<p>Describes the target networks associated with the specified Client VPN endpoint.</p>"
     },
+    "DescribeCoipPools": {
+      "name": "DescribeCoipPools",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeCoipPoolsRequest"
+      },
+      "output": {
+        "shape": "DescribeCoipPoolsResult"
+      },
+      "documentation": "<p>Describes the specified customer-owned address pools or all of your customer-owned address pools.</p>"
+    },
     "DescribeConversionTasks": {
       "name": "DescribeConversionTasks",
       "http": {
       },
       "documentation": "<p>Describes the Elastic Graphics accelerator associated with your instances. For more information about Elastic Graphics, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-graphics.html\">Amazon Elastic Graphics</a>.</p>"
     },
+    "DescribeExportImageTasks": {
+      "name": "DescribeExportImageTasks",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeExportImageTasksRequest"
+      },
+      "output": {
+        "shape": "DescribeExportImageTasksResult"
+      },
+      "documentation": "<p>Describes the specified export image tasks or all your export image tasks.</p>"
+    },
     "DescribeExportTasks": {
       "name": "DescribeExportTasks",
       "http": {
       "output": {
         "shape": "DescribeExportTasksResult"
       },
-      "documentation": "<p>Describes the specified export tasks or all your export tasks.</p>"
+      "documentation": "<p>Describes the specified export instance tasks or all your export instance tasks.</p>"
+    },
+    "DescribeFastSnapshotRestores": {
+      "name": "DescribeFastSnapshotRestores",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeFastSnapshotRestoresRequest"
+      },
+      "output": {
+        "shape": "DescribeFastSnapshotRestoresResult"
+      },
+      "documentation": "<p>Describes the state of fast snapshot restores for your snapshots.</p>"
     },
     "DescribeFleetHistory": {
       "name": "DescribeFleetHistory",
       "output": {
         "shape": "DescribeFleetHistoryResult"
       },
-      "documentation": "<p>Describes the events for the specified EC2 Fleet during the specified time.</p>"
+      "documentation": "<p>Describes the events for the specified EC2 Fleet during the specified time.</p> <p>EC2 Fleet events are delayed by up to 30 seconds before they can be described. This ensures that you can query by the last evaluated time and not miss a recorded event. EC2 Fleet events are available for 48 hours.</p>"
     },
     "DescribeFleetInstances": {
       "name": "DescribeFleetInstances",
       "output": {
         "shape": "DescribeFleetsResult"
       },
-      "documentation": "<p>Describes the specified EC2 Fleets or all your EC2 Fleets.</p>"
+      "documentation": "<p>Describes the specified EC2 Fleets or all of your EC2 Fleets.</p>"
     },
     "DescribeFlowLogs": {
       "name": "DescribeFlowLogs",
       "output": {
         "shape": "DescribeHostReservationOfferingsResult"
       },
-      "documentation": "<p>Describes the Dedicated Host reservations that are available to purchase.</p> <p>The results describe all the Dedicated Host reservation offerings, including offerings that may not match the instance family and Region of your Dedicated Hosts. When purchasing an offering, ensure that the instance family and Region of the offering matches that of the Dedicated Hosts with which it is to be associated. For more information about supported instance types, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html\">Dedicated Hosts Overview</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>. </p>"
+      "documentation": "<p>Describes the Dedicated Host reservations that are available to purchase.</p> <p>The results describe all of the Dedicated Host reservation offerings, including offerings that might not match the instance family and Region of your Dedicated Hosts. When purchasing an offering, ensure that the instance family and Region of the offering matches that of the Dedicated Hosts with which it is to be associated. For more information about supported instance types, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html\">Dedicated Hosts Overview</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>. </p>"
     },
     "DescribeHostReservations": {
       "name": "DescribeHostReservations",
       "output": {
         "shape": "DescribeInstanceCreditSpecificationsResult"
       },
-      "documentation": "<p>Describes the credit option for CPU usage of the specified T2 or T3 instances. The credit options are <code>standard</code> and <code>unlimited</code>.</p> <p>If you do not specify an instance ID, Amazon EC2 returns T2 and T3 instances with the <code>unlimited</code> credit option, as well as instances that were previously configured as T2 or T3 with the <code>unlimited</code> credit option. For example, if you resize a T2 instance, while it is configured as <code>unlimited</code>, to an M4 instance, Amazon EC2 returns the M4 instance.</p> <p>If you specify one or more instance IDs, Amazon EC2 returns the credit option (<code>standard</code> or <code>unlimited</code>) of those instances. If you specify an instance ID that is not valid, such as an instance that is not a T2 or T3 instance, an error is returned.</p> <p>Recently terminated instances might appear in the returned results. This interval is usually less than one hour.</p> <p>If an Availability Zone is experiencing a service disruption and you specify instance IDs in the affected zone, or do not specify any instance IDs at all, the call fails. If you specify only instance IDs in an unaffected zone, the call works normally.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html\">Burstable Performance Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Describes the credit option for CPU usage of the specified burstable performance instances. The credit options are <code>standard</code> and <code>unlimited</code>.</p> <p>If you do not specify an instance ID, Amazon EC2 returns burstable performance instances with the <code>unlimited</code> credit option, as well as instances that were previously configured as T2, T3, and T3a with the <code>unlimited</code> credit option. For example, if you resize a T2 instance, while it is configured as <code>unlimited</code>, to an M4 instance, Amazon EC2 returns the M4 instance.</p> <p>If you specify one or more instance IDs, Amazon EC2 returns the credit option (<code>standard</code> or <code>unlimited</code>) of those instances. If you specify an instance ID that is not valid, such as an instance that is not a burstable performance instance, an error is returned.</p> <p>Recently terminated instances might appear in the returned results. This interval is usually less than one hour.</p> <p>If an Availability Zone is experiencing a service disruption and you specify instance IDs in the affected zone, or do not specify any instance IDs at all, the call fails. If you specify only instance IDs in an unaffected zone, the call works normally.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html\">Burstable Performance Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+    },
+    "DescribeInstanceEventNotificationAttributes": {
+      "name": "DescribeInstanceEventNotificationAttributes",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeInstanceEventNotificationAttributesRequest"
+      },
+      "output": {
+        "shape": "DescribeInstanceEventNotificationAttributesResult"
+      },
+      "documentation": "<p>Describes the tag keys that are registered to appear in scheduled event notifications for resources in the current Region.</p>"
     },
     "DescribeInstanceStatus": {
       "name": "DescribeInstanceStatus",
       },
       "documentation": "<p>Describes the status of the specified instances or all of your instances. By default, only running instances are described, unless you specifically indicate to return the status of all instances.</p> <p>Instance status includes the following components:</p> <ul> <li> <p> <b>Status checks</b> - Amazon EC2 performs status checks on running EC2 instances to identify hardware and software issues. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html\">Status Checks for Your Instances</a> and <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html\">Troubleshooting Instances with Failed Status Checks</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> </li> <li> <p> <b>Scheduled events</b> - Amazon EC2 can schedule events (such as reboot, stop, or terminate) for your instances related to hardware issues, software updates, or system maintenance. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html\">Scheduled Events for Your Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> </li> <li> <p> <b>Instance state</b> - You can manage your instances from the moment you launch them through their termination. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html\">Instance Lifecycle</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> </li> </ul>"
     },
+    "DescribeInstanceTypeOfferings": {
+      "name": "DescribeInstanceTypeOfferings",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeInstanceTypeOfferingsRequest"
+      },
+      "output": {
+        "shape": "DescribeInstanceTypeOfferingsResult"
+      },
+      "documentation": "<p>Returns a list of all instance types offered. The results can be filtered by location (Region or Availability Zone). If no location is specified, the instance types offered in the current Region are returned.</p>"
+    },
+    "DescribeInstanceTypes": {
+      "name": "DescribeInstanceTypes",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeInstanceTypesRequest"
+      },
+      "output": {
+        "shape": "DescribeInstanceTypesResult"
+      },
+      "documentation": "<p>Returns a list of all instance types offered in your current AWS Region. The results can be filtered by the attributes of the instance types.</p>"
+    },
     "DescribeInstances": {
       "name": "DescribeInstances",
       "http": {
       "output": {
         "shape": "DescribeInstancesResult"
       },
-      "documentation": "<p>Describes the specified instances or all of your instances.</p> <p>If you specify one or more instance IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned results.</p> <p>Recently terminated instances might appear in the returned results. This interval is usually less than one hour.</p> <p>If you describe instances in the rare case where an Availability Zone is experiencing a service disruption and you specify instance IDs that are in the affected zone, or do not specify any instance IDs at all, the call fails. If you describe instances and specify only instance IDs that are in an unaffected zone, the call works normally.</p>"
+      "documentation": "<p>Describes the specified instances or all of AWS account's instances.</p> <p>If you specify one or more instance IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned results.</p> <p>Recently terminated instances might appear in the returned results. This interval is usually less than one hour.</p> <p>If you describe instances in the rare case where an Availability Zone is experiencing a service disruption and you specify instance IDs that are in the affected zone, or do not specify any instance IDs at all, the call fails. If you describe instances and specify only instance IDs that are in an unaffected zone, the call works normally.</p>"
     },
     "DescribeInternetGateways": {
       "name": "DescribeInternetGateways",
       },
       "documentation": "<p>Describes one or more of your internet gateways.</p>"
     },
+    "DescribeIpv6Pools": {
+      "name": "DescribeIpv6Pools",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeIpv6PoolsRequest"
+      },
+      "output": {
+        "shape": "DescribeIpv6PoolsResult"
+      },
+      "documentation": "<p>Describes your IPv6 address pools.</p>"
+    },
     "DescribeKeyPairs": {
       "name": "DescribeKeyPairs",
       "http": {
       },
       "documentation": "<p>Describes one or more launch templates.</p>"
     },
+    "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations": {
+      "name": "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociationsRequest"
+      },
+      "output": {
+        "shape": "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociationsResult"
+      },
+      "documentation": "<p>Describes the associations between virtual interface groups and local gateway route tables.</p>"
+    },
+    "DescribeLocalGatewayRouteTableVpcAssociations": {
+      "name": "DescribeLocalGatewayRouteTableVpcAssociations",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeLocalGatewayRouteTableVpcAssociationsRequest"
+      },
+      "output": {
+        "shape": "DescribeLocalGatewayRouteTableVpcAssociationsResult"
+      },
+      "documentation": "<p>Describes the specified associations between VPCs and local gateway route tables.</p>"
+    },
+    "DescribeLocalGatewayRouteTables": {
+      "name": "DescribeLocalGatewayRouteTables",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeLocalGatewayRouteTablesRequest"
+      },
+      "output": {
+        "shape": "DescribeLocalGatewayRouteTablesResult"
+      },
+      "documentation": "<p>Describes one or more local gateway route tables. By default, all local gateway route tables are described. Alternatively, you can filter the results.</p>"
+    },
+    "DescribeLocalGatewayVirtualInterfaceGroups": {
+      "name": "DescribeLocalGatewayVirtualInterfaceGroups",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeLocalGatewayVirtualInterfaceGroupsRequest"
+      },
+      "output": {
+        "shape": "DescribeLocalGatewayVirtualInterfaceGroupsResult"
+      },
+      "documentation": "<p>Describes the specified local gateway virtual interface groups.</p>"
+    },
+    "DescribeLocalGatewayVirtualInterfaces": {
+      "name": "DescribeLocalGatewayVirtualInterfaces",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeLocalGatewayVirtualInterfacesRequest"
+      },
+      "output": {
+        "shape": "DescribeLocalGatewayVirtualInterfacesResult"
+      },
+      "documentation": "<p>Describes the specified local gateway virtual interfaces.</p>"
+    },
+    "DescribeLocalGateways": {
+      "name": "DescribeLocalGateways",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeLocalGatewaysRequest"
+      },
+      "output": {
+        "shape": "DescribeLocalGatewaysResult"
+      },
+      "documentation": "<p>Describes one or more local gateways. By default, all local gateways are described. Alternatively, you can filter the results.</p>"
+    },
     "DescribeMovingAddresses": {
       "name": "DescribeMovingAddresses",
       "http": {
       "output": {
         "shape": "DescribeRegionsResult"
       },
-      "documentation": "<p>Describes the Regions that are currently available to you. The API returns a list of all the Regions, including Regions that are disabled for your account. For information about enabling Regions for your account, see <a href=\"https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-account-payment.html#manage-account-payment-enable-disable-regions\">Enabling and Disabling Regions</a> in the <i>AWS Billing and Cost Management User Guide</i>.</p> <p>For a list of the Regions supported by Amazon EC2, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region\"> Regions and Endpoints</a>.</p>"
+      "documentation": "<p>Describes the Regions that are enabled for your account, or all Regions.</p> <p>For a list of the Regions supported by Amazon EC2, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region\"> Regions and Endpoints</a>.</p> <p>For information about enabling and disabling Regions for your account, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande-manage.html\">Managing AWS Regions</a> in the <i>AWS General Reference</i>.</p>"
     },
     "DescribeReservedInstances": {
       "name": "DescribeReservedInstances",
       "output": {
         "shape": "DescribeSnapshotsResult"
       },
-      "documentation": "<p>Describes the specified EBS snapshots available to you or all of the EBS snapshots available to you.</p> <p>The snapshots available to you include public snapshots, private snapshots that you own, and private snapshots owned by other AWS accounts for which you have explicit create volume permissions.</p> <p>The create volume permissions fall into the following categories:</p> <ul> <li> <p> <i>public</i>: The owner of the snapshot granted create volume permissions for the snapshot to the <code>all</code> group. All AWS accounts have create volume permissions for these snapshots.</p> </li> <li> <p> <i>explicit</i>: The owner of the snapshot granted create volume permissions to a specific AWS account.</p> </li> <li> <p> <i>implicit</i>: An AWS account has implicit create volume permissions for all snapshots it owns.</p> </li> </ul> <p>The list of snapshots returned can be modified by specifying snapshot IDs, snapshot owners, or AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all snapshots for which you have create volume permissions.</p> <p>If you specify one or more snapshot IDs, only snapshots that have the specified IDs are returned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshot ID for which you do not have access, it is not included in the returned results.</p> <p>If you specify one or more snapshot owners using the <code>OwnerIds</code> option, only snapshots from the specified owners and for which you have access are returned. The results can include the AWS account IDs of the specified owners, <code>amazon</code> for snapshots owned by Amazon, or <code>self</code> for snapshots that you own.</p> <p>If you specify a list of restorable users, only snapshots with create snapshot permissions for those users are returned. You can specify AWS account IDs (if you own the snapshots), <code>self</code> for snapshots for which you own or have explicit permissions, or <code>all</code> for public snapshots.</p> <p>If you are describing a long list of snapshots, you can paginate the output to make the list more manageable. The <code>MaxResults</code> parameter sets the maximum number of results returned in a single page. If the list of results exceeds your <code>MaxResults</code> value, then that number of results is returned along with a <code>NextToken</code> value that can be passed to a subsequent <code>DescribeSnapshots</code> request to retrieve the remaining results.</p> <p>For more information about EBS snapshots, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html\">Amazon EBS Snapshots</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Describes the specified EBS snapshots available to you or all of the EBS snapshots available to you.</p> <p>The snapshots available to you include public snapshots, private snapshots that you own, and private snapshots owned by other AWS accounts for which you have explicit create volume permissions.</p> <p>The create volume permissions fall into the following categories:</p> <ul> <li> <p> <i>public</i>: The owner of the snapshot granted create volume permissions for the snapshot to the <code>all</code> group. All AWS accounts have create volume permissions for these snapshots.</p> </li> <li> <p> <i>explicit</i>: The owner of the snapshot granted create volume permissions to a specific AWS account.</p> </li> <li> <p> <i>implicit</i>: An AWS account has implicit create volume permissions for all snapshots it owns.</p> </li> </ul> <p>The list of snapshots returned can be filtered by specifying snapshot IDs, snapshot owners, or AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all snapshots for which you have create volume permissions.</p> <p>If you specify one or more snapshot IDs, only snapshots that have the specified IDs are returned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshot ID for which you do not have access, it is not included in the returned results.</p> <p>If you specify one or more snapshot owners using the <code>OwnerIds</code> option, only snapshots from the specified owners and for which you have access are returned. The results can include the AWS account IDs of the specified owners, <code>amazon</code> for snapshots owned by Amazon, or <code>self</code> for snapshots that you own.</p> <p>If you specify a list of restorable users, only snapshots with create snapshot permissions for those users are returned. You can specify AWS account IDs (if you own the snapshots), <code>self</code> for snapshots for which you own or have explicit permissions, or <code>all</code> for public snapshots.</p> <p>If you are describing a long list of snapshots, you can paginate the output to make the list more manageable. The <code>MaxResults</code> parameter sets the maximum number of results returned in a single page. If the list of results exceeds your <code>MaxResults</code> value, then that number of results is returned along with a <code>NextToken</code> value that can be passed to a subsequent <code>DescribeSnapshots</code> request to retrieve the remaining results.</p> <p>To get the state of fast snapshot restores for a snapshot, use <a>DescribeFastSnapshotRestores</a>.</p> <p>For more information about EBS snapshots, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html\">Amazon EBS Snapshots</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "DescribeSpotDatafeedSubscription": {
       "name": "DescribeSpotDatafeedSubscription",
       "output": {
         "shape": "DescribeSpotInstanceRequestsResult"
       },
-      "documentation": "<p>Describes the specified Spot Instance requests.</p> <p>You can use <code>DescribeSpotInstanceRequests</code> to find a running Spot Instance by examining the response. If the status of the Spot Instance is <code>fulfilled</code>, the instance ID appears in the response and contains the identifier of the instance. Alternatively, you can use <a>DescribeInstances</a> with a filter to look for instances where the instance lifecycle is <code>spot</code>.</p> <p>We recommend that you set <code>MaxResults</code> to a value between 5 and 1000 to limit the number of results returned. This paginates the output, which makes the list more manageable and returns the results faster. If the list of results exceeds your <code>MaxResults</code> value, then that number of results is returned along with a <code>NextToken</code> value that can be passed to a subsequent <code>DescribeSpotInstanceRequests</code> request to retrieve the remaining results.</p> <p>Spot Instance requests are deleted four hours after they are canceled and their instances are terminated.</p>"
+      "documentation": "<p>Describes the specified Spot Instance requests.</p> <p>You can use <code>DescribeSpotInstanceRequests</code> to find a running Spot Instance by examining the response. If the status of the Spot Instance is <code>fulfilled</code>, the instance ID appears in the response and contains the identifier of the instance. Alternatively, you can use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances\">DescribeInstances</a> with a filter to look for instances where the instance lifecycle is <code>spot</code>.</p> <p>We recommend that you set <code>MaxResults</code> to a value between 5 and 1000 to limit the number of results returned. This paginates the output, which makes the list more manageable and returns the results faster. If the list of results exceeds your <code>MaxResults</code> value, then that number of results is returned along with a <code>NextToken</code> value that can be passed to a subsequent <code>DescribeSpotInstanceRequests</code> request to retrieve the remaining results.</p> <p>Spot Instance requests are deleted four hours after they are canceled and their instances are terminated.</p>"
     },
     "DescribeSpotPriceHistory": {
       "name": "DescribeSpotPriceHistory",
       },
       "documentation": "<p>Describes one or more attachments between resources and transit gateways. By default, all attachments are described. Alternatively, you can filter the results by attachment ID, attachment state, resource ID, or resource owner.</p>"
     },
+    "DescribeTransitGatewayMulticastDomains": {
+      "name": "DescribeTransitGatewayMulticastDomains",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeTransitGatewayMulticastDomainsRequest"
+      },
+      "output": {
+        "shape": "DescribeTransitGatewayMulticastDomainsResult"
+      },
+      "documentation": "<p>Describes one or more transit gateway multicast domains.</p>"
+    },
+    "DescribeTransitGatewayPeeringAttachments": {
+      "name": "DescribeTransitGatewayPeeringAttachments",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DescribeTransitGatewayPeeringAttachmentsRequest"
+      },
+      "output": {
+        "shape": "DescribeTransitGatewayPeeringAttachmentsResult"
+      },
+      "documentation": "<p>Describes your transit gateway peering attachments.</p>"
+    },
     "DescribeTransitGatewayRouteTables": {
       "name": "DescribeTransitGatewayRouteTables",
       "http": {
       },
       "documentation": "<p>Disables EBS encryption by default for your account in the current Region.</p> <p>After you disable encryption by default, you can still create encrypted volumes by enabling encryption when you create each volume.</p> <p>Disabling encryption by default does not change the encryption status of your existing volumes.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html\">Amazon EBS Encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
+    "DisableFastSnapshotRestores": {
+      "name": "DisableFastSnapshotRestores",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DisableFastSnapshotRestoresRequest"
+      },
+      "output": {
+        "shape": "DisableFastSnapshotRestoresResult"
+      },
+      "documentation": "<p>Disables fast snapshot restores for the specified snapshots in the specified Availability Zones.</p>"
+    },
     "DisableTransitGatewayRouteTablePropagation": {
       "name": "DisableTransitGatewayRouteTablePropagation",
       "http": {
       "output": {
         "shape": "DisableVpcClassicLinkDnsSupportResult"
       },
-      "documentation": "<p>Disables ClassicLink DNS support for a VPC. If disabled, DNS hostnames resolve to public IP addresses when addressed between a linked EC2-Classic instance and instances in the VPC to which it's linked. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html\">ClassicLink</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Disables ClassicLink DNS support for a VPC. If disabled, DNS hostnames resolve to public IP addresses when addressed between a linked EC2-Classic instance and instances in the VPC to which it's linked. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html\">ClassicLink</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>You must specify a VPC ID in the request.</p>"
     },
     "DisassociateAddress": {
       "name": "DisassociateAddress",
       "input": {
         "shape": "DisassociateRouteTableRequest"
       },
-      "documentation": "<p>Disassociates a subnet from a route table.</p> <p>After you perform this action, the subnet no longer uses the routes in the route table. Instead, it uses the routes in the VPC's main route table. For more information about route tables, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
+      "documentation": "<p>Disassociates a subnet or gateway from a route table.</p> <p>After you perform this action, the subnet no longer uses the routes in the route table. Instead, it uses the routes in the VPC's main route table. For more information about route tables, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
     },
     "DisassociateSubnetCidrBlock": {
       "name": "DisassociateSubnetCidrBlock",
       },
       "documentation": "<p>Disassociates a CIDR block from a subnet. Currently, you can disassociate an IPv6 CIDR block only. You must detach or delete all gateways and resources that are associated with the CIDR block before you can disassociate it. </p>"
     },
+    "DisassociateTransitGatewayMulticastDomain": {
+      "name": "DisassociateTransitGatewayMulticastDomain",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "DisassociateTransitGatewayMulticastDomainRequest"
+      },
+      "output": {
+        "shape": "DisassociateTransitGatewayMulticastDomainResult"
+      },
+      "documentation": "<p>Disassociates the specified subnets from the transit gateway multicast domain. </p>"
+    },
     "DisassociateTransitGatewayRouteTable": {
       "name": "DisassociateTransitGatewayRouteTable",
       "http": {
       },
       "documentation": "<p>Enables EBS encryption by default for your account in the current Region.</p> <p>After you enable encryption by default, the EBS volumes that you create are are always encrypted, either using the default CMK or the CMK that you specified when you created each volume. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html\">Amazon EBS Encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>You can specify the default CMK for encryption by default using <a>ModifyEbsDefaultKmsKeyId</a> or <a>ResetEbsDefaultKmsKeyId</a>.</p> <p>Enabling encryption by default has no effect on the encryption status of your existing volumes.</p> <p>After you enable encryption by default, you can no longer launch instances using instance types that do not support encryption. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances\">Supported Instance Types</a>.</p>"
     },
+    "EnableFastSnapshotRestores": {
+      "name": "EnableFastSnapshotRestores",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "EnableFastSnapshotRestoresRequest"
+      },
+      "output": {
+        "shape": "EnableFastSnapshotRestoresResult"
+      },
+      "documentation": "<p>Enables fast snapshot restores for the specified snapshots in the specified Availability Zones.</p> <p>You get the full benefit of fast snapshot restores after they enter the <code>enabled</code> state. To get the current state of fast snapshot restores, use <a>DescribeFastSnapshotRestores</a>. To disable fast snapshot restores, use <a>DisableFastSnapshotRestores</a>.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-fast-snapshot-restore.html\">Amazon EBS Fast Snapshot Restore</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+    },
     "EnableTransitGatewayRouteTablePropagation": {
       "name": "EnableTransitGatewayRouteTablePropagation",
       "http": {
       "output": {
         "shape": "EnableVpcClassicLinkDnsSupportResult"
       },
-      "documentation": "<p>Enables a VPC to support DNS hostname resolution for ClassicLink. If enabled, the DNS hostname of a linked EC2-Classic instance resolves to its private IP address when addressed from an instance in the VPC to which it's linked. Similarly, the DNS hostname of an instance in a VPC resolves to its private IP address when addressed from a linked EC2-Classic instance. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html\">ClassicLink</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Enables a VPC to support DNS hostname resolution for ClassicLink. If enabled, the DNS hostname of a linked EC2-Classic instance resolves to its private IP address when addressed from an instance in the VPC to which it's linked. Similarly, the DNS hostname of an instance in a VPC resolves to its private IP address when addressed from a linked EC2-Classic instance. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html\">ClassicLink</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>You must specify a VPC ID in the request.</p>"
     },
     "ExportClientVpnClientCertificateRevocationList": {
       "name": "ExportClientVpnClientCertificateRevocationList",
       },
       "documentation": "<p>Downloads the contents of the Client VPN endpoint configuration file for the specified Client VPN endpoint. The Client VPN endpoint configuration file includes the Client VPN endpoint and certificate information clients need to establish a connection with the Client VPN endpoint.</p>"
     },
+    "ExportImage": {
+      "name": "ExportImage",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "ExportImageRequest"
+      },
+      "output": {
+        "shape": "ExportImageResult"
+      },
+      "documentation": "<p>Exports an Amazon Machine Image (AMI) to a VM file. For more information, see <a href=\"https://docs.aws.amazon.com/vm-import/latest/userguide/vmexport_image.html\">Exporting a VM Directory from an Amazon Machine Image (AMI)</a> in the <i>VM Import/Export User Guide</i>.</p>"
+    },
     "ExportTransitGatewayRoutes": {
       "name": "ExportTransitGatewayRoutes",
       "http": {
       "output": {
         "shape": "ExportTransitGatewayRoutesResult"
       },
-      "documentation": "<p>Exports routes from the specified transit gateway route table to the specified S3 bucket. By default, all routes are exported. Alternatively, you can filter by CIDR range.</p>"
+      "documentation": "<p>Exports routes from the specified transit gateway route table to the specified S3 bucket. By default, all routes are exported. Alternatively, you can filter by CIDR range.</p> <p>The routes are saved to the specified bucket in a JSON file. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/tgw/tgw-route-tables.html#tgw-export-route-tables\">Export Route Tables to Amazon S3</a> in <i>Transit Gateways</i>.</p>"
+    },
+    "GetAssociatedIpv6PoolCidrs": {
+      "name": "GetAssociatedIpv6PoolCidrs",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "GetAssociatedIpv6PoolCidrsRequest"
+      },
+      "output": {
+        "shape": "GetAssociatedIpv6PoolCidrsResult"
+      },
+      "documentation": "<p>Gets information about the IPv6 CIDR block associations for a specified IPv6 address pool.</p>"
+    },
+    "GetCapacityReservationUsage": {
+      "name": "GetCapacityReservationUsage",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "GetCapacityReservationUsageRequest"
+      },
+      "output": {
+        "shape": "GetCapacityReservationUsageResult"
+      },
+      "documentation": "<p>Gets usage information about a Capacity Reservation. If the Capacity Reservation is shared, it shows usage information for the Capacity Reservation owner and each AWS account that is currently using the shared capacity. If the Capacity Reservation is not shared, it shows only the Capacity Reservation owner's usage.</p>"
+    },
+    "GetCoipPoolUsage": {
+      "name": "GetCoipPoolUsage",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "GetCoipPoolUsageRequest"
+      },
+      "output": {
+        "shape": "GetCoipPoolUsageResult"
+      },
+      "documentation": "<p>Describes the allocations from the specified customer-owned address pool.</p>"
     },
     "GetConsoleOutput": {
       "name": "GetConsoleOutput",
       },
       "documentation": "<p>Retrieve a JPG-format screenshot of a running instance to help with troubleshooting.</p> <p>The returned content is Base64-encoded.</p>"
     },
+    "GetDefaultCreditSpecification": {
+      "name": "GetDefaultCreditSpecification",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "GetDefaultCreditSpecificationRequest"
+      },
+      "output": {
+        "shape": "GetDefaultCreditSpecificationResult"
+      },
+      "documentation": "<p>Describes the default credit option for CPU usage of a burstable performance instance family.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html\">Burstable Performance Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+    },
     "GetEbsDefaultKmsKeyId": {
       "name": "GetEbsDefaultKmsKeyId",
       "http": {
       },
       "documentation": "<p>Lists the route tables to which the specified resource attachment propagates routes.</p>"
     },
+    "GetTransitGatewayMulticastDomainAssociations": {
+      "name": "GetTransitGatewayMulticastDomainAssociations",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "GetTransitGatewayMulticastDomainAssociationsRequest"
+      },
+      "output": {
+        "shape": "GetTransitGatewayMulticastDomainAssociationsResult"
+      },
+      "documentation": "<p>Gets information about the associations for the transit gateway multicast domain.</p>"
+    },
     "GetTransitGatewayRouteTableAssociations": {
       "name": "GetTransitGatewayRouteTableAssociations",
       "http": {
       },
       "documentation": "<p>Creates an import volume task using metadata from the specified disk image.For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/importing-your-volumes-into-amazon-ebs.html\">Importing Disks to Amazon EBS</a>.</p> <p>For information about the import manifest referenced by this API action, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html\">VM Import Manifest</a>.</p>"
     },
+    "ModifyAvailabilityZoneGroup": {
+      "name": "ModifyAvailabilityZoneGroup",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "ModifyAvailabilityZoneGroupRequest"
+      },
+      "output": {
+        "shape": "ModifyAvailabilityZoneGroupResult"
+      },
+      "documentation": "<p>Enables or disables an Availability Zone group for your account.</p> <p>Use <a href=\"https://docs.aws.amazon.com/AWSEC2ApiDocReef/build/server-root/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html\">describe-availability-zones</a> to view the value for <code>GroupName</code>.</p>"
+    },
     "ModifyCapacityReservation": {
       "name": "ModifyCapacityReservation",
       "http": {
       "output": {
         "shape": "ModifyClientVpnEndpointResult"
       },
-      "documentation": "<p>Modifies the specified Client VPN endpoint. You can only modify an endpoint's server certificate information, client connection logging information, DNS server, and description. Modifying the DNS server resets existing client connections.</p>"
+      "documentation": "<p>Modifies the specified Client VPN endpoint. Modifying the DNS server resets existing client connections.</p>"
+    },
+    "ModifyDefaultCreditSpecification": {
+      "name": "ModifyDefaultCreditSpecification",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "ModifyDefaultCreditSpecificationRequest"
+      },
+      "output": {
+        "shape": "ModifyDefaultCreditSpecificationResult"
+      },
+      "documentation": "<p>Modifies the default credit option for CPU usage of burstable performance instances. The default credit option is set at the account level per AWS Region, and is specified per instance family. All new burstable performance instances in the account launch using the default credit option.</p> <p> <code>ModifyDefaultCreditSpecification</code> is an asynchronous operation, which works at an AWS Region level and modifies the credit option for each Availability Zone. All zones in a Region are updated within five minutes. But if instances are launched during this operation, they might not get the new credit option until the zone is updated. To verify whether the update has occurred, you can call <code>GetDefaultCreditSpecification</code> and check <code>DefaultCreditSpecification</code> for updates.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html\">Burstable Performance Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "ModifyEbsDefaultKmsKeyId": {
       "name": "ModifyEbsDefaultKmsKeyId",
       "output": {
         "shape": "ModifyEbsDefaultKmsKeyIdResult"
       },
-      "documentation": "<p>Changes the default customer master key (CMK) for EBS encryption by default for your account in this Region.</p> <p>AWS creates a unique AWS managed CMK in each Region for use with encryption by default. If you change the default CMK to a customer managed CMK, it is used instead of the AWS managed CMK. To reset the default CMK to the AWS managed CMK for EBS, use <a>ResetEbsDefaultKmsKeyId</a>.</p> <p>If you delete or disable the customer managed CMK that you specified for use with encryption by default, your instances will fail to launch.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html\">Amazon EBS Encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Changes the default customer master key (CMK) for EBS encryption by default for your account in this Region.</p> <p>AWS creates a unique AWS managed CMK in each Region for use with encryption by default. If you change the default CMK to a symmetric customer managed CMK, it is used instead of the AWS managed CMK. To reset the default CMK to the AWS managed CMK for EBS, use <a>ResetEbsDefaultKmsKeyId</a>. Amazon EBS does not support asymmetric CMKs.</p> <p>If you delete or disable the customer managed CMK that you specified for use with encryption by default, your instances will fail to launch.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html\">Amazon EBS Encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "ModifyFleet": {
       "name": "ModifyFleet",
       "output": {
         "shape": "ModifyFleetResult"
       },
-      "documentation": "<p>Modifies the specified EC2 Fleet.</p> <p>While the EC2 Fleet is being modified, it is in the <code>modifying</code> state.</p>"
+      "documentation": "<p>Modifies the specified EC2 Fleet.</p> <p>You can only modify an EC2 Fleet request of type <code>maintain</code>.</p> <p>While the EC2 Fleet is being modified, it is in the <code>modifying</code> state.</p> <p>To scale up your EC2 Fleet, increase its target capacity. The EC2 Fleet launches the additional Spot Instances according to the allocation strategy for the EC2 Fleet request. If the allocation strategy is <code>lowest-price</code>, the EC2 Fleet launches instances using the Spot Instance pool with the lowest price. If the allocation strategy is <code>diversified</code>, the EC2 Fleet distributes the instances across the Spot Instance pools. If the allocation strategy is <code>capacity-optimized</code>, EC2 Fleet launches instances from Spot Instance pools with optimal capacity for the number of instances that are launching.</p> <p>To scale down your EC2 Fleet, decrease its target capacity. First, the EC2 Fleet cancels any open requests that exceed the new target capacity. You can request that the EC2 Fleet terminate Spot Instances until the size of the fleet no longer exceeds the new target capacity. If the allocation strategy is <code>lowest-price</code>, the EC2 Fleet terminates the instances with the highest price per unit. If the allocation strategy is <code>capacity-optimized</code>, the EC2 Fleet terminates the instances in the Spot Instance pools that have the least available Spot Instance capacity. If the allocation strategy is <code>diversified</code>, the EC2 Fleet terminates instances across the Spot Instance pools. Alternatively, you can request that the EC2 Fleet keep the fleet at its current size, but not replace any Spot Instances that are interrupted or that you terminate manually.</p> <p>If you are finished with your EC2 Fleet for now, but will use it again later, you can set the target capacity to 0.</p>"
     },
     "ModifyFpgaImageAttribute": {
       "name": "ModifyFpgaImageAttribute",
       "output": {
         "shape": "ModifyHostsResult"
       },
-      "documentation": "<p>Modify the auto-placement setting of a Dedicated Host. When auto-placement is enabled, any instances that you launch with a tenancy of <code>host</code> but without a specific host ID are placed onto any available Dedicated Host in your account that has auto-placement enabled. When auto-placement is disabled, you need to provide a host ID to have the instance launch onto a specific host. If no host ID is provided, the instance is launched onto a suitable host with auto-placement enabled.</p>"
+      "documentation": "<p>Modify the auto-placement setting of a Dedicated Host. When auto-placement is enabled, any instances that you launch with a tenancy of <code>host</code> but without a specific host ID are placed onto any available Dedicated Host in your account that has auto-placement enabled. When auto-placement is disabled, you need to provide a host ID to have the instance launch onto a specific host. If no host ID is provided, the instance is launched onto a suitable host with auto-placement enabled.</p> <p>You can also use this API action to modify a Dedicated Host to support either multiple instance types in an instance family, or to support a specific instance type only.</p>"
     },
     "ModifyIdFormat": {
       "name": "ModifyIdFormat",
       "output": {
         "shape": "ModifyInstanceCreditSpecificationResult"
       },
-      "documentation": "<p>Modifies the credit option for CPU usage on a running or stopped T2 or T3 instance. The credit options are <code>standard</code> and <code>unlimited</code>.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html\">Burstable Performance Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Modifies the credit option for CPU usage on a running or stopped burstable performance instance. The credit options are <code>standard</code> and <code>unlimited</code>.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html\">Burstable Performance Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "ModifyInstanceEventStartTime": {
       "name": "ModifyInstanceEventStartTime",
       },
       "documentation": "<p>Modifies the start time for a scheduled Amazon EC2 instance event.</p>"
     },
+    "ModifyInstanceMetadataOptions": {
+      "name": "ModifyInstanceMetadataOptions",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "ModifyInstanceMetadataOptionsRequest"
+      },
+      "output": {
+        "shape": "ModifyInstanceMetadataOptionsResult"
+      },
+      "documentation": "<p>Modify the instance metadata parameters on a running or stopped instance. When you modify the parameters on a stopped instance, they are applied when the instance is started. When you modify the parameters on a running instance, the API responds with a state of “pending”. After the parameter modifications are successfully applied to the instance, the state of the modifications changes from “pending” to “applied” in subsequent describe-instances API calls. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html\">Instance Metadata and User Data</a>.</p>"
+    },
     "ModifyInstancePlacement": {
       "name": "ModifyInstancePlacement",
       "http": {
       "input": {
         "shape": "ModifySnapshotAttributeRequest"
       },
-      "documentation": "<p>Adds or removes permission settings for the specified snapshot. You may add or remove specified AWS account IDs from a snapshot's list of create volume permissions, but you cannot do both in a single operation. If you need to both add and remove account IDs for a snapshot, you must use multiple operations.</p> <p>Encrypted snapshots and snapshots with AWS Marketplace product codes cannot be made public. Snapshots encrypted with your default CMK cannot be shared with other accounts.</p> <p>For more information about modifying snapshot permissions, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html\">Sharing Snapshots</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Adds or removes permission settings for the specified snapshot. You may add or remove specified AWS account IDs from a snapshot's list of create volume permissions, but you cannot do both in a single operation. If you need to both add and remove account IDs for a snapshot, you must use multiple operations. You can make up to 500 modifications to a snapshot in a single operation.</p> <p>Encrypted snapshots and snapshots with AWS Marketplace product codes cannot be made public. Snapshots encrypted with your default CMK cannot be shared with other accounts.</p> <p>For more information about modifying snapshot permissions, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html\">Sharing Snapshots</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "ModifySpotFleetRequest": {
       "name": "ModifySpotFleetRequest",
       "output": {
         "shape": "ModifySpotFleetRequestResponse"
       },
-      "documentation": "<p>Modifies the specified Spot Fleet request.</p> <p>You can only modify a Spot Fleet request of type <code>maintain</code>.</p> <p>While the Spot Fleet request is being modified, it is in the <code>modifying</code> state.</p> <p>To scale up your Spot Fleet, increase its target capacity. The Spot Fleet launches the additional Spot Instances according to the allocation strategy for the Spot Fleet request. If the allocation strategy is <code>lowestPrice</code>, the Spot Fleet launches instances using the Spot pool with the lowest price. If the allocation strategy is <code>diversified</code>, the Spot Fleet distributes the instances across the Spot pools.</p> <p>To scale down your Spot Fleet, decrease its target capacity. First, the Spot Fleet cancels any open requests that exceed the new target capacity. You can request that the Spot Fleet terminate Spot Instances until the size of the fleet no longer exceeds the new target capacity. If the allocation strategy is <code>lowestPrice</code>, the Spot Fleet terminates the instances with the highest price per unit. If the allocation strategy is <code>diversified</code>, the Spot Fleet terminates instances across the Spot pools. Alternatively, you can request that the Spot Fleet keep the fleet at its current size, but not replace any Spot Instances that are interrupted or that you terminate manually.</p> <p>If you are finished with your Spot Fleet for now, but will use it again later, you can set the target capacity to 0.</p>"
+      "documentation": "<p>Modifies the specified Spot Fleet request.</p> <p>You can only modify a Spot Fleet request of type <code>maintain</code>.</p> <p>While the Spot Fleet request is being modified, it is in the <code>modifying</code> state.</p> <p>To scale up your Spot Fleet, increase its target capacity. The Spot Fleet launches the additional Spot Instances according to the allocation strategy for the Spot Fleet request. If the allocation strategy is <code>lowestPrice</code>, the Spot Fleet launches instances using the Spot Instance pool with the lowest price. If the allocation strategy is <code>diversified</code>, the Spot Fleet distributes the instances across the Spot Instance pools. If the allocation strategy is <code>capacityOptimized</code>, Spot Fleet launches instances from Spot Instance pools with optimal capacity for the number of instances that are launching.</p> <p>To scale down your Spot Fleet, decrease its target capacity. First, the Spot Fleet cancels any open requests that exceed the new target capacity. You can request that the Spot Fleet terminate Spot Instances until the size of the fleet no longer exceeds the new target capacity. If the allocation strategy is <code>lowestPrice</code>, the Spot Fleet terminates the instances with the highest price per unit. If the allocation strategy is <code>capacityOptimized</code>, the Spot Fleet terminates the instances in the Spot Instance pools that have the least available Spot Instance capacity. If the allocation strategy is <code>diversified</code>, the Spot Fleet terminates instances across the Spot Instance pools. Alternatively, you can request that the Spot Fleet keep the fleet at its current size, but not replace any Spot Instances that are interrupted or that you terminate manually.</p> <p>If you are finished with your Spot Fleet for now, but will use it again later, you can set the target capacity to 0.</p>"
     },
     "ModifySubnetAttribute": {
       "name": "ModifySubnetAttribute",
       "output": {
         "shape": "ModifyTrafficMirrorFilterNetworkServicesResult"
       },
-      "documentation": "<p>Allows or restricts mirroring network services.</p> <p> By default, Amazon DNS network services are not eligible for Traffic Mirror. Use <code>AddNetworkServices</code> to add network services to a Traffic Mirror filter. When a network service is added to the Traffic Mirror filter, all traffic related to that network service will be mirrored. When you no longer want to mirror network services, use <code>RemoveNetworkServices</code> to remove the network services from the Traffic Mirror filter. </p> <p>FFor information about filter rule properties, see <a href=\"https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirroring-considerations.html#traffic-mirroring-network-services\">Network Services</a> in the <i>Traffic Mirroring User Guide </i>.</p>"
+      "documentation": "<p>Allows or restricts mirroring network services.</p> <p> By default, Amazon DNS network services are not eligible for Traffic Mirror. Use <code>AddNetworkServices</code> to add network services to a Traffic Mirror filter. When a network service is added to the Traffic Mirror filter, all traffic related to that network service will be mirrored. When you no longer want to mirror network services, use <code>RemoveNetworkServices</code> to remove the network services from the Traffic Mirror filter. </p> <p>For information about filter rule properties, see <a href=\"https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirroring-considerations.html\">Network Services</a> in the <i>Traffic Mirroring User Guide </i>.</p>"
     },
     "ModifyTrafficMirrorFilterRule": {
       "name": "ModifyTrafficMirrorFilterRule",
       "output": {
         "shape": "ModifyVpcEndpointServiceConfigurationResult"
       },
-      "documentation": "<p>Modifies the attributes of your VPC endpoint service configuration. You can change the Network Load Balancers for your service, and you can specify whether acceptance is required for requests to connect to your endpoint service through an interface VPC endpoint.</p>"
+      "documentation": "<p>Modifies the attributes of your VPC endpoint service configuration. You can change the Network Load Balancers for your service, and you can specify whether acceptance is required for requests to connect to your endpoint service through an interface VPC endpoint.</p> <p>If you set or modify the private DNS name, you must prove that you own the private DNS domain name. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-dns-validation.html\">VPC Endpoint Service Private DNS Name Verification</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
     },
     "ModifyVpcEndpointServicePermissions": {
       "name": "ModifyVpcEndpointServicePermissions",
       "output": {
         "shape": "ModifyVpnConnectionResult"
       },
-      "documentation": "<p>Modifies the target gateway of a AWS Site-to-Site VPN connection. The following migration options are available:</p> <ul> <li> <p>An existing virtual private gateway to a new virtual private gateway</p> </li> <li> <p>An existing virtual private gateway to a transit gateway</p> </li> <li> <p>An existing transit gateway to a new transit gateway</p> </li> <li> <p>An existing transit gateway to a virtual private gateway</p> </li> </ul> <p>Before you perform the migration to the new gateway, you must configure the new gateway. Use <a>CreateVpnGateway</a> to create a virtual private gateway, or <a>CreateTransitGateway</a> to create a transit gateway.</p> <p>This step is required when you migrate from a virtual private gateway with static routes to a transit gateway. </p> <p>You must delete the static routes before you migrate to the new gateway.</p> <p>Keep a copy of the static route before you delete it. You will need to add back these routes to the transit gateway after the VPN connection migration is complete.</p> <p>After you migrate to the new gateway, you might need to modify your VPC route table. Use <a>CreateRoute</a> and <a>DeleteRoute</a> to make the changes described in <a href=\"https://docs.aws.amazon.com/vpn/latest/s2svpn/modify-vpn-target.html#step-update-routing\">VPN Gateway Target Modification Required VPC Route Table Updates</a> in the <i>AWS Site-to-Site VPN User Guide</i>.</p> <p> When the new gateway is a transit gateway, modify the transit gateway route table to allow traffic between the VPC and the AWS Site-to-Site VPN connection. Use <a>CreateTransitGatewayRoute</a> to add the routes.</p> <p> If you deleted VPN static routes, you must add the static routes to the transit gateway route table.</p> <p>After you perform this operation, the AWS VPN endpoint's IP addresses on the AWS side and the tunnel options remain intact. Your s2slong; connection will be temporarily unavailable for approximately 10 minutes while we provision the new endpoints </p>"
+      "documentation": "<p>Modifies the customer gateway or the target gateway of an AWS Site-to-Site VPN connection. To modify the target gateway, the following migration options are available:</p> <ul> <li> <p>An existing virtual private gateway to a new virtual private gateway</p> </li> <li> <p>An existing virtual private gateway to a transit gateway</p> </li> <li> <p>An existing transit gateway to a new transit gateway</p> </li> <li> <p>An existing transit gateway to a virtual private gateway</p> </li> </ul> <p>Before you perform the migration to the new gateway, you must configure the new gateway. Use <a>CreateVpnGateway</a> to create a virtual private gateway, or <a>CreateTransitGateway</a> to create a transit gateway.</p> <p>This step is required when you migrate from a virtual private gateway with static routes to a transit gateway. </p> <p>You must delete the static routes before you migrate to the new gateway.</p> <p>Keep a copy of the static route before you delete it. You will need to add back these routes to the transit gateway after the VPN connection migration is complete.</p> <p>After you migrate to the new gateway, you might need to modify your VPC route table. Use <a>CreateRoute</a> and <a>DeleteRoute</a> to make the changes described in <a href=\"https://docs.aws.amazon.com/vpn/latest/s2svpn/modify-vpn-target.html#step-update-routing\">VPN Gateway Target Modification Required VPC Route Table Updates</a> in the <i>AWS Site-to-Site VPN User Guide</i>.</p> <p> When the new gateway is a transit gateway, modify the transit gateway route table to allow traffic between the VPC and the AWS Site-to-Site VPN connection. Use <a>CreateTransitGatewayRoute</a> to add the routes.</p> <p> If you deleted VPN static routes, you must add the static routes to the transit gateway route table.</p> <p>After you perform this operation, the AWS VPN endpoint's IP addresses on the AWS side and the tunnel options remain intact. Your AWS Site-to-Site VPN connection will be temporarily unavailable for a brief period while we provision the new endpoints.</p>"
+    },
+    "ModifyVpnTunnelCertificate": {
+      "name": "ModifyVpnTunnelCertificate",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "ModifyVpnTunnelCertificateRequest"
+      },
+      "output": {
+        "shape": "ModifyVpnTunnelCertificateResult"
+      },
+      "documentation": "<p>Modifies the VPN tunnel endpoint certificate.</p>"
+    },
+    "ModifyVpnTunnelOptions": {
+      "name": "ModifyVpnTunnelOptions",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "ModifyVpnTunnelOptionsRequest"
+      },
+      "output": {
+        "shape": "ModifyVpnTunnelOptionsResult"
+      },
+      "documentation": "<p>Modifies the options for a VPN tunnel in an AWS Site-to-Site VPN connection. You can modify multiple options for a tunnel in a single request, but you can only modify one tunnel at a time. For more information, see <a href=\"https://docs.aws.amazon.com/vpn/latest/s2svpn/VPNTunnels.html\">Site-to-Site VPN Tunnel Options for Your Site-to-Site VPN Connection</a> in the <i>AWS Site-to-Site VPN User Guide</i>.</p>"
     },
     "MonitorInstances": {
       "name": "MonitorInstances",
       "output": {
         "shape": "ProvisionByoipCidrResult"
       },
-      "documentation": "<p>Provisions an address range for use with your AWS resources through bring your own IP addresses (BYOIP) and creates a corresponding address pool. After the address range is provisioned, it is ready to be advertised using <a>AdvertiseByoipCidr</a>.</p> <p>AWS verifies that you own the address range and are authorized to advertise it. You must ensure that the address range is registered to you and that you created an RPKI ROA to authorize Amazon ASNs 16509 and 14618 to advertise the address range. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html\">Bring Your Own IP Addresses (BYOIP)</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>Provisioning an address range is an asynchronous operation, so the call returns immediately, but the address range is not ready to use until its status changes from <code>pending-provision</code> to <code>provisioned</code>. To monitor the status of an address range, use <a>DescribeByoipCidrs</a>. To allocate an Elastic IP address from your address pool, use <a>AllocateAddress</a> with either the specific address from the address pool or the ID of the address pool.</p>"
+      "documentation": "<p>Provisions an IPv4 or IPv6 address range for use with your AWS resources through bring your own IP addresses (BYOIP) and creates a corresponding address pool. After the address range is provisioned, it is ready to be advertised using <a>AdvertiseByoipCidr</a>.</p> <p>AWS verifies that you own the address range and are authorized to advertise it. You must ensure that the address range is registered to you and that you created an RPKI ROA to authorize Amazon ASNs 16509 and 14618 to advertise the address range. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html\">Bring Your Own IP Addresses (BYOIP)</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>Provisioning an address range is an asynchronous operation, so the call returns immediately, but the address range is not ready to use until its status changes from <code>pending-provision</code> to <code>provisioned</code>. To monitor the status of an address range, use <a>DescribeByoipCidrs</a>. To allocate an Elastic IP address from your IPv4 address pool, use <a>AllocateAddress</a> with either the specific address from the address pool or the ID of the address pool.</p>"
     },
     "PurchaseHostReservation": {
       "name": "PurchaseHostReservation",
       "output": {
         "shape": "PurchaseReservedInstancesOfferingResult"
       },
-      "documentation": "<p>Purchases a Reserved Instance for use with your account. With Reserved Instances, you pay a lower hourly rate compared to On-Demand instance pricing.</p> <p>Use <a>DescribeReservedInstancesOfferings</a> to get a list of Reserved Instance offerings that match your specifications. After you've purchased a Reserved Instance, you can check for your new Reserved Instance with <a>DescribeReservedInstances</a>.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html\">Reserved Instances</a> and <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html\">Reserved Instance Marketplace</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Purchases a Reserved Instance for use with your account. With Reserved Instances, you pay a lower hourly rate compared to On-Demand instance pricing.</p> <p>Use <a>DescribeReservedInstancesOfferings</a> to get a list of Reserved Instance offerings that match your specifications. After you've purchased a Reserved Instance, you can check for your new Reserved Instance with <a>DescribeReservedInstances</a>.</p> <p>To queue a purchase for a future date and time, specify a purchase time. If you do not specify a purchase time, the default is the current time.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html\">Reserved Instances</a> and <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html\">Reserved Instance Marketplace</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "PurchaseScheduledInstances": {
       "name": "PurchaseScheduledInstances",
       "output": {
         "shape": "RegisterImageResult"
       },
-      "documentation": "<p>Registers an AMI. When you're creating an AMI, this is the final step you must complete before you can launch an instance from the AMI. For more information about creating AMIs, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html\">Creating Your Own AMIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <note> <p>For Amazon EBS-backed instances, <a>CreateImage</a> creates and registers the AMI in a single request, so you don't have to register the AMI yourself.</p> </note> <p>You can also use <code>RegisterImage</code> to create an Amazon EBS-backed Linux AMI from a snapshot of a root device volume. You specify the snapshot using the block device mapping. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-launch-snapshot.html\">Launching a Linux Instance from a Backup</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>You can't register an image where a secondary (non-root) snapshot has AWS Marketplace product codes.</p> <p>Some Linux distributions, such as Red Hat Enterprise Linux (RHEL) and SUSE Linux Enterprise Server (SLES), use the EC2 billing product code associated with an AMI to verify the subscription status for package updates. Creating an AMI from an EBS snapshot does not maintain this billing code, and instances launched from such an AMI are not able to connect to package update infrastructure. If you purchase a Reserved Instance offering for one of these Linux distributions and launch instances using an AMI that does not contain the required billing code, your Reserved Instance is not applied to these instances.</p> <p>To create an AMI for operating systems that require a billing code, see <a>CreateImage</a>.</p> <p>If needed, you can deregister an AMI at any time. Any modifications you make to an AMI backed by an instance store volume invalidates its registration. If you make changes to an image, deregister the previous image and register the new image.</p>"
+      "documentation": "<p>Registers an AMI. When you're creating an AMI, this is the final step you must complete before you can launch an instance from the AMI. For more information about creating AMIs, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html\">Creating Your Own AMIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <note> <p>For Amazon EBS-backed instances, <a>CreateImage</a> creates and registers the AMI in a single request, so you don't have to register the AMI yourself.</p> </note> <p>You can also use <code>RegisterImage</code> to create an Amazon EBS-backed Linux AMI from a snapshot of a root device volume. You specify the snapshot using the block device mapping. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-launch-snapshot.html\">Launching a Linux Instance from a Backup</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>You can't register an image where a secondary (non-root) snapshot has AWS Marketplace product codes.</p> <p>Windows and some Linux distributions, such as Red Hat Enterprise Linux (RHEL) and SUSE Linux Enterprise Server (SLES), use the EC2 billing product code associated with an AMI to verify the subscription status for package updates. To create a new AMI for operating systems that require a billing product code, instead of registering the AMI, do the following to preserve the billing product code association:</p> <ol> <li> <p>Launch an instance from an existing AMI with that billing product code.</p> </li> <li> <p>Customize the instance.</p> </li> <li> <p>Create an AMI from the instance using <a>CreateImage</a>.</p> </li> </ol> <p>If you purchase a Reserved Instance to apply to an On-Demand Instance that was launched from an AMI with a billing product code, make sure that the Reserved Instance has the matching billing product code. If you purchase a Reserved Instance without the matching billing product code, the Reserved Instance will not be applied to the On-Demand Instance. For information about how to obtain the platform details and billing information of an AMI, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-billing-info.html\">Obtaining Billing Information</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>If needed, you can deregister an AMI at any time. Any modifications you make to an AMI backed by an instance store volume invalidates its registration. If you make changes to an image, deregister the previous image and register the new image.</p>"
+    },
+    "RegisterInstanceEventNotificationAttributes": {
+      "name": "RegisterInstanceEventNotificationAttributes",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "RegisterInstanceEventNotificationAttributesRequest"
+      },
+      "output": {
+        "shape": "RegisterInstanceEventNotificationAttributesResult"
+      },
+      "documentation": "<p>Registers a set of tag keys to include in scheduled event notifications for your resources. </p> <p>To remove tags, use .</p>"
+    },
+    "RegisterTransitGatewayMulticastGroupMembers": {
+      "name": "RegisterTransitGatewayMulticastGroupMembers",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "RegisterTransitGatewayMulticastGroupMembersRequest"
+      },
+      "output": {
+        "shape": "RegisterTransitGatewayMulticastGroupMembersResult"
+      },
+      "documentation": "<p>Registers members (network interfaces) with the transit gateway multicast group. A member is a network interface associated with a supported EC2 instance that receives multicast traffic. For information about supported instances, see <a href=\"https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-limits.html#multicast-limits\">Multicast Consideration</a> in <i>Amazon VPC Transit Gateways</i>.</p> <p>After you add the members, use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SearchTransitGatewayMulticastGroups.html\">SearchTransitGatewayMulticastGroups</a> to verify that the members were added to the transit gateway multicast group.</p>"
+    },
+    "RegisterTransitGatewayMulticastGroupSources": {
+      "name": "RegisterTransitGatewayMulticastGroupSources",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "RegisterTransitGatewayMulticastGroupSourcesRequest"
+      },
+      "output": {
+        "shape": "RegisterTransitGatewayMulticastGroupSourcesResult"
+      },
+      "documentation": "<p>Registers sources (network interfaces) with the specified transit gateway multicast group.</p> <p>A multicast source is a network interface attached to a supported instance that sends multicast traffic. For information about supported instances, see <a href=\"https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-limits.html#multicast-limits\">Multicast Considerations</a> in <i>Amazon VPC Transit Gateways</i>.</p> <p>After you add the source, use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SearchTransitGatewayMulticastGroups.html\">SearchTransitGatewayMulticastGroups</a> to verify that the source was added to the multicast group.</p>"
+    },
+    "RejectTransitGatewayPeeringAttachment": {
+      "name": "RejectTransitGatewayPeeringAttachment",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "RejectTransitGatewayPeeringAttachmentRequest"
+      },
+      "output": {
+        "shape": "RejectTransitGatewayPeeringAttachmentResult"
+      },
+      "documentation": "<p>Rejects a transit gateway peering attachment request.</p>"
     },
     "RejectTransitGatewayVpcAttachment": {
       "name": "RejectTransitGatewayVpcAttachment",
       "input": {
         "shape": "ReplaceRouteRequest"
       },
-      "documentation": "<p>Replaces an existing route within a route table in a VPC. You must provide only one of the following: internet gateway or virtual private gateway, NAT instance, NAT gateway, VPC peering connection, network interface, or egress-only internet gateway.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
+      "documentation": "<p>Replaces an existing route within a route table in a VPC. You must provide only one of the following: internet gateway, virtual private gateway, NAT instance, NAT gateway, VPC peering connection, network interface, egress-only internet gateway, or transit gateway.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p>"
     },
     "ReplaceRouteTableAssociation": {
       "name": "ReplaceRouteTableAssociation",
       "output": {
         "shape": "ReplaceRouteTableAssociationResult"
       },
-      "documentation": "<p>Changes the route table associated with a given subnet in a VPC. After the operation completes, the subnet uses the routes in the new route table it's associated with. For more information about route tables, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p> <p>You can also use ReplaceRouteTableAssociation to change which table is the main route table in the VPC. You just specify the main route table's association ID and the route table to be the new main route table.</p>"
+      "documentation": "<p>Changes the route table associated with a given subnet, internet gateway, or virtual private gateway in a VPC. After the operation completes, the subnet or gateway uses the routes in the new route table. For more information about route tables, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html\">Route Tables</a> in the <i>Amazon Virtual Private Cloud User Guide</i>.</p> <p>You can also use this operation to change which table is the main route table in the VPC. Specify the main route table's association ID and the route table ID of the new main route table.</p>"
     },
     "ReplaceTransitGatewayRoute": {
       "name": "ReplaceTransitGatewayRoute",
       "output": {
         "shape": "RequestSpotFleetResponse"
       },
-      "documentation": "<p>Creates a Spot Fleet request.</p> <p>The Spot Fleet request specifies the total target capacity and the On-Demand target capacity. Amazon EC2 calculates the difference between the total capacity and On-Demand capacity, and launches the difference as Spot capacity.</p> <p>You can submit a single request that includes multiple launch specifications that vary by instance type, AMI, Availability Zone, or subnet.</p> <p>By default, the Spot Fleet requests Spot Instances in the Spot pool where the price per unit is the lowest. Each launch specification can include its own instance weighting that reflects the value of the instance type to your application workload.</p> <p>Alternatively, you can specify that the Spot Fleet distribute the target capacity across the Spot pools included in its launch specifications. By ensuring that the Spot Instances in your Spot Fleet are in different Spot pools, you can improve the availability of your fleet.</p> <p>You can specify tags for the Spot Instances. You cannot tag other resource types in a Spot Fleet request because only the <code>instance</code> resource type is supported.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html\">Spot Fleet Requests</a> in the <i>Amazon EC2 User Guide for Linux Instances</i>.</p>"
+      "documentation": "<p>Creates a Spot Fleet request.</p> <p>The Spot Fleet request specifies the total target capacity and the On-Demand target capacity. Amazon EC2 calculates the difference between the total capacity and On-Demand capacity, and launches the difference as Spot capacity.</p> <p>You can submit a single request that includes multiple launch specifications that vary by instance type, AMI, Availability Zone, or subnet.</p> <p>By default, the Spot Fleet requests Spot Instances in the Spot Instance pool where the price per unit is the lowest. Each launch specification can include its own instance weighting that reflects the value of the instance type to your application workload.</p> <p>Alternatively, you can specify that the Spot Fleet distribute the target capacity across the Spot pools included in its launch specifications. By ensuring that the Spot Instances in your Spot Fleet are in different Spot pools, you can improve the availability of your fleet.</p> <p>You can specify tags for the Spot Fleet request and instances launched by the fleet. You cannot tag other resource types in a Spot Fleet request because only the <code>spot-fleet-request</code> and <code>instance</code> resource types are supported.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html\">Spot Fleet Requests</a> in the <i>Amazon EC2 User Guide for Linux Instances</i>.</p>"
     },
     "RequestSpotInstances": {
       "name": "RequestSpotInstances",
       "output": {
         "shape": "Reservation"
       },
-      "documentation": "<p>Launches the specified number of instances using an AMI for which you have permissions. </p> <p>You can specify a number of options, or leave the default options. The following rules apply:</p> <ul> <li> <p>[EC2-VPC] If you don't specify a subnet ID, we choose a default subnet from your default VPC for you. If you don't have a default VPC, you must specify a subnet ID in the request.</p> </li> <li> <p>[EC2-Classic] If don't specify an Availability Zone, we choose one for you.</p> </li> <li> <p>Some instance types must be launched into a VPC. If you do not have a default VPC, or if you do not specify a subnet ID, the request fails. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#vpc-only-instance-types\">Instance Types Available Only in a VPC</a>.</p> </li> <li> <p>[EC2-VPC] All instances have a network interface with a primary private IPv4 address. If you don't specify this address, we choose one from the IPv4 range of your subnet.</p> </li> <li> <p>Not all instance types support IPv6 addresses. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html\">Instance Types</a>.</p> </li> <li> <p>If you don't specify a security group ID, we use the default security group. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html\">Security Groups</a>.</p> </li> <li> <p>If any of the AMIs have a product code attached for which the user has not subscribed, the request fails.</p> </li> </ul> <p>You can create a <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html\">launch template</a>, which is a resource that contains the parameters to launch an instance. When you launch an instance using <a>RunInstances</a>, you can specify the launch template instead of specifying the launch parameters.</p> <p>To ensure faster instance launches, break up large requests into smaller batches. For example, create five separate launch requests for 100 instances each instead of one launch request for 500 instances.</p> <p>An instance is ready for you to use when it's in the <code>running</code> state. You can check the state of your instance using <a>DescribeInstances</a>. You can tag instances and EBS volumes during launch, after launch, or both. For more information, see <a>CreateTags</a> and <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html\">Tagging Your Amazon EC2 Resources</a>.</p> <p>Linux instances have access to the public key of the key pair at boot. You can use this key to provide secure access to the instance. Amazon EC2 public images use this feature to provide secure access without passwords. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html\">Key Pairs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>For troubleshooting, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html\">What To Do If An Instance Immediately Terminates</a>, and <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html\">Troubleshooting Connecting to Your Instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Launches the specified number of instances using an AMI for which you have permissions.</p> <p>You can specify a number of options, or leave the default options. The following rules apply:</p> <ul> <li> <p>[EC2-VPC] If you don't specify a subnet ID, we choose a default subnet from your default VPC for you. If you don't have a default VPC, you must specify a subnet ID in the request.</p> </li> <li> <p>[EC2-Classic] If don't specify an Availability Zone, we choose one for you.</p> </li> <li> <p>Some instance types must be launched into a VPC. If you do not have a default VPC, or if you do not specify a subnet ID, the request fails. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#vpc-only-instance-types\">Instance Types Available Only in a VPC</a>.</p> </li> <li> <p>[EC2-VPC] All instances have a network interface with a primary private IPv4 address. If you don't specify this address, we choose one from the IPv4 range of your subnet.</p> </li> <li> <p>Not all instance types support IPv6 addresses. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html\">Instance Types</a>.</p> </li> <li> <p>If you don't specify a security group ID, we use the default security group. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html\">Security Groups</a>.</p> </li> <li> <p>If any of the AMIs have a product code attached for which the user has not subscribed, the request fails.</p> </li> </ul> <p>You can create a <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html\">launch template</a>, which is a resource that contains the parameters to launch an instance. When you launch an instance using <a>RunInstances</a>, you can specify the launch template instead of specifying the launch parameters.</p> <p>To ensure faster instance launches, break up large requests into smaller batches. For example, create five separate launch requests for 100 instances each instead of one launch request for 500 instances.</p> <p>An instance is ready for you to use when it's in the <code>running</code> state. You can check the state of your instance using <a>DescribeInstances</a>. You can tag instances and EBS volumes during launch, after launch, or both. For more information, see <a>CreateTags</a> and <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html\">Tagging Your Amazon EC2 Resources</a>.</p> <p>Linux instances have access to the public key of the key pair at boot. You can use this key to provide secure access to the instance. Amazon EC2 public images use this feature to provide secure access without passwords. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html\">Key Pairs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>For troubleshooting, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html\">What To Do If An Instance Immediately Terminates</a>, and <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html\">Troubleshooting Connecting to Your Instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "RunScheduledInstances": {
       "name": "RunScheduledInstances",
       },
       "documentation": "<p>Launches the specified Scheduled Instances.</p> <p>Before you can launch a Scheduled Instance, you must purchase it and obtain an identifier using <a>PurchaseScheduledInstances</a>.</p> <p>You must launch a Scheduled Instance during its scheduled time period. You can't stop or reboot a Scheduled Instance, but you can terminate it as needed. If you terminate a Scheduled Instance before the current scheduled time period ends, you can launch it again after a few minutes. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-scheduled-instances.html\">Scheduled Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
+    "SearchLocalGatewayRoutes": {
+      "name": "SearchLocalGatewayRoutes",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "SearchLocalGatewayRoutesRequest"
+      },
+      "output": {
+        "shape": "SearchLocalGatewayRoutesResult"
+      },
+      "documentation": "<p>Searches for routes in the specified local gateway route table.</p>"
+    },
+    "SearchTransitGatewayMulticastGroups": {
+      "name": "SearchTransitGatewayMulticastGroups",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "SearchTransitGatewayMulticastGroupsRequest"
+      },
+      "output": {
+        "shape": "SearchTransitGatewayMulticastGroupsResult"
+      },
+      "documentation": "<p>Searches one or more transit gateway multicast groups and returns the group membership information.</p>"
+    },
     "SearchTransitGatewayRoutes": {
       "name": "SearchTransitGatewayRoutes",
       "http": {
       },
       "documentation": "<p>Searches for routes in the specified transit gateway route table.</p>"
     },
+    "SendDiagnosticInterrupt": {
+      "name": "SendDiagnosticInterrupt",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "SendDiagnosticInterruptRequest"
+      },
+      "documentation": "<p>Sends a diagnostic interrupt to the specified Amazon EC2 instance to trigger a <i>kernel panic</i> (on Linux instances), or a <i>blue screen</i>/<i>stop error</i> (on Windows instances). For instances based on Intel and AMD processors, the interrupt is received as a <i>non-maskable interrupt</i> (NMI).</p> <p>In general, the operating system crashes and reboots when a kernel panic or stop error is triggered. The operating system can also be configured to perform diagnostic tasks, such as generating a memory dump file, loading a secondary kernel, or obtaining a call trace.</p> <p>Before sending a diagnostic interrupt to your instance, ensure that its operating system is configured to perform the required diagnostic tasks.</p> <p>For more information about configuring your operating system to generate a crash dump when a kernel panic or stop error occurs, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/diagnostic-interrupt.html\">Send a Diagnostic Interrupt</a> (Linux instances) or <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/diagnostic-interrupt.html\">Send a Diagnostic Interrupt</a> (Windows instances).</p>"
+    },
     "StartInstances": {
       "name": "StartInstances",
       "http": {
       },
       "documentation": "<p>Starts an Amazon EBS-backed instance that you've previously stopped.</p> <p>Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for instance usage. However, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Every time you start your Windows instance, Amazon EC2 charges you for a full instance hour. If you stop and restart your Windows instance, a new instance hour begins and Amazon EC2 charges you for another full instance hour even if you are still within the same 60-minute period when it was stopped. Every time you start your Linux instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage.</p> <p>Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.</p> <p>Performing this operation on an instance that uses an instance store as its root device returns an error.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html\">Stopping Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
+    "StartVpcEndpointServicePrivateDnsVerification": {
+      "name": "StartVpcEndpointServicePrivateDnsVerification",
+      "http": {
+        "method": "POST",
+        "requestUri": "/"
+      },
+      "input": {
+        "shape": "StartVpcEndpointServicePrivateDnsVerificationRequest"
+      },
+      "output": {
+        "shape": "StartVpcEndpointServicePrivateDnsVerificationResult"
+      },
+      "documentation": "<p>Initiates the verification process to prove that the service provider owns the private DNS name domain for the endpoint service.</p> <p>The service provider must successfully perform the verification before the consumer can use the name to access the service.</p> <p>Before the service provider runs this command, they must add a record to the DNS server. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/ndpoint-services-dns-validation.html#add-dns-txt-record\">Adding a TXT Record to Your Domain's DNS Server </a> in the <i>Amazon VPC User Guide</i>.</p>"
+    },
     "StopInstances": {
       "name": "StopInstances",
       "http": {
       "output": {
         "shape": "StopInstancesResult"
       },
-      "documentation": "<p>Stops an Amazon EBS-backed instance.</p> <p>You can use the Stop action to hibernate an instance if the instance is <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#enabling-hibernation\">enabled for hibernation</a> and it meets the <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites\">hibernation prerequisites</a>. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html\">Hibernate Your Instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>We don't charge usage for a stopped instance, or data transfer fees; however, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. Every time you start your Windows instance, Amazon EC2 charges you for a full instance hour. If you stop and restart your Windows instance, a new instance hour begins and Amazon EC2 charges you for another full instance hour even if you are still within the same 60-minute period when it was stopped. Every time you start your Linux instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage.</p> <p>You can't start, stop, or hibernate Spot Instances, and you can't stop or hibernate instance store-backed instances. For information about using hibernation for Spot Instances, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#hibernate-spot-instances\">Hibernating Interrupted Spot Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>When you stop or hibernate an instance, we shut it down. You can restart your instance at any time. Before stopping or hibernating an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM, but hibernating an instance does preserve data stored in RAM. If an instance cannot hibernate successfully, a normal shutdown occurs.</p> <p>Stopping and hibernating an instance is different to rebooting or terminating it. For example, when you stop or hibernate an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between rebooting, stopping, hibernating, and terminating instances, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html\">Instance Lifecycle</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>When you stop an instance, we attempt to shut it down forcibly after a short while. If your instance appears stuck in the stopping state after a period of time, there may be an issue with the underlying host computer. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html\">Troubleshooting Stopping Your Instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+      "documentation": "<p>Stops an Amazon EBS-backed instance.</p> <p>You can use the Stop action to hibernate an instance if the instance is <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#enabling-hibernation\">enabled for hibernation</a> and it meets the <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites\">hibernation prerequisites</a>. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html\">Hibernate Your Instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>We don't charge usage for a stopped instance, or data transfer fees; however, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. Every time you start your Windows instance, Amazon EC2 charges you for a full instance hour. If you stop and restart your Windows instance, a new instance hour begins and Amazon EC2 charges you for another full instance hour even if you are still within the same 60-minute period when it was stopped. Every time you start your Linux instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage.</p> <p>You can't stop or hibernate instance store-backed instances. You can't use the Stop action to hibernate Spot Instances, but you can specify that Amazon EC2 should hibernate Spot Instances when they are interrupted. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#hibernate-spot-instances\">Hibernating Interrupted Spot Instances</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>When you stop or hibernate an instance, we shut it down. You can restart your instance at any time. Before stopping or hibernating an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM, but hibernating an instance does preserve data stored in RAM. If an instance cannot hibernate successfully, a normal shutdown occurs.</p> <p>Stopping and hibernating an instance is different to rebooting or terminating it. For example, when you stop or hibernate an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between rebooting, stopping, hibernating, and terminating instances, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html\">Instance Lifecycle</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>When you stop an instance, we attempt to shut it down forcibly after a short while. If your instance appears stuck in the stopping state after a period of time, there may be an issue with the underlying host computer. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html\">Troubleshooting Stopping Your Instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
     },
     "TerminateClientVpnConnections": {
       "name": "TerminateClientVpnConnections",
       "output": {
         "shape": "WithdrawByoipCidrResult"
       },
-      "documentation": "<p>Stops advertising an IPv4 address range that is provisioned as an address pool.</p> <p>You can perform this operation at most once every 10 seconds, even if you specify different address ranges each time.</p> <p>It can take a few minutes before traffic to the specified addresses stops routing to AWS because of BGP propagation delays.</p>"
+      "documentation": "<p>Stops advertising an address range that is provisioned as an address pool.</p> <p>You can perform this operation at most once every 10 seconds, even if you specify different address ranges each time.</p> <p>It can take a few minutes before traffic to the specified addresses stops routing to AWS because of BGP propagation delays.</p>"
     }
   },
   "shapes": {
       },
       "documentation": "<p>The result of the exchange and whether it was <code>successful</code>.</p>"
     },
+    "AcceptTransitGatewayPeeringAttachmentRequest": {
+      "type": "structure",
+      "required": [
+        "TransitGatewayAttachmentId"
+      ],
+      "members": {
+        "TransitGatewayAttachmentId": {
+          "shape": "TransitGatewayAttachmentId",
+          "documentation": "<p>The ID of the transit gateway attachment.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "AcceptTransitGatewayPeeringAttachmentResult": {
+      "type": "structure",
+      "members": {
+        "TransitGatewayPeeringAttachment": {
+          "shape": "TransitGatewayPeeringAttachment",
+          "documentation": "<p>The transit gateway peering attachment.</p>",
+          "locationName": "transitGatewayPeeringAttachment"
+        }
+      }
+    },
     "AcceptTransitGatewayVpcAttachmentRequest": {
       "type": "structure",
       "required": [
       ],
       "members": {
         "TransitGatewayAttachmentId": {
-          "shape": "String",
+          "shape": "TransitGatewayAttachmentId",
           "documentation": "<p>The ID of the attachment.</p>"
         },
         "DryRun": {
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "ServiceId": {
-          "shape": "String",
-          "documentation": "<p>The ID of the endpoint service.</p>"
+          "shape": "VpcEndpointServiceId",
+          "documentation": "<p>The ID of the VPC endpoint service.</p>"
         },
         "VpcEndpointIds": {
-          "shape": "ValueStringList",
+          "shape": "VpcEndpointIdList",
           "documentation": "<p>The IDs of one or more interface VPC endpoints.</p>",
           "locationName": "VpcEndpointId"
         }
           "locationName": "dryRun"
         },
         "VpcPeeringConnectionId": {
-          "shape": "String",
+          "shape": "VpcPeeringConnectionId",
           "documentation": "<p>The ID of the VPC peering connection. You must specify this parameter in the request.</p>",
           "locationName": "vpcPeeringConnectionId"
         }
           "shape": "String",
           "documentation": "<p>The ID of an address pool.</p>",
           "locationName": "publicIpv4Pool"
+        },
+        "NetworkBorderGroup": {
+          "shape": "String",
+          "documentation": "<p>The name of the location from which the IP address is advertised.</p>",
+          "locationName": "networkBorderGroup"
+        },
+        "CustomerOwnedIp": {
+          "shape": "String",
+          "documentation": "<p>The customer-owned IP address.</p>",
+          "locationName": "customerOwnedIp"
+        },
+        "CustomerOwnedIpv4Pool": {
+          "shape": "String",
+          "documentation": "<p>The ID of the customer-owned address pool.</p>",
+          "locationName": "customerOwnedIpv4Pool"
         }
       },
       "documentation": "<p>Describes an Elastic IP address.</p>"
       "members": {
         "Cidr": {
           "shape": "String",
-          "documentation": "<p>The IPv4 address range, in CIDR notation. This must be the exact range that you provisioned. You can't advertise only a portion of the provisioned range.</p>"
+          "documentation": "<p>The address range, in CIDR notation. This must be the exact range that you provisioned. You can't advertise only a portion of the provisioned range.</p>"
         },
         "DryRun": {
           "shape": "Boolean",
           "shape": "String",
           "documentation": "<p>The ID of an address pool that you own. Use this parameter to let Amazon EC2 select an address from the address pool. To specify a specific address from the address pool, use the <code>Address</code> parameter instead.</p>"
         },
+        "NetworkBorderGroup": {
+          "shape": "String",
+          "documentation": "<p>The location from which the IP address is advertised. Use this parameter to limit the address to this location.</p> <p>A network border group is a unique set of Availability Zones or Local Zones from where AWS advertises IP addresses and limits the addresses to the group. IP addresses cannot move between network border groups.</p> <p>Use <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html\">DescribeAvailabilityZones</a> to view the network border groups.</p> <note> <p>You cannot use a network border group with EC2 Classic. If you attempt this operation on EC2 classic, you will receive an <code>InvalidParameterCombination</code> error. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html\">Error Codes</a>.</p> </note>"
+        },
+        "CustomerOwnedIpv4Pool": {
+          "shape": "String",
+          "documentation": "<p>The ID of a customer-owned address pool. Use this parameter to let Amazon EC2 select an address from the address pool. Alternatively, specify a specific address from the address pool.</p>"
+        },
         "DryRun": {
           "shape": "Boolean",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "documentation": "<p>The ID of an address pool.</p>",
           "locationName": "publicIpv4Pool"
         },
+        "NetworkBorderGroup": {
+          "shape": "String",
+          "documentation": "<p>The location from which the IP address is advertised.</p>",
+          "locationName": "networkBorderGroup"
+        },
         "Domain": {
           "shape": "DomainType",
           "documentation": "<p>Indicates whether this Elastic IP address is for use with instances in EC2-Classic (<code>standard</code>) or instances in a VPC (<code>vpc</code>).</p>",
           "locationName": "domain"
+        },
+        "CustomerOwnedIp": {
+          "shape": "String",
+          "documentation": "<p>The customer-owned IP address.</p>",
+          "locationName": "customerOwnedIp"
+        },
+        "CustomerOwnedIpv4Pool": {
+          "shape": "String",
+          "documentation": "<p>The ID of the customer-owned address pool.</p>",
+          "locationName": "customerOwnedIpv4Pool"
         }
       }
     },
       "type": "structure",
       "required": [
         "AvailabilityZone",
-        "InstanceType",
         "Quantity"
       ],
       "members": {
         },
         "InstanceType": {
           "shape": "String",
-          "documentation": "<p>Specifies the instance type for which to configure your Dedicated Hosts. When you specify the instance type, that is the only instance type that you can launch onto that host.</p>",
+          "documentation": "<p>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.</p> <p>If you want the Dedicated Hosts to support multiple instance types in a specific instance family, omit this parameter and specify <b>InstanceFamily</b> instead. You cannot specify <b>InstanceType</b> and <b>InstanceFamily</b> in the same request.</p>",
           "locationName": "instanceType"
         },
+        "InstanceFamily": {
+          "shape": "String",
+          "documentation": "<p>Specifies the instance family to be supported by the Dedicated Hosts. If you specify an instance family, the Dedicated Hosts support multiple instance types within that instance family.</p> <p>If you want the Dedicated Hosts to support a specific instance type only, omit this parameter and specify <b>InstanceType</b> instead. You cannot specify <b>InstanceFamily</b> and <b>InstanceType</b> in the same request.</p>"
+        },
         "Quantity": {
           "shape": "Integer",
           "documentation": "<p>The number of Dedicated Hosts to allocate to your account with these parameters.</p>",
       },
       "documentation": "<p>Contains the output of AllocateHosts.</p>"
     },
+    "AllocationId": {
+      "type": "string"
+    },
     "AllocationIdList": {
       "type": "list",
       "member": {
-        "shape": "String",
+        "shape": "AllocationId",
         "locationName": "AllocationId"
       }
     },
       "type": "string",
       "enum": [
         "lowestPrice",
-        "diversified"
+        "diversified",
+        "capacityOptimized"
       ]
     },
     "AllowedPrincipal": {
         "locationName": "item"
       }
     },
+    "AllowsMultipleInstanceTypes": {
+      "type": "string",
+      "enum": [
+        "on",
+        "off"
+      ]
+    },
     "ApplySecurityGroupsToClientVpnTargetNetworkRequest": {
       "type": "structure",
       "required": [
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN endpoint.</p>"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC in which the associated target network is located.</p>"
         },
         "SecurityGroupIds": {
         }
       }
     },
+    "ArchitectureType": {
+      "type": "string",
+      "enum": [
+        "i386",
+        "x86_64",
+        "arm64"
+      ]
+    },
+    "ArchitectureTypeList": {
+      "type": "list",
+      "member": {
+        "shape": "ArchitectureType",
+        "locationName": "item"
+      }
+    },
     "ArchitectureValues": {
       "type": "string",
       "enum": [
           "locationName": "ipv6Addresses"
         },
         "NetworkInterfaceId": {
-          "shape": "String",
+          "shape": "NetworkInterfaceId",
           "documentation": "<p>The ID of the network interface.</p>",
           "locationName": "networkInterfaceId"
         }
           "locationName": "allowReassignment"
         },
         "NetworkInterfaceId": {
-          "shape": "String",
+          "shape": "NetworkInterfaceId",
           "documentation": "<p>The ID of the network interface.</p>",
           "locationName": "networkInterfaceId"
         },
       },
       "documentation": "<p>Contains the parameters for AssignPrivateIpAddresses.</p>"
     },
+    "AssignPrivateIpAddressesResult": {
+      "type": "structure",
+      "members": {
+        "NetworkInterfaceId": {
+          "shape": "String",
+          "documentation": "<p>The ID of the network interface.</p>",
+          "locationName": "networkInterfaceId"
+        },
+        "AssignedPrivateIpAddresses": {
+          "shape": "AssignedPrivateIpAddressList",
+          "documentation": "<p>The private IP addresses assigned to the network interface.</p>",
+          "locationName": "assignedPrivateIpAddressesSet"
+        }
+      }
+    },
+    "AssignedPrivateIpAddress": {
+      "type": "structure",
+      "members": {
+        "PrivateIpAddress": {
+          "shape": "String",
+          "documentation": "<p>The private IP address assigned to the network interface.</p>",
+          "locationName": "privateIpAddress"
+        }
+      },
+      "documentation": "<p>Describes the private IP addresses assigned to a network interface.</p>"
+    },
+    "AssignedPrivateIpAddressList": {
+      "type": "list",
+      "member": {
+        "shape": "AssignedPrivateIpAddress",
+        "locationName": "item"
+      }
+    },
     "AssociateAddressRequest": {
       "type": "structure",
       "members": {
         "AllocationId": {
-          "shape": "String",
+          "shape": "AllocationId",
           "documentation": "<p>[EC2-VPC] The allocation ID. This is required for EC2-VPC.</p>"
         },
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of the instance. This is required for EC2-Classic. For EC2-VPC, you can specify either the instance ID or the network interface ID, but not both. The operation fails if you specify an instance ID unless exactly one network interface is attached.</p>"
         },
         "PublicIp": {
           "locationName": "dryRun"
         },
         "NetworkInterfaceId": {
-          "shape": "String",
+          "shape": "NetworkInterfaceId",
           "documentation": "<p>[EC2-VPC] The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID.</p> <p>For EC2-VPC, you can specify either the instance ID or the network interface ID, but not both. </p>",
           "locationName": "networkInterfaceId"
         },
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN endpoint.</p>"
         },
         "SubnetId": {
-          "shape": "String",
+          "shape": "SubnetId",
           "documentation": "<p>The ID of the subnet to associate with the Client VPN endpoint.</p>"
         },
         "ClientToken": {
       ],
       "members": {
         "DhcpOptionsId": {
-          "shape": "String",
+          "shape": "DefaultingDhcpOptionsId",
           "documentation": "<p>The ID of the DHCP options set, or <code>default</code> to associate no DHCP options with the VPC.</p>"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC.</p>"
         },
         "DryRun": {
           "documentation": "<p>The IAM instance profile.</p>"
         },
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of the instance.</p>"
         }
       }
     "AssociateRouteTableRequest": {
       "type": "structure",
       "required": [
-        "RouteTableId",
-        "SubnetId"
+        "RouteTableId"
       ],
       "members": {
         "DryRun": {
           "locationName": "dryRun"
         },
         "RouteTableId": {
-          "shape": "String",
+          "shape": "RouteTableId",
           "documentation": "<p>The ID of the route table.</p>",
           "locationName": "routeTableId"
         },
         "SubnetId": {
-          "shape": "String",
+          "shape": "SubnetId",
           "documentation": "<p>The ID of the subnet.</p>",
           "locationName": "subnetId"
+        },
+        "GatewayId": {
+          "shape": "RouteGatewayId",
+          "documentation": "<p>The ID of the internet gateway or virtual private gateway.</p>"
         }
       }
     },
           "shape": "String",
           "documentation": "<p>The route table association ID. This ID is required for disassociating the route table.</p>",
           "locationName": "associationId"
+        },
+        "AssociationState": {
+          "shape": "RouteTableAssociationState",
+          "documentation": "<p>The state of the association.</p>",
+          "locationName": "associationState"
         }
       }
     },
           "locationName": "ipv6CidrBlock"
         },
         "SubnetId": {
-          "shape": "String",
+          "shape": "SubnetId",
           "documentation": "<p>The ID of your subnet.</p>",
           "locationName": "subnetId"
         }
         }
       }
     },
+    "AssociateTransitGatewayMulticastDomainRequest": {
+      "type": "structure",
+      "members": {
+        "TransitGatewayMulticastDomainId": {
+          "shape": "TransitGatewayMulticastDomainId",
+          "documentation": "<p>The ID of the transit gateway multicast domain.</p>"
+        },
+        "TransitGatewayAttachmentId": {
+          "shape": "TransitGatewayAttachmentId",
+          "documentation": "<p>The ID of the transit gateway attachment to associate with the transit gateway multicast domain.</p>"
+        },
+        "SubnetIds": {
+          "shape": "ValueStringList",
+          "documentation": "<p>The IDs of the subnets to associate with the transit gateway multicast domain.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "AssociateTransitGatewayMulticastDomainResult": {
+      "type": "structure",
+      "members": {
+        "Associations": {
+          "shape": "TransitGatewayMulticastDomainAssociations",
+          "documentation": "<p>Information about the transit gateway multicast domain associations.</p>",
+          "locationName": "associations"
+        }
+      }
+    },
     "AssociateTransitGatewayRouteTableRequest": {
       "type": "structure",
       "required": [
       ],
       "members": {
         "TransitGatewayRouteTableId": {
-          "shape": "String",
+          "shape": "TransitGatewayRouteTableId",
           "documentation": "<p>The ID of the transit gateway route table.</p>"
         },
         "TransitGatewayAttachmentId": {
-          "shape": "String",
+          "shape": "TransitGatewayAttachmentId",
           "documentation": "<p>The ID of the attachment.</p>"
         },
         "DryRun": {
           "documentation": "<p>An IPv4 CIDR block to associate with the VPC.</p>"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC.</p>",
           "locationName": "vpcId"
+        },
+        "Ipv6CidrBlockNetworkBorderGroup": {
+          "shape": "String",
+          "documentation": "<p>The name of the location from which we advertise the IPV6 CIDR block. Use this parameter to limit the CiDR block to this location.</p> <p> You must set <code>AmazonProvidedIpv6CidrBlock</code> to <code>true</code> to use this parameter.</p> <p> You can have one IPv6 CIDR block association per network border group.</p>"
+        },
+        "Ipv6Pool": {
+          "shape": "Ipv6PoolEc2Id",
+          "documentation": "<p>The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.</p>"
+        },
+        "Ipv6CidrBlock": {
+          "shape": "String",
+          "documentation": "<p>An IPv6 CIDR block from the IPv6 address pool. You must also specify <code>Ipv6Pool</code> in the request.</p> <p>To let Amazon choose the IPv6 CIDR block for you, omit this parameter.</p>"
         }
       }
     },
     "AssociationIdList": {
       "type": "list",
       "member": {
-        "shape": "String",
+        "shape": "IamInstanceProfileAssociationId",
         "locationName": "AssociationId"
       }
     },
           "locationName": "SecurityGroupId"
         },
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of an EC2-Classic instance to link to the ClassicLink-enabled VPC.</p>",
           "locationName": "instanceId"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of a ClassicLink-enabled VPC.</p>",
           "locationName": "vpcId"
         }
           "locationName": "dryRun"
         },
         "InternetGatewayId": {
-          "shape": "String",
+          "shape": "InternetGatewayId",
           "documentation": "<p>The ID of the internet gateway.</p>",
           "locationName": "internetGatewayId"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC.</p>",
           "locationName": "vpcId"
         }
           "locationName": "dryRun"
         },
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of the instance.</p>",
           "locationName": "instanceId"
         },
         "NetworkInterfaceId": {
-          "shape": "String",
+          "shape": "NetworkInterfaceId",
           "documentation": "<p>The ID of the network interface.</p>",
           "locationName": "networkInterfaceId"
         }
           "documentation": "<p>The device name (for example, <code>/dev/sdh</code> or <code>xvdh</code>).</p>"
         },
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of the instance.</p>"
         },
         "VolumeId": {
-          "shape": "String",
+          "shape": "VolumeId",
           "documentation": "<p>The ID of the EBS volume. The volume and instance must be within the same Availability Zone.</p>"
         },
         "DryRun": {
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "locationName": "dryRun"
         }
-      },
-      "documentation": "<p>Contains the parameters for AttachVolume.</p>"
+      }
     },
     "AttachVpnGatewayRequest": {
       "type": "structure",
       ],
       "members": {
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC.</p>"
         },
         "VpnGatewayId": {
-          "shape": "String",
+          "shape": "VpnGatewayId",
           "documentation": "<p>The ID of the virtual private gateway.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN endpoint.</p>"
         },
         "TargetNetworkCidr": {
         },
         "AccessGroupId": {
           "shape": "String",
-          "documentation": "<p>The ID of the Active Directory group to grant access.</p>"
+          "documentation": "<p>The ID of the group to grant access to, for example, the Active Directory group or identity provider (IdP) group.</p>"
         },
         "AuthorizeAllGroups": {
           "shape": "Boolean",
           "locationName": "dryRun"
         },
         "GroupId": {
-          "shape": "String",
+          "shape": "SecurityGroupId",
           "documentation": "<p>The ID of the security group.</p>",
           "locationName": "groupId"
         },
           "documentation": "<p>The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use <code>-1</code> to specify all types. If you specify all ICMP types, you must specify all codes.</p> <p>Alternatively, use a set of IP permissions to specify multiple rules and a description for the rule.</p>"
         },
         "GroupId": {
-          "shape": "String",
+          "shape": "SecurityGroupId",
           "documentation": "<p>The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.</p>"
         },
         "GroupName": {
-          "shape": "String",
+          "shape": "SecurityGroupName",
           "documentation": "<p>[EC2-Classic, default VPC] The name of the security group. You must specify either the security group ID or the security group name in the request.</p>"
         },
         "IpPermissions": {
         "off"
       ]
     },
+    "AutoRecoveryFlag": {
+      "type": "boolean"
+    },
     "AvailabilityZone": {
       "type": "structure",
       "members": {
         "State": {
           "shape": "AvailabilityZoneState",
-          "documentation": "<p>The state of the Availability Zone.</p>",
+          "documentation": "<p>The state of the Availability Zone or Local Zone.</p>",
           "locationName": "zoneState"
         },
+        "OptInStatus": {
+          "shape": "AvailabilityZoneOptInStatus",
+          "documentation": "<p> For Availability Zones, this parameter always has the value of <code>opt-in-not-required</code>.</p> <p>For Local Zones, this parameter is the opt in status. The possible values are <code>opted-in</code>, and <code>not-opted-in</code>.</p>",
+          "locationName": "optInStatus"
+        },
         "Messages": {
           "shape": "AvailabilityZoneMessageList",
-          "documentation": "<p>Any messages about the Availability Zone.</p>",
+          "documentation": "<p>Any messages about the Availability Zone or Local Zone.</p>",
           "locationName": "messageSet"
         },
         "RegionName": {
         },
         "ZoneName": {
           "shape": "String",
-          "documentation": "<p>The name of the Availability Zone.</p>",
+          "documentation": "<p>The name of the Availability Zone or Local Zone.</p>",
           "locationName": "zoneName"
         },
         "ZoneId": {
           "shape": "String",
-          "documentation": "<p>The ID of the Availability Zone.</p>",
+          "documentation": "<p>The ID of the Availability Zone or Local Zone.</p>",
           "locationName": "zoneId"
+        },
+        "GroupName": {
+          "shape": "String",
+          "documentation": "<p> For Availability Zones, this parameter has the same value as the Region name.</p> <p>For Local Zones, the name of the associated group, for example <code>us-west-2-lax-1</code>.</p>",
+          "locationName": "groupName"
+        },
+        "NetworkBorderGroup": {
+          "shape": "String",
+          "documentation": "<p>The name of the location from which the address is advertised.</p>",
+          "locationName": "networkBorderGroup"
         }
       },
-      "documentation": "<p>Describes an Availability Zone.</p>"
+      "documentation": "<p>Describes an Availability Zone or Local Zone.</p>"
     },
     "AvailabilityZoneList": {
       "type": "list",
       "members": {
         "Message": {
           "shape": "String",
-          "documentation": "<p>The message about the Availability Zone.</p>",
+          "documentation": "<p>The message about the Availability Zone or Local Zone.</p>",
           "locationName": "message"
         }
       },
-      "documentation": "<p>Describes a message about an Availability Zone.</p>"
+      "documentation": "<p>Describes a message about an Availability Zone or Local Zone.</p>"
     },
     "AvailabilityZoneMessageList": {
       "type": "list",
         "locationName": "item"
       }
     },
+    "AvailabilityZoneOptInStatus": {
+      "type": "string",
+      "enum": [
+        "opt-in-not-required",
+        "opted-in",
+        "not-opted-in"
+      ]
+    },
     "AvailabilityZoneState": {
       "type": "string",
       "enum": [
         "unavailable"
       ]
     },
+    "AvailabilityZoneStringList": {
+      "type": "list",
+      "member": {
+        "shape": "String",
+        "locationName": "AvailabilityZone"
+      }
+    },
     "AvailableCapacity": {
       "type": "structure",
       "members": {
         "AvailableInstanceCapacity": {
           "shape": "AvailableInstanceCapacityList",
-          "documentation": "<p>The total number of instances supported by the Dedicated Host.</p>",
+          "documentation": "<p>The number of instances that can be launched onto the Dedicated Host depending on the host's available capacity. For Dedicated Hosts that support multiple instance types, this parameter represents the number of instances for each instance size that is supported on the host.</p>",
           "locationName": "availableInstanceCapacity"
         },
         "AvailableVCpus": {
           "shape": "Integer",
-          "documentation": "<p>The number of vCPUs available on the Dedicated Host.</p>",
+          "documentation": "<p>The number of vCPUs available for launching instances onto the Dedicated Host.</p>",
           "locationName": "availableVCpus"
         }
       },
-      "documentation": "<p>The capacity information for instances launched onto the Dedicated Host.</p>"
+      "documentation": "<p>The capacity information for instances that can be launched onto the Dedicated Host. </p>"
     },
     "AvailableInstanceCapacityList": {
       "type": "list",
         "locationName": "item"
       }
     },
+    "BareMetalFlag": {
+      "type": "boolean"
+    },
     "BatchState": {
       "type": "string",
       "enum": [
     "Boolean": {
       "type": "boolean"
     },
+    "BundleId": {
+      "type": "string"
+    },
     "BundleIdStringList": {
       "type": "list",
       "member": {
-        "shape": "String",
+        "shape": "BundleId",
         "locationName": "BundleId"
       }
     },
       ],
       "members": {
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of the instance to bundle.</p> <p>Type: String</p> <p>Default: None</p> <p>Required: Yes</p>"
         },
         "Storage": {
         "failed"
       ]
     },
+    "BurstablePerformanceFlag": {
+      "type": "boolean"
+    },
     "ByoipCidr": {
       "type": "structure",
       "members": {
         "Cidr": {
           "shape": "String",
-          "documentation": "<p>The public IPv4 address range, in CIDR notation.</p>",
+          "documentation": "<p>The address range, in CIDR notation.</p>",
           "locationName": "cidr"
         },
         "Description": {
         "failed-provision",
         "pending-deprovision",
         "pending-provision",
-        "provisioned"
+        "provisioned",
+        "provisioned-not-publicly-advertisable"
       ]
     },
     "CancelBatchErrorCode": {
       ],
       "members": {
         "BundleId": {
-          "shape": "String",
+          "shape": "BundleId",
           "documentation": "<p>The ID of the bundle task.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "CapacityReservationId": {
-          "shape": "String",
+          "shape": "CapacityReservationId",
           "documentation": "<p>The ID of the Capacity Reservation to be cancelled.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "ConversionTaskId": {
-          "shape": "String",
+          "shape": "ConversionTaskId",
           "documentation": "<p>The ID of the conversion task.</p>",
           "locationName": "conversionTaskId"
         },
       ],
       "members": {
         "ExportTaskId": {
-          "shape": "String",
+          "shape": "ExportVmTaskId",
           "documentation": "<p>The ID of the export task. This is the ID returned by <code>CreateInstanceExportTask</code>.</p>",
           "locationName": "exportTaskId"
         }
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "ImportTaskId": {
-          "shape": "String",
+          "shape": "ImportTaskId",
           "documentation": "<p>The ID of the import image or import snapshot task to be canceled.</p>"
         }
       }
       ],
       "members": {
         "ReservedInstancesListingId": {
-          "shape": "String",
+          "shape": "ReservedInstancesListingId",
           "documentation": "<p>The ID of the Reserved Instance listing.</p>",
           "locationName": "reservedInstancesListingId"
         }
           "locationName": "dryRun"
         },
         "SpotFleetRequestIds": {
-          "shape": "ValueStringList",
+          "shape": "SpotFleetRequestIdList",
           "documentation": "<p>The IDs of the Spot Fleet requests.</p>",
           "locationName": "spotFleetRequestId"
         },
           "documentation": "<p>The ID of the Capacity Reservation.</p>",
           "locationName": "capacityReservationId"
         },
+        "OwnerId": {
+          "shape": "String",
+          "documentation": "<p>The ID of the AWS account that owns the Capacity Reservation.</p>",
+          "locationName": "ownerId"
+        },
+        "CapacityReservationArn": {
+          "shape": "String",
+          "documentation": "<p>The Amazon Resource Name (ARN) of the Capacity Reservation.</p>",
+          "locationName": "capacityReservationArn"
+        },
+        "AvailabilityZoneId": {
+          "shape": "String",
+          "documentation": "<p>The Availability Zone ID of the Capacity Reservation.</p>",
+          "locationName": "availabilityZoneId"
+        },
         "InstanceType": {
           "shape": "String",
           "documentation": "<p>The type of instance for which the Capacity Reservation reserves capacity.</p>",
         },
         "TotalInstanceCount": {
           "shape": "Integer",
-          "documentation": "<p>The number of instances for which the Capacity Reservation reserves capacity.</p>",
+          "documentation": "<p>The total number of instances for which the Capacity Reservation reserves capacity.</p>",
           "locationName": "totalInstanceCount"
         },
         "AvailableInstanceCount": {
         },
         "State": {
           "shape": "CapacityReservationState",
-          "documentation": "<p>The current state of the Capacity Reservation. A Capacity Reservation can be in one of the following states:</p> <ul> <li> <p> <code>active</code> - The Capacity Reservation is active and the capacity is available for your use.</p> </li> <li> <p> <code>cancelled</code> - The Capacity Reservation expired automatically at the date and time specified in your request. The reserved capacity is no longer available for your use.</p> </li> <li> <p> <code>expired</code> - The Capacity Reservation was manually cancelled. The reserved capacity is no longer available for your use.</p> </li> <li> <p> <code>pending</code> - The Capacity Reservation request was successful but the capacity provisioning is still pending.</p> </li> <li> <p> <code>failed</code> - The Capacity Reservation request has failed. A request might fail due to invalid request parameters, capacity constraints, or instance limit constraints. Failed requests are retained for 60 minutes.</p> </li> </ul>",
+          "documentation": "<p>The current state of the Capacity Reservation. A Capacity Reservation can be in one of the following states:</p> <ul> <li> <p> <code>active</code> - The Capacity Reservation is active and the capacity is available for your use.</p> </li> <li> <p> <code>expired</code> - The Capacity Reservation expired automatically at the date and time specified in your request. The reserved capacity is no longer available for your use.</p> </li> <li> <p> <code>cancelled</code> - The Capacity Reservation was manually cancelled. The reserved capacity is no longer available for your use.</p> </li> <li> <p> <code>pending</code> - The Capacity Reservation request was successful but the capacity provisioning is still pending.</p> </li> <li> <p> <code>failed</code> - The Capacity Reservation request has failed. A request might fail due to invalid request parameters, capacity constraints, or instance limit constraints. Failed requests are retained for 60 minutes.</p> </li> </ul>",
           "locationName": "state"
         },
         "EndDate": {
       },
       "documentation": "<p>Describes a Capacity Reservation.</p>"
     },
+    "CapacityReservationId": {
+      "type": "string"
+    },
     "CapacityReservationIdSet": {
       "type": "list",
       "member": {
-        "shape": "String",
+        "shape": "CapacityReservationId",
         "locationName": "item"
       }
     },
         "Linux with SQL Server Enterprise"
       ]
     },
+    "CapacityReservationOptions": {
+      "type": "structure",
+      "members": {
+        "UsageStrategy": {
+          "shape": "FleetCapacityReservationUsageStrategy",
+          "documentation": "<p>Indicates whether to use unused Capacity Reservations for fulfilling On-Demand capacity.</p> <p>If you specify <code>use-capacity-reservations-first</code>, 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 (<code>lowest-price</code> or <code>prioritized</code>) 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 (<code>lowest-price</code> or <code>prioritized</code>).</p> <p>If you do not specify a value, the fleet fulfils the On-Demand capacity according to the chosen On-Demand allocation strategy.</p>",
+          "locationName": "usageStrategy"
+        }
+      },
+      "documentation": "<p>Describes the strategy for using unused Capacity Reservations for fulfilling On-Demand capacity.</p> <note> <p>This strategy can only be used if the EC2 Fleet is of type <code>instant</code>.</p> </note> <p>For more information about Capacity Reservations, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html\">On-Demand Capacity Reservations</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>. For examples of using Capacity Reservations in an EC2 Fleet, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html\">EC2 Fleet Example Configurations</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+    },
+    "CapacityReservationOptionsRequest": {
+      "type": "structure",
+      "members": {
+        "UsageStrategy": {
+          "shape": "FleetCapacityReservationUsageStrategy",
+          "documentation": "<p>Indicates whether to use unused Capacity Reservations for fulfilling On-Demand capacity.</p> <p>If you specify <code>use-capacity-reservations-first</code>, 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 (<code>lowest-price</code> or <code>prioritized</code>) 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 (<code>lowest-price</code> or <code>prioritized</code>).</p> <p>If you do not specify a value, the fleet fulfils the On-Demand capacity according to the chosen On-Demand allocation strategy.</p>"
+        }
+      },
+      "documentation": "<p>Describes the strategy for using unused Capacity Reservations for fulfilling On-Demand capacity.</p> <note> <p>This strategy can only be used if the EC2 Fleet is of type <code>instant</code>.</p> </note> <p>For more information about Capacity Reservations, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html\">On-Demand Capacity Reservations</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>. For examples of using Capacity Reservations in an EC2 Fleet, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html\">EC2 Fleet Example Configurations</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+    },
     "CapacityReservationPreference": {
       "type": "string",
       "enum": [
       "type": "structure",
       "members": {
         "CapacityReservationId": {
-          "shape": "String",
+          "shape": "CapacityReservationId",
           "documentation": "<p>The ID of the Capacity Reservation.</p>"
         }
       },
       },
       "documentation": "<p>Describes the client-specific data.</p>"
     },
+    "ClientVpnAssociationId": {
+      "type": "string"
+    },
     "ClientVpnAuthentication": {
       "type": "structure",
       "members": {
           "shape": "CertificateAuthentication",
           "documentation": "<p>Information about the authentication certificates, if applicable.</p>",
           "locationName": "mutualAuthentication"
+        },
+        "FederatedAuthentication": {
+          "shape": "FederatedAuthentication",
+          "documentation": "<p>Information about the IAM SAML identity provider, if applicable.</p>",
+          "locationName": "federatedAuthentication"
         }
       },
-      "documentation": "<p>Describes the authentication methods used by a Client VPN endpoint. Client VPN supports Active Directory and mutual authentication. For more information, see <a href=\"https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication\">Authentication</a> in the <i>AWS Client VPN Administrator Guide</i>.</p>"
+      "documentation": "<p>Describes the authentication methods used by a Client VPN endpoint. For more information, see <a href=\"https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication\">Authentication</a> in the <i>AWS Client VPN Administrator Guide</i>.</p>"
     },
     "ClientVpnAuthenticationList": {
       "type": "list",
       "members": {
         "Type": {
           "shape": "ClientVpnAuthenticationType",
-          "documentation": "<p>The type of client authentication to be used. Specify <code>certificate-authentication</code> to use certificate-based authentication, or <code>directory-service-authentication</code> to use Active Directory authentication.</p>"
+          "documentation": "<p>The type of client authentication to be used.</p>"
         },
         "ActiveDirectory": {
           "shape": "DirectoryServiceAuthenticationRequest",
         "MutualAuthentication": {
           "shape": "CertificateAuthenticationRequest",
           "documentation": "<p>Information about the authentication certificates to be used, if applicable. You must provide this information if <b>Type</b> is <code>certificate-authentication</code>.</p>"
+        },
+        "FederatedAuthentication": {
+          "shape": "FederatedAuthenticationRequest",
+          "documentation": "<p>Information about the IAM SAML identity provider to be used, if applicable. You must provide this information if <b>Type</b> is <code>federated-authentication</code>.</p>"
         }
       },
-      "documentation": "<p>Describes the authentication method to be used by a Client VPN endpoint. Client VPN supports Active Directory and mutual authentication. For more information, see <a href=\"https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication\">Authentication</a> in the <i>AWS Client VPN Administrator Guide</i>.</p>"
+      "documentation": "<p>Describes the authentication method to be used by a Client VPN endpoint. For more information, see <a href=\"https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication\">Authentication</a> in the <i>AWS Client VPN Administrator Guide</i>.</p>"
     },
     "ClientVpnAuthenticationRequestList": {
       "type": "list",
       "type": "string",
       "enum": [
         "certificate-authentication",
-        "directory-service-authentication"
+        "directory-service-authentication",
+        "federated-authentication"
       ]
     },
     "ClientVpnAuthorizationRuleStatus": {
         },
         "SplitTunnel": {
           "shape": "Boolean",
-          "documentation": "<p>Indicates whether VPN split tunneling is supported.</p>",
+          "documentation": "<p>Indicates whether split-tunnel is enabled in the AWS Client VPN endpoint.</p> <p>For information about split-tunnel VPN endpoints, see <a href=\"https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/split-tunnel-vpn.html\">Split-Tunnel AWS Client VPN Endpoint</a> in the <i>AWS Client VPN Administrator Guide</i>.</p>",
           "locationName": "splitTunnel"
         },
         "VpnProtocol": {
           "documentation": "<p>The transport protocol used by the Client VPN endpoint.</p>",
           "locationName": "transportProtocol"
         },
+        "VpnPort": {
+          "shape": "Integer",
+          "documentation": "<p>The port number for the Client VPN endpoint.</p>",
+          "locationName": "vpnPort"
+        },
         "AssociatedTargetNetworks": {
           "shape": "AssociatedTargetNetworkSet",
           "documentation": "<p>Information about the associated target networks. A target network is a subnet in a VPC.</p>",
           "shape": "TagList",
           "documentation": "<p>Any tags assigned to the Client VPN endpoint.</p>",
           "locationName": "tagSet"
+        },
+        "SecurityGroupIds": {
+          "shape": "ClientVpnSecurityGroupIdSet",
+          "documentation": "<p>The IDs of the security groups for the target network.</p>",
+          "locationName": "securityGroupIdSet"
+        },
+        "VpcId": {
+          "shape": "VpcId",
+          "documentation": "<p>The ID of the VPC.</p>",
+          "locationName": "vpcId"
         }
       },
       "documentation": "<p>Describes a Client VPN endpoint.</p>"
     },
+    "ClientVpnEndpointId": {
+      "type": "string"
+    },
+    "ClientVpnEndpointIdList": {
+      "type": "list",
+      "member": {
+        "shape": "ClientVpnEndpointId",
+        "locationName": "item"
+      }
+    },
     "ClientVpnEndpointStatus": {
       "type": "structure",
       "members": {
     "ClientVpnSecurityGroupIdSet": {
       "type": "list",
       "member": {
-        "shape": "String",
+        "shape": "SecurityGroupId",
+        "locationName": "item"
+      }
+    },
+    "CoipAddressUsage": {
+      "type": "structure",
+      "members": {
+        "AllocationId": {
+          "shape": "String",
+          "documentation": "<p>The allocation ID of the address.</p>",
+          "locationName": "allocationId"
+        },
+        "AwsAccountId": {
+          "shape": "String",
+          "documentation": "<p>The AWS account ID.</p>",
+          "locationName": "awsAccountId"
+        },
+        "AwsService": {
+          "shape": "String",
+          "documentation": "<p>The AWS service.</p>",
+          "locationName": "awsService"
+        },
+        "CoIp": {
+          "shape": "String",
+          "documentation": "<p>The customer-owned IP address.</p>",
+          "locationName": "coIp"
+        }
+      },
+      "documentation": "<p>Describes address usage for a customer-owned address pool.</p>"
+    },
+    "CoipAddressUsageSet": {
+      "type": "list",
+      "member": {
+        "shape": "CoipAddressUsage",
+        "locationName": "item"
+      }
+    },
+    "CoipPool": {
+      "type": "structure",
+      "members": {
+        "PoolId": {
+          "shape": "CoipPoolId",
+          "documentation": "<p>The ID of the address pool.</p>",
+          "locationName": "poolId"
+        },
+        "PoolCidrs": {
+          "shape": "ValueStringList",
+          "documentation": "<p>The address ranges of the address pool.</p>",
+          "locationName": "poolCidrSet"
+        },
+        "LocalGatewayRouteTableId": {
+          "shape": "LocalGatewayRoutetableId",
+          "documentation": "<p>The ID of the local gateway route table.</p>",
+          "locationName": "localGatewayRouteTableId"
+        },
+        "Tags": {
+          "shape": "TagList",
+          "documentation": "<p>The tags.</p>",
+          "locationName": "tagSet"
+        }
+      },
+      "documentation": "<p>Describes a customer-owned address pool.</p>"
+    },
+    "CoipPoolId": {
+      "type": "string"
+    },
+    "CoipPoolIdSet": {
+      "type": "list",
+      "member": {
+        "shape": "CoipPoolId",
+        "locationName": "item"
+      }
+    },
+    "CoipPoolMaxResults": {
+      "type": "integer",
+      "max": 1000,
+      "min": 5
+    },
+    "CoipPoolSet": {
+      "type": "list",
+      "member": {
+        "shape": "CoipPool",
         "locationName": "item"
       }
     },
       ],
       "members": {
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of the instance.</p>"
         },
         "ProductCode": {
       },
       "documentation": "<p>Describes a connection notification for a VPC endpoint or VPC endpoint service.</p>"
     },
+    "ConnectionNotificationId": {
+      "type": "string"
+    },
     "ConnectionNotificationSet": {
       "type": "list",
       "member": {
     "ConversionIdStringList": {
       "type": "list",
       "member": {
-        "shape": "String",
+        "shape": "ConversionTaskId",
         "locationName": "item"
       }
     },
       },
       "documentation": "<p>Describes a conversion task.</p>"
     },
+    "ConversionTaskId": {
+      "type": "string"
+    },
     "ConversionTaskState": {
       "type": "string",
       "enum": [
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "SourceFpgaImageId": {
-          "shape": "String",
+          "shape": "FpgaImageId",
           "documentation": "<p>The ID of the source AFI.</p>"
         },
         "Description": {
           "locationName": "encrypted"
         },
         "KmsKeyId": {
-          "shape": "String",
-          "documentation": "<p>An identifier for the AWS Key Management Service (AWS KMS) customer master key (CMK) to use when creating the encrypted volume. This parameter is only required if you want to use a non-default CMK; if this parameter is not specified, the default CMK for EBS is used. If a <code>KmsKeyId</code> is specified, the <code>Encrypted</code> flag must also be set. </p> <p>To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". For example:</p> <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p> </li> <li> <p>Key ARN: <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code> </p> </li> <li> <p>Alias name: <code>alias/ExampleAlias</code> </p> </li> <li> <p>Alias ARN: <code>arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias</code> </p> </li> </ul> <p>AWS parses <code>KmsKeyId</code> asynchronously, meaning that the action you call may appear to complete even though you provided an invalid identifier. This action will eventually report failure. </p> <p>The specified CMK must exist in the Region that the snapshot is being copied to. </p>",
+          "shape": "KmsKeyId",
+          "documentation": "<p>An identifier for the symmetric AWS Key Management Service (AWS KMS) customer master key (CMK) to use when creating the encrypted volume. This parameter is only required if you want to use a non-default CMK; if this parameter is not specified, the default CMK for EBS is used. If a <code>KmsKeyId</code> is specified, the <code>Encrypted</code> flag must also be set. </p> <p>To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". For example:</p> <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p> </li> <li> <p>Key ARN: <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code> </p> </li> <li> <p>Alias name: <code>alias/ExampleAlias</code> </p> </li> <li> <p>Alias ARN: <code>arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias</code> </p> </li> </ul> <p>AWS parses <code>KmsKeyId</code> asynchronously, meaning that the action you call may appear to complete even though you provided an invalid identifier. This action will eventually report failure. </p> <p>The specified CMK must exist in the Region that the snapshot is being copied to. </p> <p>Amazon EBS does not support asymmetric CMKs.</p>",
           "locationName": "kmsKeyId"
         },
         "Name": {
         },
         "Encrypted": {
           "shape": "Boolean",
-          "documentation": "<p>Specifies whether the destination snapshot should be encrypted. You can encrypt a copy of an unencrypted snapshot, but you cannot use it to create an unencrypted copy of an encrypted snapshot. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html\">Amazon EBS Encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>",
+          "documentation": "<p>To encrypt a copy of an unencrypted snapshot if encryption by default is not enabled, enable encryption using this parameter. Otherwise, omit this parameter. Encrypted snapshots are encrypted, even if you omit this parameter and encryption by default is not enabled. You cannot set this parameter to false. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html\">Amazon EBS Encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>",
           "locationName": "encrypted"
         },
         "KmsKeyId": {
-          "shape": "String",
+          "shape": "KmsKeyId",
           "documentation": "<p>The identifier of the AWS Key Management Service (AWS KMS) customer master key (CMK) to use for Amazon EBS encryption. If this parameter is not specified, your AWS managed CMK for EBS is used. If <code>KmsKeyId</code> is specified, the encrypted state must be <code>true</code>.</p> <p>You can specify the CMK using any of the following:</p> <ul> <li> <p>Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab.</p> </li> <li> <p>Key alias. For example, alias/ExampleAlias.</p> </li> <li> <p>Key ARN. For example, arn:aws:kms:<i>us-east-1</i>:<i>012345678910</i>:key/<i>abcd1234-a123-456a-a12b-a123b4cd56ef</i>.</p> </li> <li> <p>Alias ARN. For example, arn:aws:kms:<i>us-east-1</i>:<i>012345678910</i>:alias/<i>ExampleAlias</i>.</p> </li> </ul> <p>AWS authenticates the CMK asynchronously. Therefore, if you specify an ID, alias, or ARN that is not valid, the action can appear to complete, but eventually fails.</p>",
           "locationName": "kmsKeyId"
         },
           "shape": "String",
           "documentation": "<p>The ID of the EBS snapshot to copy.</p>"
         },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to apply to the new snapshot.</p>",
+          "locationName": "TagSpecification"
+        },
         "DryRun": {
           "shape": "Boolean",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "locationName": "dryRun"
         }
-      },
-      "documentation": "<p>Contains the parameters for CopySnapshot.</p>"
+      }
     },
     "CopySnapshotResult": {
       "type": "structure",
           "shape": "String",
           "documentation": "<p>The ID of the new snapshot.</p>",
           "locationName": "snapshotId"
+        },
+        "Tags": {
+          "shape": "TagList",
+          "documentation": "<p>Any tags applied to the new snapshot.</p>",
+          "locationName": "tagSet"
         }
-      },
-      "documentation": "<p>Contains the output of CopySnapshot.</p>"
+      }
     },
     "CopyTagsFromSource": {
       "type": "string",
         "volume"
       ]
     },
+    "CoreCount": {
+      "type": "integer"
+    },
+    "CoreCountList": {
+      "type": "list",
+      "member": {
+        "shape": "CoreCount",
+        "locationName": "item"
+      }
+    },
     "CpuOptions": {
       "type": "structure",
       "members": {
         },
         "ThreadsPerCore": {
           "shape": "Integer",
-          "documentation": "<p>The number of threads per CPU core. To disable Intel Hyper-Threading Technology for the instance, specify a value of <code>1</code>. Otherwise, specify the default value of <code>2</code>.</p>"
+          "documentation": "<p>The number of threads per CPU core. To disable multithreading for the instance, specify a value of <code>1</code>. Otherwise, specify the default value of <code>2</code>.</p>"
         }
       },
       "documentation": "<p>The CPU options for the instance. Both the core count and threads per core must be specified in the request.</p>"
       "required": [
         "InstanceType",
         "InstancePlatform",
-        "AvailabilityZone",
         "InstanceCount"
       ],
       "members": {
           "shape": "String",
           "documentation": "<p>The Availability Zone in which to create the Capacity Reservation.</p>"
         },
+        "AvailabilityZoneId": {
+          "shape": "String",
+          "documentation": "<p>The ID of the Availability Zone in which to create the Capacity Reservation.</p>"
+        },
         "Tenancy": {
           "shape": "CapacityReservationTenancy",
           "documentation": "<p>Indicates the tenancy of the Capacity Reservation. A Capacity Reservation can have one of the following tenancy settings:</p> <ul> <li> <p> <code>default</code> - The Capacity Reservation is created on hardware that is shared with other AWS accounts.</p> </li> <li> <p> <code>dedicated</code> - The Capacity Reservation is created on single-tenant hardware that is dedicated to a single AWS account.</p> </li> </ul>"
         },
         "DnsServers": {
           "shape": "ValueStringList",
-          "documentation": "<p>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 of the VPC that is to be associated with Client VPN endpoint is used as the DNS server.</p>"
+          "documentation": "<p>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.</p>"
         },
         "TransportProtocol": {
           "shape": "TransportProtocol",
           "documentation": "<p>The transport protocol to be used by the VPN session.</p> <p>Default value: <code>udp</code> </p>"
         },
+        "VpnPort": {
+          "shape": "Integer",
+          "documentation": "<p>The port number to assign to the Client VPN endpoint for TCP and UDP traffic.</p> <p>Valid Values: <code>443</code> | <code>1194</code> </p> <p>Default Value: <code>443</code> </p>"
+        },
         "Description": {
           "shape": "String",
           "documentation": "<p>A brief description of the Client VPN endpoint.</p>"
         },
+        "SplitTunnel": {
+          "shape": "Boolean",
+          "documentation": "<p>Indicates whether split-tunnel is enabled on the AWS Client VPN endpoint.</p> <p>By default, split-tunnel on a VPN endpoint is disabled.</p> <p>For information about split-tunnel VPN endpoints, see <a href=\"https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/split-tunnel-vpn.html\">Split-Tunnel AWS Client VPN Endpoint</a> in the <i>AWS Client VPN Administrator Guide</i>.</p>"
+        },
         "DryRun": {
           "shape": "Boolean",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
           "shape": "TagSpecificationList",
           "documentation": "<p>The tags to apply to the Client VPN endpoint during creation.</p>",
           "locationName": "TagSpecification"
+        },
+        "SecurityGroupIds": {
+          "shape": "ClientVpnSecurityGroupIdSet",
+          "documentation": "<p>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.</p>",
+          "locationName": "SecurityGroupId"
+        },
+        "VpcId": {
+          "shape": "VpcId",
+          "documentation": "<p>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.</p>"
         }
       }
     },
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN endpoint to which to add the route.</p>"
         },
         "DestinationCidrBlock": {
           "documentation": "<p>The IPv4 address range, in CIDR notation, of the route destination. For example:</p> <ul> <li> <p>To add a route for Internet access, enter <code>0.0.0.0/0</code> </p> </li> <li> <p>To add a route for a peered VPC, enter the peered VPC's IPv4 CIDR range</p> </li> <li> <p>To add a route for an on-premises network, enter the AWS Site-to-Site VPN connection's IPv4 CIDR range</p> </li> </ul> <p>Route address ranges cannot overlap with the CIDR range specified for client allocation.</p>"
         },
         "TargetVpcSubnetId": {
-          "shape": "String",
+          "shape": "SubnetId",
           "documentation": "<p>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.</p>"
         },
         "Description": {
       "type": "structure",
       "required": [
         "BgpAsn",
-        "PublicIp",
         "Type"
       ],
       "members": {
           "documentation": "<p>The Internet-routable IP address for the customer gateway's outside interface. The address must be static.</p>",
           "locationName": "IpAddress"
         },
+        "CertificateArn": {
+          "shape": "String",
+          "documentation": "<p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>"
+        },
         "Type": {
           "shape": "GatewayType",
           "documentation": "<p>The type of VPN connection that this customer gateway supports (<code>ipsec.1</code>).</p>"
         },
+        "DeviceName": {
+          "shape": "String",
+          "documentation": "<p>A name for the customer gateway device.</p> <p>Length Constraints: Up to 255 characters.</p>"
+        },
         "DryRun": {
           "shape": "Boolean",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC for which to create the egress-only internet gateway.</p>"
         }
       }
       "members": {
         "LaunchTemplateAndOverrides": {
           "shape": "LaunchTemplateAndOverridesResponse",
-          "documentation": "<p>The launch templates and overrides that were used for launching the instances. Any parameters that you specify in the Overrides override the same parameters in the launch template.</p>",
+          "documentation": "<p>The launch templates and overrides that were used for launching the instances. The values that you specify in the Overrides replace the values in the launch template.</p>",
           "locationName": "launchTemplateAndOverrides"
         },
         "Lifecycle": {
         },
         "ErrorMessage": {
           "shape": "String",
-          "documentation": "<p>The error message that describes why the instance could not be launched. For more information about error messages, see ee <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html\">Error Codes</a>.</p>",
+          "documentation": "<p>The error message that describes why the instance could not be launched. For more information about error messages, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html\">Error Codes</a>.</p>",
           "locationName": "errorMessage"
         }
       },
       "members": {
         "LaunchTemplateAndOverrides": {
           "shape": "LaunchTemplateAndOverridesResponse",
-          "documentation": "<p>The launch templates and overrides that were used for launching the instances. Any parameters that you specify in the Overrides override the same parameters in the launch template.</p>",
+          "documentation": "<p>The launch templates and overrides that were used for launching the instances. The values that you specify in the Overrides replace the values in the launch template.</p>",
           "locationName": "launchTemplateAndOverrides"
         },
         "Lifecycle": {
         },
         "Platform": {
           "shape": "PlatformValues",
-          "documentation": "<p>The value is <code>Windows</code> for Windows instances; otherwise blank.</p>",
+          "documentation": "<p>The value is <code>Windows</code> for Windows instances. Otherwise, the value is blank.</p>",
           "locationName": "platform"
         }
       },
         },
         "ClientToken": {
           "shape": "String",
-          "documentation": "<p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html\">Ensuring Idempotency</a>.</p>"
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html\">Ensuring Idempotency</a>.</p>"
         },
         "SpotOptions": {
           "shape": "SpotOptionsRequest",
         },
         "OnDemandOptions": {
           "shape": "OnDemandOptionsRequest",
-          "documentation": "<p>The allocation strategy of On-Demand Instances in an EC2 Fleet.</p>"
+          "documentation": "<p>Describes the configuration of On-Demand Instances in an EC2 Fleet.</p>"
         },
         "ExcessCapacityTerminationPolicy": {
           "shape": "FleetExcessCapacityTerminationPolicy",
         },
         "TargetCapacitySpecification": {
           "shape": "TargetCapacitySpecificationRequest",
-          "documentation": "<p>The <code>TotalTargetCapacity</code>, <code>OnDemandTargetCapacity</code>, <code>SpotTargetCapacity</code>, and <code>DefaultCapacityType</code> structure.</p>"
+          "documentation": "<p>The number of units to request.</p>"
         },
         "TerminateInstancesWithExpiration": {
           "shape": "Boolean",
       "type": "structure",
       "members": {
         "FleetId": {
-          "shape": "FleetIdentifier",
+          "shape": "FleetId",
           "documentation": "<p>The ID of the EC2 Fleet.</p>",
           "locationName": "fleetId"
         },
           "documentation": "<p>The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs.</p> <p>If you specify <code>LogDestinationType</code> as <code>s3</code>, do not specify <code>DeliverLogsPermissionArn</code> or <code>LogGroupName</code>.</p>"
         },
         "ResourceIds": {
-          "shape": "ValueStringList",
+          "shape": "FlowLogResourceIds",
           "documentation": "<p>The ID of the subnet, network interface, or VPC for which you want to create a flow log.</p> <p>Constraints: Maximum of 1000 resources</p>",
           "locationName": "ResourceId"
         },
         },
         "LogDestination": {
           "shape": "String",
-          "documentation": "<p>Specifies the destination to which the flow log data is to be published. Flow log data can be published to a CloudWatch Logs log group or an Amazon S3 bucket. The value specified for this parameter depends on the value specified for <code>LogDestinationType</code>.</p> <p>If LogDestinationType is not specified or <code>cloud-watch-logs</code>, specify the Amazon Resource Name (ARN) of the CloudWatch Logs log group.</p> <p>If LogDestinationType is <code>s3</code>, specify the ARN of the Amazon S3 bucket. You can also specify a subfolder in the bucket. To specify a subfolder in the bucket, use the following ARN format: <code>bucket_ARN/subfolder_name/</code>. For example, to specify a subfolder named <code>my-logs</code> in a bucket named <code>my-bucket</code>, use the following ARN: <code>arn:aws:s3:::my-bucket/my-logs/</code>. You cannot use <code>AWSLogs</code> as a subfolder name. This is a reserved term.</p>"
+          "documentation": "<p>Specifies the destination to which the flow log data is to be published. Flow log data can be published to a CloudWatch Logs log group or an Amazon S3 bucket. The value specified for this parameter depends on the value specified for <code>LogDestinationType</code>.</p> <p>If <code>LogDestinationType</code> is not specified or <code>cloud-watch-logs</code>, specify the Amazon Resource Name (ARN) of the CloudWatch Logs log group. For example, to publish to a log group called <code>my-logs</code>, specify <code>arn:aws:logs:us-east-1:123456789012:log-group:my-logs</code>. Alternatively, use <code>LogGroupName</code> instead.</p> <p>If LogDestinationType is <code>s3</code>, specify the ARN of the Amazon S3 bucket. You can also specify a subfolder in the bucket. To specify a subfolder in the bucket, use the following ARN format: <code>bucket_ARN/subfolder_name/</code>. For example, to specify a subfolder named <code>my-logs</code> in a bucket named <code>my-bucket</code>, use the following ARN: <code>arn:aws:s3:::my-bucket/my-logs/</code>. You cannot use <code>AWSLogs</code> as a subfolder name. This is a reserved term.</p>"
+        },
+        "LogFormat": {
+          "shape": "String",
+          "documentation": "<p>The fields to include in the flow log record, in the order in which they should appear. For a list of available fields, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records\">Flow Log Records</a>. If you omit this parameter, the flow log is created using the default format. If you specify this parameter, you must specify at least one field.</p> <p>Specify the fields using the <code>${field-id}</code> format, separated by spaces. For the AWS CLI, use single quotation marks (' ') to surround the parameter value.</p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to apply to the flow logs.</p>",
+          "locationName": "TagSpecification"
+        },
+        "MaxAggregationInterval": {
+          "shape": "Integer",
+          "documentation": "<p>The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. You can specify 60 seconds (1 minute) or 600 seconds (10 minutes).</p> <p>When a network interface is attached to a <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances\">Nitro-based instance</a>, the aggregation interval is always 60 seconds or less, regardless of the value that you specify.</p> <p>Default: 600</p>"
         }
       }
     },
         "ClientToken": {
           "shape": "String",
           "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html\">Ensuring Idempotency</a>.</p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to apply to the FPGA image during creation.</p>",
+          "locationName": "TagSpecification"
         }
       }
     },
           "locationName": "dryRun"
         },
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of the instance.</p>",
           "locationName": "instanceId"
         },
           "locationName": "exportToS3"
         },
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of the instance.</p>",
           "locationName": "instanceId"
         },
           "shape": "Boolean",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "locationName": "dryRun"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to apply to the new key pair.</p>",
+          "locationName": "TagSpecification"
         }
       }
     },
         "LaunchTemplateData": {
           "shape": "RequestLaunchTemplateData",
           "documentation": "<p>The information for the launch template.</p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to apply to the launch template during creation.</p>",
+          "locationName": "TagSpecification"
         }
       }
     },
           "shape": "LaunchTemplate",
           "documentation": "<p>Information about the launch template.</p>",
           "locationName": "launchTemplate"
+        },
+        "Warning": {
+          "shape": "ValidationWarning",
+          "documentation": "<p>If the launch template contains parameters or parameter combinations that are not valid, an error code and an error message are returned for each issue that's found.</p>",
+          "locationName": "warning"
         }
       }
     },
           "documentation": "<p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html\">Ensuring Idempotency</a>.</p> <p>Constraint: Maximum 128 ASCII characters.</p>"
         },
         "LaunchTemplateId": {
-          "shape": "String",
+          "shape": "LaunchTemplateId",
           "documentation": "<p>The ID of the launch template. You must specify either the launch template ID or launch template name in the request.</p>"
         },
         "LaunchTemplateName": {
         },
         "SourceVersion": {
           "shape": "String",
-          "documentation": "<p>The version number of the launch template version on which to base the new version. The new version inherits the same launch parameters as the source version, except for parameters that you specify in LaunchTemplateData.</p>"
+          "documentation": "<p>The version number of the launch template version on which to base the new version. The new version inherits the same launch parameters as the source version, except for parameters that you specify in <code>LaunchTemplateData</code>. Snapshots applied to the block device mapping are ignored when creating a new version unless they are explicitly included.</p>"
         },
         "VersionDescription": {
           "shape": "VersionDescription",
           "shape": "LaunchTemplateVersion",
           "documentation": "<p>Information about the launch template version.</p>",
           "locationName": "launchTemplateVersion"
+        },
+        "Warning": {
+          "shape": "ValidationWarning",
+          "documentation": "<p>If the new version of the launch template contains parameters or parameter combinations that are not valid, an error code and an error message are returned for each issue that's found.</p>",
+          "locationName": "warning"
+        }
+      }
+    },
+    "CreateLocalGatewayRouteRequest": {
+      "type": "structure",
+      "required": [
+        "DestinationCidrBlock",
+        "LocalGatewayRouteTableId",
+        "LocalGatewayVirtualInterfaceGroupId"
+      ],
+      "members": {
+        "DestinationCidrBlock": {
+          "shape": "String",
+          "documentation": "<p>The CIDR range used for destination matches. Routing decisions are based on the most specific match.</p>"
+        },
+        "LocalGatewayRouteTableId": {
+          "shape": "LocalGatewayRoutetableId",
+          "documentation": "<p>The ID of the local gateway route table.</p>"
+        },
+        "LocalGatewayVirtualInterfaceGroupId": {
+          "shape": "LocalGatewayVirtualInterfaceGroupId",
+          "documentation": "<p>The ID of the virtual interface group.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "CreateLocalGatewayRouteResult": {
+      "type": "structure",
+      "members": {
+        "Route": {
+          "shape": "LocalGatewayRoute",
+          "documentation": "<p>Information about the route.</p>",
+          "locationName": "route"
+        }
+      }
+    },
+    "CreateLocalGatewayRouteTableVpcAssociationRequest": {
+      "type": "structure",
+      "required": [
+        "LocalGatewayRouteTableId",
+        "VpcId"
+      ],
+      "members": {
+        "LocalGatewayRouteTableId": {
+          "shape": "LocalGatewayRoutetableId",
+          "documentation": "<p>The ID of the local gateway route table.</p>"
+        },
+        "VpcId": {
+          "shape": "VpcId",
+          "documentation": "<p>The ID of the VPC.</p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to assign to the local gateway route table VPC association.</p>",
+          "locationName": "TagSpecification"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "CreateLocalGatewayRouteTableVpcAssociationResult": {
+      "type": "structure",
+      "members": {
+        "LocalGatewayRouteTableVpcAssociation": {
+          "shape": "LocalGatewayRouteTableVpcAssociation",
+          "documentation": "<p>Information about the association.</p>",
+          "locationName": "localGatewayRouteTableVpcAssociation"
         }
       }
     },
       ],
       "members": {
         "AllocationId": {
-          "shape": "String",
+          "shape": "AllocationId",
           "documentation": "<p>The allocation ID of an Elastic IP address to associate with the NAT gateway. If the Elastic IP address is associated with another resource, you must first disassociate it.</p>"
         },
         "ClientToken": {
           "shape": "String",
-          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html\">How to Ensure Idempotency</a>.</p> <p>Constraint: Maximum 64 ASCII characters.</p>"
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html\">How to Ensure Idempotency</a>.</p> <p>Constraint: Maximum 64 ASCII characters.</p>",
+          "idempotencyToken": true
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "SubnetId": {
-          "shape": "String",
+          "shape": "SubnetId",
           "documentation": "<p>The subnet in which to create the NAT gateway.</p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to assign to the NAT gateway.</p>",
+          "locationName": "TagSpecification"
         }
       }
     },
           "locationName": "ipv6CidrBlock"
         },
         "NetworkAclId": {
-          "shape": "String",
+          "shape": "NetworkAclId",
           "documentation": "<p>The ID of the network ACL.</p>",
           "locationName": "networkAclId"
         },
           "locationName": "dryRun"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC.</p>",
           "locationName": "vpcId"
         }
       ],
       "members": {
         "NetworkInterfaceId": {
-          "shape": "String",
+          "shape": "NetworkInterfaceId",
           "documentation": "<p>The ID of the network interface.</p>"
         },
         "AwsAccountId": {
         },
         "InterfaceType": {
           "shape": "NetworkInterfaceCreationType",
-          "documentation": "<p>Indicates the type of network interface. To create an Elastic Fabric Adapter (EFA), specify <code>efa</code>. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html\"> Elastic Fabric Adapter</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>If you are not creating an EFA, specify <code>interface</code> or omit this parameter.</p>"
+          "documentation": "<p>Indicates the type of network interface. To create an Elastic Fabric Adapter (EFA), specify <code>efa</code>. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html\"> Elastic Fabric Adapter</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
         },
         "SubnetId": {
-          "shape": "String",
+          "shape": "SubnetId",
           "documentation": "<p>The ID of the subnet to associate with the network interface.</p>",
           "locationName": "subnetId"
         }
         "PartitionCount": {
           "shape": "Integer",
           "documentation": "<p>The number of partitions. Valid only when <b>Strategy</b> is set to <code>partition</code>.</p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to apply to the new placement group.</p>",
+          "locationName": "TagSpecification"
+        }
+      }
+    },
+    "CreatePlacementGroupResult": {
+      "type": "structure",
+      "members": {
+        "PlacementGroup": {
+          "shape": "PlacementGroup",
+          "locationName": "placementGroup"
         }
       }
     },
           "locationName": "priceSchedules"
         },
         "ReservedInstancesId": {
-          "shape": "String",
+          "shape": "ReservationId",
           "documentation": "<p>The ID of the active Standard Reserved Instance.</p>",
           "locationName": "reservedInstancesId"
         }
           "locationName": "dryRun"
         },
         "EgressOnlyInternetGatewayId": {
-          "shape": "String",
+          "shape": "EgressOnlyInternetGatewayId",
           "documentation": "<p>[IPv6 traffic only] The ID of an egress-only internet gateway.</p>",
           "locationName": "egressOnlyInternetGatewayId"
         },
         "GatewayId": {
-          "shape": "String",
+          "shape": "RouteGatewayId",
           "documentation": "<p>The ID of an internet gateway or virtual private gateway attached to your VPC.</p>",
           "locationName": "gatewayId"
         },
         "InstanceId": {
-          "shape": "String",
+          "shape": "InstanceId",
           "documentation": "<p>The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached.</p>",
           "locationName": "instanceId"
         },
         "NatGatewayId": {
-          "shape": "String",
+          "shape": "NatGatewayId",
           "documentation": "<p>[IPv4 traffic only] The ID of a NAT gateway.</p>",
           "locationName": "natGatewayId"
         },
         "TransitGatewayId": {
-          "shape": "String",
+          "shape": "TransitGatewayId",
           "documentation": "<p>The ID of a transit gateway.</p>"
         },
+        "LocalGatewayId": {
+          "shape": "LocalGatewayId",
+          "documentation": "<p>The ID of the local gateway.</p>"
+        },
         "NetworkInterfaceId": {
-          "shape": "String",
+          "shape": "NetworkInterfaceId",
           "documentation": "<p>The ID of a network interface.</p>",
           "locationName": "networkInterfaceId"
         },
         "RouteTableId": {
-          "shape": "String",
+          "shape": "RouteTableId",
           "documentation": "<p>The ID of the route table for the route.</p>",
           "locationName": "routeTableId"
         },
         "VpcPeeringConnectionId": {
-          "shape": "String",
+          "shape": "VpcPeeringConnectionId",
           "documentation": "<p>The ID of a VPC peering connection.</p>",
           "locationName": "vpcPeeringConnectionId"
         }
           "locationName": "dryRun"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC.</p>",
           "locationName": "vpcId"
         }
           "documentation": "<p>The name of the security group.</p> <p>Constraints: Up to 255 characters in length. Cannot start with <code>sg-</code>.</p> <p>Constraints for EC2-Classic: ASCII characters</p> <p>Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&amp;;{}!$*</p>"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>[EC2-VPC] The ID of the VPC. Required for EC2-VPC.</p>"
         },
         "DryRun": {
           "documentation": "<p>A description for the snapshot.</p>"
         },
         "VolumeId": {
-          "shape": "String",
+          "shape": "VolumeId",
           "documentation": "<p>The ID of the EBS volume.</p>"
         },
         "TagSpecifications": {
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "locationName": "dryRun"
         }
-      },
-      "documentation": "<p>Contains the parameters for CreateSnapshot.</p>"
+      }
     },
     "CreateSnapshotsRequest": {
       "type": "structure",
         },
         "DryRun": {
           "shape": "Boolean",
-          "documentation": "<p>Checks whether you have the required permissions for the action without actually making the request. Provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.</p>"
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "CopyTagsFromSource": {
           "shape": "CopyTagsFromSource",
-          "documentation": "<p>Copies the tags from the specified instance to all snapshots.</p>"
+          "documentation": "<p>Copies the tags from the specified volume to corresponding snapshot.</p>"
         }
       }
     },
       "members": {
         "AvailabilityZone": {
           "shape": "String",
-          "documentation": "<p>The Availability Zone for the subnet.</p> <p>Default: AWS selects one for you. If you create more than one subnet in your VPC, we may not necessarily select a different zone for each subnet.</p>"
+          "documentation": "<p>The Availability Zone or Local Zone for the subnet.</p> <p>Default: AWS selects one for you. If you create more than one subnet in your VPC, we do not necessarily select a different zone for each subnet.</p> <p>To create a subnet in a Local Zone, set this value to the Local Zone ID, for example <code>us-west-2-lax-1a</code>. For information about the Regions that support Local Zones, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions\">Available Regions</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>To create a subnet in an Outpost, set this value to the Availability Zone for the Outpost and specify the Outpost ARN.</p>"
         },
         "AvailabilityZoneId": {
           "shape": "String",
-          "documentation": "<p>The AZ ID of the subnet.</p>"
+          "documentation": "<p>The AZ ID or the Local Zone ID of the subnet.</p>"
         },
         "CidrBlock": {
           "shape": "String",
           "shape": "String",
           "documentation": "<p>The IPv6 network range for the subnet, in CIDR notation. The subnet size must use a /64 prefix length.</p>"
         },
-        "VpcId": {
+        "OutpostArn": {
           "shape": "String",
+          "documentation": "<p>The Amazon Resource Name (ARN) of the Outpost. If you specify an Outpost ARN, you must also specify the Availability Zone of the Outpost subnet.</p>"
+        },
+        "VpcId": {
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "TrafficMirrorFilterId": {
-          "shape": "String",
+          "shape": "TrafficMirrorFilterId",
           "documentation": "<p>The ID of the filter that this rule is associated with.</p>"
         },
         "TrafficDirection": {
       ],
       "members": {
         "NetworkInterfaceId": {
-          "shape": "String",
+          "shape": "NetworkInterfaceId",
           "documentation": "<p>The ID of the source network interface.</p>"
         },
         "TrafficMirrorTargetId": {
-          "shape": "String",
+          "shape": "TrafficMirrorTargetId",
           "documentation": "<p>The ID of the Traffic Mirror target.</p>"
         },
         "TrafficMirrorFilterId": {
-          "shape": "String",
+          "shape": "TrafficMirrorFilterId",
           "documentation": "<p>The ID of the Traffic Mirror filter.</p>"
         },
         "PacketLength": {
           "shape": "Integer",
-          "documentation": "<p>The number of bytes in each packet to mirror. These are bytes after the VXLAN header. Do not specify this parameter when you want to mirror the entire packet. To mirror a subset of the packet, set this to the length (in bytes) that you want to mirror. For example, if you set this value to 1network0, then the first 100 bytes that meet the filter criteria are copied to the target.</p> <p>If you do not want to mirror the entire packet, use the <code>PacketLength</code> parameter to specify the number of bytes in each packet to mirror.</p>"
+          "documentation": "<p>The number of bytes in each packet to mirror. These are bytes after the VXLAN header. Do not specify this parameter when you want to mirror the entire packet. To mirror a subset of the packet, set this to the length (in bytes) that you want to mirror. For example, if you set this value to 100, then the first 100 bytes that meet the filter criteria are copied to the target.</p> <p>If you do not want to mirror the entire packet, use the <code>PacketLength</code> parameter to specify the number of bytes in each packet to mirror.</p>"
         },
         "SessionNumber": {
           "shape": "Integer",
       "type": "structure",
       "members": {
         "NetworkInterfaceId": {
-          "shape": "String",
+          "shape": "NetworkInterfaceId",
           "documentation": "<p>The network interface ID that is associated with the target.</p>"
         },
         "NetworkLoadBalancerArn": {
         }
       }
     },
+    "CreateTransitGatewayMulticastDomainRequest": {
+      "type": "structure",
+      "required": [
+        "TransitGatewayId"
+      ],
+      "members": {
+        "TransitGatewayId": {
+          "shape": "TransitGatewayId",
+          "documentation": "<p>The ID of the transit gateway.</p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags for the transit gateway multicast domain.</p>",
+          "locationName": "TagSpecification"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "CreateTransitGatewayMulticastDomainResult": {
+      "type": "structure",
+      "members": {
+        "TransitGatewayMulticastDomain": {
+          "shape": "TransitGatewayMulticastDomain",
+          "documentation": "<p>Information about the transit gateway multicast domain.</p>",
+          "locationName": "transitGatewayMulticastDomain"
+        }
+      }
+    },
+    "CreateTransitGatewayPeeringAttachmentRequest": {
+      "type": "structure",
+      "required": [
+        "TransitGatewayId",
+        "PeerTransitGatewayId",
+        "PeerAccountId",
+        "PeerRegion"
+      ],
+      "members": {
+        "TransitGatewayId": {
+          "shape": "TransitGatewayId",
+          "documentation": "<p>The ID of the transit gateway.</p>"
+        },
+        "PeerTransitGatewayId": {
+          "shape": "TransitAssociationGatewayId",
+          "documentation": "<p>The ID of the peer transit gateway with which to create the peering attachment.</p>"
+        },
+        "PeerAccountId": {
+          "shape": "String",
+          "documentation": "<p>The AWS account ID of the owner of the peer transit gateway.</p>"
+        },
+        "PeerRegion": {
+          "shape": "String",
+          "documentation": "<p>The Region where the peer transit gateway is located.</p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to apply to the transit gateway peering attachment.</p>",
+          "locationName": "TagSpecification"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "CreateTransitGatewayPeeringAttachmentResult": {
+      "type": "structure",
+      "members": {
+        "TransitGatewayPeeringAttachment": {
+          "shape": "TransitGatewayPeeringAttachment",
+          "documentation": "<p>The transit gateway peering attachment.</p>",
+          "locationName": "transitGatewayPeeringAttachment"
+        }
+      }
+    },
     "CreateTransitGatewayRequest": {
       "type": "structure",
       "members": {
           "documentation": "<p>The CIDR range used for destination matches. Routing decisions are based on the most specific match.</p>"
         },
         "TransitGatewayRouteTableId": {
-          "shape": "String",
+          "shape": "TransitGatewayRouteTableId",
           "documentation": "<p>The ID of the transit gateway route table.</p>"
         },
         "TransitGatewayAttachmentId": {
-          "shape": "String",
+          "shape": "TransitGatewayAttachmentId",
           "documentation": "<p>The ID of the attachment.</p>"
         },
         "Blackhole": {
       ],
       "members": {
         "TransitGatewayId": {
-          "shape": "String",
+          "shape": "TransitGatewayId",
           "documentation": "<p>The ID of the transit gateway.</p>"
         },
         "TagSpecifications": {
       ],
       "members": {
         "TransitGatewayId": {
-          "shape": "String",
+          "shape": "TransitGatewayId",
           "documentation": "<p>The ID of the transit gateway.</p>"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC.</p>"
         },
         "SubnetIds": {
-          "shape": "ValueStringList",
+          "shape": "TransitGatewaySubnetIdList",
           "documentation": "<p>The IDs of one or more subnets. You can specify only one subnet per Availability Zone. You must specify at least one subnet, but we recommend that you specify two subnets for better availability. The transit gateway uses one IP address from each specified subnet.</p>"
         },
         "Options": {
           "documentation": "<p>The number of I/O operations per second (IOPS) to provision for the volume, with a maximum ratio of 50 IOPS/GiB. Range is 100 to 64,000 IOPS for volumes in most Regions. Maximum IOPS of 64,000 is guaranteed only on <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances\">Nitro-based instances</a>. Other instance families guarantee performance up to 32,000 IOPS. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html\">Amazon EBS Volume Types</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p> <p>This parameter is valid only for Provisioned IOPS SSD (io1) volumes.</p>"
         },
         "KmsKeyId": {
-          "shape": "String",
+          "shape": "KmsKeyId",
           "documentation": "<p>The identifier of the AWS Key Management Service (AWS KMS) customer master key (CMK) to use for Amazon EBS encryption. If this parameter is not specified, your AWS managed CMK for EBS is used. If <code>KmsKeyId</code> is specified, the encrypted state must be <code>true</code>.</p> <p>You can specify the CMK using any of the following:</p> <ul> <li> <p>Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab.</p> </li> <li> <p>Key alias. For example, alias/ExampleAlias.</p> </li> <li> <p>Key ARN. For example, arn:aws:kms:<i>us-east-1</i>:<i>012345678910</i>:key/<i>abcd1234-a123-456a-a12b-a123b4cd56ef</i>.</p> </li> <li> <p>Alias ARN. For example, arn:aws:kms:<i>us-east-1</i>:<i>012345678910</i>:alias/<i>ExampleAlias</i>.</p> </li> </ul> <p>AWS authenticates the CMK asynchronously. Therefore, if you specify an ID, alias, or ARN that is not valid, the action can appear to complete, but eventually fails.</p>"
         },
+        "OutpostArn": {
+          "shape": "String",
+          "documentation": "<p>The Amazon Resource Name (ARN) of the Outpost.</p>"
+        },
         "Size": {
           "shape": "Integer",
-          "documentation": "<p>The size of the volume, in GiBs.</p> <p>Constraints: 1-16,384 for <code>gp2</code>, 4-16,384 for <code>io1</code>, 500-16,384 for <code>st1</code>, 500-16,384 for <code>sc1</code>, and 1-1,024 for <code>standard</code>. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size.</p> <p>Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.</p> <note> <p>At least one of Size or SnapshotId is required.</p> </note>"
+          "documentation": "<p>The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size.</p> <p>Constraints: 1-16,384 for <code>gp2</code>, 4-16,384 for <code>io1</code>, 500-16,384 for <code>st1</code>, 500-16,384 for <code>sc1</code>, and 1-1,024 for <code>standard</code>. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size.</p> <p>Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.</p>"
         },
         "SnapshotId": {
-          "shape": "String",
-          "documentation": "<p>The snapshot from which to create the volume.</p> <note> <p>At least one of Size or SnapshotId are required.</p> </note>"
+          "shape": "SnapshotId",
+          "documentation": "<p>The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.</p>"
         },
         "VolumeType": {
           "shape": "VolumeType",
-          "documentation": "<p>The volume type. This can be <code>gp2</code> for General Purpose SSD, <code>io1</code> for Provisioned IOPS SSD, <code>st1</code> for Throughput Optimized HDD, <code>sc1</code> for Cold HDD, or <code>standard</code> for Magnetic volumes.</p> <p>Defaults: If no volume type is specified, the default is <code>standard</code> in us-east-1, eu-west-1, eu-central-1, us-west-2, us-west-1, sa-east-1, ap-northeast-1, ap-northeast-2, ap-southeast-1, ap-southeast-2, ap-south-1, us-gov-west-1, and cn-north-1. In all other Regions, EBS defaults to <code>gp2</code>.</p>"
+          "documentation": "<p>The volume type. This can be <code>gp2</code> for General Purpose SSD, <code>io1</code> for Provisioned IOPS SSD, <code>st1</code> for Throughput Optimized HDD, <code>sc1</code> for Cold HDD, or <code>standard</code> for Magnetic volumes.</p> <p>Default: <code>gp2</code> </p>"
         },
         "DryRun": {
           "shape": "Boolean",
           "shape": "TagSpecificationList",
           "documentation": "<p>The tags to apply to the volume during creation.</p>",
           "locationName": "TagSpecification"
+        },
+        "MultiAttachEnabled": {
+          "shape": "Boolean",
+          "documentation": "<p>Specifies whether to enable Amazon EBS Multi-Attach. If you enable Multi-Attach, you can attach the volume to up to 16 <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances\">Nitro-based instances</a> in the same Availability Zone. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html\"> Amazon EBS Multi-Attach</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
         }
-      },
-      "documentation": "<p>Contains the parameters for CreateVolume.</p>"
+      }
     },
     "CreateVpcEndpointConnectionNotificationRequest": {
       "type": "structure",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "ServiceId": {
-          "shape": "String",
+          "shape": "VpcEndpointServiceId",
           "documentation": "<p>The ID of the endpoint service.</p>"
         },
         "VpcEndpointId": {
-          "shape": "String",
-          "documentation": "<p>The ID of the endpoint. </p>"
+          "shape": "VpcEndpointId",
+          "documentation": "<p>The ID of the endpoint.</p>"
         },
         "ConnectionNotificationArn": {
           "shape": "String",
         },
         "ClientToken": {
           "shape": "String",
-          "documentation": "<p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html\">How to Ensure Idempotency</a>.</p>"
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html\">How to Ensure Idempotency</a>.</p>"
         }
       }
     },
         },
         "ClientToken": {
           "shape": "String",
-          "documentation": "<p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request.</p>",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>",
           "locationName": "clientToken"
         }
       }
           "documentation": "<p>The type of endpoint.</p> <p>Default: Gateway</p>"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC in which the endpoint will be used.</p>"
         },
         "ServiceName": {
           "documentation": "<p>A policy to attach to the endpoint that controls access to the service. The policy must be in valid JSON format. If this parameter is not specified, we attach a default policy that allows full access to the service.</p>"
         },
         "RouteTableIds": {
-          "shape": "ValueStringList",
+          "shape": "VpcEndpointRouteTableIdList",
           "documentation": "<p>(Gateway endpoint) One or more route table IDs.</p>",
           "locationName": "RouteTableId"
         },
         "SubnetIds": {
-          "shape": "ValueStringList",
+          "shape": "VpcEndpointSubnetIdList",
           "documentation": "<p>(Interface endpoint) The ID of one or more subnets in which to create an endpoint network interface.</p>",
           "locationName": "SubnetId"
         },
         "SecurityGroupIds": {
-          "shape": "ValueStringList",
+          "shape": "VpcEndpointSecurityGroupIdList",
           "documentation": "<p>(Interface endpoint) The ID of one or more security groups to associate with the endpoint network interface.</p>",
           "locationName": "SecurityGroupId"
         },
         "ClientToken": {
           "shape": "String",
-          "documentation": "<p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html\">How to Ensure Idempotency</a>.</p>"
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html\">How to Ensure Idempotency</a>.</p>"
         },
         "PrivateDnsEnabled": {
           "shape": "Boolean",
-          "documentation": "<p>(Interface endpoint) Indicate whether to associate a private hosted zone with the specified VPC. The private hosted zone contains a record set for the default public DNS name for the service for the Region (for example, <code>kinesis.us-east-1.amazonaws.com</code>) which resolves to the private IP addresses of the endpoint network interfaces in the VPC. This enables you to make requests to the default public DNS name for the service instead of the public DNS names that are automatically generated by the VPC endpoint service.</p> <p>To use a private hosted zone, you must set the following VPC attributes to <code>true</code>: <code>enableDnsHostnames</code> and <code>enableDnsSupport</code>. Use <a>ModifyVpcAttribute</a> to set the VPC attributes.</p> <p>Default: <code>true</code> </p>"
+          "documentation": "<p>(Interface endpoint) Indicates whether to associate a private hosted zone with the specified VPC. The private hosted zone contains a record set for the default public DNS name for the service for the Region (for example, <code>kinesis.us-east-1.amazonaws.com</code>), which resolves to the private IP addresses of the endpoint network interfaces in the VPC. This enables you to make requests to the default public DNS name for the service instead of the public DNS names that are automatically generated by the VPC endpoint service.</p> <p>To use a private hosted zone, you must set the following VPC attributes to <code>true</code>: <code>enableDnsHostnames</code> and <code>enableDnsSupport</code>. Use <a>ModifyVpcAttribute</a> to set the VPC attributes.</p> <p>Default: <code>true</code> </p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to associate with the endpoint.</p>",
+          "locationName": "TagSpecification"
         }
       },
       "documentation": "<p>Contains the parameters for CreateVpcEndpoint.</p>"
         },
         "ClientToken": {
           "shape": "String",
-          "documentation": "<p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request.</p>",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>",
           "locationName": "clientToken"
         }
       },
         },
         "AcceptanceRequired": {
           "shape": "Boolean",
-          "documentation": "<p>Indicate whether requests from service consumers to create an endpoint to your service must be accepted. To accept a request, use <a>AcceptVpcEndpointConnections</a>.</p>"
+          "documentation": "<p>Indicates whether requests from service consumers to create an endpoint to your service must be accepted. To accept a request, use <a>AcceptVpcEndpointConnections</a>.</p>"
+        },
+        "PrivateDnsName": {
+          "shape": "String",
+          "documentation": "<p>The private DNS name to assign to the VPC endpoint service.</p>"
         },
         "NetworkLoadBalancerArns": {
           "shape": "ValueStringList",
         },
         "ClientToken": {
           "shape": "String",
-          "documentation": "<p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html\">How to Ensure Idempotency</a>.</p>"
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html\">How to Ensure Idempotency</a>.</p>"
+        },
+        "TagSpecifications": {
+          "shape": "TagSpecificationList",
+          "documentation": "<p>The tags to associate with the service.</p>",
+          "locationName": "TagSpecification"
         }
       }
     },
         },
         "ClientToken": {
           "shape": "String",
-          "documentation": "<p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request.</p>",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>",
           "locationName": "clientToken"
         }
       }
           "locationName": "peerVpcId"
         },
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the requester VPC. You must specify this parameter in the request.</p>",
           "locationName": "vpcId"
         },
           "documentation": "<p>Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block.</p>",
           "locationName": "amazonProvidedIpv6CidrBlock"
         },
+        "Ipv6Pool": {
+          "shape": "Ipv6PoolEc2Id",
+          "documentation": "<p>The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.</p>"
+        },
+        "Ipv6CidrBlock": {
+          "shape": "String",
+          "documentation": "<p>The IPv6 CIDR block from the IPv6 address pool. You must also specify <code>Ipv6Pool</code> in the request.</p> <p>To let Amazon choose the IPv6 CIDR block for you, omit this parameter.</p>"
+        },
         "DryRun": {
           "shape": "Boolean",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "shape": "Tenancy",
           "documentation": "<p>The tenancy options for instances launched into the VPC. For <code>default</code>, instances are launched with shared tenancy by default. You can launch instances with any tenancy into a shared tenancy VPC. For <code>dedicated</code>, instances are launched as dedicated tenancy instances by default. You can only launch instances with a tenancy of <code>dedicated</code> or <code>host</code> into a dedicated tenancy VPC. </p> <p> <b>Important:</b> The <code>host</code> value cannot be used with this parameter. Use the <code>default</code> or <code>dedicated</code> values only.</p> <p>Default: <code>default</code> </p>",
           "locationName": "instanceTenancy"
+        },
+        "Ipv6CidrBlockNetworkBorderGroup": {
+          "shape": "String",
+          "documentation": "<p>The name of the location from which we advertise the IPV6 CIDR block. Use this parameter to limit the address to this location.</p> <p> You must set <code>AmazonProvidedIpv6CidrBlock</code> to <code>true</code> to use this parameter.</p>"
         }
       }
     },
       ],
       "members": {
         "CustomerGatewayId": {
-          "shape": "String",
+          "shape": "CustomerGatewayId",
           "documentation": "<p>The ID of the customer gateway.</p>"
         },
         "Type": {
           "documentation": "<p>The type of VPN connection (<code>ipsec.1</code>).</p>"
         },
         "VpnGatewayId": {
-          "shape": "String",
+          "shape": "VpnGatewayId",
           "documentation": "<p>The ID of the virtual private gateway. If you specify a virtual private gateway, you cannot specify a transit gateway.</p>"
         },
         "TransitGatewayId": {
-          "shape": "String",
+          "shape": "TransitGatewayId",
           "documentation": "<p>The ID of the transit gateway. If you specify a transit gateway, you cannot specify a virtual private gateway.</p>"
         },
         "DryRun": {
           "documentation": "<p>The CIDR block associated with the local subnet of the customer network.</p>"
         },
         "VpnConnectionId": {
-          "shape": "String",
+          "shape": "VpnConnectionId",
           "documentation": "<p>The ID of the VPN connection.</p>"
         }
       },
         "USD"
       ]
     },
+    "CurrentGenerationFlag": {
+      "type": "boolean"
+    },
     "CustomerGateway": {
       "type": "structure",
       "members": {
           "documentation": "<p>The Internet-routable IP address of the customer gateway's outside interface.</p>",
           "locationName": "ipAddress"
         },
+        "CertificateArn": {
+          "shape": "String",
+          "documentation": "<p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>",
+          "locationName": "certificateArn"
+        },
         "State": {
           "shape": "String",
           "documentation": "<p>The current state of the customer gateway (<code>pending | available | deleting | deleted</code>).</p>",
           "documentation": "<p>The type of VPN connection the customer gateway supports (<code>ipsec.1</code>).</p>",
           "locationName": "type"
         },
+        "DeviceName": {
+          "shape": "String",
+          "documentation": "<p>The name of customer gateway device.</p>",
+          "locationName": "deviceName"
+        },
         "Tags": {
           "shape": "TagList",
           "documentation": "<p>Any tags assigned to the customer gateway.</p>",
       },
       "documentation": "<p>Describes a customer gateway.</p>"
     },
+    "CustomerGatewayId": {
+      "type": "string"
+    },
     "CustomerGatewayIdStringList": {
       "type": "list",
       "member": {
-        "shape": "String",
+        "shape": "CustomerGatewayId",
         "locationName": "CustomerGatewayId"
       }
     },
         "locationName": "item"
       }
     },
+    "DITMaxResults": {
+      "type": "integer",
+      "max": 100,
+      "min": 5
+    },
+    "DITOMaxResults": {
+      "type": "integer",
+      "max": 1000,
+      "min": 5
+    },
     "DatafeedSubscriptionState": {
       "type": "string",
       "enum": [
     "DateTime": {
       "type": "timestamp"
     },
+    "DedicatedHostFlag": {
+      "type": "boolean"
+    },
+    "DedicatedHostId": {
+      "type": "string"
+    },
     "DefaultRouteTableAssociationValue": {
       "type": "string",
       "enum": [
         "on-demand"
       ]
     },
+    "DefaultingDhcpOptionsId": {
+      "type": "string"
+    },
     "DeleteClientVpnEndpointRequest": {
       "type": "structure",
       "required": [
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN to be deleted.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN endpoint from which the route is to be deleted.</p>"
         },
         "TargetVpcSubnetId": {
-          "shape": "String",
+          "shape": "SubnetId",
           "documentation": "<p>The ID of the target subnet used by the route.</p>"
         },
         "DestinationCidrBlock": {
       ],
       "members": {
         "CustomerGatewayId": {
-          "shape": "String",
+          "shape": "CustomerGatewayId",
           "documentation": "<p>The ID of the customer gateway.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "DhcpOptionsId": {
-          "shape": "String",
+          "shape": "DhcpOptionsId",
           "documentation": "<p>The ID of the DHCP options set.</p>"
         },
         "DryRun": {
           "locationName": "error"
         },
         "FleetId": {
-          "shape": "FleetIdentifier",
+          "shape": "FleetId",
           "documentation": "<p>The ID of the EC2 Fleet.</p>",
           "locationName": "fleetId"
         }
           "locationName": "previousFleetState"
         },
         "FleetId": {
-          "shape": "FleetIdentifier",
+          "shape": "FleetId",
           "documentation": "<p>The ID of the EC2 Fleet.</p>",
           "locationName": "fleetId"
         }
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "FlowLogIds": {
-          "shape": "ValueStringList",
+          "shape": "FlowLogIdList",
           "documentation": "<p>One or more flow log IDs.</p> <p>Constraint: Maximum of 1000 flow log IDs.</p>",
           "locationName": "FlowLogId"
         }
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "FpgaImageId": {
-          "shape": "String",
+          "shape": "FpgaImageId",
           "documentation": "<p>The ID of the AFI.</p>"
         }
       }
           "locationName": "dryRun"
         },
         "InternetGatewayId": {
-          "shape": "String",
+          "shape": "InternetGatewayId",
           "documentation": "<p>The ID of the internet gateway.</p>",
           "locationName": "internetGatewayId"
         }
     },
     "DeleteKeyPairRequest": {
       "type": "structure",
-      "required": [
-        "KeyName"
-      ],
       "members": {
         "KeyName": {
-          "shape": "String",
+          "shape": "KeyPairName",
           "documentation": "<p>The name of the key pair.</p>"
         },
+        "KeyPairId": {
+          "shape": "KeyPairId",
+          "documentation": "<p>The ID of the key pair.</p>"
+        },
         "DryRun": {
           "shape": "Boolean",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "LaunchTemplateId": {
-          "shape": "String",
+          "shape": "LaunchTemplateId",
           "documentation": "<p>The ID of the launch template. You must specify either the launch template ID or launch template name in the request.</p>"
         },
         "LaunchTemplateName": {
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "LaunchTemplateId": {
-          "shape": "String",
+          "shape": "LaunchTemplateId",
           "documentation": "<p>The ID of the launch template. You must specify either the launch template ID or launch template name in the request.</p>"
         },
         "LaunchTemplateName": {
         }
       }
     },
+    "DeleteLocalGatewayRouteRequest": {
+      "type": "structure",
+      "required": [
+        "DestinationCidrBlock",
+        "LocalGatewayRouteTableId"
+      ],
+      "members": {
+        "DestinationCidrBlock": {
+          "shape": "String",
+          "documentation": "<p>The CIDR range for the route. This must match the CIDR for the route exactly.</p>"
+        },
+        "LocalGatewayRouteTableId": {
+          "shape": "LocalGatewayRoutetableId",
+          "documentation": "<p>The ID of the local gateway route table.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "DeleteLocalGatewayRouteResult": {
+      "type": "structure",
+      "members": {
+        "Route": {
+          "shape": "LocalGatewayRoute",
+          "documentation": "<p>Information about the route.</p>",
+          "locationName": "route"
+        }
+      }
+    },
+    "DeleteLocalGatewayRouteTableVpcAssociationRequest": {
+      "type": "structure",
+      "required": [
+        "LocalGatewayRouteTableVpcAssociationId"
+      ],
+      "members": {
+        "LocalGatewayRouteTableVpcAssociationId": {
+          "shape": "LocalGatewayRouteTableVpcAssociationId",
+          "documentation": "<p>The ID of the association.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "DeleteLocalGatewayRouteTableVpcAssociationResult": {
+      "type": "structure",
+      "members": {
+        "LocalGatewayRouteTableVpcAssociation": {
+          "shape": "LocalGatewayRouteTableVpcAssociation",
+          "documentation": "<p>Information about the association.</p>",
+          "locationName": "localGatewayRouteTableVpcAssociation"
+        }
+      }
+    },
     "DeleteNatGatewayRequest": {
       "type": "structure",
       "required": [
         "NatGatewayId"
       ],
       "members": {
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        },
         "NatGatewayId": {
-          "shape": "String",
+          "shape": "NatGatewayId",
           "documentation": "<p>The ID of the NAT gateway.</p>"
         }
       }
           "locationName": "egress"
         },
         "NetworkAclId": {
-          "shape": "String",
+          "shape": "NetworkAclId",
           "documentation": "<p>The ID of the network ACL.</p>",
           "locationName": "networkAclId"
         },
           "locationName": "dryRun"
         },
         "NetworkAclId": {
-          "shape": "String",
+          "shape": "NetworkAclId",
           "documentation": "<p>The ID of the network ACL.</p>",
           "locationName": "networkAclId"
         }
       ],
       "members": {
         "NetworkInterfacePermissionId": {
-          "shape": "String",
+          "shape": "NetworkInterfacePermissionId",
           "documentation": "<p>The ID of the network interface permission.</p>"
         },
         "Force": {
           "locationName": "dryRun"
         },
         "NetworkInterfaceId": {
-          "shape": "String",
+          "shape": "NetworkInterfaceId",
           "documentation": "<p>The ID of the network interface.</p>",
           "locationName": "networkInterfaceId"
         }
           "locationName": "dryRun"
         },
         "GroupName": {
-          "shape": "String",
+          "shape": "PlacementGroupName",
           "documentation": "<p>The name of the placement group.</p>",
           "locationName": "groupName"
         }
       }
     },
+    "DeleteQueuedReservedInstancesError": {
+      "type": "structure",
+      "members": {
+        "Code": {
+          "shape": "DeleteQueuedReservedInstancesErrorCode",
+          "documentation": "<p>The error code.</p>",
+          "locationName": "code"
+        },
+        "Message": {
+          "shape": "String",
+          "documentation": "<p>The error message.</p>",
+          "locationName": "message"
+        }
+      },
+      "documentation": "<p>Describes the error for a Reserved Instance whose queued purchase could not be deleted.</p>"
+    },
+    "DeleteQueuedReservedInstancesErrorCode": {
+      "type": "string",
+      "enum": [
+        "reserved-instances-id-invalid",
+        "reserved-instances-not-in-queued-state",
+        "unexpected-error"
+      ]
+    },
+    "DeleteQueuedReservedInstancesIdList": {
+      "type": "list",
+      "member": {
+        "shape": "ReservationId",
+        "locationName": "item"
+      },
+      "max": 100,
+      "min": 1
+    },
+    "DeleteQueuedReservedInstancesRequest": {
+      "type": "structure",
+      "required": [
+        "ReservedInstancesIds"
+      ],
+      "members": {
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        },
+        "ReservedInstancesIds": {
+          "shape": "DeleteQueuedReservedInstancesIdList",
+          "documentation": "<p>The IDs of the Reserved Instances.</p>",
+          "locationName": "ReservedInstancesId"
+        }
+      }
+    },
+    "DeleteQueuedReservedInstancesResult": {
+      "type": "structure",
+      "members": {
+        "SuccessfulQueuedPurchaseDeletions": {
+          "shape": "SuccessfulQueuedPurchaseDeletionSet",
+          "documentation": "<p>Information about the queued purchases that were successfully deleted.</p>",
+          "locationName": "successfulQueuedPurchaseDeletionSet"
+        },
+        "FailedQueuedPurchaseDeletions": {
+          "shape": "FailedQueuedPurchaseDeletionSet",
+          "documentation": "<p>Information about the queued purchases that could not be deleted.</p>",
+          "locationName": "failedQueuedPurchaseDeletionSet"
+        }
+      }
+    },
     "DeleteRouteRequest": {
       "type": "structure",
       "required": [
           "locationName": "dryRun"
         },
         "RouteTableId": {
-          "shape": "String",
+          "shape": "RouteTableId",
           "documentation": "<p>The ID of the route table.</p>",
           "locationName": "routeTableId"
         }
           "locationName": "dryRun"
         },
         "RouteTableId": {
-          "shape": "String",
+          "shape": "RouteTableId",
           "documentation": "<p>The ID of the route table.</p>",
           "locationName": "routeTableId"
         }
       "type": "structure",
       "members": {
         "GroupId": {
-          "shape": "String",
+          "shape": "SecurityGroupId",
           "documentation": "<p>The ID of the security group. Required for a nondefault VPC.</p>"
         },
         "GroupName": {
-          "shape": "String",
+          "shape": "SecurityGroupName",
           "documentation": "<p>[EC2-Classic, default VPC] The name of the security group. You can specify either the security group name or the security group ID.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "SnapshotId": {
-          "shape": "String",
+          "shape": "SnapshotId",
           "documentation": "<p>The ID of the EBS snapshot.</p>"
         },
         "DryRun": {
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "locationName": "dryRun"
         }
-      },
-      "documentation": "<p>Contains the parameters for DeleteSnapshot.</p>"
+      }
     },
     "DeleteSpotDatafeedSubscriptionRequest": {
       "type": "structure",
       ],
       "members": {
         "SubnetId": {
-          "shape": "String",
+          "shape": "SubnetId",
           "documentation": "<p>The ID of the subnet.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "TrafficMirrorFilterId": {
-          "shape": "String",
+          "shape": "TrafficMirrorFilterId",
           "documentation": "<p>The ID of the Traffic Mirror filter.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "TrafficMirrorFilterRuleId": {
-          "shape": "String",
+          "shape": "TrafficMirrorFilterRuleId",
           "documentation": "<p>The ID of the Traffic Mirror rule.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "TrafficMirrorSessionId": {
-          "shape": "String",
+          "shape": "TrafficMirrorSessionId",
           "documentation": "<p>The ID of the Traffic Mirror session.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "TrafficMirrorTargetId": {
-          "shape": "String",
+          "shape": "TrafficMirrorTargetId",
           "documentation": "<p>The ID of the Traffic Mirror target.</p>"
         },
         "DryRun": {
         }
       }
     },
+    "DeleteTransitGatewayMulticastDomainRequest": {
+      "type": "structure",
+      "required": [
+        "TransitGatewayMulticastDomainId"
+      ],
+      "members": {
+        "TransitGatewayMulticastDomainId": {
+          "shape": "TransitGatewayMulticastDomainId",
+          "documentation": "<p>The ID of the transit gateway multicast domain.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "DeleteTransitGatewayMulticastDomainResult": {
+      "type": "structure",
+      "members": {
+        "TransitGatewayMulticastDomain": {
+          "shape": "TransitGatewayMulticastDomain",
+          "documentation": "<p>Information about the deleted transit gateway multicast domain.</p>",
+          "locationName": "transitGatewayMulticastDomain"
+        }
+      }
+    },
+    "DeleteTransitGatewayPeeringAttachmentRequest": {
+      "type": "structure",
+      "required": [
+        "TransitGatewayAttachmentId"
+      ],
+      "members": {
+        "TransitGatewayAttachmentId": {
+          "shape": "TransitGatewayAttachmentId",
+          "documentation": "<p>The ID of the transit gateway peering attachment.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "DeleteTransitGatewayPeeringAttachmentResult": {
+      "type": "structure",
+      "members": {
+        "TransitGatewayPeeringAttachment": {
+          "shape": "TransitGatewayPeeringAttachment",
+          "documentation": "<p>The transit gateway peering attachment.</p>",
+          "locationName": "transitGatewayPeeringAttachment"
+        }
+      }
+    },
     "DeleteTransitGatewayRequest": {
       "type": "structure",
       "required": [
       ],
       "members": {
         "TransitGatewayId": {
-          "shape": "String",
+          "shape": "TransitGatewayId",
           "documentation": "<p>The ID of the transit gateway.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "TransitGatewayRouteTableId": {
-          "shape": "String",
+          "shape": "TransitGatewayRouteTableId",
           "documentation": "<p>The ID of the transit gateway route table.</p>"
         },
         "DestinationCidrBlock": {
       ],
       "members": {
         "TransitGatewayRouteTableId": {
-          "shape": "String",
+          "shape": "TransitGatewayRouteTableId",
           "documentation": "<p>The ID of the transit gateway route table.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "TransitGatewayAttachmentId": {
-          "shape": "String",
+          "shape": "TransitGatewayAttachmentId",
           "documentation": "<p>The ID of the attachment.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "VolumeId": {
-          "shape": "String",
+          "shape": "VolumeId",
           "documentation": "<p>The ID of the volume.</p>"
         },
         "DryRun": {
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
           "locationName": "dryRun"
         }
-      },
-      "documentation": "<p>Contains the parameters for DeleteVolume.</p>"
+      }
     },
     "DeleteVpcEndpointConnectionNotificationsRequest": {
       "type": "structure",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "ServiceIds": {
-          "shape": "ValueStringList",
+          "shape": "VpcEndpointServiceIdList",
           "documentation": "<p>The IDs of one or more services.</p>",
           "locationName": "ServiceId"
         }
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "VpcEndpointIds": {
-          "shape": "ValueStringList",
+          "shape": "VpcEndpointIdList",
           "documentation": "<p>One or more VPC endpoint IDs.</p>",
           "locationName": "VpcEndpointId"
         }
           "locationName": "dryRun"
         },
         "VpcPeeringConnectionId": {
-          "shape": "String",
+          "shape": "VpcPeeringConnectionId",
           "documentation": "<p>The ID of the VPC peering connection.</p>",
           "locationName": "vpcPeeringConnectionId"
         }
       ],
       "members": {
         "VpcId": {
-          "shape": "String",
+          "shape": "VpcId",
           "documentation": "<p>The ID of the VPC.</p>"
         },
         "DryRun": {
       ],
       "members": {
         "VpnConnectionId": {
-          "shape": "String",
+          "shape": "VpnConnectionId",
           "documentation": "<p>The ID of the VPN connection.</p>"
         },
         "DryRun": {
           "documentation": "<p>The CIDR block associated with the local subnet of the customer network.</p>"
         },
         "VpnConnectionId": {
-          "shape": "String",
+          "shape": "VpnConnectionId",
           "documentation": "<p>The ID of the VPN connection.</p>"
         }
       },
       ],
       "members": {
         "VpnGatewayId": {
-          "shape": "String",
+          "shape": "VpnGatewayId",
           "documentation": "<p>The ID of the virtual private gateway.</p>"
         },
         "DryRun": {
       "members": {
         "Cidr": {
           "shape": "String",
-          "documentation": "<p>The public IPv4 address range, in CIDR notation. The prefix must be the same prefix that you specified when you provisioned the address range.</p>"
+          "documentation": "<p>The address range, in CIDR notation. The prefix must be the same prefix that you specified when you provisioned the address range.</p>"
         },
         "DryRun": {
           "shape": "Boolean",
       ],
       "members": {
         "ImageId": {
-          "shape": "String",
+          "shape": "ImageId",
           "documentation": "<p>The ID of the AMI.</p>"
         },
         "DryRun": {
       },
       "documentation": "<p>Contains the parameters for DeregisterImage.</p>"
     },
+    "DeregisterInstanceEventNotificationAttributesRequest": {
+      "type": "structure",
+      "members": {
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        },
+        "InstanceTagAttribute": {
+          "shape": "DeregisterInstanceTagAttributeRequest",
+          "documentation": "<p>Information about the tag keys to deregister.</p>"
+        }
+      }
+    },
+    "DeregisterInstanceEventNotificationAttributesResult": {
+      "type": "structure",
+      "members": {
+        "InstanceTagAttribute": {
+          "shape": "InstanceTagNotificationAttribute",
+          "documentation": "<p>The resulting set of tag keys.</p>",
+          "locationName": "instanceTagAttribute"
+        }
+      }
+    },
+    "DeregisterInstanceTagAttributeRequest": {
+      "type": "structure",
+      "members": {
+        "IncludeAllTagsOfInstance": {
+          "shape": "Boolean",
+          "documentation": "<p>Indicates whether to deregister all tag keys in the current Region. Specify <code>false</code> to deregister all tag keys.</p>"
+        },
+        "InstanceTagKeys": {
+          "shape": "InstanceTagKeySet",
+          "documentation": "<p>Information about the tag keys to deregister.</p>",
+          "locationName": "InstanceTagKey"
+        }
+      },
+      "documentation": "<p>Information about the tag keys to deregister for the current Region. You can either specify individual tag keys or deregister all tag keys in the current Region. You must specify either <code>IncludeAllTagsOfInstance</code> or <code>InstanceTagKeys</code> in the request</p>"
+    },
+    "DeregisterTransitGatewayMulticastGroupMembersRequest": {
+      "type": "structure",
+      "members": {
+        "TransitGatewayMulticastDomainId": {
+          "shape": "TransitGatewayMulticastDomainId",
+          "documentation": "<p>The ID of the transit gateway multicast domain.</p>"
+        },
+        "GroupIpAddress": {
+          "shape": "String",
+          "documentation": "<p>The IP address assigned to the transit gateway multicast group.</p>"
+        },
+        "NetworkInterfaceIds": {
+          "shape": "TransitGatewayNetworkInterfaceIdList",
+          "documentation": "<p>The IDs of the group members' network interfaces.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "DeregisterTransitGatewayMulticastGroupMembersResult": {
+      "type": "structure",
+      "members": {
+        "DeregisteredMulticastGroupMembers": {
+          "shape": "TransitGatewayMulticastDeregisteredGroupMembers",
+          "documentation": "<p>Information about the deregistered members.</p>",
+          "locationName": "deregisteredMulticastGroupMembers"
+        }
+      }
+    },
+    "DeregisterTransitGatewayMulticastGroupSourcesRequest": {
+      "type": "structure",
+      "members": {
+        "TransitGatewayMulticastDomainId": {
+          "shape": "TransitGatewayMulticastDomainId",
+          "documentation": "<p>The ID of the transit gateway multicast domain.</p>"
+        },
+        "GroupIpAddress": {
+          "shape": "String",
+          "documentation": "<p>The IP address assigned to the transit gateway multicast group.</p>"
+        },
+        "NetworkInterfaceIds": {
+          "shape": "TransitGatewayNetworkInterfaceIdList",
+          "documentation": "<p>The IDs of the group sources' network interfaces.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+      }
+    },
+    "DeregisterTransitGatewayMulticastGroupSourcesResult": {
+      "type": "structure",
+      "members": {
+        "DeregisteredMulticastGroupSources": {
+          "shape": "TransitGatewayMulticastDeregisteredGroupSources",
+          "documentation": "<p>Information about the deregistered group sources.</p>",
+          "locationName": "deregisteredMulticastGroupSources"
+        }
+      }
+    },
     "DescribeAccountAttributesRequest": {
       "type": "structure",
       "members": {
       "members": {
         "Filters": {
           "shape": "FilterList",
-          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p> <ul> <li> <p> <code>allocation-id</code> - [EC2-VPC] The allocation ID for the address.</p> </li> <li> <p> <code>association-id</code> - [EC2-VPC] The association ID for the address.</p> </li> <li> <p> <code>domain</code> - Indicates whether the address is for use in EC2-Classic (<code>standard</code>) or in a VPC (<code>vpc</code>).</p> </li> <li> <p> <code>instance-id</code> - The ID of the instance the address is associated with, if any.</p> </li> <li> <p> <code>network-interface-id</code> - [EC2-VPC] The ID of the network interface that the address is associated with, if any.</p> </li> <li> <p> <code>network-interface-owner-id</code> - The AWS account ID of the owner.</p> </li> <li> <p> <code>private-ip-address</code> - [EC2-VPC] The private IP address associated with the Elastic IP address.</p> </li> <li> <p> <code>public-ip</code> - The Elastic IP address.</p> </li> <li> <p> <code>tag</code>:&lt;key&gt; - 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 <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p> </li> <li> <p> <code>tag-key</code> - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.</p> </li> </ul>",
+          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p> <ul> <li> <p> <code>allocation-id</code> - [EC2-VPC] The allocation ID for the address.</p> </li> <li> <p> <code>association-id</code> - [EC2-VPC] The association ID for the address.</p> </li> <li> <p> <code>domain</code> - Indicates whether the address is for use in EC2-Classic (<code>standard</code>) or in a VPC (<code>vpc</code>).</p> </li> <li> <p> <code>instance-id</code> - The ID of the instance the address is associated with, if any.</p> </li> <li> <p> <code>network-border-group</code> - The location from where the IP address is advertised.</p> </li> <li> <p> <code>network-interface-id</code> - [EC2-VPC] The ID of the network interface that the address is associated with, if any.</p> </li> <li> <p> <code>network-interface-owner-id</code> - The AWS account ID of the owner.</p> </li> <li> <p> <code>private-ip-address</code> - [EC2-VPC] The private IP address associated with the Elastic IP address.</p> </li> <li> <p> <code>public-ip</code> - The Elastic IP address.</p> </li> <li> <p> <code>tag</code>:&lt;key&gt; - 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 <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p> </li> <li> <p> <code>tag-key</code> - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.</p> </li> </ul>",
           "locationName": "Filter"
         },
         "PublicIps": {
       "members": {
         "Filters": {
           "shape": "FilterList",
-          "documentation": "<p>The filters.</p> <ul> <li> <p> <code>message</code> - Information about the Availability Zone.</p> </li> <li> <p> <code>region-name</code> - The name of the Region for the Availability Zone (for example, <code>us-east-1</code>).</p> </li> <li> <p> <code>state</code> - The state of the Availability Zone (<code>available</code> | <code>information</code> | <code>impaired</code> | <code>unavailable</code>).</p> </li> <li> <p> <code>zone-id</code> - The ID of the Availability Zone (for example, <code>use1-az1</code>).</p> </li> <li> <p> <code>zone-name</code> - The name of the Availability Zone (for example, <code>us-east-1a</code>).</p> </li> </ul>",
+          "documentation": "<p>The filters.</p> <ul> <li> <p> <code>group-name</code> - For Availability Zones, use the Region name. For Local Zones, use the name of the group associated with the Local Zone (for example, <code>us-west-2-lax-1</code>).</p> </li> <li> <p> <code>message</code> - The Availability Zone or Local Zone message.</p> </li> <li> <p> <code>opt-in-status</code> - The opt in status (<code>opted-in</code>, and <code>not-opted-in</code> | <code>opt-in-not-required</code>).</p> </li> <li> <p> <code>region-name</code> - The name of the Region for the Availability Zone or Local Zone (for example, <code>us-east-1</code>).</p> </li> <li> <p> <code>state</code> - The state of the Availability Zone or Local Zone (<code>available</code> | <code>information</code> | <code>impaired</code> | <code>unavailable</code>).</p> </li> <li> <p> <code>zone-id</code> - The ID of the Availability Zone (for example, <code>use1-az1</code>) or the Local Zone (for example, use <code>usw2-lax1-az1</code>).</p> </li> <li> <p> <code>zone-name</code> - The name of the Availability Zone (for example, <code>us-east-1a</code>) or the Local Zone (for example, use <code>us-west-2-lax-1a</code>).</p> </li> </ul>",
           "locationName": "Filter"
         },
         "ZoneNames": {
           "shape": "ZoneNameStringList",
-          "documentation": "<p>The names of the Availability Zones.</p>",
+          "documentation": "<p>The names of the Availability Zones and Local Zones.</p>",
           "locationName": "ZoneName"
         },
         "ZoneIds": {
           "shape": "ZoneIdStringList",
-          "documentation": "<p>The IDs of the Availability Zones.</p>",
+          "documentation": "<p>The IDs of the Availability Zones and Local Zones.</p>",
           "locationName": "ZoneId"
         },
+        "AllAvailabilityZones": {
+          "shape": "Boolean",
+          "documentation": "<p>Include all Availability Zones and Local Zones regardless of your opt in status.</p> <p>If you do not use this parameter, the results include only the zones for the Regions where you have chosen the option to opt in.</p>"
+        },
         "DryRun": {
           "shape": "Boolean",
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>",
       "members": {
         "AvailabilityZones": {
           "shape": "AvailabilityZoneList",
-          "documentation": "<p>Information about the Availability Zones.</p>",
+          "documentation": "<p>Information about the Availability Zones and Local Zones.</p>",
           "locationName": "availabilityZoneInfo"
         }
       }
         }
       }
     },
+    "DescribeByoipCidrsMaxResults": {
+      "type": "integer",
+      "max": 100,
+      "min": 1
+    },
     "DescribeByoipCidrsRequest": {
       "type": "structure",
       "required": [
           "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
         },
         "MaxResults": {
-          "shape": "MaxResults",
+          "shape": "DescribeByoipCidrsMaxResults",
           "documentation": "<p>The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned <code>nextToken</code> value.</p>"
         },
         "NextToken": {
         },
         "Filters": {
           "shape": "FilterList",
-          "documentation": "<p>One or more filters.</p>",
+          "documentation": "<p>One or more filters.</p> <ul> <li> <p> <code>instance-type</code> - The type of instance for which the Capacity Reservation reserves capacity.</p> </li> <li> <p> <code>owner-id</code> - The ID of the AWS account that owns the Capacity Reservation.</p> </li> <li> <p> <code>availability-zone-id</code> - The Availability Zone ID of the Capacity Reservation.</p> </li> <li> <p> <code>instance-platform</code> - The type of operating system for which the Capacity Reservation reserves capacity.</p> </li> <li> <p> <code>availability-zone</code> - The Availability Zone ID of the Capacity Reservation.</p> </li> <li> <p> <code>tenancy</code> - Indicates the tenancy of the Capacity Reservation. A Capacity Reservation can have one of the following tenancy settings:</p> <ul> <li> <p> <code>default</code> - The Capacity Reservation is created on hardware that is shared with other AWS accounts.</p> </li> <li> <p> <code>dedicated</code> - The Capacity Reservation is created on single-tenant hardware that is dedicated to a single AWS account.</p> </li> </ul> </li> <li> <p> <code>state</code> - The current state of the Capacity Reservation. A Capacity Reservation can be in one of the following states:</p> <ul> <li> <p> <code>active</code>- The Capacity Reservation is active and the capacity is available for your use.</p> </li> <li> <p> <code>expired</code> - The Capacity Reservation expired automatically at the date and time specified in your request. The reserved capacity is no longer available for your use.</p> </li> <li> <p> <code>cancelled</code> - The Capacity Reservation was manually cancelled. The reserved capacity is no longer available for your use.</p> </li> <li> <p> <code>pending</code> - The Capacity Reservation request was successful but the capacity provisioning is still pending.</p> </li> <li> <p> <code>failed</code> - The Capacity Reservation request has failed. A request might fail due to invalid request parameters, capacity constraints, or instance limit constraints. Failed requests are retained for 60 minutes.</p> </li> </ul> </li> <li> <p> <code>end-date</code> - 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.</p> </li> <li> <p> <code>end-date-type</code> - Indicates the way in which the Capacity Reservation ends. A Capacity Reservation can have one of the following end types:</p> <ul> <li> <p> <code>unlimited</code> - The Capacity Reservation remains active until you explicitly cancel it.</p> </li> <li> <p> <code>limited</code> - The Capacity Reservation expires automatically at a specified date and time.</p> </li> </ul> </li> <li> <p> <code>instance-match-criteria</code> - Indicates the type of instance launches that the Capacity Reservation accepts. The options include:</p> <ul> <li> <p> <code>open</code> - The Capacity Reservation accepts all instances that have matching attributes (instance type, platform, and Availability Zone). Instances that have matching attributes launch into the Capacity Reservation automatically without specifying any additional parameters.</p> </li> <li> <p> <code>targeted</code> - 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.</p> </li> </ul> </li> </ul>",
           "locationName": "Filter"
         },
         "DryRun": {
         }
       }
     },
+    "DescribeClassicLinkInstancesMaxResults": {
+      "type": "integer",
+      "max": 1000,
+      "min": 5
+    },
     "DescribeClassicLinkInstancesRequest": {
       "type": "structure",
       "members": {
           "locationName": "InstanceId"
         },
         "MaxResults": {
-          "shape": "Integer",
+          "shape": "DescribeClassicLinkInstancesMaxResults",
           "documentation": "<p>The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned <code>nextToken</code> value.</p> <p>Constraint: If the value is greater than 1000, we return only 1000 items.</p>",
           "locationName": "maxResults"
         },
         }
       }
     },
+    "DescribeClientVpnAuthorizationRulesMaxResults": {
+      "type": "integer",
+      "max": 1000,
+      "min": 5
+    },
     "DescribeClientVpnAuthorizationRulesRequest": {
       "type": "structure",
       "required": [
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN endpoint.</p>"
         },
         "DryRun": {
         },
         "Filters": {
           "shape": "FilterList",
-          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p>",
+          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p> <ul> <li> <p> <code>description</code> - The description of the authorization rule.</p> </li> <li> <p> <code>destination-cidr</code> - The CIDR of the network to which the authorization rule applies.</p> </li> <li> <p> <code>group-id</code> - The ID of the Active Directory group to which the authorization rule grants access.</p> </li> </ul>",
           "locationName": "Filter"
         },
         "MaxResults": {
-          "shape": "MaxResults",
+          "shape": "DescribeClientVpnAuthorizationRulesMaxResults",
           "documentation": "<p>The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the nextToken value.</p>"
         }
       }
         }
       }
     },
+    "DescribeClientVpnConnectionsMaxResults": {
+      "type": "integer",
+      "max": 1000,
+      "min": 5
+    },
     "DescribeClientVpnConnectionsRequest": {
       "type": "structure",
       "required": [
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN endpoint.</p>"
         },
         "Filters": {
           "shape": "FilterList",
-          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p>",
+          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p> <ul> <li> <p> <code>connection-id</code> - The ID of the connection.</p> </li> <li> <p> <code>username</code> - For Active Directory client authentication, the user name of the client who established the client connection.</p> </li> </ul>",
           "locationName": "Filter"
         },
         "NextToken": {
           "documentation": "<p>The token to retrieve the next page of results.</p>"
         },
         "MaxResults": {
-          "shape": "MaxResults",
+          "shape": "DescribeClientVpnConnectionsMaxResults",
           "documentation": "<p>The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the nextToken value.</p>"
         },
         "DryRun": {
         }
       }
     },
+    "DescribeClientVpnEndpointMaxResults": {
+      "type": "integer",
+      "max": 1000,
+      "min": 5
+    },
     "DescribeClientVpnEndpointsRequest": {
       "type": "structure",
       "members": {
         "ClientVpnEndpointIds": {
-          "shape": "ValueStringList",
+          "shape": "ClientVpnEndpointIdList",
           "documentation": "<p>The ID of the Client VPN endpoint.</p>",
           "locationName": "ClientVpnEndpointId"
         },
         "MaxResults": {
-          "shape": "MaxResults",
+          "shape": "DescribeClientVpnEndpointMaxResults",
           "documentation": "<p>The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the nextToken value.</p>"
         },
         "NextToken": {
         },
         "Filters": {
           "shape": "FilterList",
-          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p>",
+          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p> <ul> <li> <p> <code>endpoint-id</code> - The ID of the Client VPN endpoint.</p> </li> <li> <p> <code>transport-protocol</code> - The transport protocol (<code>tcp</code> | <code>udp</code>).</p> </li> </ul>",
           "locationName": "Filter"
         },
         "DryRun": {
         }
       }
     },
+    "DescribeClientVpnRoutesMaxResults": {
+      "type": "integer",
+      "max": 1000,
+      "min": 5
+    },
     "DescribeClientVpnRoutesRequest": {
       "type": "structure",
       "required": [
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN endpoint.</p>"
         },
         "Filters": {
           "shape": "FilterList",
-          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p>",
+          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p> <ul> <li> <p> <code>destination-cidr</code> - The CIDR of the route destination.</p> </li> <li> <p> <code>origin</code> - How the route was associated with the Client VPN endpoint (<code>associate</code> | <code>add-route</code>).</p> </li> <li> <p> <code>target-subnet</code> - The ID of the subnet through which traffic is routed.</p> </li> </ul>",
           "locationName": "Filter"
         },
         "MaxResults": {
-          "shape": "MaxResults",
+          "shape": "DescribeClientVpnRoutesMaxResults",
           "documentation": "<p>The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the nextToken value.</p>"
         },
         "NextToken": {
         }
       }
     },
+    "DescribeClientVpnTargetNetworksMaxResults": {
+      "type": "integer",
+      "max": 1000,
+      "min": 5
+    },
     "DescribeClientVpnTargetNetworksRequest": {
       "type": "structure",
       "required": [
       ],
       "members": {
         "ClientVpnEndpointId": {
-          "shape": "String",
+          "shape": "ClientVpnEndpointId",
           "documentation": "<p>The ID of the Client VPN endpoint.</p>"
         },
         "AssociationIds": {
           "documentation": "<p>The IDs of the target network associations.</p>"
         },
         "MaxResults": {
-          "shape": "MaxResults",
+          "shape": "DescribeClientVpnTargetNetworksMaxResults",
           "documentation": "<p>The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the nextToken value.</p>"
         },
         "NextToken": {
         },
         "Filters": {
           "shape": "FilterList",
-          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p>",
+          "documentation": "<p>One or more filters. Filter names and values are case-sensitive.</p> <ul> <li> <p> <code>association-id</code> - The ID of the association.</p> </li> <li> <p> <code>target-network-id</code> - The ID of the subnet specified as the target network.</p> </li> <li> <p> <code>vpc-id</code> - The ID of the VPC in which the target network is located.</p> </li> </ul>",
           "locationName": "Filter"
         },
         "DryRun": {
         }
       }
     },
+    "DescribeCoipPoolsRequest": {
+      "type": "structure",
+      "members": {
+        "PoolIds": {
+          "shape": "CoipPoolIdSet",
+          "documentation": "<p>The IDs of the address pools.</p>",
+          "locationName": "PoolId"
+        },
+        "Filters": {
+          "shape": "FilterList",
+          "documentation": "<p>The filters. The following are the possible values:</p> <ul> <li> <p> <code>coip-pool.pool-id</code> </p> </li> </ul> <ul> <li> <p> <code>coip-pool.local-gateway-route-table-id</code> </p> </li> </ul>",
+          "locationName": "Filter"
+        },
+        "MaxResults": {
+          "shape": "CoipPoolMaxResults",
+          "documentation": "<p>The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned <code>nextToken</code> value.</p>"
+        },
+        "NextToken": {
+          "shape": "String",
+          "documentation": "<p>The token for the next page of results.</p>"
+        },
+        "DryRun": {
+          "shape": "Boolean",
+          "documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+        }
+     &n