Skip to main content

fakecloud_ec2/service/
mod.rs

1//! EC2 service entrypoint: `ec2Query` dispatch over the per-account state.
2
3mod capacity;
4mod cvpn;
5mod dhcp;
6mod eip;
7mod endpoint;
8mod eni;
9mod firewall_model;
10mod fleet;
11mod ice;
12mod image;
13mod instance;
14mod ipam;
15mod ipam_discovery;
16mod ipam_policy;
17mod lgw;
18mod meta;
19mod nacl;
20mod ni;
21mod reserved;
22mod rest;
23mod routing;
24mod sg;
25mod snapshot;
26mod subnet;
27mod tags;
28mod tgw;
29mod tgw_mcast;
30mod tgw_peering;
31mod va;
32mod volume;
33mod vpc;
34mod vpn;
35
36use async_trait::async_trait;
37use http::StatusCode;
38use parking_lot::RwLock;
39use std::sync::Arc;
40
41use fakecloud_core::multi_account::MultiAccountState;
42use fakecloud_core::service::{AwsRequest, AwsResponse, AwsService, AwsServiceError};
43
44use crate::runtime::Ec2Runtime;
45use crate::state::SharedEc2State;
46
47/// Every EC2 action this build implements. The conformance audit cross-checks
48/// this list against the handwritten `#[test_action("ec2", …)]` tests, so an
49/// action added here without a test fails the build. Grows one resource-family
50/// batch at a time toward full 767-op parity.
51pub const SUPPORTED_ACTIONS: &[&str] = &[
52    // Tagging subsystem (shared by every resource family)
53    "CreateTags",
54    "DeleteTags",
55    "DescribeTags",
56    // Region / AZ / account describe primitives
57    "DescribeRegions",
58    "DescribeAvailabilityZones",
59    "DescribeAccountAttributes",
60    // VPCs
61    "CreateVpc",
62    "CreateDefaultVpc",
63    "DeleteVpc",
64    "DescribeVpcs",
65    "ModifyVpcAttribute",
66    "DescribeVpcAttribute",
67    "ModifyVpcTenancy",
68    "AssociateVpcCidrBlock",
69    "DisassociateVpcCidrBlock",
70    // DHCP options
71    "CreateDhcpOptions",
72    "DeleteDhcpOptions",
73    "DescribeDhcpOptions",
74    "AssociateDhcpOptions",
75    // Subnets
76    "CreateSubnet",
77    "CreateDefaultSubnet",
78    "CreateSecondarySubnet",
79    "DeleteSubnet",
80    "DeleteSecondarySubnet",
81    "DescribeSubnets",
82    "DescribeSecondarySubnets",
83    "ModifySubnetAttribute",
84    "AssociateSubnetCidrBlock",
85    "DisassociateSubnetCidrBlock",
86    "CreateSubnetCidrReservation",
87    "DeleteSubnetCidrReservation",
88    "GetSubnetCidrReservations",
89    // Security groups
90    "CreateSecurityGroup",
91    "DeleteSecurityGroup",
92    "DescribeSecurityGroups",
93    "AuthorizeSecurityGroupIngress",
94    "AuthorizeSecurityGroupEgress",
95    "RevokeSecurityGroupIngress",
96    "RevokeSecurityGroupEgress",
97    "DescribeSecurityGroupRules",
98    "ModifySecurityGroupRules",
99    "UpdateSecurityGroupRuleDescriptionsIngress",
100    "UpdateSecurityGroupRuleDescriptionsEgress",
101    "AssociateSecurityGroupVpc",
102    "DisassociateSecurityGroupVpc",
103    "DescribeSecurityGroupVpcAssociations",
104    "GetSecurityGroupsForVpc",
105    "DescribeStaleSecurityGroups",
106    "DescribeSecurityGroupReferences",
107    // Route tables
108    "CreateRouteTable",
109    "DeleteRouteTable",
110    "DescribeRouteTables",
111    "CreateRoute",
112    "DeleteRoute",
113    "ReplaceRoute",
114    "AssociateRouteTable",
115    "DisassociateRouteTable",
116    "ReplaceRouteTableAssociation",
117    // Internet gateways
118    "CreateInternetGateway",
119    "DeleteInternetGateway",
120    "DescribeInternetGateways",
121    "AttachInternetGateway",
122    "DetachInternetGateway",
123    // Egress-only internet gateways
124    "CreateEgressOnlyInternetGateway",
125    "DeleteEgressOnlyInternetGateway",
126    "DescribeEgressOnlyInternetGateways",
127    // NAT gateways
128    "CreateNatGateway",
129    "DeleteNatGateway",
130    "DescribeNatGateways",
131    "AssignPrivateNatGatewayAddress",
132    "AssociateNatGatewayAddress",
133    "DisassociateNatGatewayAddress",
134    "UnassignPrivateNatGatewayAddress",
135    // Elastic IPs
136    "AllocateAddress",
137    "ReleaseAddress",
138    "DescribeAddresses",
139    "AssociateAddress",
140    "DisassociateAddress",
141    "DescribeAddressesAttribute",
142    "ModifyAddressAttribute",
143    "ResetAddressAttribute",
144    "MoveAddressToVpc",
145    "RestoreAddressToClassic",
146    "AcceptAddressTransfer",
147    "EnableAddressTransfer",
148    "DisableAddressTransfer",
149    "DescribeAddressTransfers",
150    "DescribeMovingAddresses",
151    // Key pairs
152    "CreateKeyPair",
153    "ImportKeyPair",
154    "DeleteKeyPair",
155    "DescribeKeyPairs",
156    // Placement groups
157    "CreatePlacementGroup",
158    "DeletePlacementGroup",
159    "DescribePlacementGroups",
160    "GetGroupsForCapacityReservation",
161    // Network interfaces
162    "CreateNetworkInterface",
163    "DeleteNetworkInterface",
164    "DescribeNetworkInterfaces",
165    "AttachNetworkInterface",
166    "DetachNetworkInterface",
167    "ModifyNetworkInterfaceAttribute",
168    "ResetNetworkInterfaceAttribute",
169    "DescribeNetworkInterfaceAttribute",
170    "CreateNetworkInterfacePermission",
171    "DeleteNetworkInterfacePermission",
172    "DescribeNetworkInterfacePermissions",
173    "AssignPrivateIpAddresses",
174    "UnassignPrivateIpAddresses",
175    "AssignIpv6Addresses",
176    "UnassignIpv6Addresses",
177    // Instances
178    "RunInstances",
179    "StartInstances",
180    "StopInstances",
181    "RebootInstances",
182    "TerminateInstances",
183    "MonitorInstances",
184    "UnmonitorInstances",
185    "DescribeInstances",
186    "DescribeInstanceStatus",
187    "DescribeInstanceTypes",
188    "GetInstanceTypesFromInstanceRequirements",
189    "DescribeInstanceAttribute",
190    "ModifyInstanceAttribute",
191    "ResetInstanceAttribute",
192    "ModifyInstancePlacement",
193    "ModifyInstanceMetadataOptions",
194    "ModifyInstanceMaintenanceOptions",
195    "ModifyInstanceCpuOptions",
196    "ModifyInstanceNetworkPerformanceOptions",
197    "ModifyInstanceEventStartTime",
198    "DescribeInstanceCreditSpecifications",
199    "ModifyInstanceCreditSpecification",
200    "GetInstanceMetadataDefaults",
201    "ModifyInstanceMetadataDefaults",
202    "RegisterInstanceEventNotificationAttributes",
203    "DeregisterInstanceEventNotificationAttributes",
204    "DescribeInstanceEventNotificationAttributes",
205    "ReportInstanceStatus",
206    "DescribeInstanceTopology",
207    // EBS volumes
208    "CreateVolume",
209    "DeleteVolume",
210    "DescribeVolumes",
211    "AttachVolume",
212    "DetachVolume",
213    "ModifyVolume",
214    "DescribeVolumesModifications",
215    "DescribeVolumeStatus",
216    "DescribeVolumeAttribute",
217    "ModifyVolumeAttribute",
218    "EnableVolumeIO",
219    "ListVolumesInRecycleBin",
220    "RestoreVolumeFromRecycleBin",
221    // EBS encryption defaults
222    "GetEbsEncryptionByDefault",
223    "EnableEbsEncryptionByDefault",
224    "DisableEbsEncryptionByDefault",
225    "GetEbsDefaultKmsKeyId",
226    "ModifyEbsDefaultKmsKeyId",
227    "ResetEbsDefaultKmsKeyId",
228    // EBS snapshots
229    "CreateSnapshot",
230    "CreateSnapshots",
231    "DeleteSnapshot",
232    "DescribeSnapshots",
233    "CopySnapshot",
234    "DescribeSnapshotAttribute",
235    "ModifySnapshotAttribute",
236    "ResetSnapshotAttribute",
237    "ModifySnapshotTier",
238    "DescribeSnapshotTierStatus",
239    "RestoreSnapshotTier",
240    "ListSnapshotsInRecycleBin",
241    "RestoreSnapshotFromRecycleBin",
242    "LockSnapshot",
243    "UnlockSnapshot",
244    "DescribeLockedSnapshots",
245    "GetSnapshotBlockPublicAccessState",
246    "EnableSnapshotBlockPublicAccess",
247    "DisableSnapshotBlockPublicAccess",
248    "EnableFastSnapshotRestores",
249    "DisableFastSnapshotRestores",
250    "DescribeFastSnapshotRestores",
251    // AMIs (images)
252    "CreateImage",
253    "RegisterImage",
254    "DeregisterImage",
255    "DescribeImages",
256    "CopyImage",
257    "DescribeImageAttribute",
258    "ModifyImageAttribute",
259    "ResetImageAttribute",
260    "EnableImage",
261    "DisableImage",
262    "AttachImageWatermark",
263    "DetachImageWatermark",
264    "EnableImageDeprecation",
265    "DisableImageDeprecation",
266    "EnableImageDeregistrationProtection",
267    "DisableImageDeregistrationProtection",
268    "CancelImageLaunchPermission",
269    "RestoreImageFromRecycleBin",
270    "ListImagesInRecycleBin",
271    "EnableImageBlockPublicAccess",
272    "DisableImageBlockPublicAccess",
273    "GetImageBlockPublicAccessState",
274    "EnableAllowedImagesSettings",
275    "DisableAllowedImagesSettings",
276    "GetAllowedImagesSettings",
277    "ReplaceImageCriteriaInAllowedImagesSettings",
278    "CreateStoreImageTask",
279    "DescribeStoreImageTasks",
280    "CreateRestoreImageTask",
281    "DescribeFastLaunchImages",
282    // Network ACLs
283    "CreateNetworkAcl",
284    "DeleteNetworkAcl",
285    "DescribeNetworkAcls",
286    "CreateNetworkAclEntry",
287    "DeleteNetworkAclEntry",
288    "ReplaceNetworkAclEntry",
289    "ReplaceNetworkAclAssociation",
290    // VPC peering
291    "CreateVpcPeeringConnection",
292    "DeleteVpcPeeringConnection",
293    "DescribeVpcPeeringConnections",
294    "AcceptVpcPeeringConnection",
295    "RejectVpcPeeringConnection",
296    "ModifyVpcPeeringConnectionOptions",
297    // VPC endpoints
298    "CreateVpcEndpoint",
299    "DeleteVpcEndpoints",
300    "DescribeVpcEndpoints",
301    "ModifyVpcEndpoint",
302    "DescribeVpcEndpointServices",
303    "DescribeVpcEndpointConnections",
304    "AcceptVpcEndpointConnections",
305    "RejectVpcEndpointConnections",
306    "CreateVpcEndpointServiceConfiguration",
307    "DeleteVpcEndpointServiceConfigurations",
308    "DescribeVpcEndpointServiceConfigurations",
309    "ModifyVpcEndpointServiceConfiguration",
310    "DescribeVpcEndpointServicePermissions",
311    "ModifyVpcEndpointServicePermissions",
312    "ModifyVpcEndpointServicePayerResponsibility",
313    "StartVpcEndpointServicePrivateDnsVerification",
314    "CreateVpcEndpointConnectionNotification",
315    "DeleteVpcEndpointConnectionNotifications",
316    "DescribeVpcEndpointConnectionNotifications",
317    "ModifyVpcEndpointConnectionNotification",
318    "DescribeVpcEndpointAssociations",
319    // Flow logs
320    "CreateFlowLogs",
321    "DeleteFlowLogs",
322    "DescribeFlowLogs",
323    "GetFlowLogsIntegrationTemplate",
324    // Launch templates
325    "CreateLaunchTemplate",
326    "CreateLaunchTemplateVersion",
327    "DeleteLaunchTemplate",
328    "DeleteLaunchTemplateVersions",
329    "DescribeLaunchTemplates",
330    "DescribeLaunchTemplateVersions",
331    "GetLaunchTemplateData",
332    "ModifyLaunchTemplate",
333    // Spot instances + fleet
334    "RequestSpotInstances",
335    "DescribeSpotInstanceRequests",
336    "CancelSpotInstanceRequests",
337    "RequestSpotFleet",
338    "DescribeSpotFleetRequests",
339    "CancelSpotFleetRequests",
340    "ModifySpotFleetRequest",
341    "DescribeSpotFleetInstances",
342    "DescribeSpotFleetRequestHistory",
343    "DescribeSpotPriceHistory",
344    "GetSpotPlacementScores",
345    "CreateSpotDatafeedSubscription",
346    "DeleteSpotDatafeedSubscription",
347    "DescribeSpotDatafeedSubscription",
348    // EC2 fleets
349    "CreateFleet",
350    "DeleteFleets",
351    "DescribeFleets",
352    "ModifyFleet",
353    "DescribeFleetHistory",
354    "DescribeFleetInstances",
355    // Capacity reservations
356    "CreateCapacityReservation",
357    "CancelCapacityReservation",
358    "DescribeCapacityReservations",
359    "ModifyCapacityReservation",
360    "GetCapacityReservationUsage",
361    "CreateCapacityReservationFleet",
362    "CancelCapacityReservationFleets",
363    "DescribeCapacityReservationFleets",
364    "ModifyCapacityReservationFleet",
365    "ModifyInstanceCapacityReservationAttributes",
366    "CreateCapacityReservationBySplitting",
367    "MoveCapacityReservationInstances",
368    "DescribeCapacityReservationBillingRequests",
369    "AssociateCapacityReservationBillingOwner",
370    "DisassociateCapacityReservationBillingOwner",
371    "AcceptCapacityReservationBillingOwnership",
372    "RejectCapacityReservationBillingOwnership",
373    "DescribeCapacityBlockOfferings",
374    "DescribeCapacityBlocks",
375    "PurchaseCapacityBlock",
376    "DescribeCapacityBlockStatus",
377    "DescribeCapacityBlockExtensionHistory",
378    "DescribeCapacityBlockExtensionOfferings",
379    "PurchaseCapacityBlockExtension",
380    "DescribeCapacityReservationTopology",
381    "CreateInterruptibleCapacityReservationAllocation",
382    "UpdateInterruptibleCapacityReservationAllocation",
383    // Reserved instances
384    "DescribeReservedInstances",
385    "DescribeReservedInstancesOfferings",
386    "PurchaseReservedInstancesOffering",
387    "DescribeReservedInstancesListings",
388    "CreateReservedInstancesListing",
389    "CancelReservedInstancesListing",
390    "DescribeReservedInstancesModifications",
391    "ModifyReservedInstances",
392    "GetReservedInstancesExchangeQuote",
393    "AcceptReservedInstancesExchangeQuote",
394    "DeleteQueuedReservedInstances",
395    // Dedicated hosts
396    "AllocateHosts",
397    "DescribeHosts",
398    "ModifyHosts",
399    "ReleaseHosts",
400    "DescribeMacHosts",
401    // Transit gateway core
402    "CreateTransitGateway",
403    "DeleteTransitGateway",
404    "DescribeTransitGateways",
405    "ModifyTransitGateway",
406    "CreateTransitGatewayVpcAttachment",
407    "DeleteTransitGatewayVpcAttachment",
408    "DescribeTransitGatewayVpcAttachments",
409    "ModifyTransitGatewayVpcAttachment",
410    "AcceptTransitGatewayVpcAttachment",
411    "RejectTransitGatewayVpcAttachment",
412    "DescribeTransitGatewayAttachments",
413    "CreateTransitGatewayRouteTable",
414    "DeleteTransitGatewayRouteTable",
415    "DescribeTransitGatewayRouteTables",
416    "AssociateTransitGatewayRouteTable",
417    "DisassociateTransitGatewayRouteTable",
418    "EnableTransitGatewayRouteTablePropagation",
419    "DisableTransitGatewayRouteTablePropagation",
420    "CreateTransitGatewayRoute",
421    "DeleteTransitGatewayRoute",
422    "ReplaceTransitGatewayRoute",
423    "SearchTransitGatewayRoutes",
424    "ExportTransitGatewayRoutes",
425    "GetTransitGatewayRouteTableAssociations",
426    "GetTransitGatewayRouteTablePropagations",
427    "GetTransitGatewayAttachmentPropagations",
428    "CreateTransitGatewayPrefixListReference",
429    "DeleteTransitGatewayPrefixListReference",
430    "ModifyTransitGatewayPrefixListReference",
431    "GetTransitGatewayPrefixListReferences",
432    // Transit gateway peering / connect / policy / announcements
433    "CreateTransitGatewayPeeringAttachment",
434    "DeleteTransitGatewayPeeringAttachment",
435    "DescribeTransitGatewayPeeringAttachments",
436    "AcceptTransitGatewayPeeringAttachment",
437    "RejectTransitGatewayPeeringAttachment",
438    "CreateTransitGatewayConnect",
439    "DeleteTransitGatewayConnect",
440    "DescribeTransitGatewayConnects",
441    "CreateTransitGatewayConnectPeer",
442    "DeleteTransitGatewayConnectPeer",
443    "DescribeTransitGatewayConnectPeers",
444    "CreateTransitGatewayPolicyTable",
445    "DeleteTransitGatewayPolicyTable",
446    "DescribeTransitGatewayPolicyTables",
447    "AssociateTransitGatewayPolicyTable",
448    "DisassociateTransitGatewayPolicyTable",
449    "GetTransitGatewayPolicyTableAssociations",
450    "GetTransitGatewayPolicyTableEntries",
451    "CreateTransitGatewayRouteTableAnnouncement",
452    "DeleteTransitGatewayRouteTableAnnouncement",
453    "DescribeTransitGatewayRouteTableAnnouncements",
454    // Transit gateway multicast / metering / client-vpn-attach
455    "CreateTransitGatewayMulticastDomain",
456    "DeleteTransitGatewayMulticastDomain",
457    "DescribeTransitGatewayMulticastDomains",
458    "AssociateTransitGatewayMulticastDomain",
459    "DisassociateTransitGatewayMulticastDomain",
460    "AcceptTransitGatewayMulticastDomainAssociations",
461    "RejectTransitGatewayMulticastDomainAssociations",
462    "GetTransitGatewayMulticastDomainAssociations",
463    "RegisterTransitGatewayMulticastGroupMembers",
464    "RegisterTransitGatewayMulticastGroupSources",
465    "DeregisterTransitGatewayMulticastGroupMembers",
466    "DeregisterTransitGatewayMulticastGroupSources",
467    "SearchTransitGatewayMulticastGroups",
468    "CreateTransitGatewayMeteringPolicy",
469    "DeleteTransitGatewayMeteringPolicy",
470    "DescribeTransitGatewayMeteringPolicies",
471    "ModifyTransitGatewayMeteringPolicy",
472    "CreateTransitGatewayMeteringPolicyEntry",
473    "DeleteTransitGatewayMeteringPolicyEntry",
474    "GetTransitGatewayMeteringPolicyEntries",
475    "AcceptTransitGatewayClientVpnAttachment",
476    "DeleteTransitGatewayClientVpnAttachment",
477    "RejectTransitGatewayClientVpnAttachment",
478    // Site-to-Site VPN
479    "CreateCustomerGateway",
480    "DeleteCustomerGateway",
481    "DescribeCustomerGateways",
482    "CreateVpnGateway",
483    "DeleteVpnGateway",
484    "DescribeVpnGateways",
485    "AttachVpnGateway",
486    "DetachVpnGateway",
487    "CreateVpnConnection",
488    "DeleteVpnConnection",
489    "DescribeVpnConnections",
490    "ModifyVpnConnection",
491    "ModifyVpnConnectionOptions",
492    "CreateVpnConnectionRoute",
493    "DeleteVpnConnectionRoute",
494    "ModifyVpnTunnelOptions",
495    "ModifyVpnTunnelCertificate",
496    "ReplaceVpnTunnel",
497    "GetActiveVpnTunnelStatus",
498    "GetVpnTunnelReplacementStatus",
499    "GetVpnConnectionDeviceTypes",
500    "GetVpnConnectionDeviceSampleConfiguration",
501    "CreateVpnConcentrator",
502    "DeleteVpnConcentrator",
503    "DescribeVpnConcentrators",
504    // Client VPN
505    "CreateClientVpnEndpoint",
506    "DeleteClientVpnEndpoint",
507    "DescribeClientVpnEndpoints",
508    "ModifyClientVpnEndpoint",
509    "CreateClientVpnRoute",
510    "DeleteClientVpnRoute",
511    "DescribeClientVpnRoutes",
512    "AuthorizeClientVpnIngress",
513    "RevokeClientVpnIngress",
514    "DescribeClientVpnAuthorizationRules",
515    "AssociateClientVpnTargetNetwork",
516    "DisassociateClientVpnTargetNetwork",
517    "DescribeClientVpnTargetNetworks",
518    "ApplySecurityGroupsToClientVpnTargetNetwork",
519    "DescribeClientVpnConnections",
520    "TerminateClientVpnConnections",
521    "ExportClientVpnClientCertificateRevocationList",
522    "ExportClientVpnClientConfiguration",
523    "ImportClientVpnClientCertificateRevocationList",
524    // IPAM core
525    "CreateIpam",
526    "DeleteIpam",
527    "DescribeIpams",
528    "ModifyIpam",
529    "CreateIpamScope",
530    "DeleteIpamScope",
531    "DescribeIpamScopes",
532    "ModifyIpamScope",
533    "CreateIpamPool",
534    "DeleteIpamPool",
535    "DescribeIpamPools",
536    "ModifyIpamPool",
537    "ProvisionIpamPoolCidr",
538    "DeprovisionIpamPoolCidr",
539    "GetIpamPoolCidrs",
540    "AllocateIpamPoolCidr",
541    "ReleaseIpamPoolAllocation",
542    "GetIpamPoolAllocations",
543    "GetIpamResourceCidrs",
544    "ModifyIpamResourceCidr",
545    "GetIpamAddressHistory",
546    "EnableIpamOrganizationAdminAccount",
547    "DisableIpamOrganizationAdminAccount",
548    // IPAM resource discovery / BYOASN / BYOIP / external tokens
549    "CreateIpamResourceDiscovery",
550    "DeleteIpamResourceDiscovery",
551    "DescribeIpamResourceDiscoveries",
552    "ModifyIpamResourceDiscovery",
553    "AssociateIpamResourceDiscovery",
554    "DisassociateIpamResourceDiscovery",
555    "DescribeIpamResourceDiscoveryAssociations",
556    "GetIpamDiscoveredAccounts",
557    "GetIpamDiscoveredPublicAddresses",
558    "GetIpamDiscoveredResourceCidrs",
559    "AssociateIpamByoasn",
560    "DisassociateIpamByoasn",
561    "ProvisionIpamByoasn",
562    "DeprovisionIpamByoasn",
563    "DescribeIpamByoasn",
564    "MoveByoipCidrToIpam",
565    "CreateIpamExternalResourceVerificationToken",
566    "DeleteIpamExternalResourceVerificationToken",
567    "DescribeIpamExternalResourceVerificationTokens",
568    // IPAM policies + prefix-list resolvers
569    "CreateIpamPolicy",
570    "DeleteIpamPolicy",
571    "DescribeIpamPolicies",
572    "EnableIpamPolicy",
573    "DisableIpamPolicy",
574    "GetEnabledIpamPolicy",
575    "GetIpamPolicyAllocationRules",
576    "ModifyIpamPolicyAllocationRules",
577    "GetIpamPolicyOrganizationTargets",
578    "CreateIpamPrefixListResolver",
579    "DeleteIpamPrefixListResolver",
580    "DescribeIpamPrefixListResolvers",
581    "ModifyIpamPrefixListResolver",
582    "CreateIpamPrefixListResolverTarget",
583    "DeleteIpamPrefixListResolverTarget",
584    "DescribeIpamPrefixListResolverTargets",
585    "ModifyIpamPrefixListResolverTarget",
586    "GetIpamPrefixListResolverRules",
587    "GetIpamPrefixListResolverVersions",
588    "GetIpamPrefixListResolverVersionEntries",
589    // Verified Access
590    "CreateVerifiedAccessInstance",
591    "DeleteVerifiedAccessInstance",
592    "DescribeVerifiedAccessInstances",
593    "ModifyVerifiedAccessInstance",
594    "CreateVerifiedAccessTrustProvider",
595    "DeleteVerifiedAccessTrustProvider",
596    "DescribeVerifiedAccessTrustProviders",
597    "ModifyVerifiedAccessTrustProvider",
598    "AttachVerifiedAccessTrustProvider",
599    "DetachVerifiedAccessTrustProvider",
600    "CreateVerifiedAccessGroup",
601    "DeleteVerifiedAccessGroup",
602    "DescribeVerifiedAccessGroups",
603    "ModifyVerifiedAccessGroup",
604    "GetVerifiedAccessGroupPolicy",
605    "ModifyVerifiedAccessGroupPolicy",
606    "CreateVerifiedAccessEndpoint",
607    "DeleteVerifiedAccessEndpoint",
608    "DescribeVerifiedAccessEndpoints",
609    "ModifyVerifiedAccessEndpoint",
610    "GetVerifiedAccessEndpointPolicy",
611    "ModifyVerifiedAccessEndpointPolicy",
612    "GetVerifiedAccessEndpointTargets",
613    "DescribeVerifiedAccessInstanceLoggingConfigurations",
614    "ModifyVerifiedAccessInstanceLoggingConfiguration",
615    "ExportVerifiedAccessInstanceClientConfiguration",
616    // Network Insights
617    "CreateNetworkInsightsPath",
618    "DeleteNetworkInsightsPath",
619    "DescribeNetworkInsightsPaths",
620    "StartNetworkInsightsAnalysis",
621    "DeleteNetworkInsightsAnalysis",
622    "DescribeNetworkInsightsAnalyses",
623    "CreateNetworkInsightsAccessScope",
624    "DeleteNetworkInsightsAccessScope",
625    "DescribeNetworkInsightsAccessScopes",
626    "GetNetworkInsightsAccessScopeContent",
627    "StartNetworkInsightsAccessScopeAnalysis",
628    "DeleteNetworkInsightsAccessScopeAnalysis",
629    "DescribeNetworkInsightsAccessScopeAnalyses",
630    "GetNetworkInsightsAccessScopeAnalysisFindings",
631    // Outpost / local gateway / CoIP / carrier
632    "CreateCarrierGateway",
633    "DeleteCarrierGateway",
634    "DescribeCarrierGateways",
635    "CreateCoipPool",
636    "DeleteCoipPool",
637    "DescribeCoipPools",
638    "CreateCoipCidr",
639    "DeleteCoipCidr",
640    "GetCoipPoolUsage",
641    "CreateLocalGatewayRouteTable",
642    "DeleteLocalGatewayRouteTable",
643    "DescribeLocalGatewayRouteTables",
644    "CreateLocalGatewayRoute",
645    "DeleteLocalGatewayRoute",
646    "ModifyLocalGatewayRoute",
647    "SearchLocalGatewayRoutes",
648    "CreateLocalGatewayRouteTableVpcAssociation",
649    "DeleteLocalGatewayRouteTableVpcAssociation",
650    "DescribeLocalGatewayRouteTableVpcAssociations",
651    "CreateLocalGatewayVirtualInterface",
652    "DeleteLocalGatewayVirtualInterface",
653    "DescribeLocalGatewayVirtualInterfaces",
654    "CreateLocalGatewayVirtualInterfaceGroup",
655    "DeleteLocalGatewayVirtualInterfaceGroup",
656    "DescribeLocalGatewayVirtualInterfaceGroups",
657    "CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation",
658    "DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation",
659    "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations",
660    "DescribeLocalGateways",
661    // Instance Connect / fast launch / serial console / console output
662    "CreateInstanceConnectEndpoint",
663    "DeleteInstanceConnectEndpoint",
664    "DescribeInstanceConnectEndpoints",
665    "ModifyInstanceConnectEndpoint",
666    "EnableFastLaunch",
667    "DisableFastLaunch",
668    "EnableSerialConsoleAccess",
669    "DisableSerialConsoleAccess",
670    "GetSerialConsoleAccessStatus",
671    "GetConsoleOutput",
672    "GetConsoleScreenshot",
673    "GetPasswordData",
674    // Remainder sweep (long tail -> full 767-op parity)
675    "CreateCapacityReservationCancellationQuote",
676    "DescribeCapacityReservationCancellationQuotes",
677    "DescribeIpamPoolAllocations",
678    "ModifyIpamPoolAllocation",
679    "AdvertiseByoipCidr",
680    "AssociateEnclaveCertificateIamRole",
681    "AssociateIamInstanceProfile",
682    "AssociateInstanceEventWindow",
683    "AssociateRouteServer",
684    "AssociateTrunkInterface",
685    "AttachClassicLinkVpc",
686    "BundleInstance",
687    "CancelBundleTask",
688    "CancelConversionTask",
689    "CancelDeclarativePoliciesReport",
690    "CancelExportTask",
691    "CancelImportTask",
692    "ConfirmProductInstance",
693    "CopyFpgaImage",
694    "CopyVolumes",
695    "CreateCapacityManagerDataExport",
696    "CreateDelegateMacVolumeOwnershipTask",
697    "CreateFpgaImage",
698    "CreateImageUsageReport",
699    "CreateInstanceEventWindow",
700    "CreateInstanceExportTask",
701    "CreateMacSystemIntegrityProtectionModificationTask",
702    "CreateManagedPrefixList",
703    "CreatePublicIpv4Pool",
704    "CreateReplaceRootVolumeTask",
705    "CreateRouteServer",
706    "CreateRouteServerEndpoint",
707    "CreateRouteServerPeer",
708    "CreateSecondaryNetwork",
709    "CreateTrafficMirrorFilter",
710    "CreateTrafficMirrorFilterRule",
711    "CreateTrafficMirrorSession",
712    "CreateTrafficMirrorTarget",
713    "CreateVpcBlockPublicAccessExclusion",
714    "CreateVpcEncryptionControl",
715    "DeleteCapacityManagerDataExport",
716    "DeleteFpgaImage",
717    "DeleteImageUsageReport",
718    "DeleteInstanceEventWindow",
719    "DeleteManagedPrefixList",
720    "DeletePublicIpv4Pool",
721    "DeleteRouteServer",
722    "DeleteRouteServerEndpoint",
723    "DeleteRouteServerPeer",
724    "DeleteSecondaryNetwork",
725    "DeleteTrafficMirrorFilter",
726    "DeleteTrafficMirrorFilterRule",
727    "DeleteTrafficMirrorSession",
728    "DeleteTrafficMirrorTarget",
729    "DeleteVpcBlockPublicAccessExclusion",
730    "DeleteVpcEncryptionControl",
731    "DeprovisionByoipCidr",
732    "DeprovisionPublicIpv4PoolCidr",
733    "DescribeAggregateIdFormat",
734    "DescribeAwsNetworkPerformanceMetricSubscriptions",
735    "DescribeBundleTasks",
736    "DescribeByoipCidrs",
737    "DescribeCapacityManagerDataExports",
738    "DescribeClassicLinkInstances",
739    "DescribeConversionTasks",
740    "DescribeDeclarativePoliciesReports",
741    "DescribeElasticGpus",
742    "DescribeExportImageTasks",
743    "DescribeExportTasks",
744    "DescribeFpgaImageAttribute",
745    "DescribeFpgaImages",
746    "DescribeHostReservationOfferings",
747    "DescribeHostReservations",
748    "DescribeIamInstanceProfileAssociations",
749    "DescribeIdFormat",
750    "DescribeIdentityIdFormat",
751    "DescribeImageReferences",
752    "DescribeImageUsageReportEntries",
753    "DescribeImageUsageReports",
754    "DescribeImportImageTasks",
755    "DescribeImportSnapshotTasks",
756    "DescribeInstanceEventWindows",
757    "DescribeInstanceImageMetadata",
758    "DescribeInstanceSqlHaHistoryStates",
759    "DescribeInstanceSqlHaStates",
760    "DescribeInstanceTypeOfferings",
761    "DescribeIpv6Pools",
762    "DescribeMacModificationTasks",
763    "DescribeManagedPrefixLists",
764    "DescribeOutpostLags",
765    "DescribePrefixLists",
766    "DescribePrincipalIdFormat",
767    "DescribePublicIpv4Pools",
768    "DescribeReplaceRootVolumeTasks",
769    "DescribeRouteServerEndpoints",
770    "DescribeRouteServerPeers",
771    "DescribeRouteServers",
772    "DescribeScheduledInstanceAvailability",
773    "DescribeScheduledInstances",
774    "DescribeSecondaryInterfaces",
775    "DescribeSecondaryNetworks",
776    "DescribeServiceLinkVirtualInterfaces",
777    "DescribeTrafficMirrorFilterRules",
778    "DescribeTrafficMirrorFilters",
779    "DescribeTrafficMirrorSessions",
780    "DescribeTrafficMirrorTargets",
781    "DescribeTrunkInterfaceAssociations",
782    "DescribeVpcBlockPublicAccessExclusions",
783    "DescribeVpcBlockPublicAccessOptions",
784    "DescribeVpcClassicLink",
785    "DescribeVpcClassicLinkDnsSupport",
786    "DescribeVpcEncryptionControls",
787    "DetachClassicLinkVpc",
788    "DisableAwsNetworkPerformanceMetricSubscription",
789    "DisableCapacityManager",
790    "DisableInstanceSqlHaStandbyDetections",
791    "DisableRouteServerPropagation",
792    "DisableVgwRoutePropagation",
793    "DisableVpcClassicLink",
794    "DisableVpcClassicLinkDnsSupport",
795    "DisassociateEnclaveCertificateIamRole",
796    "DisassociateIamInstanceProfile",
797    "DisassociateInstanceEventWindow",
798    "DisassociateRouteServer",
799    "DisassociateTrunkInterface",
800    "EnableAwsNetworkPerformanceMetricSubscription",
801    "EnableCapacityManager",
802    "EnableInstanceSqlHaStandbyDetections",
803    "EnableReachabilityAnalyzerOrganizationSharing",
804    "EnableRouteServerPropagation",
805    "EnableVgwRoutePropagation",
806    "EnableVpcClassicLink",
807    "EnableVpcClassicLinkDnsSupport",
808    "ExportImage",
809    "GetAssociatedEnclaveCertificateIamRoles",
810    "GetAssociatedIpv6PoolCidrs",
811    "GetAwsNetworkPerformanceData",
812    "GetCapacityManagerAttributes",
813    "GetCapacityManagerMetricData",
814    "GetCapacityManagerMetricDimensions",
815    "GetCapacityManagerMonitoredTagKeys",
816    "GetDeclarativePoliciesReportSummary",
817    "GetDefaultCreditSpecification",
818    "GetHostReservationPurchasePreview",
819    "GetImageAncestry",
820    "GetInstanceTpmEkPub",
821    "GetInstanceUefiData",
822    "GetManagedPrefixListAssociations",
823    "GetManagedPrefixListEntries",
824    "GetManagedResourceVisibility",
825    "GetRouteServerAssociations",
826    "GetRouteServerPropagations",
827    "GetRouteServerRoutingDatabase",
828    "GetVpcResourcesBlockingEncryptionEnforcement",
829    "ImportImage",
830    "ImportInstance",
831    "ImportSnapshot",
832    "ImportVolume",
833    "ModifyAvailabilityZoneGroup",
834    "ModifyDefaultCreditSpecification",
835    "ModifyFpgaImageAttribute",
836    "ModifyIdFormat",
837    "ModifyIdentityIdFormat",
838    "ModifyInstanceEventWindow",
839    "ModifyManagedPrefixList",
840    "ModifyManagedResourceVisibility",
841    "ModifyPrivateDnsNameOptions",
842    "ModifyPublicIpDnsNameOptions",
843    "ModifyRouteServer",
844    "ModifyTrafficMirrorFilterNetworkServices",
845    "ModifyTrafficMirrorFilterRule",
846    "ModifyTrafficMirrorSession",
847    "ModifyVpcBlockPublicAccessExclusion",
848    "ModifyVpcBlockPublicAccessOptions",
849    "ModifyVpcEncryptionControl",
850    "ProvisionByoipCidr",
851    "ProvisionPublicIpv4PoolCidr",
852    "PurchaseHostReservation",
853    "PurchaseScheduledInstances",
854    "ReplaceIamInstanceProfileAssociation",
855    "ResetFpgaImageAttribute",
856    "RestoreManagedPrefixListVersion",
857    "RunScheduledInstances",
858    "SendDiagnosticInterrupt",
859    "StartDeclarativePoliciesReport",
860    "UpdateCapacityManagerMonitoredTagKeys",
861    "UpdateCapacityManagerOrganizationsAccess",
862    "WithdrawByoipCidr",
863];
864
865/// Amazon EC2 service.
866pub struct Ec2Service {
867    pub(crate) state: SharedEc2State,
868    /// Optional container runtime backing instances with real containers.
869    /// `None` runs the metadata-only control plane (no Docker/Podman/k8s).
870    pub(crate) runtime: Option<Arc<Ec2Runtime>>,
871}
872
873impl Ec2Service {
874    /// Construct a service over a fresh, empty account-partitioned state.
875    pub fn new() -> Self {
876        Self {
877            state: Arc::new(RwLock::new(MultiAccountState::new(
878                "000000000000",
879                "us-east-1",
880                "",
881            ))),
882            runtime: None,
883        }
884    }
885
886    /// Construct a service over a shared state handle (used by the server so
887    /// persistence/snapshots can be wired in later batches).
888    pub fn with_state(state: SharedEc2State) -> Self {
889        Self {
890            state,
891            runtime: None,
892        }
893    }
894
895    /// Attach a container runtime so `RunInstances` boots real containers.
896    /// Passing `None` leaves the service in metadata-only mode.
897    pub fn with_runtime(mut self, runtime: Option<Arc<Ec2Runtime>>) -> Self {
898        self.runtime = runtime;
899        self
900    }
901
902    /// Clone the shared state handle so the server can expose read-only
903    /// introspection endpoints (`GET /_fakecloud/ec2/instances`).
904    pub fn shared_state(&self) -> SharedEc2State {
905        self.state.clone()
906    }
907
908    /// Re-derive the security-group/NACL firewall model from current state and
909    /// (re)apply it via the runtime's nftables enforcer (#1745 phase 3).
910    ///
911    /// Cheap no-op when there's no runtime or enforcement is disabled — the
912    /// common case — so it's safe to call liberally after any mutation that can
913    /// change the ruleset (RunInstances, Terminate, Authorize/Revoke,
914    /// network-ACL edits). Runs in the background so it never blocks the API
915    /// response.
916    pub(crate) fn spawn_firewall_reconcile(&self) {
917        let Some(runtime) = self.runtime.clone() else {
918            return;
919        };
920        if !runtime.network_isolation_enforced() {
921            return;
922        }
923        let state = self.state.clone();
924        tokio::spawn(async move {
925            firewall_model::reconcile(&state, &runtime).await;
926        });
927    }
928
929    /// Rebuild the backing-container runtime state for persisted instances
930    /// after a fakecloud restart, mirroring RDS/ElastiCache
931    /// `recover_persisted_containers`.
932    ///
933    /// On an ungraceful restart the new process has a new PID, so the shared
934    /// reaper removes every EC2 container labeled with the *previous* PID; an
935    /// instance that persisted as `running` with a `container_id` would
936    /// otherwise be left pointing at a removed container, with every
937    /// subsequent Stop/Start/Reboot/Terminate a silent no-op (bug-hunt
938    /// 2026-06-15 finding 0.3). For each such instance we flip it to `pending`
939    /// and spawn a fresh backing container in the background, reconciling it to
940    /// `running` (with the new id/IP) when it's up, or `stopped` on failure.
941    /// Instances persisted as `stopped`/`terminated` are left as-is —
942    /// StartInstances revives the former. No-op when no runtime is configured
943    /// or there are no instances to recover.
944    pub async fn recover_persisted_containers(&self) {
945        let Some(runtime) = self.runtime.clone() else {
946            return;
947        };
948
949        struct Pending {
950            account_id: String,
951            id: String,
952            user_data: Option<String>,
953            tags: std::collections::BTreeMap<String, String>,
954            network: Option<crate::runtime::InstanceNetwork>,
955        }
956
957        let pending: Vec<Pending> = {
958            let mut accounts = self.state.write();
959            let mut out = Vec::new();
960            for (_, state) in accounts.iter_mut() {
961                let account_id = state.account_id.clone();
962                // Snapshot the tag map first so we don't hold two borrows of
963                // `state` at once when re-deriving per-instance Pod tags.
964                let tag_snapshot: std::collections::HashMap<String, Vec<crate::state::Tag>> =
965                    state.tags.clone();
966                // Which subnets are public (have an IGW default route), computed
967                // before the mutable instance loop so we can re-derive each
968                // recovered instance's `internal` flag without a second borrow.
969                let public_subnets: std::collections::HashSet<String> = state
970                    .subnets
971                    .keys()
972                    .filter(|sid| crate::defaults::subnet_is_public(state, sid))
973                    .cloned()
974                    .collect();
975                for (id, inst) in state.instances.iter_mut() {
976                    // Only running/pending instances need a live container; the
977                    // stale container_id is dropped (the reaper removed it).
978                    if !matches!(inst.state_name.as_str(), "running" | "pending") {
979                        continue;
980                    }
981                    let tags = tag_snapshot
982                        .get(id)
983                        .map(|t| {
984                            t.iter()
985                                .map(|tag| (tag.key.clone(), tag.value.clone()))
986                                .collect()
987                        })
988                        .unwrap_or_default();
989                    let network =
990                        inst.subnet_id
991                            .clone()
992                            .map(|sid| crate::runtime::InstanceNetwork {
993                                internal: !public_subnets.contains(&sid),
994                                subnet_id: sid,
995                            });
996                    inst.state_code = 0;
997                    inst.state_name = "pending".to_string();
998                    inst.container_id = None;
999                    out.push(Pending {
1000                        account_id: account_id.clone(),
1001                        id: id.clone(),
1002                        user_data: inst.user_data.clone(),
1003                        tags,
1004                        network,
1005                    });
1006                }
1007            }
1008            out
1009        };
1010
1011        if pending.is_empty() {
1012            return;
1013        }
1014        tracing::info!(
1015            count = pending.len(),
1016            "recovering backing containers for persisted ec2 instances",
1017        );
1018
1019        let mut handles = Vec::new();
1020        for p in pending {
1021            let runtime = runtime.clone();
1022            let state = self.state.clone();
1023            handles.push(tokio::spawn(async move {
1024                let running = runtime
1025                    .run_instance(&p.id, p.user_data.as_deref(), &p.tags, p.network.as_ref())
1026                    .await;
1027                let reap = {
1028                    let mut accounts = state.write();
1029                    match (
1030                        accounts
1031                            .get_mut(&p.account_id)
1032                            .and_then(|s| s.instances.get_mut(&p.id)),
1033                        running,
1034                    ) {
1035                        (Some(inst), Ok(r)) => {
1036                            if inst.state_code == 48 {
1037                                // Terminated during recovery: drop the container.
1038                                true
1039                            } else {
1040                                inst.state_code = 16;
1041                                inst.state_name = "running".to_string();
1042                                inst.private_ip = r.private_ip;
1043                                inst.container_id = Some(r.container_id);
1044                                false
1045                            }
1046                        }
1047                        (Some(inst), Err(error)) => {
1048                            tracing::error!(
1049                                %error,
1050                                instance_id = %p.id,
1051                                "failed to recover ec2 backing container after restart",
1052                            );
1053                            inst.state_code = 80;
1054                            inst.state_name = "stopped".to_string();
1055                            inst.container_id = None;
1056                            false
1057                        }
1058                        // Deleted during recovery: stop the container we just
1059                        // started so it isn't orphaned (mirrors ElastiCache).
1060                        (None, Ok(_)) => true,
1061                        (None, Err(_)) => false,
1062                    }
1063                };
1064                if reap {
1065                    runtime.terminate_instance(&p.id).await;
1066                }
1067            }));
1068        }
1069
1070        // Once every instance is back up, (re)apply the security-group
1071        // firewall. The startup reaper cleared the previous process's nft
1072        // table / NetworkPolicies, and the per-instance recovery tasks above
1073        // don't reconcile — without this, recovered instances would run
1074        // unfiltered until some unrelated later op happened to trigger a
1075        // reconcile (#1745; bug-hunt 2026-06-18 finding 4.1). No-op when
1076        // enforcement is disabled.
1077        {
1078            let runtime = runtime.clone();
1079            let state = self.state.clone();
1080            tokio::spawn(async move {
1081                for h in handles {
1082                    let _ = h.await;
1083                }
1084                if runtime.network_isolation_enforced() {
1085                    firewall_model::reconcile(&state, &runtime).await;
1086                }
1087            });
1088        }
1089    }
1090}
1091
1092impl Default for Ec2Service {
1093    fn default() -> Self {
1094        Self::new()
1095    }
1096}
1097
1098#[async_trait]
1099impl AwsService for Ec2Service {
1100    fn service_name(&self) -> &str {
1101        "ec2"
1102    }
1103
1104    fn supported_actions(&self) -> &[&str] {
1105        SUPPORTED_ACTIONS
1106    }
1107
1108    async fn handle(&self, request: AwsRequest) -> Result<AwsResponse, AwsServiceError> {
1109        match request.action.as_str() {
1110            "CreateTags" => tags::create_tags(self, &request),
1111            "DeleteTags" => tags::delete_tags(self, &request),
1112            "DescribeTags" => tags::describe_tags(self, &request),
1113            "DescribeRegions" => meta::describe_regions(self, &request),
1114            "DescribeAvailabilityZones" => meta::describe_availability_zones(self, &request),
1115            "DescribeAccountAttributes" => meta::describe_account_attributes(self, &request),
1116            "CreateVpc" => vpc::create_vpc(self, &request),
1117            "CreateDefaultVpc" => vpc::create_default_vpc(self, &request),
1118            "DeleteVpc" => vpc::delete_vpc(self, &request),
1119            "DescribeVpcs" => vpc::describe_vpcs(self, &request),
1120            "ModifyVpcAttribute" => vpc::modify_vpc_attribute(self, &request),
1121            "DescribeVpcAttribute" => vpc::describe_vpc_attribute(self, &request),
1122            "ModifyVpcTenancy" => vpc::modify_vpc_tenancy(self, &request),
1123            "AssociateVpcCidrBlock" => vpc::associate_vpc_cidr_block(self, &request),
1124            "DisassociateVpcCidrBlock" => vpc::disassociate_vpc_cidr_block(self, &request),
1125            "CreateDhcpOptions" => dhcp::create_dhcp_options(self, &request),
1126            "DeleteDhcpOptions" => dhcp::delete_dhcp_options(self, &request),
1127            "DescribeDhcpOptions" => dhcp::describe_dhcp_options(self, &request),
1128            "AssociateDhcpOptions" => dhcp::associate_dhcp_options(self, &request),
1129            "CreateSubnet" => subnet::create_subnet(self, &request),
1130            "CreateDefaultSubnet" => subnet::create_default_subnet(self, &request),
1131            "CreateSecondarySubnet" => subnet::create_secondary_subnet(self, &request),
1132            "DeleteSubnet" => subnet::delete_subnet(self, &request),
1133            "DeleteSecondarySubnet" => subnet::delete_secondary_subnet(self, &request),
1134            "DescribeSubnets" => subnet::describe_subnets(self, &request),
1135            "DescribeSecondarySubnets" => subnet::describe_secondary_subnets(self, &request),
1136            "ModifySubnetAttribute" => subnet::modify_subnet_attribute(self, &request),
1137            "AssociateSubnetCidrBlock" => subnet::associate_subnet_cidr_block(self, &request),
1138            "DisassociateSubnetCidrBlock" => subnet::disassociate_subnet_cidr_block(self, &request),
1139            "CreateSubnetCidrReservation" => subnet::create_subnet_cidr_reservation(self, &request),
1140            "DeleteSubnetCidrReservation" => subnet::delete_subnet_cidr_reservation(self, &request),
1141            "GetSubnetCidrReservations" => subnet::get_subnet_cidr_reservations(self, &request),
1142            "CreateSecurityGroup" => sg::create_security_group(self, &request),
1143            "DeleteSecurityGroup" => sg::delete_security_group(self, &request),
1144            "DescribeSecurityGroups" => sg::describe_security_groups(self, &request),
1145            "AuthorizeSecurityGroupIngress" => sg::authorize_security_group_ingress(self, &request),
1146            "AuthorizeSecurityGroupEgress" => sg::authorize_security_group_egress(self, &request),
1147            "RevokeSecurityGroupIngress" => sg::revoke_security_group_ingress(self, &request),
1148            "RevokeSecurityGroupEgress" => sg::revoke_security_group_egress(self, &request),
1149            "DescribeSecurityGroupRules" => sg::describe_security_group_rules(self, &request),
1150            "ModifySecurityGroupRules" => sg::modify_security_group_rules(self, &request),
1151            "UpdateSecurityGroupRuleDescriptionsIngress" => {
1152                sg::update_rule_descriptions_ingress(self, &request)
1153            }
1154            "UpdateSecurityGroupRuleDescriptionsEgress" => {
1155                sg::update_rule_descriptions_egress(self, &request)
1156            }
1157            "AssociateSecurityGroupVpc" => sg::associate_security_group_vpc(self, &request),
1158            "DisassociateSecurityGroupVpc" => sg::disassociate_security_group_vpc(self, &request),
1159            "DescribeSecurityGroupVpcAssociations" => {
1160                sg::describe_security_group_vpc_associations(self, &request)
1161            }
1162            "GetSecurityGroupsForVpc" => sg::get_security_groups_for_vpc(self, &request),
1163            "DescribeStaleSecurityGroups" => sg::describe_stale_security_groups(self, &request),
1164            "DescribeSecurityGroupReferences" => {
1165                sg::describe_security_group_references(self, &request)
1166            }
1167            "CreateRouteTable" => routing::create_route_table(self, &request),
1168            "DeleteRouteTable" => routing::delete_route_table(self, &request),
1169            "DescribeRouteTables" => routing::describe_route_tables(self, &request),
1170            "CreateRoute" => routing::create_route(self, &request),
1171            "DeleteRoute" => routing::delete_route(self, &request),
1172            "ReplaceRoute" => routing::replace_route(self, &request),
1173            "AssociateRouteTable" => routing::associate_route_table(self, &request),
1174            "DisassociateRouteTable" => routing::disassociate_route_table(self, &request),
1175            "ReplaceRouteTableAssociation" => {
1176                routing::replace_route_table_association(self, &request)
1177            }
1178            "CreateInternetGateway" => routing::create_internet_gateway(self, &request),
1179            "DeleteInternetGateway" => routing::delete_internet_gateway(self, &request),
1180            "DescribeInternetGateways" => routing::describe_internet_gateways(self, &request),
1181            "AttachInternetGateway" => routing::attach_internet_gateway(self, &request),
1182            "DetachInternetGateway" => routing::detach_internet_gateway(self, &request),
1183            "CreateEgressOnlyInternetGateway" => routing::create_egress_only_igw(self, &request),
1184            "DeleteEgressOnlyInternetGateway" => routing::delete_egress_only_igw(self, &request),
1185            "DescribeEgressOnlyInternetGateways" => {
1186                routing::describe_egress_only_igws(self, &request)
1187            }
1188            "CreateNatGateway" => routing::create_nat_gateway(self, &request),
1189            "DeleteNatGateway" => routing::delete_nat_gateway(self, &request),
1190            "DescribeNatGateways" => routing::describe_nat_gateways(self, &request),
1191            "AssignPrivateNatGatewayAddress" => {
1192                routing::assign_private_nat_gateway_address(self, &request)
1193            }
1194            "AssociateNatGatewayAddress" => routing::associate_nat_gateway_address(self, &request),
1195            "DisassociateNatGatewayAddress" => {
1196                routing::disassociate_nat_gateway_address(self, &request)
1197            }
1198            "UnassignPrivateNatGatewayAddress" => {
1199                routing::unassign_private_nat_gateway_address(self, &request)
1200            }
1201            "AllocateAddress" => eip::allocate_address(self, &request),
1202            "ReleaseAddress" => eip::release_address(self, &request),
1203            "DescribeAddresses" => eip::describe_addresses(self, &request),
1204            "AssociateAddress" => eip::associate_address(self, &request),
1205            "DisassociateAddress" => eip::disassociate_address(self, &request),
1206            "DescribeAddressesAttribute" => eip::describe_addresses_attribute(self, &request),
1207            "ModifyAddressAttribute" => eip::modify_address_attribute(self, &request),
1208            "ResetAddressAttribute" => eip::reset_address_attribute(self, &request),
1209            "MoveAddressToVpc" => eip::move_address_to_vpc(self, &request),
1210            "RestoreAddressToClassic" => eip::restore_address_to_classic(self, &request),
1211            "AcceptAddressTransfer" => eip::accept_address_transfer(self, &request),
1212            "EnableAddressTransfer" => eip::enable_address_transfer(self, &request),
1213            "DisableAddressTransfer" => eip::disable_address_transfer(self, &request),
1214            "DescribeAddressTransfers" => eip::describe_address_transfers(self, &request),
1215            "DescribeMovingAddresses" => eip::describe_moving_addresses(self, &request),
1216            "CreateKeyPair" => eip::create_key_pair(self, &request),
1217            "ImportKeyPair" => eip::import_key_pair(self, &request),
1218            "DeleteKeyPair" => eip::delete_key_pair(self, &request),
1219            "DescribeKeyPairs" => eip::describe_key_pairs(self, &request),
1220            "CreatePlacementGroup" => eip::create_placement_group(self, &request),
1221            "DeletePlacementGroup" => eip::delete_placement_group(self, &request),
1222            "DescribePlacementGroups" => eip::describe_placement_groups(self, &request),
1223            "GetGroupsForCapacityReservation" => {
1224                eip::get_groups_for_capacity_reservation(self, &request)
1225            }
1226            "CreateNetworkInterface" => eni::create_network_interface(self, &request),
1227            "DeleteNetworkInterface" => eni::delete_network_interface(self, &request),
1228            "DescribeNetworkInterfaces" => eni::describe_network_interfaces(self, &request),
1229            "AttachNetworkInterface" => eni::attach_network_interface(self, &request),
1230            "DetachNetworkInterface" => eni::detach_network_interface(self, &request),
1231            "ModifyNetworkInterfaceAttribute" => {
1232                eni::modify_network_interface_attribute(self, &request)
1233            }
1234            "ResetNetworkInterfaceAttribute" => {
1235                eni::reset_network_interface_attribute(self, &request)
1236            }
1237            "DescribeNetworkInterfaceAttribute" => {
1238                eni::describe_network_interface_attribute(self, &request)
1239            }
1240            "CreateNetworkInterfacePermission" => {
1241                eni::create_network_interface_permission(self, &request)
1242            }
1243            "DeleteNetworkInterfacePermission" => {
1244                eni::delete_network_interface_permission(self, &request)
1245            }
1246            "DescribeNetworkInterfacePermissions" => {
1247                eni::describe_network_interface_permissions(self, &request)
1248            }
1249            "AssignPrivateIpAddresses" => eni::assign_private_ip_addresses(self, &request),
1250            "UnassignPrivateIpAddresses" => eni::unassign_private_ip_addresses(self, &request),
1251            "AssignIpv6Addresses" => eni::assign_ipv6_addresses(self, &request),
1252            "UnassignIpv6Addresses" => eni::unassign_ipv6_addresses(self, &request),
1253            "RunInstances" => instance::run_instances(self, &request).await,
1254            "StartInstances" => instance::start_instances(self, &request).await,
1255            "StopInstances" => instance::stop_instances(self, &request).await,
1256            "RebootInstances" => instance::reboot_instances(self, &request).await,
1257            "TerminateInstances" => instance::terminate_instances(self, &request).await,
1258            "MonitorInstances" => instance::monitor_instances(self, &request),
1259            "UnmonitorInstances" => instance::unmonitor_instances(self, &request),
1260            "DescribeInstances" => instance::describe_instances(self, &request),
1261            "DescribeInstanceStatus" => instance::describe_instance_status(self, &request),
1262            "DescribeInstanceTypes" => instance::describe_instance_types(self, &request),
1263            "GetInstanceTypesFromInstanceRequirements" => {
1264                instance::get_instance_types_from_requirements(self, &request)
1265            }
1266            "DescribeInstanceAttribute" => instance::describe_instance_attribute(self, &request),
1267            "ModifyInstanceAttribute" => instance::modify_instance_attribute(self, &request),
1268            "ResetInstanceAttribute" => instance::reset_instance_attribute(self, &request),
1269            "ModifyInstancePlacement" => instance::modify_instance_placement(self, &request),
1270            "ModifyInstanceMetadataOptions" => {
1271                instance::modify_instance_metadata_options(self, &request)
1272            }
1273            "ModifyInstanceMaintenanceOptions" => {
1274                instance::modify_instance_maintenance_options(self, &request)
1275            }
1276            "ModifyInstanceCpuOptions" => instance::modify_instance_cpu_options(self, &request),
1277            "ModifyInstanceNetworkPerformanceOptions" => {
1278                instance::modify_instance_network_performance_options(self, &request)
1279            }
1280            "ModifyInstanceEventStartTime" => {
1281                instance::modify_instance_event_start_time(self, &request)
1282            }
1283            "DescribeInstanceCreditSpecifications" => {
1284                instance::describe_instance_credit_specifications(self, &request)
1285            }
1286            "ModifyInstanceCreditSpecification" => {
1287                instance::modify_instance_credit_specification(self, &request)
1288            }
1289            "GetInstanceMetadataDefaults" => {
1290                instance::get_instance_metadata_defaults(self, &request)
1291            }
1292            "ModifyInstanceMetadataDefaults" => {
1293                instance::modify_instance_metadata_defaults(self, &request)
1294            }
1295            "RegisterInstanceEventNotificationAttributes" => {
1296                instance::register_event_notification_attributes(self, &request)
1297            }
1298            "DeregisterInstanceEventNotificationAttributes" => {
1299                instance::deregister_event_notification_attributes(self, &request)
1300            }
1301            "DescribeInstanceEventNotificationAttributes" => {
1302                instance::describe_event_notification_attributes(self, &request)
1303            }
1304            "ReportInstanceStatus" => instance::report_instance_status(self, &request),
1305            "DescribeInstanceTopology" => instance::describe_instance_topology(self, &request),
1306            "CreateVolume" => volume::create_volume(self, &request),
1307            "DeleteVolume" => volume::delete_volume(self, &request),
1308            "DescribeVolumes" => volume::describe_volumes(self, &request),
1309            "AttachVolume" => volume::attach_volume(self, &request),
1310            "DetachVolume" => volume::detach_volume(self, &request),
1311            "ModifyVolume" => volume::modify_volume(self, &request),
1312            "DescribeVolumesModifications" => {
1313                volume::describe_volumes_modifications(self, &request)
1314            }
1315            "DescribeVolumeStatus" => volume::describe_volume_status(self, &request),
1316            "DescribeVolumeAttribute" => volume::describe_volume_attribute(self, &request),
1317            "ModifyVolumeAttribute" => volume::modify_volume_attribute(self, &request),
1318            "EnableVolumeIO" => volume::enable_volume_io(self, &request),
1319            "ListVolumesInRecycleBin" => volume::list_volumes_in_recycle_bin(self, &request),
1320            "RestoreVolumeFromRecycleBin" => {
1321                volume::restore_volume_from_recycle_bin(self, &request)
1322            }
1323            "GetEbsEncryptionByDefault" => volume::get_ebs_encryption_by_default(self, &request),
1324            "EnableEbsEncryptionByDefault" => {
1325                volume::enable_ebs_encryption_by_default(self, &request)
1326            }
1327            "DisableEbsEncryptionByDefault" => {
1328                volume::disable_ebs_encryption_by_default(self, &request)
1329            }
1330            "GetEbsDefaultKmsKeyId" => volume::get_ebs_default_kms_key_id(self, &request),
1331            "ModifyEbsDefaultKmsKeyId" => volume::modify_ebs_default_kms_key_id(self, &request),
1332            "ResetEbsDefaultKmsKeyId" => volume::reset_ebs_default_kms_key_id(self, &request),
1333            "CreateSnapshot" => snapshot::create_snapshot(self, &request),
1334            "CreateSnapshots" => snapshot::create_snapshots(self, &request),
1335            "DeleteSnapshot" => snapshot::delete_snapshot(self, &request),
1336            "DescribeSnapshots" => snapshot::describe_snapshots(self, &request),
1337            "CopySnapshot" => snapshot::copy_snapshot(self, &request),
1338            "DescribeSnapshotAttribute" => snapshot::describe_snapshot_attribute(self, &request),
1339            "ModifySnapshotAttribute" => snapshot::modify_snapshot_attribute(self, &request),
1340            "ResetSnapshotAttribute" => snapshot::reset_snapshot_attribute(self, &request),
1341            "ModifySnapshotTier" => snapshot::modify_snapshot_tier(self, &request),
1342            "DescribeSnapshotTierStatus" => snapshot::describe_snapshot_tier_status(self, &request),
1343            "RestoreSnapshotTier" => snapshot::restore_snapshot_tier(self, &request),
1344            "ListSnapshotsInRecycleBin" => snapshot::list_snapshots_in_recycle_bin(self, &request),
1345            "RestoreSnapshotFromRecycleBin" => {
1346                snapshot::restore_snapshot_from_recycle_bin(self, &request)
1347            }
1348            "LockSnapshot" => snapshot::lock_snapshot(self, &request),
1349            "UnlockSnapshot" => snapshot::unlock_snapshot(self, &request),
1350            "DescribeLockedSnapshots" => snapshot::describe_locked_snapshots(self, &request),
1351            "GetSnapshotBlockPublicAccessState" => {
1352                snapshot::get_snapshot_block_public_access_state(self, &request)
1353            }
1354            "EnableSnapshotBlockPublicAccess" => {
1355                snapshot::enable_snapshot_block_public_access(self, &request)
1356            }
1357            "DisableSnapshotBlockPublicAccess" => {
1358                snapshot::disable_snapshot_block_public_access(self, &request)
1359            }
1360            "EnableFastSnapshotRestores" => snapshot::enable_fast_snapshot_restores(self, &request),
1361            "DisableFastSnapshotRestores" => {
1362                snapshot::disable_fast_snapshot_restores(self, &request)
1363            }
1364            "DescribeFastSnapshotRestores" => {
1365                snapshot::describe_fast_snapshot_restores(self, &request)
1366            }
1367            "CreateImage" => image::create_image(self, &request),
1368            "RegisterImage" => image::register_image(self, &request),
1369            "DeregisterImage" => image::deregister_image(self, &request),
1370            "DescribeImages" => image::describe_images(self, &request),
1371            "CopyImage" => image::copy_image(self, &request),
1372            "DescribeImageAttribute" => image::describe_image_attribute(self, &request),
1373            "ModifyImageAttribute" => image::modify_image_attribute(self, &request),
1374            "ResetImageAttribute" => image::reset_image_attribute(self, &request),
1375            "EnableImage" => image::enable_image(self, &request),
1376            "DisableImage" => image::disable_image(self, &request),
1377            "AttachImageWatermark" => image::attach_image_watermark(self, &request),
1378            "DetachImageWatermark" => image::detach_image_watermark(self, &request),
1379            "EnableImageDeprecation" => image::enable_image_deprecation(self, &request),
1380            "DisableImageDeprecation" => image::disable_image_deprecation(self, &request),
1381            "EnableImageDeregistrationProtection" => {
1382                image::enable_image_deregistration_protection(self, &request)
1383            }
1384            "DisableImageDeregistrationProtection" => {
1385                image::disable_image_deregistration_protection(self, &request)
1386            }
1387            "CancelImageLaunchPermission" => image::cancel_image_launch_permission(self, &request),
1388            "RestoreImageFromRecycleBin" => image::restore_image_from_recycle_bin(self, &request),
1389            "ListImagesInRecycleBin" => image::list_images_in_recycle_bin(self, &request),
1390            "EnableImageBlockPublicAccess" => {
1391                image::enable_image_block_public_access(self, &request)
1392            }
1393            "DisableImageBlockPublicAccess" => {
1394                image::disable_image_block_public_access(self, &request)
1395            }
1396            "GetImageBlockPublicAccessState" => {
1397                image::get_image_block_public_access_state(self, &request)
1398            }
1399            "EnableAllowedImagesSettings" => image::enable_allowed_images_settings(self, &request),
1400            "DisableAllowedImagesSettings" => {
1401                image::disable_allowed_images_settings(self, &request)
1402            }
1403            "GetAllowedImagesSettings" => image::get_allowed_images_settings(self, &request),
1404            "ReplaceImageCriteriaInAllowedImagesSettings" => {
1405                image::replace_image_criteria_in_allowed_images_settings(self, &request)
1406            }
1407            "CreateStoreImageTask" => image::create_store_image_task(self, &request),
1408            "DescribeStoreImageTasks" => image::describe_store_image_tasks(self, &request),
1409            "CreateRestoreImageTask" => image::create_restore_image_task(self, &request),
1410            "DescribeFastLaunchImages" => image::describe_fast_launch_images(self, &request),
1411            "CreateNetworkAcl" => nacl::create_network_acl(self, &request),
1412            "DeleteNetworkAcl" => nacl::delete_network_acl(self, &request),
1413            "DescribeNetworkAcls" => nacl::describe_network_acls(self, &request),
1414            "CreateNetworkAclEntry" => nacl::create_network_acl_entry(self, &request),
1415            "DeleteNetworkAclEntry" => nacl::delete_network_acl_entry(self, &request),
1416            "ReplaceNetworkAclEntry" => nacl::replace_network_acl_entry(self, &request),
1417            "ReplaceNetworkAclAssociation" => nacl::replace_network_acl_association(self, &request),
1418            "CreateVpcPeeringConnection" => nacl::create_vpc_peering_connection(self, &request),
1419            "DeleteVpcPeeringConnection" => nacl::delete_vpc_peering_connection(self, &request),
1420            "DescribeVpcPeeringConnections" => {
1421                nacl::describe_vpc_peering_connections(self, &request)
1422            }
1423            "AcceptVpcPeeringConnection" => nacl::accept_vpc_peering_connection(self, &request),
1424            "RejectVpcPeeringConnection" => nacl::reject_vpc_peering_connection(self, &request),
1425            "ModifyVpcPeeringConnectionOptions" => {
1426                nacl::modify_vpc_peering_connection_options(self, &request)
1427            }
1428            "CreateVpcEndpoint" => endpoint::create_vpc_endpoint(self, &request),
1429            "DeleteVpcEndpoints" => endpoint::delete_vpc_endpoints(self, &request),
1430            "DescribeVpcEndpoints" => endpoint::describe_vpc_endpoints(self, &request),
1431            "ModifyVpcEndpoint" => endpoint::modify_vpc_endpoint(self, &request),
1432            "DescribeVpcEndpointServices" => {
1433                endpoint::describe_vpc_endpoint_services(self, &request)
1434            }
1435            "DescribeVpcEndpointConnections" => {
1436                endpoint::describe_vpc_endpoint_connections(self, &request)
1437            }
1438            "AcceptVpcEndpointConnections" => {
1439                endpoint::accept_vpc_endpoint_connections(self, &request)
1440            }
1441            "RejectVpcEndpointConnections" => {
1442                endpoint::reject_vpc_endpoint_connections(self, &request)
1443            }
1444            "CreateVpcEndpointServiceConfiguration" => {
1445                endpoint::create_vpc_endpoint_service_configuration(self, &request)
1446            }
1447            "DeleteVpcEndpointServiceConfigurations" => {
1448                endpoint::delete_vpc_endpoint_service_configurations(self, &request)
1449            }
1450            "DescribeVpcEndpointServiceConfigurations" => {
1451                endpoint::describe_vpc_endpoint_service_configurations(self, &request)
1452            }
1453            "ModifyVpcEndpointServiceConfiguration" => {
1454                endpoint::modify_vpc_endpoint_service_configuration(self, &request)
1455            }
1456            "DescribeVpcEndpointServicePermissions" => {
1457                endpoint::describe_vpc_endpoint_service_permissions(self, &request)
1458            }
1459            "ModifyVpcEndpointServicePermissions" => {
1460                endpoint::modify_vpc_endpoint_service_permissions(self, &request)
1461            }
1462            "ModifyVpcEndpointServicePayerResponsibility" => {
1463                endpoint::modify_vpc_endpoint_service_payer_responsibility(self, &request)
1464            }
1465            "StartVpcEndpointServicePrivateDnsVerification" => {
1466                endpoint::start_vpc_endpoint_service_private_dns_verification(self, &request)
1467            }
1468            "CreateVpcEndpointConnectionNotification" => {
1469                endpoint::create_vpc_endpoint_connection_notification(self, &request)
1470            }
1471            "DeleteVpcEndpointConnectionNotifications" => {
1472                endpoint::delete_vpc_endpoint_connection_notifications(self, &request)
1473            }
1474            "DescribeVpcEndpointConnectionNotifications" => {
1475                endpoint::describe_vpc_endpoint_connection_notifications(self, &request)
1476            }
1477            "ModifyVpcEndpointConnectionNotification" => {
1478                endpoint::modify_vpc_endpoint_connection_notification(self, &request)
1479            }
1480            "DescribeVpcEndpointAssociations" => {
1481                endpoint::describe_vpc_endpoint_associations(self, &request)
1482            }
1483            "CreateFlowLogs" => endpoint::create_flow_logs(self, &request),
1484            "DeleteFlowLogs" => endpoint::delete_flow_logs(self, &request),
1485            "DescribeFlowLogs" => endpoint::describe_flow_logs(self, &request),
1486            "GetFlowLogsIntegrationTemplate" => {
1487                endpoint::get_flow_logs_integration_template(self, &request)
1488            }
1489            "CreateLaunchTemplate" => fleet::create_launch_template(self, &request),
1490            "CreateLaunchTemplateVersion" => fleet::create_launch_template_version(self, &request),
1491            "DeleteLaunchTemplate" => fleet::delete_launch_template(self, &request),
1492            "DeleteLaunchTemplateVersions" => {
1493                fleet::delete_launch_template_versions(self, &request)
1494            }
1495            "DescribeLaunchTemplates" => fleet::describe_launch_templates(self, &request),
1496            "DescribeLaunchTemplateVersions" => {
1497                fleet::describe_launch_template_versions(self, &request)
1498            }
1499            "GetLaunchTemplateData" => fleet::get_launch_template_data(self, &request),
1500            "ModifyLaunchTemplate" => fleet::modify_launch_template(self, &request),
1501            "RequestSpotInstances" => fleet::request_spot_instances(self, &request),
1502            "DescribeSpotInstanceRequests" => {
1503                fleet::describe_spot_instance_requests(self, &request)
1504            }
1505            "CancelSpotInstanceRequests" => fleet::cancel_spot_instance_requests(self, &request),
1506            "RequestSpotFleet" => fleet::request_spot_fleet(self, &request),
1507            "DescribeSpotFleetRequests" => fleet::describe_spot_fleet_requests(self, &request),
1508            "CancelSpotFleetRequests" => fleet::cancel_spot_fleet_requests(self, &request),
1509            "ModifySpotFleetRequest" => fleet::modify_spot_fleet_request(self, &request),
1510            "DescribeSpotFleetInstances" => fleet::describe_spot_fleet_instances(self, &request),
1511            "DescribeSpotFleetRequestHistory" => {
1512                fleet::describe_spot_fleet_request_history(self, &request)
1513            }
1514            "DescribeSpotPriceHistory" => fleet::describe_spot_price_history(self, &request),
1515            "GetSpotPlacementScores" => fleet::get_spot_placement_scores(self, &request),
1516            "CreateSpotDatafeedSubscription" => {
1517                fleet::create_spot_datafeed_subscription(self, &request)
1518            }
1519            "DeleteSpotDatafeedSubscription" => {
1520                fleet::delete_spot_datafeed_subscription(self, &request)
1521            }
1522            "DescribeSpotDatafeedSubscription" => {
1523                fleet::describe_spot_datafeed_subscription(self, &request)
1524            }
1525            "CreateFleet" => fleet::create_fleet(self, &request),
1526            "DeleteFleets" => fleet::delete_fleets(self, &request),
1527            "DescribeFleets" => fleet::describe_fleets(self, &request),
1528            "ModifyFleet" => fleet::modify_fleet(self, &request),
1529            "DescribeFleetHistory" => fleet::describe_fleet_history(self, &request),
1530            "DescribeFleetInstances" => fleet::describe_fleet_instances(self, &request),
1531            "CreateCapacityReservation" => capacity::create_capacity_reservation(self, &request),
1532            "CancelCapacityReservation" => capacity::cancel_capacity_reservation(self, &request),
1533            "DescribeCapacityReservations" => {
1534                capacity::describe_capacity_reservations(self, &request)
1535            }
1536            "ModifyCapacityReservation" => capacity::modify_capacity_reservation(self, &request),
1537            "GetCapacityReservationUsage" => {
1538                capacity::get_capacity_reservation_usage(self, &request)
1539            }
1540            "CreateCapacityReservationFleet" => {
1541                capacity::create_capacity_reservation_fleet(self, &request)
1542            }
1543            "CancelCapacityReservationFleets" => {
1544                capacity::cancel_capacity_reservation_fleets(self, &request)
1545            }
1546            "DescribeCapacityReservationFleets" => {
1547                capacity::describe_capacity_reservation_fleets(self, &request)
1548            }
1549            "ModifyCapacityReservationFleet" => {
1550                capacity::modify_capacity_reservation_fleet(self, &request)
1551            }
1552            "ModifyInstanceCapacityReservationAttributes" => {
1553                capacity::modify_instance_capacity_reservation_attributes(self, &request)
1554            }
1555            "CreateCapacityReservationBySplitting" => {
1556                capacity::create_capacity_reservation_by_splitting(self, &request)
1557            }
1558            "MoveCapacityReservationInstances" => {
1559                capacity::move_capacity_reservation_instances(self, &request)
1560            }
1561            "DescribeCapacityReservationBillingRequests" => {
1562                capacity::describe_capacity_reservation_billing_requests(self, &request)
1563            }
1564            "AssociateCapacityReservationBillingOwner" => {
1565                capacity::associate_capacity_reservation_billing_owner(self, &request)
1566            }
1567            "DisassociateCapacityReservationBillingOwner" => {
1568                capacity::disassociate_capacity_reservation_billing_owner(self, &request)
1569            }
1570            "AcceptCapacityReservationBillingOwnership" => {
1571                capacity::accept_capacity_reservation_billing_ownership(self, &request)
1572            }
1573            "RejectCapacityReservationBillingOwnership" => {
1574                capacity::reject_capacity_reservation_billing_ownership(self, &request)
1575            }
1576            "DescribeCapacityBlockOfferings" => {
1577                capacity::describe_capacity_block_offerings(self, &request)
1578            }
1579            "DescribeCapacityBlocks" => capacity::describe_capacity_blocks(self, &request),
1580            "PurchaseCapacityBlock" => capacity::purchase_capacity_block(self, &request),
1581            "DescribeCapacityBlockStatus" => {
1582                capacity::describe_capacity_block_status(self, &request)
1583            }
1584            "DescribeCapacityBlockExtensionHistory" => {
1585                capacity::describe_capacity_block_extension_history(self, &request)
1586            }
1587            "DescribeCapacityBlockExtensionOfferings" => {
1588                capacity::describe_capacity_block_extension_offerings(self, &request)
1589            }
1590            "PurchaseCapacityBlockExtension" => {
1591                capacity::purchase_capacity_block_extension(self, &request)
1592            }
1593            "DescribeCapacityReservationTopology" => {
1594                capacity::describe_capacity_reservation_topology(self, &request)
1595            }
1596            "CreateInterruptibleCapacityReservationAllocation" => {
1597                capacity::create_interruptible_capacity_reservation_allocation(self, &request)
1598            }
1599            "UpdateInterruptibleCapacityReservationAllocation" => {
1600                capacity::update_interruptible_capacity_reservation_allocation(self, &request)
1601            }
1602            "DescribeReservedInstances" => reserved::describe_reserved_instances(self, &request),
1603            "DescribeReservedInstancesOfferings" => {
1604                reserved::describe_reserved_instances_offerings(self, &request)
1605            }
1606            "PurchaseReservedInstancesOffering" => {
1607                reserved::purchase_reserved_instances_offering(self, &request)
1608            }
1609            "DescribeReservedInstancesListings" => {
1610                reserved::describe_reserved_instances_listings(self, &request)
1611            }
1612            "CreateReservedInstancesListing" => {
1613                reserved::create_reserved_instances_listing(self, &request)
1614            }
1615            "CancelReservedInstancesListing" => {
1616                reserved::cancel_reserved_instances_listing(self, &request)
1617            }
1618            "DescribeReservedInstancesModifications" => {
1619                reserved::describe_reserved_instances_modifications(self, &request)
1620            }
1621            "ModifyReservedInstances" => reserved::modify_reserved_instances(self, &request),
1622            "GetReservedInstancesExchangeQuote" => {
1623                reserved::get_reserved_instances_exchange_quote(self, &request)
1624            }
1625            "AcceptReservedInstancesExchangeQuote" => {
1626                reserved::accept_reserved_instances_exchange_quote(self, &request)
1627            }
1628            "DeleteQueuedReservedInstances" => {
1629                reserved::delete_queued_reserved_instances(self, &request)
1630            }
1631            "AllocateHosts" => reserved::allocate_hosts(self, &request),
1632            "DescribeHosts" => reserved::describe_hosts(self, &request),
1633            "ModifyHosts" => reserved::modify_hosts(self, &request),
1634            "ReleaseHosts" => reserved::release_hosts(self, &request),
1635            "DescribeMacHosts" => reserved::describe_mac_hosts(self, &request),
1636            "CreateTransitGateway" => tgw::create_transit_gateway(self, &request),
1637            "DeleteTransitGateway" => tgw::delete_transit_gateway(self, &request),
1638            "DescribeTransitGateways" => tgw::describe_transit_gateways(self, &request),
1639            "ModifyTransitGateway" => tgw::modify_transit_gateway(self, &request),
1640            "CreateTransitGatewayVpcAttachment" => {
1641                tgw::create_transit_gateway_vpc_attachment(self, &request)
1642            }
1643            "DeleteTransitGatewayVpcAttachment" => {
1644                tgw::delete_transit_gateway_vpc_attachment(self, &request)
1645            }
1646            "DescribeTransitGatewayVpcAttachments" => {
1647                tgw::describe_transit_gateway_vpc_attachments(self, &request)
1648            }
1649            "ModifyTransitGatewayVpcAttachment" => {
1650                tgw::modify_transit_gateway_vpc_attachment(self, &request)
1651            }
1652            "AcceptTransitGatewayVpcAttachment" => {
1653                tgw::accept_transit_gateway_vpc_attachment(self, &request)
1654            }
1655            "RejectTransitGatewayVpcAttachment" => {
1656                tgw::reject_transit_gateway_vpc_attachment(self, &request)
1657            }
1658            "DescribeTransitGatewayAttachments" => {
1659                tgw::describe_transit_gateway_attachments(self, &request)
1660            }
1661            "CreateTransitGatewayRouteTable" => {
1662                tgw::create_transit_gateway_route_table(self, &request)
1663            }
1664            "DeleteTransitGatewayRouteTable" => {
1665                tgw::delete_transit_gateway_route_table(self, &request)
1666            }
1667            "DescribeTransitGatewayRouteTables" => {
1668                tgw::describe_transit_gateway_route_tables(self, &request)
1669            }
1670            "AssociateTransitGatewayRouteTable" => {
1671                tgw::associate_transit_gateway_route_table(self, &request)
1672            }
1673            "DisassociateTransitGatewayRouteTable" => {
1674                tgw::disassociate_transit_gateway_route_table(self, &request)
1675            }
1676            "EnableTransitGatewayRouteTablePropagation" => {
1677                tgw::enable_transit_gateway_route_table_propagation(self, &request)
1678            }
1679            "DisableTransitGatewayRouteTablePropagation" => {
1680                tgw::disable_transit_gateway_route_table_propagation(self, &request)
1681            }
1682            "CreateTransitGatewayRoute" => tgw::create_transit_gateway_route(self, &request),
1683            "DeleteTransitGatewayRoute" => tgw::delete_transit_gateway_route(self, &request),
1684            "ReplaceTransitGatewayRoute" => tgw::replace_transit_gateway_route(self, &request),
1685            "SearchTransitGatewayRoutes" => tgw::search_transit_gateway_routes(self, &request),
1686            "ExportTransitGatewayRoutes" => tgw::export_transit_gateway_routes(self, &request),
1687            "GetTransitGatewayRouteTableAssociations" => {
1688                tgw::get_transit_gateway_route_table_associations(self, &request)
1689            }
1690            "GetTransitGatewayRouteTablePropagations" => {
1691                tgw::get_transit_gateway_route_table_propagations(self, &request)
1692            }
1693            "GetTransitGatewayAttachmentPropagations" => {
1694                tgw::get_transit_gateway_attachment_propagations(self, &request)
1695            }
1696            "CreateTransitGatewayPrefixListReference" => {
1697                tgw::create_transit_gateway_prefix_list_reference(self, &request)
1698            }
1699            "DeleteTransitGatewayPrefixListReference" => {
1700                tgw::delete_transit_gateway_prefix_list_reference(self, &request)
1701            }
1702            "ModifyTransitGatewayPrefixListReference" => {
1703                tgw::modify_transit_gateway_prefix_list_reference(self, &request)
1704            }
1705            "GetTransitGatewayPrefixListReferences" => {
1706                tgw::get_transit_gateway_prefix_list_references(self, &request)
1707            }
1708            "CreateTransitGatewayPeeringAttachment" => {
1709                tgw_peering::create_transit_gateway_peering_attachment(self, &request)
1710            }
1711            "DeleteTransitGatewayPeeringAttachment" => {
1712                tgw_peering::delete_transit_gateway_peering_attachment(self, &request)
1713            }
1714            "DescribeTransitGatewayPeeringAttachments" => {
1715                tgw_peering::describe_transit_gateway_peering_attachments(self, &request)
1716            }
1717            "AcceptTransitGatewayPeeringAttachment" => {
1718                tgw_peering::accept_transit_gateway_peering_attachment(self, &request)
1719            }
1720            "RejectTransitGatewayPeeringAttachment" => {
1721                tgw_peering::reject_transit_gateway_peering_attachment(self, &request)
1722            }
1723            "CreateTransitGatewayConnect" => {
1724                tgw_peering::create_transit_gateway_connect(self, &request)
1725            }
1726            "DeleteTransitGatewayConnect" => {
1727                tgw_peering::delete_transit_gateway_connect(self, &request)
1728            }
1729            "DescribeTransitGatewayConnects" => {
1730                tgw_peering::describe_transit_gateway_connects(self, &request)
1731            }
1732            "CreateTransitGatewayConnectPeer" => {
1733                tgw_peering::create_transit_gateway_connect_peer(self, &request)
1734            }
1735            "DeleteTransitGatewayConnectPeer" => {
1736                tgw_peering::delete_transit_gateway_connect_peer(self, &request)
1737            }
1738            "DescribeTransitGatewayConnectPeers" => {
1739                tgw_peering::describe_transit_gateway_connect_peers(self, &request)
1740            }
1741            "CreateTransitGatewayPolicyTable" => {
1742                tgw_peering::create_transit_gateway_policy_table(self, &request)
1743            }
1744            "DeleteTransitGatewayPolicyTable" => {
1745                tgw_peering::delete_transit_gateway_policy_table(self, &request)
1746            }
1747            "DescribeTransitGatewayPolicyTables" => {
1748                tgw_peering::describe_transit_gateway_policy_tables(self, &request)
1749            }
1750            "AssociateTransitGatewayPolicyTable" => {
1751                tgw_peering::associate_transit_gateway_policy_table(self, &request)
1752            }
1753            "DisassociateTransitGatewayPolicyTable" => {
1754                tgw_peering::disassociate_transit_gateway_policy_table(self, &request)
1755            }
1756            "GetTransitGatewayPolicyTableAssociations" => {
1757                tgw_peering::get_transit_gateway_policy_table_associations(self, &request)
1758            }
1759            "GetTransitGatewayPolicyTableEntries" => {
1760                tgw_peering::get_transit_gateway_policy_table_entries(self, &request)
1761            }
1762            "CreateTransitGatewayRouteTableAnnouncement" => {
1763                tgw_peering::create_transit_gateway_route_table_announcement(self, &request)
1764            }
1765            "DeleteTransitGatewayRouteTableAnnouncement" => {
1766                tgw_peering::delete_transit_gateway_route_table_announcement(self, &request)
1767            }
1768            "DescribeTransitGatewayRouteTableAnnouncements" => {
1769                tgw_peering::describe_transit_gateway_route_table_announcements(self, &request)
1770            }
1771            "CreateTransitGatewayMulticastDomain" => {
1772                tgw_mcast::create_transit_gateway_multicast_domain(self, &request)
1773            }
1774            "DeleteTransitGatewayMulticastDomain" => {
1775                tgw_mcast::delete_transit_gateway_multicast_domain(self, &request)
1776            }
1777            "DescribeTransitGatewayMulticastDomains" => {
1778                tgw_mcast::describe_transit_gateway_multicast_domains(self, &request)
1779            }
1780            "AssociateTransitGatewayMulticastDomain" => {
1781                tgw_mcast::associate_transit_gateway_multicast_domain(self, &request)
1782            }
1783            "DisassociateTransitGatewayMulticastDomain" => {
1784                tgw_mcast::disassociate_transit_gateway_multicast_domain(self, &request)
1785            }
1786            "AcceptTransitGatewayMulticastDomainAssociations" => {
1787                tgw_mcast::accept_transit_gateway_multicast_domain_associations(self, &request)
1788            }
1789            "RejectTransitGatewayMulticastDomainAssociations" => {
1790                tgw_mcast::reject_transit_gateway_multicast_domain_associations(self, &request)
1791            }
1792            "GetTransitGatewayMulticastDomainAssociations" => {
1793                tgw_mcast::get_transit_gateway_multicast_domain_associations(self, &request)
1794            }
1795            "RegisterTransitGatewayMulticastGroupMembers" => {
1796                tgw_mcast::register_transit_gateway_multicast_group_members(self, &request)
1797            }
1798            "RegisterTransitGatewayMulticastGroupSources" => {
1799                tgw_mcast::register_transit_gateway_multicast_group_sources(self, &request)
1800            }
1801            "DeregisterTransitGatewayMulticastGroupMembers" => {
1802                tgw_mcast::deregister_transit_gateway_multicast_group_members(self, &request)
1803            }
1804            "DeregisterTransitGatewayMulticastGroupSources" => {
1805                tgw_mcast::deregister_transit_gateway_multicast_group_sources(self, &request)
1806            }
1807            "SearchTransitGatewayMulticastGroups" => {
1808                tgw_mcast::search_transit_gateway_multicast_groups(self, &request)
1809            }
1810            "CreateTransitGatewayMeteringPolicy" => {
1811                tgw_mcast::create_transit_gateway_metering_policy(self, &request)
1812            }
1813            "DeleteTransitGatewayMeteringPolicy" => {
1814                tgw_mcast::delete_transit_gateway_metering_policy(self, &request)
1815            }
1816            "DescribeTransitGatewayMeteringPolicies" => {
1817                tgw_mcast::describe_transit_gateway_metering_policies(self, &request)
1818            }
1819            "ModifyTransitGatewayMeteringPolicy" => {
1820                tgw_mcast::modify_transit_gateway_metering_policy(self, &request)
1821            }
1822            "CreateTransitGatewayMeteringPolicyEntry" => {
1823                tgw_mcast::create_transit_gateway_metering_policy_entry(self, &request)
1824            }
1825            "DeleteTransitGatewayMeteringPolicyEntry" => {
1826                tgw_mcast::delete_transit_gateway_metering_policy_entry(self, &request)
1827            }
1828            "GetTransitGatewayMeteringPolicyEntries" => {
1829                tgw_mcast::get_transit_gateway_metering_policy_entries(self, &request)
1830            }
1831            "AcceptTransitGatewayClientVpnAttachment" => {
1832                tgw_mcast::accept_transit_gateway_client_vpn_attachment(self, &request)
1833            }
1834            "DeleteTransitGatewayClientVpnAttachment" => {
1835                tgw_mcast::delete_transit_gateway_client_vpn_attachment(self, &request)
1836            }
1837            "RejectTransitGatewayClientVpnAttachment" => {
1838                tgw_mcast::reject_transit_gateway_client_vpn_attachment(self, &request)
1839            }
1840            "CreateCustomerGateway" => vpn::create_customer_gateway(self, &request),
1841            "DeleteCustomerGateway" => vpn::delete_customer_gateway(self, &request),
1842            "DescribeCustomerGateways" => vpn::describe_customer_gateways(self, &request),
1843            "CreateVpnGateway" => vpn::create_vpn_gateway(self, &request),
1844            "DeleteVpnGateway" => vpn::delete_vpn_gateway(self, &request),
1845            "DescribeVpnGateways" => vpn::describe_vpn_gateways(self, &request),
1846            "AttachVpnGateway" => vpn::attach_vpn_gateway(self, &request),
1847            "DetachVpnGateway" => vpn::detach_vpn_gateway(self, &request),
1848            "CreateVpnConnection" => vpn::create_vpn_connection(self, &request),
1849            "DeleteVpnConnection" => vpn::delete_vpn_connection(self, &request),
1850            "DescribeVpnConnections" => vpn::describe_vpn_connections(self, &request),
1851            "ModifyVpnConnection" => vpn::modify_vpn_connection(self, &request),
1852            "ModifyVpnConnectionOptions" => vpn::modify_vpn_connection_options(self, &request),
1853            "CreateVpnConnectionRoute" => vpn::create_vpn_connection_route(self, &request),
1854            "DeleteVpnConnectionRoute" => vpn::delete_vpn_connection_route(self, &request),
1855            "ModifyVpnTunnelOptions" => vpn::modify_vpn_tunnel_options(self, &request),
1856            "ModifyVpnTunnelCertificate" => vpn::modify_vpn_tunnel_certificate(self, &request),
1857            "ReplaceVpnTunnel" => vpn::replace_vpn_tunnel(self, &request),
1858            "GetActiveVpnTunnelStatus" => vpn::get_active_vpn_tunnel_status(self, &request),
1859            "GetVpnTunnelReplacementStatus" => {
1860                vpn::get_vpn_tunnel_replacement_status(self, &request)
1861            }
1862            "GetVpnConnectionDeviceTypes" => vpn::get_vpn_connection_device_types(self, &request),
1863            "GetVpnConnectionDeviceSampleConfiguration" => {
1864                vpn::get_vpn_connection_device_sample_configuration(self, &request)
1865            }
1866            "CreateVpnConcentrator" => vpn::create_vpn_concentrator(self, &request),
1867            "DeleteVpnConcentrator" => vpn::delete_vpn_concentrator(self, &request),
1868            "DescribeVpnConcentrators" => vpn::describe_vpn_concentrators(self, &request),
1869            "CreateClientVpnEndpoint" => cvpn::create_client_vpn_endpoint(self, &request),
1870            "DeleteClientVpnEndpoint" => cvpn::delete_client_vpn_endpoint(self, &request),
1871            "DescribeClientVpnEndpoints" => cvpn::describe_client_vpn_endpoints(self, &request),
1872            "ModifyClientVpnEndpoint" => cvpn::modify_client_vpn_endpoint(self, &request),
1873            "CreateClientVpnRoute" => cvpn::create_client_vpn_route(self, &request),
1874            "DeleteClientVpnRoute" => cvpn::delete_client_vpn_route(self, &request),
1875            "DescribeClientVpnRoutes" => cvpn::describe_client_vpn_routes(self, &request),
1876            "AuthorizeClientVpnIngress" => cvpn::authorize_client_vpn_ingress(self, &request),
1877            "RevokeClientVpnIngress" => cvpn::revoke_client_vpn_ingress(self, &request),
1878            "DescribeClientVpnAuthorizationRules" => {
1879                cvpn::describe_client_vpn_authorization_rules(self, &request)
1880            }
1881            "AssociateClientVpnTargetNetwork" => {
1882                cvpn::associate_client_vpn_target_network(self, &request)
1883            }
1884            "DisassociateClientVpnTargetNetwork" => {
1885                cvpn::disassociate_client_vpn_target_network(self, &request)
1886            }
1887            "DescribeClientVpnTargetNetworks" => {
1888                cvpn::describe_client_vpn_target_networks(self, &request)
1889            }
1890            "ApplySecurityGroupsToClientVpnTargetNetwork" => {
1891                cvpn::apply_security_groups_to_client_vpn_target_network(self, &request)
1892            }
1893            "DescribeClientVpnConnections" => cvpn::describe_client_vpn_connections(self, &request),
1894            "TerminateClientVpnConnections" => {
1895                cvpn::terminate_client_vpn_connections(self, &request)
1896            }
1897            "ExportClientVpnClientCertificateRevocationList" => {
1898                cvpn::export_client_vpn_client_certificate_revocation_list(self, &request)
1899            }
1900            "ExportClientVpnClientConfiguration" => {
1901                cvpn::export_client_vpn_client_configuration(self, &request)
1902            }
1903            "ImportClientVpnClientCertificateRevocationList" => {
1904                cvpn::import_client_vpn_client_certificate_revocation_list(self, &request)
1905            }
1906            "CreateIpam" => ipam::create_ipam(self, &request),
1907            "DeleteIpam" => ipam::delete_ipam(self, &request),
1908            "DescribeIpams" => ipam::describe_ipams(self, &request),
1909            "ModifyIpam" => ipam::modify_ipam(self, &request),
1910            "CreateIpamScope" => ipam::create_ipam_scope(self, &request),
1911            "DeleteIpamScope" => ipam::delete_ipam_scope(self, &request),
1912            "DescribeIpamScopes" => ipam::describe_ipam_scopes(self, &request),
1913            "ModifyIpamScope" => ipam::modify_ipam_scope(self, &request),
1914            "CreateIpamPool" => ipam::create_ipam_pool(self, &request),
1915            "DeleteIpamPool" => ipam::delete_ipam_pool(self, &request),
1916            "DescribeIpamPools" => ipam::describe_ipam_pools(self, &request),
1917            "ModifyIpamPool" => ipam::modify_ipam_pool(self, &request),
1918            "ProvisionIpamPoolCidr" => ipam::provision_ipam_pool_cidr(self, &request),
1919            "DeprovisionIpamPoolCidr" => ipam::deprovision_ipam_pool_cidr(self, &request),
1920            "GetIpamPoolCidrs" => ipam::get_ipam_pool_cidrs(self, &request),
1921            "AllocateIpamPoolCidr" => ipam::allocate_ipam_pool_cidr(self, &request),
1922            "ReleaseIpamPoolAllocation" => ipam::release_ipam_pool_allocation(self, &request),
1923            "GetIpamPoolAllocations" => ipam::get_ipam_pool_allocations(self, &request),
1924            "GetIpamResourceCidrs" => ipam::get_ipam_resource_cidrs(self, &request),
1925            "ModifyIpamResourceCidr" => ipam::modify_ipam_resource_cidr(self, &request),
1926            "GetIpamAddressHistory" => ipam::get_ipam_address_history(self, &request),
1927            "EnableIpamOrganizationAdminAccount" => {
1928                ipam::enable_ipam_organization_admin_account(self, &request)
1929            }
1930            "DisableIpamOrganizationAdminAccount" => {
1931                ipam::disable_ipam_organization_admin_account(self, &request)
1932            }
1933            "CreateIpamResourceDiscovery" => {
1934                ipam_discovery::create_ipam_resource_discovery(self, &request)
1935            }
1936            "DeleteIpamResourceDiscovery" => {
1937                ipam_discovery::delete_ipam_resource_discovery(self, &request)
1938            }
1939            "DescribeIpamResourceDiscoveries" => {
1940                ipam_discovery::describe_ipam_resource_discoveries(self, &request)
1941            }
1942            "ModifyIpamResourceDiscovery" => {
1943                ipam_discovery::modify_ipam_resource_discovery(self, &request)
1944            }
1945            "AssociateIpamResourceDiscovery" => {
1946                ipam_discovery::associate_ipam_resource_discovery(self, &request)
1947            }
1948            "DisassociateIpamResourceDiscovery" => {
1949                ipam_discovery::disassociate_ipam_resource_discovery(self, &request)
1950            }
1951            "DescribeIpamResourceDiscoveryAssociations" => {
1952                ipam_discovery::describe_ipam_resource_discovery_associations(self, &request)
1953            }
1954            "GetIpamDiscoveredAccounts" => {
1955                ipam_discovery::get_ipam_discovered_accounts(self, &request)
1956            }
1957            "GetIpamDiscoveredPublicAddresses" => {
1958                ipam_discovery::get_ipam_discovered_public_addresses(self, &request)
1959            }
1960            "GetIpamDiscoveredResourceCidrs" => {
1961                ipam_discovery::get_ipam_discovered_resource_cidrs(self, &request)
1962            }
1963            "AssociateIpamByoasn" => ipam_discovery::associate_ipam_byoasn(self, &request),
1964            "DisassociateIpamByoasn" => ipam_discovery::disassociate_ipam_byoasn(self, &request),
1965            "ProvisionIpamByoasn" => ipam_discovery::provision_ipam_byoasn(self, &request),
1966            "DeprovisionIpamByoasn" => ipam_discovery::deprovision_ipam_byoasn(self, &request),
1967            "DescribeIpamByoasn" => ipam_discovery::describe_ipam_byoasn(self, &request),
1968            "MoveByoipCidrToIpam" => ipam_discovery::move_byoip_cidr_to_ipam(self, &request),
1969            "CreateIpamExternalResourceVerificationToken" => {
1970                ipam_discovery::create_ipam_external_resource_verification_token(self, &request)
1971            }
1972            "DeleteIpamExternalResourceVerificationToken" => {
1973                ipam_discovery::delete_ipam_external_resource_verification_token(self, &request)
1974            }
1975            "DescribeIpamExternalResourceVerificationTokens" => {
1976                ipam_discovery::describe_ipam_external_resource_verification_tokens(self, &request)
1977            }
1978            "CreateIpamPolicy" => ipam_policy::create_ipam_policy(self, &request),
1979            "DeleteIpamPolicy" => ipam_policy::delete_ipam_policy(self, &request),
1980            "DescribeIpamPolicies" => ipam_policy::describe_ipam_policies(self, &request),
1981            "EnableIpamPolicy" => ipam_policy::enable_ipam_policy(self, &request),
1982            "DisableIpamPolicy" => ipam_policy::disable_ipam_policy(self, &request),
1983            "GetEnabledIpamPolicy" => ipam_policy::get_enabled_ipam_policy(self, &request),
1984            "GetIpamPolicyAllocationRules" => {
1985                ipam_policy::get_ipam_policy_allocation_rules(self, &request)
1986            }
1987            "ModifyIpamPolicyAllocationRules" => {
1988                ipam_policy::modify_ipam_policy_allocation_rules(self, &request)
1989            }
1990            "GetIpamPolicyOrganizationTargets" => {
1991                ipam_policy::get_ipam_policy_organization_targets(self, &request)
1992            }
1993            "CreateIpamPrefixListResolver" => {
1994                ipam_policy::create_ipam_prefix_list_resolver(self, &request)
1995            }
1996            "DeleteIpamPrefixListResolver" => {
1997                ipam_policy::delete_ipam_prefix_list_resolver(self, &request)
1998            }
1999            "DescribeIpamPrefixListResolvers" => {
2000                ipam_policy::describe_ipam_prefix_list_resolvers(self, &request)
2001            }
2002            "ModifyIpamPrefixListResolver" => {
2003                ipam_policy::modify_ipam_prefix_list_resolver(self, &request)
2004            }
2005            "CreateIpamPrefixListResolverTarget" => {
2006                ipam_policy::create_ipam_prefix_list_resolver_target(self, &request)
2007            }
2008            "DeleteIpamPrefixListResolverTarget" => {
2009                ipam_policy::delete_ipam_prefix_list_resolver_target(self, &request)
2010            }
2011            "DescribeIpamPrefixListResolverTargets" => {
2012                ipam_policy::describe_ipam_prefix_list_resolver_targets(self, &request)
2013            }
2014            "ModifyIpamPrefixListResolverTarget" => {
2015                ipam_policy::modify_ipam_prefix_list_resolver_target(self, &request)
2016            }
2017            "GetIpamPrefixListResolverRules" => {
2018                ipam_policy::get_ipam_prefix_list_resolver_rules(self, &request)
2019            }
2020            "GetIpamPrefixListResolverVersions" => {
2021                ipam_policy::get_ipam_prefix_list_resolver_versions(self, &request)
2022            }
2023            "GetIpamPrefixListResolverVersionEntries" => {
2024                ipam_policy::get_ipam_prefix_list_resolver_version_entries(self, &request)
2025            }
2026            "CreateVerifiedAccessInstance" => va::create_verified_access_instance(self, &request),
2027            "DeleteVerifiedAccessInstance" => va::delete_verified_access_instance(self, &request),
2028            "DescribeVerifiedAccessInstances" => {
2029                va::describe_verified_access_instances(self, &request)
2030            }
2031            "ModifyVerifiedAccessInstance" => va::modify_verified_access_instance(self, &request),
2032            "CreateVerifiedAccessTrustProvider" => {
2033                va::create_verified_access_trust_provider(self, &request)
2034            }
2035            "DeleteVerifiedAccessTrustProvider" => {
2036                va::delete_verified_access_trust_provider(self, &request)
2037            }
2038            "DescribeVerifiedAccessTrustProviders" => {
2039                va::describe_verified_access_trust_providers(self, &request)
2040            }
2041            "ModifyVerifiedAccessTrustProvider" => {
2042                va::modify_verified_access_trust_provider(self, &request)
2043            }
2044            "AttachVerifiedAccessTrustProvider" => {
2045                va::attach_verified_access_trust_provider(self, &request)
2046            }
2047            "DetachVerifiedAccessTrustProvider" => {
2048                va::detach_verified_access_trust_provider(self, &request)
2049            }
2050            "CreateVerifiedAccessGroup" => va::create_verified_access_group(self, &request),
2051            "DeleteVerifiedAccessGroup" => va::delete_verified_access_group(self, &request),
2052            "DescribeVerifiedAccessGroups" => va::describe_verified_access_groups(self, &request),
2053            "ModifyVerifiedAccessGroup" => va::modify_verified_access_group(self, &request),
2054            "GetVerifiedAccessGroupPolicy" => va::get_verified_access_group_policy(self, &request),
2055            "ModifyVerifiedAccessGroupPolicy" => {
2056                va::modify_verified_access_group_policy(self, &request)
2057            }
2058            "CreateVerifiedAccessEndpoint" => va::create_verified_access_endpoint(self, &request),
2059            "DeleteVerifiedAccessEndpoint" => va::delete_verified_access_endpoint(self, &request),
2060            "DescribeVerifiedAccessEndpoints" => {
2061                va::describe_verified_access_endpoints(self, &request)
2062            }
2063            "ModifyVerifiedAccessEndpoint" => va::modify_verified_access_endpoint(self, &request),
2064            "GetVerifiedAccessEndpointPolicy" => {
2065                va::get_verified_access_endpoint_policy(self, &request)
2066            }
2067            "ModifyVerifiedAccessEndpointPolicy" => {
2068                va::modify_verified_access_endpoint_policy(self, &request)
2069            }
2070            "GetVerifiedAccessEndpointTargets" => {
2071                va::get_verified_access_endpoint_targets(self, &request)
2072            }
2073            "DescribeVerifiedAccessInstanceLoggingConfigurations" => {
2074                va::describe_verified_access_instance_logging_configurations(self, &request)
2075            }
2076            "ModifyVerifiedAccessInstanceLoggingConfiguration" => {
2077                va::modify_verified_access_instance_logging_configuration(self, &request)
2078            }
2079            "ExportVerifiedAccessInstanceClientConfiguration" => {
2080                va::export_verified_access_instance_client_configuration(self, &request)
2081            }
2082            "CreateNetworkInsightsPath" => ni::create_network_insights_path(self, &request),
2083            "DeleteNetworkInsightsPath" => ni::delete_network_insights_path(self, &request),
2084            "DescribeNetworkInsightsPaths" => ni::describe_network_insights_paths(self, &request),
2085            "StartNetworkInsightsAnalysis" => ni::start_network_insights_analysis(self, &request),
2086            "DeleteNetworkInsightsAnalysis" => ni::delete_network_insights_analysis(self, &request),
2087            "DescribeNetworkInsightsAnalyses" => {
2088                ni::describe_network_insights_analyses(self, &request)
2089            }
2090            "CreateNetworkInsightsAccessScope" => {
2091                ni::create_network_insights_access_scope(self, &request)
2092            }
2093            "DeleteNetworkInsightsAccessScope" => {
2094                ni::delete_network_insights_access_scope(self, &request)
2095            }
2096            "DescribeNetworkInsightsAccessScopes" => {
2097                ni::describe_network_insights_access_scopes(self, &request)
2098            }
2099            "GetNetworkInsightsAccessScopeContent" => {
2100                ni::get_network_insights_access_scope_content(self, &request)
2101            }
2102            "StartNetworkInsightsAccessScopeAnalysis" => {
2103                ni::start_network_insights_access_scope_analysis(self, &request)
2104            }
2105            "DeleteNetworkInsightsAccessScopeAnalysis" => {
2106                ni::delete_network_insights_access_scope_analysis(self, &request)
2107            }
2108            "DescribeNetworkInsightsAccessScopeAnalyses" => {
2109                ni::describe_network_insights_access_scope_analyses(self, &request)
2110            }
2111            "GetNetworkInsightsAccessScopeAnalysisFindings" => {
2112                ni::get_network_insights_access_scope_analysis_findings(self, &request)
2113            }
2114            "CreateCarrierGateway" => lgw::create_carrier_gateway(self, &request),
2115            "DeleteCarrierGateway" => lgw::delete_carrier_gateway(self, &request),
2116            "DescribeCarrierGateways" => lgw::describe_carrier_gateways(self, &request),
2117            "CreateCoipPool" => lgw::create_coip_pool(self, &request),
2118            "DeleteCoipPool" => lgw::delete_coip_pool(self, &request),
2119            "DescribeCoipPools" => lgw::describe_coip_pools(self, &request),
2120            "CreateCoipCidr" => lgw::create_coip_cidr(self, &request),
2121            "DeleteCoipCidr" => lgw::delete_coip_cidr(self, &request),
2122            "GetCoipPoolUsage" => lgw::get_coip_pool_usage(self, &request),
2123            "CreateLocalGatewayRouteTable" => lgw::create_local_gateway_route_table(self, &request),
2124            "DeleteLocalGatewayRouteTable" => lgw::delete_local_gateway_route_table(self, &request),
2125            "DescribeLocalGatewayRouteTables" => {
2126                lgw::describe_local_gateway_route_tables(self, &request)
2127            }
2128            "CreateLocalGatewayRoute" => lgw::create_local_gateway_route(self, &request),
2129            "DeleteLocalGatewayRoute" => lgw::delete_local_gateway_route(self, &request),
2130            "ModifyLocalGatewayRoute" => lgw::modify_local_gateway_route(self, &request),
2131            "SearchLocalGatewayRoutes" => lgw::search_local_gateway_routes(self, &request),
2132            "CreateLocalGatewayRouteTableVpcAssociation" => {
2133                lgw::create_local_gateway_route_table_vpc_association(self, &request)
2134            }
2135            "DeleteLocalGatewayRouteTableVpcAssociation" => {
2136                lgw::delete_local_gateway_route_table_vpc_association(self, &request)
2137            }
2138            "DescribeLocalGatewayRouteTableVpcAssociations" => {
2139                lgw::describe_local_gateway_route_table_vpc_associations(self, &request)
2140            }
2141            "CreateLocalGatewayVirtualInterface" => {
2142                lgw::create_local_gateway_virtual_interface(self, &request)
2143            }
2144            "DeleteLocalGatewayVirtualInterface" => {
2145                lgw::delete_local_gateway_virtual_interface(self, &request)
2146            }
2147            "DescribeLocalGatewayVirtualInterfaces" => {
2148                lgw::describe_local_gateway_virtual_interfaces(self, &request)
2149            }
2150            "CreateLocalGatewayVirtualInterfaceGroup" => {
2151                lgw::create_local_gateway_virtual_interface_group(self, &request)
2152            }
2153            "DeleteLocalGatewayVirtualInterfaceGroup" => {
2154                lgw::delete_local_gateway_virtual_interface_group(self, &request)
2155            }
2156            "DescribeLocalGatewayVirtualInterfaceGroups" => {
2157                lgw::describe_local_gateway_virtual_interface_groups(self, &request)
2158            }
2159            "CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation" => {
2160                lgw::create_local_gateway_route_table_virtual_interface_group_association(
2161                    self, &request,
2162                )
2163            }
2164            "DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation" => {
2165                lgw::delete_local_gateway_route_table_virtual_interface_group_association(
2166                    self, &request,
2167                )
2168            }
2169            "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations" => {
2170                lgw::describe_local_gateway_route_table_virtual_interface_group_associations(
2171                    self, &request,
2172                )
2173            }
2174            "DescribeLocalGateways" => lgw::describe_local_gateways(self, &request),
2175            "CreateInstanceConnectEndpoint" => {
2176                ice::create_instance_connect_endpoint(self, &request)
2177            }
2178            "DeleteInstanceConnectEndpoint" => {
2179                ice::delete_instance_connect_endpoint(self, &request)
2180            }
2181            "DescribeInstanceConnectEndpoints" => {
2182                ice::describe_instance_connect_endpoints(self, &request)
2183            }
2184            "ModifyInstanceConnectEndpoint" => {
2185                ice::modify_instance_connect_endpoint(self, &request)
2186            }
2187            "EnableFastLaunch" => ice::enable_fast_launch(self, &request),
2188            "DisableFastLaunch" => ice::disable_fast_launch(self, &request),
2189            "EnableSerialConsoleAccess" => ice::enable_serial_console_access(self, &request),
2190            "DisableSerialConsoleAccess" => ice::disable_serial_console_access(self, &request),
2191            "GetSerialConsoleAccessStatus" => ice::get_serial_console_access_status(self, &request),
2192            "GetConsoleOutput" => ice::get_console_output(self, &request).await,
2193            "GetConsoleScreenshot" => ice::get_console_screenshot(self, &request),
2194            "GetPasswordData" => ice::get_password_data(self, &request),
2195            "AdvertiseByoipCidr" => rest::advertise_byoip_cidr(self, &request),
2196            "AssociateEnclaveCertificateIamRole" => {
2197                rest::associate_enclave_certificate_iam_role(self, &request)
2198            }
2199            "AssociateIamInstanceProfile" => rest::associate_iam_instance_profile(self, &request),
2200            "AssociateInstanceEventWindow" => rest::associate_instance_event_window(self, &request),
2201            "AssociateRouteServer" => rest::associate_route_server(self, &request),
2202            "AssociateTrunkInterface" => rest::associate_trunk_interface(self, &request),
2203            "AttachClassicLinkVpc" => rest::attach_classic_link_vpc(self, &request),
2204            "BundleInstance" => rest::bundle_instance(self, &request),
2205            "CancelBundleTask" => rest::cancel_bundle_task(self, &request),
2206            "CancelConversionTask" => rest::cancel_conversion_task(self, &request),
2207            "CancelDeclarativePoliciesReport" => {
2208                rest::cancel_declarative_policies_report(self, &request)
2209            }
2210            "CancelExportTask" => rest::cancel_export_task(self, &request),
2211            "CancelImportTask" => rest::cancel_import_task(self, &request),
2212            "ConfirmProductInstance" => rest::confirm_product_instance(self, &request),
2213            "CopyFpgaImage" => rest::copy_fpga_image(self, &request),
2214            "CopyVolumes" => rest::copy_volumes(self, &request),
2215            "CreateCapacityManagerDataExport" => {
2216                rest::create_capacity_manager_data_export(self, &request)
2217            }
2218            "CreateDelegateMacVolumeOwnershipTask" => {
2219                rest::create_delegate_mac_volume_ownership_task(self, &request)
2220            }
2221            "CreateFpgaImage" => rest::create_fpga_image(self, &request),
2222            "CreateImageUsageReport" => rest::create_image_usage_report(self, &request),
2223            "CreateInstanceEventWindow" => rest::create_instance_event_window(self, &request),
2224            "CreateInstanceExportTask" => rest::create_instance_export_task(self, &request),
2225            "CreateMacSystemIntegrityProtectionModificationTask" => {
2226                rest::create_mac_system_integrity_protection_modification_task(self, &request)
2227            }
2228            "CreateManagedPrefixList" => rest::create_managed_prefix_list(self, &request),
2229            "CreatePublicIpv4Pool" => rest::create_public_ipv4_pool(self, &request),
2230            "CreateReplaceRootVolumeTask" => rest::create_replace_root_volume_task(self, &request),
2231            "CreateRouteServer" => rest::create_route_server(self, &request),
2232            "CreateRouteServerEndpoint" => rest::create_route_server_endpoint(self, &request),
2233            "CreateRouteServerPeer" => rest::create_route_server_peer(self, &request),
2234            "CreateSecondaryNetwork" => rest::create_secondary_network(self, &request),
2235            "CreateTrafficMirrorFilter" => rest::create_traffic_mirror_filter(self, &request),
2236            "CreateTrafficMirrorFilterRule" => {
2237                rest::create_traffic_mirror_filter_rule(self, &request)
2238            }
2239            "CreateTrafficMirrorSession" => rest::create_traffic_mirror_session(self, &request),
2240            "CreateTrafficMirrorTarget" => rest::create_traffic_mirror_target(self, &request),
2241            "CreateVpcBlockPublicAccessExclusion" => {
2242                rest::create_vpc_block_public_access_exclusion(self, &request)
2243            }
2244            "CreateVpcEncryptionControl" => rest::create_vpc_encryption_control(self, &request),
2245            "DeleteCapacityManagerDataExport" => {
2246                rest::delete_capacity_manager_data_export(self, &request)
2247            }
2248            "DeleteFpgaImage" => rest::delete_fpga_image(self, &request),
2249            "DeleteImageUsageReport" => rest::delete_image_usage_report(self, &request),
2250            "DeleteInstanceEventWindow" => rest::delete_instance_event_window(self, &request),
2251            "DeleteManagedPrefixList" => rest::delete_managed_prefix_list(self, &request),
2252            "DeletePublicIpv4Pool" => rest::delete_public_ipv4_pool(self, &request),
2253            "DeleteRouteServer" => rest::delete_route_server(self, &request),
2254            "DeleteRouteServerEndpoint" => rest::delete_route_server_endpoint(self, &request),
2255            "DeleteRouteServerPeer" => rest::delete_route_server_peer(self, &request),
2256            "DeleteSecondaryNetwork" => rest::delete_secondary_network(self, &request),
2257            "DeleteTrafficMirrorFilter" => rest::delete_traffic_mirror_filter(self, &request),
2258            "DeleteTrafficMirrorFilterRule" => {
2259                rest::delete_traffic_mirror_filter_rule(self, &request)
2260            }
2261            "DeleteTrafficMirrorSession" => rest::delete_traffic_mirror_session(self, &request),
2262            "DeleteTrafficMirrorTarget" => rest::delete_traffic_mirror_target(self, &request),
2263            "DeleteVpcBlockPublicAccessExclusion" => {
2264                rest::delete_vpc_block_public_access_exclusion(self, &request)
2265            }
2266            "DeleteVpcEncryptionControl" => rest::delete_vpc_encryption_control(self, &request),
2267            "DeprovisionByoipCidr" => rest::deprovision_byoip_cidr(self, &request),
2268            "DeprovisionPublicIpv4PoolCidr" => {
2269                rest::deprovision_public_ipv4_pool_cidr(self, &request)
2270            }
2271            "DescribeAggregateIdFormat" => rest::describe_aggregate_id_format(self, &request),
2272            "DescribeAwsNetworkPerformanceMetricSubscriptions" => {
2273                rest::describe_aws_network_performance_metric_subscriptions(self, &request)
2274            }
2275            "DescribeBundleTasks" => rest::describe_bundle_tasks(self, &request),
2276            "DescribeByoipCidrs" => rest::describe_byoip_cidrs(self, &request),
2277            "DescribeCapacityManagerDataExports" => {
2278                rest::describe_capacity_manager_data_exports(self, &request)
2279            }
2280            "DescribeClassicLinkInstances" => rest::describe_classic_link_instances(self, &request),
2281            "DescribeConversionTasks" => rest::describe_conversion_tasks(self, &request),
2282            "DescribeDeclarativePoliciesReports" => {
2283                rest::describe_declarative_policies_reports(self, &request)
2284            }
2285            "DescribeElasticGpus" => rest::describe_elastic_gpus(self, &request),
2286            "DescribeExportImageTasks" => rest::describe_export_image_tasks(self, &request),
2287            "DescribeExportTasks" => rest::describe_export_tasks(self, &request),
2288            "DescribeFpgaImageAttribute" => rest::describe_fpga_image_attribute(self, &request),
2289            "DescribeFpgaImages" => rest::describe_fpga_images(self, &request),
2290            "DescribeHostReservationOfferings" => {
2291                rest::describe_host_reservation_offerings(self, &request)
2292            }
2293            "DescribeHostReservations" => rest::describe_host_reservations(self, &request),
2294            "DescribeIamInstanceProfileAssociations" => {
2295                rest::describe_iam_instance_profile_associations(self, &request)
2296            }
2297            "DescribeIdFormat" => rest::describe_id_format(self, &request),
2298            "DescribeIdentityIdFormat" => rest::describe_identity_id_format(self, &request),
2299            "DescribeImageReferences" => rest::describe_image_references(self, &request),
2300            "DescribeImageUsageReportEntries" => {
2301                rest::describe_image_usage_report_entries(self, &request)
2302            }
2303            "DescribeImageUsageReports" => rest::describe_image_usage_reports(self, &request),
2304            "DescribeImportImageTasks" => rest::describe_import_image_tasks(self, &request),
2305            "DescribeImportSnapshotTasks" => rest::describe_import_snapshot_tasks(self, &request),
2306            "DescribeInstanceEventWindows" => rest::describe_instance_event_windows(self, &request),
2307            "DescribeInstanceImageMetadata" => {
2308                rest::describe_instance_image_metadata(self, &request)
2309            }
2310            "DescribeInstanceSqlHaHistoryStates" => {
2311                rest::describe_instance_sql_ha_history_states(self, &request)
2312            }
2313            "DescribeInstanceSqlHaStates" => rest::describe_instance_sql_ha_states(self, &request),
2314            "DescribeInstanceTypeOfferings" => {
2315                rest::describe_instance_type_offerings(self, &request)
2316            }
2317            "DescribeIpv6Pools" => rest::describe_ipv6_pools(self, &request),
2318            "DescribeMacModificationTasks" => rest::describe_mac_modification_tasks(self, &request),
2319            "DescribeManagedPrefixLists" => rest::describe_managed_prefix_lists(self, &request),
2320            "DescribeOutpostLags" => rest::describe_outpost_lags(self, &request),
2321            "DescribePrefixLists" => rest::describe_prefix_lists(self, &request),
2322            "DescribePrincipalIdFormat" => rest::describe_principal_id_format(self, &request),
2323            "DescribePublicIpv4Pools" => rest::describe_public_ipv4_pools(self, &request),
2324            "DescribeReplaceRootVolumeTasks" => {
2325                rest::describe_replace_root_volume_tasks(self, &request)
2326            }
2327            "DescribeRouteServerEndpoints" => rest::describe_route_server_endpoints(self, &request),
2328            "DescribeRouteServerPeers" => rest::describe_route_server_peers(self, &request),
2329            "DescribeRouteServers" => rest::describe_route_servers(self, &request),
2330            "DescribeScheduledInstanceAvailability" => {
2331                rest::describe_scheduled_instance_availability(self, &request)
2332            }
2333            "DescribeScheduledInstances" => rest::describe_scheduled_instances(self, &request),
2334            "DescribeSecondaryInterfaces" => rest::describe_secondary_interfaces(self, &request),
2335            "DescribeSecondaryNetworks" => rest::describe_secondary_networks(self, &request),
2336            "DescribeServiceLinkVirtualInterfaces" => {
2337                rest::describe_service_link_virtual_interfaces(self, &request)
2338            }
2339            "DescribeTrafficMirrorFilterRules" => {
2340                rest::describe_traffic_mirror_filter_rules(self, &request)
2341            }
2342            "DescribeTrafficMirrorFilters" => rest::describe_traffic_mirror_filters(self, &request),
2343            "DescribeTrafficMirrorSessions" => {
2344                rest::describe_traffic_mirror_sessions(self, &request)
2345            }
2346            "DescribeTrafficMirrorTargets" => rest::describe_traffic_mirror_targets(self, &request),
2347            "DescribeTrunkInterfaceAssociations" => {
2348                rest::describe_trunk_interface_associations(self, &request)
2349            }
2350            "DescribeVpcBlockPublicAccessExclusions" => {
2351                rest::describe_vpc_block_public_access_exclusions(self, &request)
2352            }
2353            "DescribeVpcBlockPublicAccessOptions" => {
2354                rest::describe_vpc_block_public_access_options(self, &request)
2355            }
2356            "DescribeVpcClassicLink" => rest::describe_vpc_classic_link(self, &request),
2357            "DescribeVpcClassicLinkDnsSupport" => {
2358                rest::describe_vpc_classic_link_dns_support(self, &request)
2359            }
2360            "DescribeVpcEncryptionControls" => {
2361                rest::describe_vpc_encryption_controls(self, &request)
2362            }
2363            "DetachClassicLinkVpc" => rest::detach_classic_link_vpc(self, &request),
2364            "DisableAwsNetworkPerformanceMetricSubscription" => {
2365                rest::disable_aws_network_performance_metric_subscription(self, &request)
2366            }
2367            "DisableCapacityManager" => rest::disable_capacity_manager(self, &request),
2368            "DisableInstanceSqlHaStandbyDetections" => {
2369                rest::disable_instance_sql_ha_standby_detections(self, &request)
2370            }
2371            "DisableRouteServerPropagation" => {
2372                rest::disable_route_server_propagation(self, &request)
2373            }
2374            "DisableVgwRoutePropagation" => rest::disable_vgw_route_propagation(self, &request),
2375            "DisableVpcClassicLink" => rest::disable_vpc_classic_link(self, &request),
2376            "DisableVpcClassicLinkDnsSupport" => {
2377                rest::disable_vpc_classic_link_dns_support(self, &request)
2378            }
2379            "DisassociateEnclaveCertificateIamRole" => {
2380                rest::disassociate_enclave_certificate_iam_role(self, &request)
2381            }
2382            "DisassociateIamInstanceProfile" => {
2383                rest::disassociate_iam_instance_profile(self, &request)
2384            }
2385            "DisassociateInstanceEventWindow" => {
2386                rest::disassociate_instance_event_window(self, &request)
2387            }
2388            "DisassociateRouteServer" => rest::disassociate_route_server(self, &request),
2389            "DisassociateTrunkInterface" => rest::disassociate_trunk_interface(self, &request),
2390            "EnableAwsNetworkPerformanceMetricSubscription" => {
2391                rest::enable_aws_network_performance_metric_subscription(self, &request)
2392            }
2393            "EnableCapacityManager" => rest::enable_capacity_manager(self, &request),
2394            "EnableInstanceSqlHaStandbyDetections" => {
2395                rest::enable_instance_sql_ha_standby_detections(self, &request)
2396            }
2397            "EnableReachabilityAnalyzerOrganizationSharing" => {
2398                rest::enable_reachability_analyzer_organization_sharing(self, &request)
2399            }
2400            "EnableRouteServerPropagation" => rest::enable_route_server_propagation(self, &request),
2401            "EnableVgwRoutePropagation" => rest::enable_vgw_route_propagation(self, &request),
2402            "EnableVpcClassicLink" => rest::enable_vpc_classic_link(self, &request),
2403            "EnableVpcClassicLinkDnsSupport" => {
2404                rest::enable_vpc_classic_link_dns_support(self, &request)
2405            }
2406            "ExportImage" => rest::export_image(self, &request),
2407            "GetAssociatedEnclaveCertificateIamRoles" => {
2408                rest::get_associated_enclave_certificate_iam_roles(self, &request)
2409            }
2410            "GetAssociatedIpv6PoolCidrs" => rest::get_associated_ipv6_pool_cidrs(self, &request),
2411            "GetAwsNetworkPerformanceData" => {
2412                rest::get_aws_network_performance_data(self, &request)
2413            }
2414            "GetCapacityManagerAttributes" => rest::get_capacity_manager_attributes(self, &request),
2415            "GetCapacityManagerMetricData" => {
2416                rest::get_capacity_manager_metric_data(self, &request)
2417            }
2418            "GetCapacityManagerMetricDimensions" => {
2419                rest::get_capacity_manager_metric_dimensions(self, &request)
2420            }
2421            "GetCapacityManagerMonitoredTagKeys" => {
2422                rest::get_capacity_manager_monitored_tag_keys(self, &request)
2423            }
2424            "GetDeclarativePoliciesReportSummary" => {
2425                rest::get_declarative_policies_report_summary(self, &request)
2426            }
2427            "GetDefaultCreditSpecification" => {
2428                rest::get_default_credit_specification(self, &request)
2429            }
2430            "GetHostReservationPurchasePreview" => {
2431                rest::get_host_reservation_purchase_preview(self, &request)
2432            }
2433            "GetImageAncestry" => rest::get_image_ancestry(self, &request),
2434            "GetInstanceTpmEkPub" => rest::get_instance_tpm_ek_pub(self, &request),
2435            "GetInstanceUefiData" => rest::get_instance_uefi_data(self, &request),
2436            "GetManagedPrefixListAssociations" => {
2437                rest::get_managed_prefix_list_associations(self, &request)
2438            }
2439            "GetManagedPrefixListEntries" => rest::get_managed_prefix_list_entries(self, &request),
2440            "GetManagedResourceVisibility" => rest::get_managed_resource_visibility(self, &request),
2441            "GetRouteServerAssociations" => rest::get_route_server_associations(self, &request),
2442            "GetRouteServerPropagations" => rest::get_route_server_propagations(self, &request),
2443            "GetRouteServerRoutingDatabase" => {
2444                rest::get_route_server_routing_database(self, &request)
2445            }
2446            "GetVpcResourcesBlockingEncryptionEnforcement" => {
2447                rest::get_vpc_resources_blocking_encryption_enforcement(self, &request)
2448            }
2449            "ImportImage" => rest::import_image(self, &request),
2450            "ImportInstance" => rest::import_instance(self, &request),
2451            "ImportSnapshot" => rest::import_snapshot(self, &request),
2452            "ImportVolume" => rest::import_volume(self, &request),
2453            "ModifyAvailabilityZoneGroup" => rest::modify_availability_zone_group(self, &request),
2454            "ModifyDefaultCreditSpecification" => {
2455                rest::modify_default_credit_specification(self, &request)
2456            }
2457            "ModifyFpgaImageAttribute" => rest::modify_fpga_image_attribute(self, &request),
2458            "ModifyIdFormat" => rest::modify_id_format(self, &request),
2459            "ModifyIdentityIdFormat" => rest::modify_identity_id_format(self, &request),
2460            "ModifyInstanceEventWindow" => rest::modify_instance_event_window(self, &request),
2461            "ModifyManagedPrefixList" => rest::modify_managed_prefix_list(self, &request),
2462            "ModifyManagedResourceVisibility" => {
2463                rest::modify_managed_resource_visibility(self, &request)
2464            }
2465            "ModifyPrivateDnsNameOptions" => rest::modify_private_dns_name_options(self, &request),
2466            "ModifyPublicIpDnsNameOptions" => {
2467                rest::modify_public_ip_dns_name_options(self, &request)
2468            }
2469            "ModifyRouteServer" => rest::modify_route_server(self, &request),
2470            "ModifyTrafficMirrorFilterNetworkServices" => {
2471                rest::modify_traffic_mirror_filter_network_services(self, &request)
2472            }
2473            "ModifyTrafficMirrorFilterRule" => {
2474                rest::modify_traffic_mirror_filter_rule(self, &request)
2475            }
2476            "ModifyTrafficMirrorSession" => rest::modify_traffic_mirror_session(self, &request),
2477            "ModifyVpcBlockPublicAccessExclusion" => {
2478                rest::modify_vpc_block_public_access_exclusion(self, &request)
2479            }
2480            "ModifyVpcBlockPublicAccessOptions" => {
2481                rest::modify_vpc_block_public_access_options(self, &request)
2482            }
2483            "ModifyVpcEncryptionControl" => rest::modify_vpc_encryption_control(self, &request),
2484            "ProvisionByoipCidr" => rest::provision_byoip_cidr(self, &request),
2485            "ProvisionPublicIpv4PoolCidr" => rest::provision_public_ipv4_pool_cidr(self, &request),
2486            "PurchaseHostReservation" => rest::purchase_host_reservation(self, &request),
2487            "PurchaseScheduledInstances" => rest::purchase_scheduled_instances(self, &request),
2488            "ReplaceIamInstanceProfileAssociation" => {
2489                rest::replace_iam_instance_profile_association(self, &request)
2490            }
2491            "ResetFpgaImageAttribute" => rest::reset_fpga_image_attribute(self, &request),
2492            "RestoreManagedPrefixListVersion" => {
2493                rest::restore_managed_prefix_list_version(self, &request)
2494            }
2495            "RunScheduledInstances" => rest::run_scheduled_instances(self, &request),
2496            "SendDiagnosticInterrupt" => rest::send_diagnostic_interrupt(self, &request),
2497            "StartDeclarativePoliciesReport" => {
2498                rest::start_declarative_policies_report(self, &request)
2499            }
2500            "UpdateCapacityManagerMonitoredTagKeys" => {
2501                rest::update_capacity_manager_monitored_tag_keys(self, &request)
2502            }
2503            "UpdateCapacityManagerOrganizationsAccess" => {
2504                rest::update_capacity_manager_organizations_access(self, &request)
2505            }
2506            "WithdrawByoipCidr" => rest::withdraw_byoip_cidr(self, &request),
2507            // Model ops absent from the vendored SDK client; tested via raw query.
2508            "CreateCapacityReservationCancellationQuote" => {
2509                rest::create_capacity_reservation_cancellation_quote(self, &request)
2510            }
2511            "DescribeCapacityReservationCancellationQuotes" => {
2512                rest::describe_capacity_reservation_cancellation_quotes(self, &request)
2513            }
2514            "DescribeIpamPoolAllocations" => rest::describe_ipam_pool_allocations(self, &request),
2515            "ModifyIpamPoolAllocation" => rest::modify_ipam_pool_allocation(self, &request),
2516            other => Err(AwsServiceError::aws_error(
2517                StatusCode::BAD_REQUEST,
2518                "InvalidAction",
2519                format!("The action {other} is not valid for this web service."),
2520            )),
2521        }
2522    }
2523}
2524
2525impl Ec2Service {
2526    /// Render an `ec2Query` response for `action` with `body` as the inner XML.
2527    pub(crate) fn respond(action: &str, request_id: &str, body: &str) -> AwsResponse {
2528        AwsResponse::xml(
2529            StatusCode::OK,
2530            fakecloud_aws::ec2query::ec2_response(action, request_id, body),
2531        )
2532    }
2533}