diff --git a/changes/unreleased/Added-20261008-235900.yaml b/changes/unreleased/Added-20261008-235900.yaml new file mode 100644 index 00000000..1577d3de --- /dev/null +++ b/changes/unreleased/Added-20261008-235900.yaml @@ -0,0 +1,3 @@ +kind: Added +body: Implement Phase 1C compute and network integrations by adding aws.protocols#ec2Query protocol detection in codegen parser, CRUD fallback engine XML response support with requestId and item list element wrappers, gateway error routing for ec2-query, and wiring EC2 unhandled operations into the fallback CRUD engine, promoting 498 EC2 operations to auto-crud. +time: 2026-10-08T23:59:00.000000+09:00 diff --git a/docs/coverage.md b/docs/coverage.md index 1461e5ed..e6c414b4 100644 --- a/docs/coverage.md +++ b/docs/coverage.md @@ -17,8 +17,8 @@ denominators, because [routing and depth are two targets](#the-target): | Tier | Serving target | All registered | |---|---|---| | `hand-verified` | 4,601 | 4,632 | -| `auto-crud` | 5,882 | 11,560 | -| `unimplemented` | 1,924 | 3,009 | +| `auto-crud` | 6,380 | 12,058 | +| `unimplemented` | 1,426 | 2,511 | | **total known** | **12,407** | **19,201** | | **hand-verified share** | **37.1%** | **24.1%** | diff --git a/docs/roadmap.md b/docs/roadmap.md index 95de6989..e16023ca 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -53,7 +53,11 @@ across IAM (MFA devices, password changes, service credentials, SSH/server/signi OIDC provider client IDs, delegation requests, access/credential reports, policy simulation, and org root credentials/sessions) and STS (AssumeRoleWithWebIdentity, AssumeRoleWithSAML, AssumeRoot, DecodeAuthorizationMessage, GetDelegatedAccessToken, GetFederationToken, GetWebIdentityToken). -The original 3,085-operation unimplemented baseline has **3,009 remaining**; +Phase 1C Compute & Network added `aws.protocols#ec2Query` protocol detection, +CRUD engine XML response support (``, item list tags), gateway error routing, +and wired EC2 unhandled operations into the fallback CRUD engine, promoting 498 EC2 +operations into `auto-crud`. +The original 3,085-operation unimplemented baseline has **2,511 remaining**; complete AWS operation support is still in progress across subsequent bundles. See [EventBridge](services/eventbridge.md), [SNS](services/sns.md), [S3](services/s3.md) and [IAM/STS](services/iam-sts.md) for local limits. diff --git a/internal/codegen/gen_crud_meta.go b/internal/codegen/gen_crud_meta.go index e1465a63..de3ab621 100644 --- a/internal/codegen/gen_crud_meta.go +++ b/internal/codegen/gen_crud_meta.go @@ -163,8 +163,8 @@ func classifyOps(model *ir.Model) []crudOpData { // matches it by the Action field of the form body instead. It is admitted here // because that is a place the operation name genuinely is, not a guess. // -// ec2-query stays out. It is form-encoded like query but not interchangeable -// with it, and the only service that speaks it has a hand-written provider. +// ec2-query is form-encoded like query and admitted here so that EC2's +// unhandled operations can fall back to the CRUD engine. // // This is deliberately the same question crud.Servable answers at runtime. The // two must agree: a protocol classified here but refused there registers @@ -172,7 +172,8 @@ func classifyOps(model *ir.Model) []crudOpData { // auto-crud. func engineServable(protocol string) bool { return strings.HasPrefix(protocol, "json") || - protocol == "rest-json" || protocol == "rest-xml" || protocol == "query" + protocol == "rest-json" || protocol == "rest-xml" || protocol == "query" || + protocol == "ec2-query" } // ServiceCRUDData classifies an engine-servable model's CRUD operations. It diff --git a/internal/codegen/gen_crud_meta_test.go b/internal/codegen/gen_crud_meta_test.go index e8ef279d..75ae4795 100644 --- a/internal/codegen/gen_crud_meta_test.go +++ b/internal/codegen/gen_crud_meta_test.go @@ -138,16 +138,24 @@ func TestServiceCRUDDataAdmitsQuery(t *testing.T) { assert.Empty(t, ops["DescribeLoadBalancers"].URI) } -// TestServiceCRUDDataRejectsEC2Query holds the remaining boundary. ec2Query is -// form-encoded like query but not interchangeable with it, and the only service -// that speaks it has a hand-written provider that never reaches the engine. -func TestServiceCRUDDataRejectsEC2Query(t *testing.T) { +// TestServiceCRUDDataAdmitsEC2Query verifies that ec2-query is engine-servable. +// Like query, it has no HTTP binding so it contributes no REST routes, but its +// operations can be served by the fallback engine. +func TestServiceCRUDDataAdmitsEC2Query(t *testing.T) { model := crudModel("ec2-query", ir.Operation{Name: "DescribeInstances", OutputName: "DescribeInstancesOutput"}, ) - _, ok := ServiceCRUDData(model) - assert.False(t, ok, "ec2-query must not be engine-servable") + data, ok := ServiceCRUDData(model) + require.True(t, ok, "ec2-query must be engine-servable") + + ops := map[string]crudOpData{} + for _, op := range data.Ops { + ops[op.Op] = op + } + assert.Empty(t, ops["DescribeInstances"].Method) + assert.Empty(t, ops["DescribeInstances"].URI) + assert.Equal(t, "Get", ops["DescribeInstances"].Verb) } // TestServiceCRUDDataSkipsUnclassifiableService is the rds-data case: a diff --git a/internal/codegen/parser.go b/internal/codegen/parser.go index 0430cc54..f744f50f 100644 --- a/internal/codegen/parser.go +++ b/internal/codegen/parser.go @@ -450,6 +450,9 @@ func detectProtocol(s *rawShape) string { if _, ok := s.Traits["aws.protocols#awsQuery"]; ok { return "query" } + if _, ok := s.Traits["aws.protocols#ec2Query"]; ok { + return "ec2-query" + } if _, ok := s.Traits["aws.protocols#restJson1"]; ok { return "rest-json" } diff --git a/internal/gateway/router.go b/internal/gateway/router.go index 1a4605fa..ff47654a 100644 --- a/internal/gateway/router.go +++ b/internal/gateway/router.go @@ -185,7 +185,7 @@ func extractOperationName(r *http.Request, protocol string) string { return target[idx+1:] } return target - case protocol == "query": + case protocol == "query" || protocol == "ec2-query": // Only check URL query params — do NOT call r.FormValue() which // consumes the request body. The service provider will parse the // form body itself and extract the Action. @@ -215,6 +215,18 @@ type awsQueryError struct { Message string `xml:"Error>Message"` } +// awsEC2QueryError is the EC2 Query-protocol error envelope. +type awsEC2QueryError struct { + XMLName xml.Name `xml:"Response"` + Errors struct { + Error struct { + Code string `xml:"Code"` + Message string `xml:"Message"` + } `xml:"Error"` + } `xml:"Errors"` + RequestID string `xml:"RequestID,omitempty"` +} + // awsJSONError is the envelope for a JSON-format AWS error response. type awsJSONError struct { Code string `json:"__type"` @@ -239,12 +251,20 @@ func writeAWSError(w http.ResponseWriter, protocol string, status int, code, mes } var body []byte - if protocol == "query" { + ct := "application/xml" + switch protocol { + case "query": body, _ = xml.Marshal(awsQueryError{Type: "Sender", Code: code, Message: message}) - } else { + case "ec2-query": + e := awsEC2QueryError{RequestID: "req-err"} + e.Errors.Error.Code = code + e.Errors.Error.Message = message + body, _ = xml.Marshal(e) + ct = "text/xml" + default: body, _ = xml.Marshal(awsXMLError{Code: code, Message: message}) } - w.Header().Set("Content-Type", "application/xml") + w.Header().Set("Content-Type", ct) w.WriteHeader(status) _, _ = w.Write([]byte(xml.Header)) _, _ = w.Write(body) diff --git a/internal/generated/compat/services.json b/internal/generated/compat/services.json index baf96e44..8395923e 100644 --- a/internal/generated/compat/services.json +++ b/internal/generated/compat/services.json @@ -5947,7 +5947,7 @@ ] }, "ec2": { - "protocol": "", + "protocol": "ec2-query", "servedOps": [ "AllocateAddress", "AssociateAddress", @@ -5958,54 +5958,548 @@ "AuthorizeSecurityGroupIngress", "CopyImage", "CopySnapshot", + "CreateCapacityManagerDataExport", + "CreateCapacityReservation", + "CreateCapacityReservationBySplitting", + "CreateCapacityReservationFleet", + "CreateCarrierGateway", + "CreateClientVpnEndpoint", + "CreateClientVpnRoute", + "CreateCoipCidr", + "CreateCoipPool", + "CreateCustomerGateway", + "CreateDefaultSubnet", + "CreateDefaultVpc", + "CreateDelegateMacVolumeOwnershipTask", + "CreateDhcpOptions", + "CreateEgressOnlyInternetGateway", + "CreateFleet", + "CreateFlowLogs", + "CreateFpgaImage", "CreateImage", + "CreateImageUsageReport", + "CreateInstanceConnectEndpoint", + "CreateInstanceEventWindow", + "CreateInstanceExportTask", "CreateInternetGateway", + "CreateInterruptibleCapacityReservationAllocation", + "CreateIpam", + "CreateIpamExternalResourceVerificationToken", + "CreateIpamPolicy", + "CreateIpamPool", + "CreateIpamPrefixListResolver", + "CreateIpamPrefixListResolverTarget", + "CreateIpamResourceDiscovery", + "CreateIpamScope", "CreateKeyPair", + "CreateLaunchTemplate", + "CreateLaunchTemplateVersion", + "CreateLocalGatewayRoute", + "CreateLocalGatewayRouteTable", + "CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "CreateLocalGatewayRouteTableVpcAssociation", + "CreateLocalGatewayVirtualInterface", + "CreateLocalGatewayVirtualInterfaceGroup", + "CreateMacSystemIntegrityProtectionModificationTask", + "CreateManagedPrefixList", + "CreateNatGateway", "CreateNetworkAcl", "CreateNetworkAclEntry", + "CreateNetworkInsightsAccessScope", + "CreateNetworkInsightsPath", + "CreateNetworkInterface", + "CreateNetworkInterfacePermission", + "CreatePlacementGroup", + "CreatePublicIpv4Pool", + "CreateReplaceRootVolumeTask", + "CreateReservedInstancesListing", + "CreateRestoreImageTask", "CreateRoute", + "CreateRouteServer", + "CreateRouteServerEndpoint", + "CreateRouteServerPeer", "CreateRouteTable", + "CreateSecondaryNetwork", + "CreateSecondarySubnet", "CreateSecurityGroup", "CreateSnapshot", + "CreateSnapshots", + "CreateSpotDatafeedSubscription", + "CreateStoreImageTask", "CreateSubnet", + "CreateSubnetCidrReservation", "CreateTags", + "CreateTrafficMirrorFilter", + "CreateTrafficMirrorFilterRule", + "CreateTrafficMirrorSession", + "CreateTrafficMirrorTarget", + "CreateTransitGateway", + "CreateTransitGatewayConnect", + "CreateTransitGatewayConnectPeer", + "CreateTransitGatewayMeteringPolicy", + "CreateTransitGatewayMeteringPolicyEntry", + "CreateTransitGatewayMulticastDomain", + "CreateTransitGatewayPeeringAttachment", + "CreateTransitGatewayPolicyTable", + "CreateTransitGatewayPrefixListReference", + "CreateTransitGatewayRoute", + "CreateTransitGatewayRouteTable", + "CreateTransitGatewayRouteTableAnnouncement", + "CreateTransitGatewayVpcAttachment", + "CreateVerifiedAccessEndpoint", + "CreateVerifiedAccessGroup", + "CreateVerifiedAccessInstance", + "CreateVerifiedAccessTrustProvider", "CreateVolume", "CreateVpc", + "CreateVpcBlockPublicAccessExclusion", + "CreateVpcEncryptionControl", + "CreateVpcEndpoint", + "CreateVpcEndpointConnectionNotification", + "CreateVpcEndpointServiceConfiguration", + "CreateVpcPeeringConnection", + "CreateVpnConcentrator", + "CreateVpnConnection", + "CreateVpnConnectionRoute", + "CreateVpnGateway", + "DeleteCapacityManagerDataExport", + "DeleteCarrierGateway", + "DeleteClientVpnEndpoint", + "DeleteClientVpnRoute", + "DeleteCoipCidr", + "DeleteCoipPool", + "DeleteCustomerGateway", + "DeleteDhcpOptions", + "DeleteEgressOnlyInternetGateway", + "DeleteFleets", + "DeleteFlowLogs", + "DeleteFpgaImage", + "DeleteImageUsageReport", + "DeleteInstanceConnectEndpoint", + "DeleteInstanceEventWindow", + "DeleteInternetGateway", + "DeleteIpam", + "DeleteIpamExternalResourceVerificationToken", + "DeleteIpamPolicy", + "DeleteIpamPool", + "DeleteIpamPrefixListResolver", + "DeleteIpamPrefixListResolverTarget", + "DeleteIpamResourceDiscovery", + "DeleteIpamScope", "DeleteKeyPair", + "DeleteLaunchTemplate", + "DeleteLaunchTemplateVersions", + "DeleteLocalGatewayRoute", + "DeleteLocalGatewayRouteTable", + "DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "DeleteLocalGatewayRouteTableVpcAssociation", + "DeleteLocalGatewayVirtualInterface", + "DeleteLocalGatewayVirtualInterfaceGroup", + "DeleteManagedPrefixList", + "DeleteNatGateway", "DeleteNetworkAcl", + "DeleteNetworkAclEntry", + "DeleteNetworkInsightsAccessScope", + "DeleteNetworkInsightsAccessScopeAnalysis", + "DeleteNetworkInsightsAnalysis", + "DeleteNetworkInsightsPath", + "DeleteNetworkInterface", + "DeleteNetworkInterfacePermission", + "DeletePlacementGroup", + "DeletePublicIpv4Pool", + "DeleteQueuedReservedInstances", "DeleteRoute", + "DeleteRouteServer", + "DeleteRouteServerEndpoint", + "DeleteRouteServerPeer", "DeleteRouteTable", + "DeleteSecondaryNetwork", + "DeleteSecondarySubnet", "DeleteSecurityGroup", "DeleteSnapshot", + "DeleteSpotDatafeedSubscription", "DeleteSubnet", + "DeleteSubnetCidrReservation", "DeleteTags", + "DeleteTrafficMirrorFilter", + "DeleteTrafficMirrorFilterRule", + "DeleteTrafficMirrorSession", + "DeleteTrafficMirrorTarget", + "DeleteTransitGateway", + "DeleteTransitGatewayConnect", + "DeleteTransitGatewayConnectPeer", + "DeleteTransitGatewayMeteringPolicy", + "DeleteTransitGatewayMeteringPolicyEntry", + "DeleteTransitGatewayMulticastDomain", + "DeleteTransitGatewayPeeringAttachment", + "DeleteTransitGatewayPolicyTable", + "DeleteTransitGatewayPrefixListReference", + "DeleteTransitGatewayRoute", + "DeleteTransitGatewayRouteTable", + "DeleteTransitGatewayRouteTableAnnouncement", + "DeleteTransitGatewayVpcAttachment", + "DeleteVerifiedAccessEndpoint", + "DeleteVerifiedAccessGroup", + "DeleteVerifiedAccessInstance", + "DeleteVerifiedAccessTrustProvider", "DeleteVolume", "DeleteVpc", + "DeleteVpcBlockPublicAccessExclusion", + "DeleteVpcEncryptionControl", + "DeleteVpcEndpointConnectionNotifications", + "DeleteVpcEndpointServiceConfigurations", + "DeleteVpcEndpoints", + "DeleteVpcPeeringConnection", + "DeleteVpnConcentrator", + "DeleteVpnConnection", + "DeleteVpnConnectionRoute", + "DeleteVpnGateway", "DeregisterImage", + "DeregisterInstanceEventNotificationAttributes", + "DeregisterTransitGatewayMulticastGroupMembers", + "DeregisterTransitGatewayMulticastGroupSources", + "DescribeAccountAttributes", + "DescribeAddressTransfers", "DescribeAddresses", + "DescribeAddressesAttribute", + "DescribeAggregateIdFormat", "DescribeAvailabilityZones", + "DescribeAwsNetworkPerformanceMetricSubscriptions", + "DescribeBundleTasks", + "DescribeByoipCidrs", + "DescribeCapacityBlockExtensionHistory", + "DescribeCapacityBlockExtensionOfferings", + "DescribeCapacityBlockOfferings", + "DescribeCapacityBlockStatus", + "DescribeCapacityBlocks", + "DescribeCapacityManagerDataExports", + "DescribeCapacityReservationBillingRequests", + "DescribeCapacityReservationFleets", + "DescribeCapacityReservationTopology", + "DescribeCapacityReservations", + "DescribeCarrierGateways", + "DescribeClassicLinkInstances", + "DescribeClientVpnAuthorizationRules", + "DescribeClientVpnConnections", + "DescribeClientVpnEndpoints", + "DescribeClientVpnRoutes", + "DescribeClientVpnTargetNetworks", + "DescribeCoipPools", + "DescribeConversionTasks", + "DescribeCustomerGateways", + "DescribeDeclarativePoliciesReports", + "DescribeDhcpOptions", + "DescribeEgressOnlyInternetGateways", + "DescribeElasticGpus", + "DescribeExportImageTasks", + "DescribeExportTasks", + "DescribeFastLaunchImages", + "DescribeFastSnapshotRestores", + "DescribeFleetHistory", + "DescribeFleetInstances", + "DescribeFleets", + "DescribeFlowLogs", + "DescribeFpgaImageAttribute", + "DescribeFpgaImages", + "DescribeHostReservationOfferings", + "DescribeHostReservations", + "DescribeHosts", + "DescribeIamInstanceProfileAssociations", + "DescribeIdFormat", + "DescribeIdentityIdFormat", + "DescribeImageAttribute", + "DescribeImageReferences", + "DescribeImageUsageReportEntries", + "DescribeImageUsageReports", "DescribeImages", + "DescribeImportImageTasks", + "DescribeImportSnapshotTasks", + "DescribeInstanceAttribute", + "DescribeInstanceConnectEndpoints", + "DescribeInstanceCreditSpecifications", + "DescribeInstanceEventNotificationAttributes", + "DescribeInstanceEventWindows", + "DescribeInstanceImageMetadata", + "DescribeInstanceSqlHaHistoryStates", + "DescribeInstanceSqlHaStates", + "DescribeInstanceStatus", + "DescribeInstanceTopology", + "DescribeInstanceTypeOfferings", + "DescribeInstanceTypes", "DescribeInstances", "DescribeInternetGateways", + "DescribeIpamByoasn", + "DescribeIpamExternalResourceVerificationTokens", + "DescribeIpamPolicies", + "DescribeIpamPools", + "DescribeIpamPrefixListResolverTargets", + "DescribeIpamPrefixListResolvers", + "DescribeIpamResourceDiscoveries", + "DescribeIpamResourceDiscoveryAssociations", + "DescribeIpamScopes", + "DescribeIpams", + "DescribeIpv6Pools", "DescribeKeyPairs", + "DescribeLaunchTemplateVersions", + "DescribeLaunchTemplates", + "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "DescribeLocalGatewayRouteTableVpcAssociations", + "DescribeLocalGatewayRouteTables", + "DescribeLocalGatewayVirtualInterfaceGroups", + "DescribeLocalGatewayVirtualInterfaces", + "DescribeLocalGateways", + "DescribeLockedSnapshots", + "DescribeMacHosts", + "DescribeMacModificationTasks", + "DescribeManagedPrefixLists", + "DescribeMovingAddresses", + "DescribeNatGateways", "DescribeNetworkAcls", + "DescribeNetworkInsightsAccessScopeAnalyses", + "DescribeNetworkInsightsAccessScopes", + "DescribeNetworkInsightsAnalyses", + "DescribeNetworkInsightsPaths", + "DescribeNetworkInterfaceAttribute", + "DescribeNetworkInterfacePermissions", + "DescribeNetworkInterfaces", + "DescribeOutpostLags", + "DescribePlacementGroups", + "DescribePrefixLists", + "DescribePrincipalIdFormat", + "DescribePublicIpv4Pools", "DescribeRegions", + "DescribeReplaceRootVolumeTasks", + "DescribeReservedInstances", + "DescribeReservedInstancesListings", + "DescribeReservedInstancesModifications", + "DescribeReservedInstancesOfferings", + "DescribeRouteServerEndpoints", + "DescribeRouteServerPeers", + "DescribeRouteServers", "DescribeRouteTables", + "DescribeScheduledInstanceAvailability", + "DescribeScheduledInstances", + "DescribeSecondaryInterfaces", + "DescribeSecondaryNetworks", + "DescribeSecondarySubnets", + "DescribeSecurityGroupReferences", + "DescribeSecurityGroupRules", + "DescribeSecurityGroupVpcAssociations", "DescribeSecurityGroups", + "DescribeServiceLinkVirtualInterfaces", + "DescribeSnapshotAttribute", + "DescribeSnapshotTierStatus", "DescribeSnapshots", + "DescribeSpotDatafeedSubscription", + "DescribeSpotFleetInstances", + "DescribeSpotFleetRequestHistory", + "DescribeSpotFleetRequests", + "DescribeSpotInstanceRequests", + "DescribeSpotPriceHistory", + "DescribeStaleSecurityGroups", + "DescribeStoreImageTasks", "DescribeSubnets", "DescribeTags", + "DescribeTrafficMirrorFilterRules", + "DescribeTrafficMirrorFilters", + "DescribeTrafficMirrorSessions", + "DescribeTrafficMirrorTargets", + "DescribeTransitGatewayAttachments", + "DescribeTransitGatewayConnectPeers", + "DescribeTransitGatewayConnects", + "DescribeTransitGatewayMeteringPolicies", + "DescribeTransitGatewayMulticastDomains", + "DescribeTransitGatewayPeeringAttachments", + "DescribeTransitGatewayPolicyTables", + "DescribeTransitGatewayRouteTableAnnouncements", + "DescribeTransitGatewayRouteTables", + "DescribeTransitGatewayVpcAttachments", + "DescribeTransitGateways", + "DescribeTrunkInterfaceAssociations", + "DescribeVerifiedAccessEndpoints", + "DescribeVerifiedAccessGroups", + "DescribeVerifiedAccessInstanceLoggingConfigurations", + "DescribeVerifiedAccessInstances", + "DescribeVerifiedAccessTrustProviders", + "DescribeVolumeAttribute", + "DescribeVolumeStatus", "DescribeVolumes", + "DescribeVolumesModifications", "DescribeVpcAttribute", + "DescribeVpcBlockPublicAccessExclusions", + "DescribeVpcBlockPublicAccessOptions", + "DescribeVpcClassicLink", + "DescribeVpcClassicLinkDnsSupport", + "DescribeVpcEncryptionControls", + "DescribeVpcEndpointAssociations", + "DescribeVpcEndpointConnectionNotifications", + "DescribeVpcEndpointConnections", + "DescribeVpcEndpointServiceConfigurations", + "DescribeVpcEndpointServicePermissions", + "DescribeVpcEndpointServices", + "DescribeVpcEndpoints", + "DescribeVpcPeeringConnections", "DescribeVpcs", + "DescribeVpnConcentrators", + "DescribeVpnConnections", + "DescribeVpnGateways", "DetachInternetGateway", "DetachVolume", "DisassociateAddress", + "GetActiveVpnTunnelStatus", + "GetAllowedImagesSettings", + "GetAssociatedEnclaveCertificateIamRoles", + "GetAssociatedIpv6PoolCidrs", + "GetAwsNetworkPerformanceData", + "GetCapacityManagerAttributes", + "GetCapacityManagerMetricData", + "GetCapacityManagerMetricDimensions", + "GetCapacityReservationUsage", + "GetCoipPoolUsage", + "GetConsoleOutput", + "GetConsoleScreenshot", + "GetDeclarativePoliciesReportSummary", + "GetDefaultCreditSpecification", + "GetEbsDefaultKmsKeyId", + "GetEbsEncryptionByDefault", + "GetEnabledIpamPolicy", + "GetFlowLogsIntegrationTemplate", + "GetGroupsForCapacityReservation", + "GetHostReservationPurchasePreview", + "GetImageAncestry", + "GetImageBlockPublicAccessState", + "GetInstanceMetadataDefaults", + "GetInstanceTpmEkPub", + "GetInstanceTypesFromInstanceRequirements", + "GetInstanceUefiData", + "GetIpamAddressHistory", + "GetIpamDiscoveredAccounts", + "GetIpamDiscoveredPublicAddresses", + "GetIpamDiscoveredResourceCidrs", + "GetIpamPolicyAllocationRules", + "GetIpamPolicyOrganizationTargets", + "GetIpamPoolAllocations", + "GetIpamPoolCidrs", + "GetIpamPrefixListResolverRules", + "GetIpamPrefixListResolverVersionEntries", + "GetIpamPrefixListResolverVersions", + "GetIpamResourceCidrs", + "GetLaunchTemplateData", + "GetManagedPrefixListAssociations", + "GetManagedPrefixListEntries", + "GetNetworkInsightsAccessScopeAnalysisFindings", + "GetNetworkInsightsAccessScopeContent", + "GetPasswordData", + "GetReservedInstancesExchangeQuote", + "GetRouteServerAssociations", + "GetRouteServerPropagations", + "GetRouteServerRoutingDatabase", + "GetSecurityGroupsForVpc", + "GetSerialConsoleAccessStatus", + "GetSnapshotBlockPublicAccessState", + "GetSpotPlacementScores", + "GetSubnetCidrReservations", + "GetTransitGatewayAttachmentPropagations", + "GetTransitGatewayMeteringPolicyEntries", + "GetTransitGatewayMulticastDomainAssociations", + "GetTransitGatewayPolicyTableAssociations", + "GetTransitGatewayPolicyTableEntries", + "GetTransitGatewayPrefixListReferences", + "GetTransitGatewayRouteTableAssociations", + "GetTransitGatewayRouteTablePropagations", + "GetVerifiedAccessEndpointPolicy", + "GetVerifiedAccessEndpointTargets", + "GetVerifiedAccessGroupPolicy", + "GetVpcResourcesBlockingEncryptionEnforcement", + "GetVpnConnectionDeviceSampleConfiguration", + "GetVpnConnectionDeviceTypes", + "GetVpnTunnelReplacementStatus", "ImportKeyPair", + "ListImagesInRecycleBin", + "ListSnapshotsInRecycleBin", + "ListVolumesInRecycleBin", + "ModifyAddressAttribute", + "ModifyAvailabilityZoneGroup", + "ModifyCapacityReservation", + "ModifyCapacityReservationFleet", + "ModifyClientVpnEndpoint", + "ModifyDefaultCreditSpecification", + "ModifyEbsDefaultKmsKeyId", + "ModifyFleet", + "ModifyFpgaImageAttribute", + "ModifyHosts", + "ModifyIdFormat", + "ModifyIdentityIdFormat", + "ModifyImageAttribute", + "ModifyInstanceAttribute", + "ModifyInstanceCapacityReservationAttributes", + "ModifyInstanceConnectEndpoint", + "ModifyInstanceCpuOptions", + "ModifyInstanceCreditSpecification", + "ModifyInstanceEventStartTime", + "ModifyInstanceEventWindow", + "ModifyInstanceMaintenanceOptions", + "ModifyInstanceMetadataDefaults", + "ModifyInstanceMetadataOptions", + "ModifyInstanceNetworkPerformanceOptions", + "ModifyInstancePlacement", + "ModifyIpam", + "ModifyIpamPolicyAllocationRules", + "ModifyIpamPool", + "ModifyIpamPrefixListResolver", + "ModifyIpamPrefixListResolverTarget", + "ModifyIpamResourceCidr", + "ModifyIpamResourceDiscovery", + "ModifyIpamScope", + "ModifyLaunchTemplate", + "ModifyLocalGatewayRoute", + "ModifyManagedPrefixList", + "ModifyNetworkInterfaceAttribute", + "ModifyPrivateDnsNameOptions", + "ModifyPublicIpDnsNameOptions", + "ModifyReservedInstances", + "ModifyRouteServer", + "ModifySecurityGroupRules", + "ModifySnapshotAttribute", + "ModifySnapshotTier", + "ModifySpotFleetRequest", + "ModifySubnetAttribute", + "ModifyTrafficMirrorFilterNetworkServices", + "ModifyTrafficMirrorFilterRule", + "ModifyTrafficMirrorSession", + "ModifyTransitGateway", + "ModifyTransitGatewayMeteringPolicy", + "ModifyTransitGatewayPrefixListReference", + "ModifyTransitGatewayVpcAttachment", + "ModifyVerifiedAccessEndpoint", + "ModifyVerifiedAccessEndpointPolicy", + "ModifyVerifiedAccessGroup", + "ModifyVerifiedAccessGroupPolicy", + "ModifyVerifiedAccessInstance", + "ModifyVerifiedAccessInstanceLoggingConfiguration", + "ModifyVerifiedAccessTrustProvider", "ModifyVolume", + "ModifyVolumeAttribute", "ModifyVpcAttribute", + "ModifyVpcBlockPublicAccessExclusion", + "ModifyVpcBlockPublicAccessOptions", + "ModifyVpcEncryptionControl", + "ModifyVpcEndpoint", + "ModifyVpcEndpointConnectionNotification", + "ModifyVpcEndpointServiceConfiguration", + "ModifyVpcEndpointServicePayerResponsibility", + "ModifyVpcEndpointServicePermissions", + "ModifyVpcPeeringConnectionOptions", + "ModifyVpcTenancy", + "ModifyVpnConnection", + "ModifyVpnConnectionOptions", + "ModifyVpnTunnelCertificate", + "ModifyVpnTunnelOptions", "RebootInstances", "RegisterImage", + "RegisterInstanceEventNotificationAttributes", + "RegisterTransitGatewayMulticastGroupMembers", + "RegisterTransitGatewayMulticastGroupSources", "ReleaseAddress", "ReplaceNetworkAclEntry", "RevokeSecurityGroupEgress", @@ -6013,7 +6507,11 @@ "RunInstances", "StartInstances", "StopInstances", - "TerminateInstances" + "TerminateInstances", + "UpdateCapacityManagerOrganizationsAccess", + "UpdateInterruptibleCapacityReservationAllocation", + "UpdateSecurityGroupRuleDescriptionsEgress", + "UpdateSecurityGroupRuleDescriptionsIngress" ] }, "ec2instanceconnect": { diff --git a/internal/generated/crudregistry/registry_gen.go b/internal/generated/crudregistry/registry_gen.go index fe1b4a50..e276f3ce 100644 --- a/internal/generated/crudregistry/registry_gen.go +++ b/internal/generated/crudregistry/registry_gen.go @@ -5680,6 +5680,549 @@ func init() { "PutSnapshotBlock": {Verb: "Update", Resource: "SnapshotBlock", OutputListKey: "", OutputItemKey: "", Method: "PUT", URI: "/snapshots/{SnapshotId}/blocks/{BlockIndex}"}, "StartSnapshot": {Verb: "", Resource: "", OutputListKey: "", OutputItemKey: "", Method: "POST", URI: "/snapshots"}, }) + crud.Register("ec2", map[string]crud.OpMeta{ + "CreateCapacityManagerDataExport": {Verb: "Create", Resource: "CapacityManagerDataExport", OutputListKey: "", OutputItemKey: ""}, + "CreateCapacityReservation": {Verb: "Create", Resource: "CapacityReservation", OutputListKey: "", OutputItemKey: "CapacityReservation"}, + "CreateCapacityReservationBySplitting": {Verb: "Create", Resource: "CapacityReservationBySplitting", OutputListKey: "", OutputItemKey: "DestinationCapacityReservation"}, + "CreateCapacityReservationFleet": {Verb: "Create", Resource: "CapacityReservationFleet", OutputListKey: "FleetCapacityReservations", OutputItemKey: ""}, + "CreateCarrierGateway": {Verb: "Create", Resource: "CarrierGateway", OutputListKey: "", OutputItemKey: "CarrierGateway"}, + "CreateClientVpnEndpoint": {Verb: "Create", Resource: "ClientVpnEndpoint", OutputListKey: "", OutputItemKey: "Status"}, + "CreateClientVpnRoute": {Verb: "Create", Resource: "ClientVpnRoute", OutputListKey: "", OutputItemKey: "Status"}, + "CreateCoipCidr": {Verb: "Create", Resource: "CoipCidr", OutputListKey: "", OutputItemKey: "CoipCidr"}, + "CreateCoipPool": {Verb: "Create", Resource: "CoipPool", OutputListKey: "", OutputItemKey: "CoipPool"}, + "CreateCustomerGateway": {Verb: "Create", Resource: "CustomerGateway", OutputListKey: "", OutputItemKey: "CustomerGateway"}, + "CreateDefaultSubnet": {Verb: "Create", Resource: "DefaultSubnet", OutputListKey: "", OutputItemKey: "Subnet"}, + "CreateDefaultVpc": {Verb: "Create", Resource: "DefaultVpc", OutputListKey: "", OutputItemKey: "Vpc"}, + "CreateDelegateMacVolumeOwnershipTask": {Verb: "Create", Resource: "DelegateMacVolumeOwnershipTask", OutputListKey: "", OutputItemKey: "MacModificationTask"}, + "CreateDhcpOptions": {Verb: "Create", Resource: "DhcpOption", OutputListKey: "", OutputItemKey: "DhcpOptions"}, + "CreateEgressOnlyInternetGateway": {Verb: "Create", Resource: "EgressOnlyInternetGateway", OutputListKey: "", OutputItemKey: "EgressOnlyInternetGateway"}, + "CreateFleet": {Verb: "Create", Resource: "Fleet", OutputListKey: "Errors", OutputItemKey: ""}, + "CreateFlowLogs": {Verb: "Create", Resource: "FlowLog", OutputListKey: "FlowLogIds", OutputItemKey: ""}, + "CreateFpgaImage": {Verb: "Create", Resource: "FpgaImage", OutputListKey: "", OutputItemKey: ""}, + "CreateImage": {Verb: "Create", Resource: "Image", OutputListKey: "", OutputItemKey: ""}, + "CreateImageUsageReport": {Verb: "Create", Resource: "ImageUsageReport", OutputListKey: "", OutputItemKey: ""}, + "CreateInstanceConnectEndpoint": {Verb: "Create", Resource: "InstanceConnectEndpoint", OutputListKey: "", OutputItemKey: "InstanceConnectEndpoint"}, + "CreateInstanceEventWindow": {Verb: "Create", Resource: "InstanceEventWindow", OutputListKey: "", OutputItemKey: "InstanceEventWindow"}, + "CreateInstanceExportTask": {Verb: "Create", Resource: "InstanceExportTask", OutputListKey: "", OutputItemKey: "ExportTask"}, + "CreateInternetGateway": {Verb: "Create", Resource: "InternetGateway", OutputListKey: "", OutputItemKey: "InternetGateway"}, + "CreateInterruptibleCapacityReservationAllocation": {Verb: "Create", Resource: "InterruptibleCapacityReservationAllocation", OutputListKey: "", OutputItemKey: ""}, + "CreateIpam": {Verb: "Create", Resource: "Ipam", OutputListKey: "", OutputItemKey: "Ipam"}, + "CreateIpamExternalResourceVerificationToken": {Verb: "Create", Resource: "IpamExternalResourceVerificationToken", OutputListKey: "", OutputItemKey: "IpamExternalResourceVerificationToken"}, + "CreateIpamPolicy": {Verb: "Create", Resource: "IpamPolicy", OutputListKey: "", OutputItemKey: "IpamPolicy"}, + "CreateIpamPool": {Verb: "Create", Resource: "IpamPool", OutputListKey: "", OutputItemKey: "IpamPool"}, + "CreateIpamPrefixListResolver": {Verb: "Create", Resource: "IpamPrefixListResolver", OutputListKey: "", OutputItemKey: "IpamPrefixListResolver"}, + "CreateIpamPrefixListResolverTarget": {Verb: "Create", Resource: "IpamPrefixListResolverTarget", OutputListKey: "", OutputItemKey: "IpamPrefixListResolverTarget"}, + "CreateIpamResourceDiscovery": {Verb: "Create", Resource: "IpamResourceDiscovery", OutputListKey: "", OutputItemKey: "IpamResourceDiscovery"}, + "CreateIpamScope": {Verb: "Create", Resource: "IpamScope", OutputListKey: "", OutputItemKey: "IpamScope"}, + "CreateKeyPair": {Verb: "Create", Resource: "KeyPair", OutputListKey: "Tags", OutputItemKey: ""}, + "CreateLaunchTemplate": {Verb: "Create", Resource: "LaunchTemplate", OutputListKey: "", OutputItemKey: "LaunchTemplate"}, + "CreateLaunchTemplateVersion": {Verb: "Create", Resource: "LaunchTemplateVersion", OutputListKey: "", OutputItemKey: "LaunchTemplateVersion"}, + "CreateLocalGatewayRoute": {Verb: "Create", Resource: "LocalGatewayRoute", OutputListKey: "", OutputItemKey: "Route"}, + "CreateLocalGatewayRouteTable": {Verb: "Create", Resource: "LocalGatewayRouteTable", OutputListKey: "", OutputItemKey: "LocalGatewayRouteTable"}, + "CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation": {Verb: "Create", Resource: "LocalGatewayRouteTableVirtualInterfaceGroupAssociation", OutputListKey: "", OutputItemKey: "LocalGatewayRouteTableVirtualInterfaceGroupAssociation"}, + "CreateLocalGatewayRouteTableVpcAssociation": {Verb: "Create", Resource: "LocalGatewayRouteTableVpcAssociation", OutputListKey: "", OutputItemKey: "LocalGatewayRouteTableVpcAssociation"}, + "CreateLocalGatewayVirtualInterface": {Verb: "Create", Resource: "LocalGatewayVirtualInterface", OutputListKey: "", OutputItemKey: "LocalGatewayVirtualInterface"}, + "CreateLocalGatewayVirtualInterfaceGroup": {Verb: "Create", Resource: "LocalGatewayVirtualInterfaceGroup", OutputListKey: "", OutputItemKey: "LocalGatewayVirtualInterfaceGroup"}, + "CreateMacSystemIntegrityProtectionModificationTask": {Verb: "Create", Resource: "MacSystemIntegrityProtectionModificationTask", OutputListKey: "", OutputItemKey: "MacModificationTask"}, + "CreateManagedPrefixList": {Verb: "Create", Resource: "ManagedPrefixList", OutputListKey: "", OutputItemKey: "PrefixList"}, + "CreateNatGateway": {Verb: "Create", Resource: "NatGateway", OutputListKey: "", OutputItemKey: "NatGateway"}, + "CreateNetworkAcl": {Verb: "Create", Resource: "NetworkAcl", OutputListKey: "", OutputItemKey: "NetworkAcl"}, + "CreateNetworkAclEntry": {Verb: "Create", Resource: "NetworkAclEntry", OutputListKey: "", OutputItemKey: ""}, + "CreateNetworkInsightsAccessScope": {Verb: "Create", Resource: "NetworkInsightsAccessScope", OutputListKey: "", OutputItemKey: "NetworkInsightsAccessScope"}, + "CreateNetworkInsightsPath": {Verb: "Create", Resource: "NetworkInsightsPath", OutputListKey: "", OutputItemKey: "NetworkInsightsPath"}, + "CreateNetworkInterface": {Verb: "Create", Resource: "NetworkInterface", OutputListKey: "", OutputItemKey: "NetworkInterface"}, + "CreateNetworkInterfacePermission": {Verb: "Create", Resource: "NetworkInterfacePermission", OutputListKey: "", OutputItemKey: "InterfacePermission"}, + "CreatePlacementGroup": {Verb: "Create", Resource: "PlacementGroup", OutputListKey: "", OutputItemKey: "PlacementGroup"}, + "CreatePublicIpv4Pool": {Verb: "Create", Resource: "PublicIpv4Pool", OutputListKey: "", OutputItemKey: ""}, + "CreateReplaceRootVolumeTask": {Verb: "Create", Resource: "ReplaceRootVolumeTask", OutputListKey: "", OutputItemKey: "ReplaceRootVolumeTask"}, + "CreateReservedInstancesListing": {Verb: "Create", Resource: "ReservedInstancesListing", OutputListKey: "ReservedInstancesListings", OutputItemKey: ""}, + "CreateRestoreImageTask": {Verb: "Create", Resource: "RestoreImageTask", OutputListKey: "", OutputItemKey: ""}, + "CreateRoute": {Verb: "Create", Resource: "Route", OutputListKey: "", OutputItemKey: ""}, + "CreateRouteServer": {Verb: "Create", Resource: "RouteServer", OutputListKey: "", OutputItemKey: "RouteServer"}, + "CreateRouteServerEndpoint": {Verb: "Create", Resource: "RouteServerEndpoint", OutputListKey: "", OutputItemKey: "RouteServerEndpoint"}, + "CreateRouteServerPeer": {Verb: "Create", Resource: "RouteServerPeer", OutputListKey: "", OutputItemKey: "RouteServerPeer"}, + "CreateRouteTable": {Verb: "Create", Resource: "RouteTable", OutputListKey: "", OutputItemKey: "RouteTable"}, + "CreateSecondaryNetwork": {Verb: "Create", Resource: "SecondaryNetwork", OutputListKey: "", OutputItemKey: "SecondaryNetwork"}, + "CreateSecondarySubnet": {Verb: "Create", Resource: "SecondarySubnet", OutputListKey: "", OutputItemKey: "SecondarySubnet"}, + "CreateSecurityGroup": {Verb: "Create", Resource: "SecurityGroup", OutputListKey: "Tags", OutputItemKey: ""}, + "CreateSnapshot": {Verb: "Create", Resource: "Snapshot", OutputListKey: "Tags", OutputItemKey: ""}, + "CreateSnapshots": {Verb: "Create", Resource: "Snapshot", OutputListKey: "Snapshots", OutputItemKey: ""}, + "CreateSpotDatafeedSubscription": {Verb: "Create", Resource: "SpotDatafeedSubscription", OutputListKey: "", OutputItemKey: "SpotDatafeedSubscription"}, + "CreateStoreImageTask": {Verb: "Create", Resource: "StoreImageTask", OutputListKey: "", OutputItemKey: ""}, + "CreateSubnet": {Verb: "Create", Resource: "Subnet", OutputListKey: "", OutputItemKey: "Subnet"}, + "CreateSubnetCidrReservation": {Verb: "Create", Resource: "SubnetCidrReservation", OutputListKey: "", OutputItemKey: "SubnetCidrReservation"}, + "CreateTags": {Verb: "Create", Resource: "Tag", OutputListKey: "", OutputItemKey: ""}, + "CreateTrafficMirrorFilter": {Verb: "Create", Resource: "TrafficMirrorFilter", OutputListKey: "", OutputItemKey: "TrafficMirrorFilter"}, + "CreateTrafficMirrorFilterRule": {Verb: "Create", Resource: "TrafficMirrorFilterRule", OutputListKey: "", OutputItemKey: "TrafficMirrorFilterRule"}, + "CreateTrafficMirrorSession": {Verb: "Create", Resource: "TrafficMirrorSession", OutputListKey: "", OutputItemKey: "TrafficMirrorSession"}, + "CreateTrafficMirrorTarget": {Verb: "Create", Resource: "TrafficMirrorTarget", OutputListKey: "", OutputItemKey: "TrafficMirrorTarget"}, + "CreateTransitGateway": {Verb: "Create", Resource: "TransitGateway", OutputListKey: "", OutputItemKey: "TransitGateway"}, + "CreateTransitGatewayConnect": {Verb: "Create", Resource: "TransitGatewayConnect", OutputListKey: "", OutputItemKey: "TransitGatewayConnect"}, + "CreateTransitGatewayConnectPeer": {Verb: "Create", Resource: "TransitGatewayConnectPeer", OutputListKey: "", OutputItemKey: "TransitGatewayConnectPeer"}, + "CreateTransitGatewayMeteringPolicy": {Verb: "Create", Resource: "TransitGatewayMeteringPolicy", OutputListKey: "", OutputItemKey: "TransitGatewayMeteringPolicy"}, + "CreateTransitGatewayMeteringPolicyEntry": {Verb: "Create", Resource: "TransitGatewayMeteringPolicyEntry", OutputListKey: "", OutputItemKey: "TransitGatewayMeteringPolicyEntry"}, + "CreateTransitGatewayMulticastDomain": {Verb: "Create", Resource: "TransitGatewayMulticastDomain", OutputListKey: "", OutputItemKey: "TransitGatewayMulticastDomain"}, + "CreateTransitGatewayPeeringAttachment": {Verb: "Create", Resource: "TransitGatewayPeeringAttachment", OutputListKey: "", OutputItemKey: "TransitGatewayPeeringAttachment"}, + "CreateTransitGatewayPolicyTable": {Verb: "Create", Resource: "TransitGatewayPolicyTable", OutputListKey: "", OutputItemKey: "TransitGatewayPolicyTable"}, + "CreateTransitGatewayPrefixListReference": {Verb: "Create", Resource: "TransitGatewayPrefixListReference", OutputListKey: "", OutputItemKey: "TransitGatewayPrefixListReference"}, + "CreateTransitGatewayRoute": {Verb: "Create", Resource: "TransitGatewayRoute", OutputListKey: "", OutputItemKey: "Route"}, + "CreateTransitGatewayRouteTable": {Verb: "Create", Resource: "TransitGatewayRouteTable", OutputListKey: "", OutputItemKey: "TransitGatewayRouteTable"}, + "CreateTransitGatewayRouteTableAnnouncement": {Verb: "Create", Resource: "TransitGatewayRouteTableAnnouncement", OutputListKey: "", OutputItemKey: "TransitGatewayRouteTableAnnouncement"}, + "CreateTransitGatewayVpcAttachment": {Verb: "Create", Resource: "TransitGatewayVpcAttachment", OutputListKey: "", OutputItemKey: "TransitGatewayVpcAttachment"}, + "CreateVerifiedAccessEndpoint": {Verb: "Create", Resource: "VerifiedAccessEndpoint", OutputListKey: "", OutputItemKey: "VerifiedAccessEndpoint"}, + "CreateVerifiedAccessGroup": {Verb: "Create", Resource: "VerifiedAccessGroup", OutputListKey: "", OutputItemKey: "VerifiedAccessGroup"}, + "CreateVerifiedAccessInstance": {Verb: "Create", Resource: "VerifiedAccessInstance", OutputListKey: "", OutputItemKey: "VerifiedAccessInstance"}, + "CreateVerifiedAccessTrustProvider": {Verb: "Create", Resource: "VerifiedAccessTrustProvider", OutputListKey: "", OutputItemKey: "VerifiedAccessTrustProvider"}, + "CreateVolume": {Verb: "Create", Resource: "Volume", OutputListKey: "Attachments", OutputItemKey: "Operator"}, + "CreateVpc": {Verb: "Create", Resource: "Vpc", OutputListKey: "", OutputItemKey: "Vpc"}, + "CreateVpcBlockPublicAccessExclusion": {Verb: "Create", Resource: "VpcBlockPublicAccessExclusion", OutputListKey: "", OutputItemKey: "VpcBlockPublicAccessExclusion"}, + "CreateVpcEncryptionControl": {Verb: "Create", Resource: "VpcEncryptionControl", OutputListKey: "", OutputItemKey: "VpcEncryptionControl"}, + "CreateVpcEndpoint": {Verb: "Create", Resource: "VpcEndpoint", OutputListKey: "", OutputItemKey: "VpcEndpoint"}, + "CreateVpcEndpointConnectionNotification": {Verb: "Create", Resource: "VpcEndpointConnectionNotification", OutputListKey: "", OutputItemKey: "ConnectionNotification"}, + "CreateVpcEndpointServiceConfiguration": {Verb: "Create", Resource: "VpcEndpointServiceConfiguration", OutputListKey: "", OutputItemKey: "ServiceConfiguration"}, + "CreateVpcPeeringConnection": {Verb: "Create", Resource: "VpcPeeringConnection", OutputListKey: "", OutputItemKey: "VpcPeeringConnection"}, + "CreateVpnConcentrator": {Verb: "Create", Resource: "VpnConcentrator", OutputListKey: "", OutputItemKey: "VpnConcentrator"}, + "CreateVpnConnection": {Verb: "Create", Resource: "VpnConnection", OutputListKey: "", OutputItemKey: "VpnConnection"}, + "CreateVpnConnectionRoute": {Verb: "Create", Resource: "VpnConnectionRoute", OutputListKey: "", OutputItemKey: ""}, + "CreateVpnGateway": {Verb: "Create", Resource: "VpnGateway", OutputListKey: "", OutputItemKey: "VpnGateway"}, + "DeleteCapacityManagerDataExport": {Verb: "Delete", Resource: "CapacityManagerDataExport", OutputListKey: "", OutputItemKey: ""}, + "DeleteCarrierGateway": {Verb: "Delete", Resource: "CarrierGateway", OutputListKey: "", OutputItemKey: "CarrierGateway"}, + "DeleteClientVpnEndpoint": {Verb: "Delete", Resource: "ClientVpnEndpoint", OutputListKey: "", OutputItemKey: "Status"}, + "DeleteClientVpnRoute": {Verb: "Delete", Resource: "ClientVpnRoute", OutputListKey: "", OutputItemKey: "Status"}, + "DeleteCoipCidr": {Verb: "Delete", Resource: "CoipCidr", OutputListKey: "", OutputItemKey: "CoipCidr"}, + "DeleteCoipPool": {Verb: "Delete", Resource: "CoipPool", OutputListKey: "", OutputItemKey: "CoipPool"}, + "DeleteCustomerGateway": {Verb: "Delete", Resource: "CustomerGateway", OutputListKey: "", OutputItemKey: ""}, + "DeleteDhcpOptions": {Verb: "Delete", Resource: "DhcpOption", OutputListKey: "", OutputItemKey: ""}, + "DeleteEgressOnlyInternetGateway": {Verb: "Delete", Resource: "EgressOnlyInternetGateway", OutputListKey: "", OutputItemKey: ""}, + "DeleteFleets": {Verb: "Delete", Resource: "Fleet", OutputListKey: "SuccessfulFleetDeletions", OutputItemKey: ""}, + "DeleteFlowLogs": {Verb: "Delete", Resource: "FlowLog", OutputListKey: "Unsuccessful", OutputItemKey: ""}, + "DeleteFpgaImage": {Verb: "Delete", Resource: "FpgaImage", OutputListKey: "", OutputItemKey: ""}, + "DeleteImageUsageReport": {Verb: "Delete", Resource: "ImageUsageReport", OutputListKey: "", OutputItemKey: ""}, + "DeleteInstanceConnectEndpoint": {Verb: "Delete", Resource: "InstanceConnectEndpoint", OutputListKey: "", OutputItemKey: "InstanceConnectEndpoint"}, + "DeleteInstanceEventWindow": {Verb: "Delete", Resource: "InstanceEventWindow", OutputListKey: "", OutputItemKey: "InstanceEventWindowState"}, + "DeleteInternetGateway": {Verb: "Delete", Resource: "InternetGateway", OutputListKey: "", OutputItemKey: ""}, + "DeleteIpam": {Verb: "Delete", Resource: "Ipam", OutputListKey: "", OutputItemKey: "Ipam"}, + "DeleteIpamExternalResourceVerificationToken": {Verb: "Delete", Resource: "IpamExternalResourceVerificationToken", OutputListKey: "", OutputItemKey: "IpamExternalResourceVerificationToken"}, + "DeleteIpamPolicy": {Verb: "Delete", Resource: "IpamPolicy", OutputListKey: "", OutputItemKey: "IpamPolicy"}, + "DeleteIpamPool": {Verb: "Delete", Resource: "IpamPool", OutputListKey: "", OutputItemKey: "IpamPool"}, + "DeleteIpamPrefixListResolver": {Verb: "Delete", Resource: "IpamPrefixListResolver", OutputListKey: "", OutputItemKey: "IpamPrefixListResolver"}, + "DeleteIpamPrefixListResolverTarget": {Verb: "Delete", Resource: "IpamPrefixListResolverTarget", OutputListKey: "", OutputItemKey: "IpamPrefixListResolverTarget"}, + "DeleteIpamResourceDiscovery": {Verb: "Delete", Resource: "IpamResourceDiscovery", OutputListKey: "", OutputItemKey: "IpamResourceDiscovery"}, + "DeleteIpamScope": {Verb: "Delete", Resource: "IpamScope", OutputListKey: "", OutputItemKey: "IpamScope"}, + "DeleteKeyPair": {Verb: "Delete", Resource: "KeyPair", OutputListKey: "", OutputItemKey: ""}, + "DeleteLaunchTemplate": {Verb: "Delete", Resource: "LaunchTemplate", OutputListKey: "", OutputItemKey: "LaunchTemplate"}, + "DeleteLaunchTemplateVersions": {Verb: "Delete", Resource: "LaunchTemplateVersion", OutputListKey: "SuccessfullyDeletedLaunchTemplateVersions", OutputItemKey: ""}, + "DeleteLocalGatewayRoute": {Verb: "Delete", Resource: "LocalGatewayRoute", OutputListKey: "", OutputItemKey: "Route"}, + "DeleteLocalGatewayRouteTable": {Verb: "Delete", Resource: "LocalGatewayRouteTable", OutputListKey: "", OutputItemKey: "LocalGatewayRouteTable"}, + "DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation": {Verb: "Delete", Resource: "LocalGatewayRouteTableVirtualInterfaceGroupAssociation", OutputListKey: "", OutputItemKey: "LocalGatewayRouteTableVirtualInterfaceGroupAssociation"}, + "DeleteLocalGatewayRouteTableVpcAssociation": {Verb: "Delete", Resource: "LocalGatewayRouteTableVpcAssociation", OutputListKey: "", OutputItemKey: "LocalGatewayRouteTableVpcAssociation"}, + "DeleteLocalGatewayVirtualInterface": {Verb: "Delete", Resource: "LocalGatewayVirtualInterface", OutputListKey: "", OutputItemKey: "LocalGatewayVirtualInterface"}, + "DeleteLocalGatewayVirtualInterfaceGroup": {Verb: "Delete", Resource: "LocalGatewayVirtualInterfaceGroup", OutputListKey: "", OutputItemKey: "LocalGatewayVirtualInterfaceGroup"}, + "DeleteManagedPrefixList": {Verb: "Delete", Resource: "ManagedPrefixList", OutputListKey: "", OutputItemKey: "PrefixList"}, + "DeleteNatGateway": {Verb: "Delete", Resource: "NatGateway", OutputListKey: "", OutputItemKey: ""}, + "DeleteNetworkAcl": {Verb: "Delete", Resource: "NetworkAcl", OutputListKey: "", OutputItemKey: ""}, + "DeleteNetworkAclEntry": {Verb: "Delete", Resource: "NetworkAclEntry", OutputListKey: "", OutputItemKey: ""}, + "DeleteNetworkInsightsAccessScope": {Verb: "Delete", Resource: "NetworkInsightsAccessScope", OutputListKey: "", OutputItemKey: ""}, + "DeleteNetworkInsightsAccessScopeAnalysis": {Verb: "Delete", Resource: "NetworkInsightsAccessScopeAnalysi", OutputListKey: "", OutputItemKey: ""}, + "DeleteNetworkInsightsAnalysis": {Verb: "Delete", Resource: "NetworkInsightsAnalysi", OutputListKey: "", OutputItemKey: ""}, + "DeleteNetworkInsightsPath": {Verb: "Delete", Resource: "NetworkInsightsPath", OutputListKey: "", OutputItemKey: ""}, + "DeleteNetworkInterface": {Verb: "Delete", Resource: "NetworkInterface", OutputListKey: "", OutputItemKey: ""}, + "DeleteNetworkInterfacePermission": {Verb: "Delete", Resource: "NetworkInterfacePermission", OutputListKey: "", OutputItemKey: ""}, + "DeletePlacementGroup": {Verb: "Delete", Resource: "PlacementGroup", OutputListKey: "", OutputItemKey: ""}, + "DeletePublicIpv4Pool": {Verb: "Delete", Resource: "PublicIpv4Pool", OutputListKey: "", OutputItemKey: ""}, + "DeleteQueuedReservedInstances": {Verb: "Delete", Resource: "QueuedReservedInstance", OutputListKey: "FailedQueuedPurchaseDeletions", OutputItemKey: ""}, + "DeleteRoute": {Verb: "Delete", Resource: "Route", OutputListKey: "", OutputItemKey: ""}, + "DeleteRouteServer": {Verb: "Delete", Resource: "RouteServer", OutputListKey: "", OutputItemKey: "RouteServer"}, + "DeleteRouteServerEndpoint": {Verb: "Delete", Resource: "RouteServerEndpoint", OutputListKey: "", OutputItemKey: "RouteServerEndpoint"}, + "DeleteRouteServerPeer": {Verb: "Delete", Resource: "RouteServerPeer", OutputListKey: "", OutputItemKey: "RouteServerPeer"}, + "DeleteRouteTable": {Verb: "Delete", Resource: "RouteTable", OutputListKey: "", OutputItemKey: ""}, + "DeleteSecondaryNetwork": {Verb: "Delete", Resource: "SecondaryNetwork", OutputListKey: "", OutputItemKey: "SecondaryNetwork"}, + "DeleteSecondarySubnet": {Verb: "Delete", Resource: "SecondarySubnet", OutputListKey: "", OutputItemKey: "SecondarySubnet"}, + "DeleteSecurityGroup": {Verb: "Delete", Resource: "SecurityGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteSnapshot": {Verb: "Delete", Resource: "Snapshot", OutputListKey: "", OutputItemKey: ""}, + "DeleteSpotDatafeedSubscription": {Verb: "Delete", Resource: "SpotDatafeedSubscription", OutputListKey: "", OutputItemKey: ""}, + "DeleteSubnet": {Verb: "Delete", Resource: "Subnet", OutputListKey: "", OutputItemKey: ""}, + "DeleteSubnetCidrReservation": {Verb: "Delete", Resource: "SubnetCidrReservation", OutputListKey: "", OutputItemKey: "DeletedSubnetCidrReservation"}, + "DeleteTags": {Verb: "Delete", Resource: "Tag", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrafficMirrorFilter": {Verb: "Delete", Resource: "TrafficMirrorFilter", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrafficMirrorFilterRule": {Verb: "Delete", Resource: "TrafficMirrorFilterRule", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrafficMirrorSession": {Verb: "Delete", Resource: "TrafficMirrorSession", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrafficMirrorTarget": {Verb: "Delete", Resource: "TrafficMirrorTarget", OutputListKey: "", OutputItemKey: ""}, + "DeleteTransitGateway": {Verb: "Delete", Resource: "TransitGateway", OutputListKey: "", OutputItemKey: "TransitGateway"}, + "DeleteTransitGatewayConnect": {Verb: "Delete", Resource: "TransitGatewayConnect", OutputListKey: "", OutputItemKey: "TransitGatewayConnect"}, + "DeleteTransitGatewayConnectPeer": {Verb: "Delete", Resource: "TransitGatewayConnectPeer", OutputListKey: "", OutputItemKey: "TransitGatewayConnectPeer"}, + "DeleteTransitGatewayMeteringPolicy": {Verb: "Delete", Resource: "TransitGatewayMeteringPolicy", OutputListKey: "", OutputItemKey: "TransitGatewayMeteringPolicy"}, + "DeleteTransitGatewayMeteringPolicyEntry": {Verb: "Delete", Resource: "TransitGatewayMeteringPolicyEntry", OutputListKey: "", OutputItemKey: "TransitGatewayMeteringPolicyEntry"}, + "DeleteTransitGatewayMulticastDomain": {Verb: "Delete", Resource: "TransitGatewayMulticastDomain", OutputListKey: "", OutputItemKey: "TransitGatewayMulticastDomain"}, + "DeleteTransitGatewayPeeringAttachment": {Verb: "Delete", Resource: "TransitGatewayPeeringAttachment", OutputListKey: "", OutputItemKey: "TransitGatewayPeeringAttachment"}, + "DeleteTransitGatewayPolicyTable": {Verb: "Delete", Resource: "TransitGatewayPolicyTable", OutputListKey: "", OutputItemKey: "TransitGatewayPolicyTable"}, + "DeleteTransitGatewayPrefixListReference": {Verb: "Delete", Resource: "TransitGatewayPrefixListReference", OutputListKey: "", OutputItemKey: "TransitGatewayPrefixListReference"}, + "DeleteTransitGatewayRoute": {Verb: "Delete", Resource: "TransitGatewayRoute", OutputListKey: "", OutputItemKey: "Route"}, + "DeleteTransitGatewayRouteTable": {Verb: "Delete", Resource: "TransitGatewayRouteTable", OutputListKey: "", OutputItemKey: "TransitGatewayRouteTable"}, + "DeleteTransitGatewayRouteTableAnnouncement": {Verb: "Delete", Resource: "TransitGatewayRouteTableAnnouncement", OutputListKey: "", OutputItemKey: "TransitGatewayRouteTableAnnouncement"}, + "DeleteTransitGatewayVpcAttachment": {Verb: "Delete", Resource: "TransitGatewayVpcAttachment", OutputListKey: "", OutputItemKey: "TransitGatewayVpcAttachment"}, + "DeleteVerifiedAccessEndpoint": {Verb: "Delete", Resource: "VerifiedAccessEndpoint", OutputListKey: "", OutputItemKey: "VerifiedAccessEndpoint"}, + "DeleteVerifiedAccessGroup": {Verb: "Delete", Resource: "VerifiedAccessGroup", OutputListKey: "", OutputItemKey: "VerifiedAccessGroup"}, + "DeleteVerifiedAccessInstance": {Verb: "Delete", Resource: "VerifiedAccessInstance", OutputListKey: "", OutputItemKey: "VerifiedAccessInstance"}, + "DeleteVerifiedAccessTrustProvider": {Verb: "Delete", Resource: "VerifiedAccessTrustProvider", OutputListKey: "", OutputItemKey: "VerifiedAccessTrustProvider"}, + "DeleteVolume": {Verb: "Delete", Resource: "Volume", OutputListKey: "", OutputItemKey: ""}, + "DeleteVpc": {Verb: "Delete", Resource: "Vpc", OutputListKey: "", OutputItemKey: ""}, + "DeleteVpcBlockPublicAccessExclusion": {Verb: "Delete", Resource: "VpcBlockPublicAccessExclusion", OutputListKey: "", OutputItemKey: "VpcBlockPublicAccessExclusion"}, + "DeleteVpcEncryptionControl": {Verb: "Delete", Resource: "VpcEncryptionControl", OutputListKey: "", OutputItemKey: "VpcEncryptionControl"}, + "DeleteVpcEndpointConnectionNotifications": {Verb: "Delete", Resource: "VpcEndpointConnectionNotification", OutputListKey: "Unsuccessful", OutputItemKey: ""}, + "DeleteVpcEndpointServiceConfigurations": {Verb: "Delete", Resource: "VpcEndpointServiceConfiguration", OutputListKey: "Unsuccessful", OutputItemKey: ""}, + "DeleteVpcEndpoints": {Verb: "Delete", Resource: "VpcEndpoint", OutputListKey: "Unsuccessful", OutputItemKey: ""}, + "DeleteVpcPeeringConnection": {Verb: "Delete", Resource: "VpcPeeringConnection", OutputListKey: "", OutputItemKey: ""}, + "DeleteVpnConcentrator": {Verb: "Delete", Resource: "VpnConcentrator", OutputListKey: "", OutputItemKey: ""}, + "DeleteVpnConnection": {Verb: "Delete", Resource: "VpnConnection", OutputListKey: "", OutputItemKey: ""}, + "DeleteVpnConnectionRoute": {Verb: "Delete", Resource: "VpnConnectionRoute", OutputListKey: "", OutputItemKey: ""}, + "DeleteVpnGateway": {Verb: "Delete", Resource: "VpnGateway", OutputListKey: "", OutputItemKey: ""}, + "DeregisterImage": {Verb: "Delete", Resource: "Image", OutputListKey: "DeleteSnapshotResults", OutputItemKey: ""}, + "DeregisterInstanceEventNotificationAttributes": {Verb: "Delete", Resource: "InstanceEventNotificationAttribute", OutputListKey: "", OutputItemKey: "InstanceTagAttribute"}, + "DeregisterTransitGatewayMulticastGroupMembers": {Verb: "Delete", Resource: "TransitGatewayMulticastGroupMember", OutputListKey: "", OutputItemKey: "DeregisteredMulticastGroupMembers"}, + "DeregisterTransitGatewayMulticastGroupSources": {Verb: "Delete", Resource: "TransitGatewayMulticastGroupSource", OutputListKey: "", OutputItemKey: "DeregisteredMulticastGroupSources"}, + "DescribeAccountAttributes": {Verb: "Get", Resource: "AccountAttribute", OutputListKey: "AccountAttributes", OutputItemKey: ""}, + "DescribeAddressTransfers": {Verb: "Get", Resource: "AddressTransfer", OutputListKey: "AddressTransfers", OutputItemKey: ""}, + "DescribeAddresses": {Verb: "Get", Resource: "Address", OutputListKey: "Addresses", OutputItemKey: ""}, + "DescribeAddressesAttribute": {Verb: "Get", Resource: "AddressesAttribute", OutputListKey: "Addresses", OutputItemKey: ""}, + "DescribeAggregateIdFormat": {Verb: "Get", Resource: "AggregateIdFormat", OutputListKey: "Statuses", OutputItemKey: ""}, + "DescribeAvailabilityZones": {Verb: "Get", Resource: "AvailabilityZone", OutputListKey: "AvailabilityZones", OutputItemKey: ""}, + "DescribeAwsNetworkPerformanceMetricSubscriptions": {Verb: "Get", Resource: "AwsNetworkPerformanceMetricSubscription", OutputListKey: "Subscriptions", OutputItemKey: ""}, + "DescribeBundleTasks": {Verb: "Get", Resource: "BundleTask", OutputListKey: "BundleTasks", OutputItemKey: ""}, + "DescribeByoipCidrs": {Verb: "Get", Resource: "ByoipCidr", OutputListKey: "ByoipCidrs", OutputItemKey: ""}, + "DescribeCapacityBlockExtensionHistory": {Verb: "Get", Resource: "CapacityBlockExtensionHistory", OutputListKey: "CapacityBlockExtensions", OutputItemKey: ""}, + "DescribeCapacityBlockExtensionOfferings": {Verb: "Get", Resource: "CapacityBlockExtensionOffering", OutputListKey: "CapacityBlockExtensionOfferings", OutputItemKey: ""}, + "DescribeCapacityBlockOfferings": {Verb: "Get", Resource: "CapacityBlockOffering", OutputListKey: "CapacityBlockOfferings", OutputItemKey: ""}, + "DescribeCapacityBlockStatus": {Verb: "Get", Resource: "CapacityBlockStatu", OutputListKey: "CapacityBlockStatuses", OutputItemKey: ""}, + "DescribeCapacityBlocks": {Verb: "Get", Resource: "CapacityBlock", OutputListKey: "CapacityBlocks", OutputItemKey: ""}, + "DescribeCapacityManagerDataExports": {Verb: "Get", Resource: "CapacityManagerDataExport", OutputListKey: "CapacityManagerDataExports", OutputItemKey: ""}, + "DescribeCapacityReservationBillingRequests": {Verb: "Get", Resource: "CapacityReservationBillingRequest", OutputListKey: "CapacityReservationBillingRequests", OutputItemKey: ""}, + "DescribeCapacityReservationFleets": {Verb: "Get", Resource: "CapacityReservationFleet", OutputListKey: "CapacityReservationFleets", OutputItemKey: ""}, + "DescribeCapacityReservationTopology": {Verb: "Get", Resource: "CapacityReservationTopology", OutputListKey: "CapacityReservations", OutputItemKey: ""}, + "DescribeCapacityReservations": {Verb: "Get", Resource: "CapacityReservation", OutputListKey: "CapacityReservations", OutputItemKey: ""}, + "DescribeCarrierGateways": {Verb: "Get", Resource: "CarrierGateway", OutputListKey: "CarrierGateways", OutputItemKey: ""}, + "DescribeClassicLinkInstances": {Verb: "Get", Resource: "ClassicLinkInstance", OutputListKey: "Instances", OutputItemKey: ""}, + "DescribeClientVpnAuthorizationRules": {Verb: "Get", Resource: "ClientVpnAuthorizationRule", OutputListKey: "AuthorizationRules", OutputItemKey: ""}, + "DescribeClientVpnConnections": {Verb: "Get", Resource: "ClientVpnConnection", OutputListKey: "Connections", OutputItemKey: ""}, + "DescribeClientVpnEndpoints": {Verb: "Get", Resource: "ClientVpnEndpoint", OutputListKey: "ClientVpnEndpoints", OutputItemKey: ""}, + "DescribeClientVpnRoutes": {Verb: "Get", Resource: "ClientVpnRoute", OutputListKey: "Routes", OutputItemKey: ""}, + "DescribeClientVpnTargetNetworks": {Verb: "Get", Resource: "ClientVpnTargetNetwork", OutputListKey: "ClientVpnTargetNetworks", OutputItemKey: ""}, + "DescribeCoipPools": {Verb: "Get", Resource: "CoipPool", OutputListKey: "CoipPools", OutputItemKey: ""}, + "DescribeConversionTasks": {Verb: "Get", Resource: "ConversionTask", OutputListKey: "ConversionTasks", OutputItemKey: ""}, + "DescribeCustomerGateways": {Verb: "Get", Resource: "CustomerGateway", OutputListKey: "CustomerGateways", OutputItemKey: ""}, + "DescribeDeclarativePoliciesReports": {Verb: "Get", Resource: "DeclarativePoliciesReport", OutputListKey: "Reports", OutputItemKey: ""}, + "DescribeDhcpOptions": {Verb: "Get", Resource: "DhcpOption", OutputListKey: "DhcpOptions", OutputItemKey: ""}, + "DescribeEgressOnlyInternetGateways": {Verb: "Get", Resource: "EgressOnlyInternetGateway", OutputListKey: "EgressOnlyInternetGateways", OutputItemKey: ""}, + "DescribeElasticGpus": {Verb: "Get", Resource: "ElasticGpu", OutputListKey: "ElasticGpuSet", OutputItemKey: ""}, + "DescribeExportImageTasks": {Verb: "Get", Resource: "ExportImageTask", OutputListKey: "ExportImageTasks", OutputItemKey: ""}, + "DescribeExportTasks": {Verb: "Get", Resource: "ExportTask", OutputListKey: "ExportTasks", OutputItemKey: ""}, + "DescribeFastLaunchImages": {Verb: "Get", Resource: "FastLaunchImage", OutputListKey: "FastLaunchImages", OutputItemKey: ""}, + "DescribeFastSnapshotRestores": {Verb: "Get", Resource: "FastSnapshotRestore", OutputListKey: "FastSnapshotRestores", OutputItemKey: ""}, + "DescribeFleetHistory": {Verb: "Get", Resource: "FleetHistory", OutputListKey: "HistoryRecords", OutputItemKey: ""}, + "DescribeFleetInstances": {Verb: "Get", Resource: "FleetInstance", OutputListKey: "ActiveInstances", OutputItemKey: ""}, + "DescribeFleets": {Verb: "Get", Resource: "Fleet", OutputListKey: "Fleets", OutputItemKey: ""}, + "DescribeFlowLogs": {Verb: "Get", Resource: "FlowLog", OutputListKey: "FlowLogs", OutputItemKey: ""}, + "DescribeFpgaImageAttribute": {Verb: "Get", Resource: "FpgaImageAttribute", OutputListKey: "", OutputItemKey: "FpgaImageAttribute"}, + "DescribeFpgaImages": {Verb: "Get", Resource: "FpgaImage", OutputListKey: "FpgaImages", OutputItemKey: ""}, + "DescribeHostReservationOfferings": {Verb: "Get", Resource: "HostReservationOffering", OutputListKey: "OfferingSet", OutputItemKey: ""}, + "DescribeHostReservations": {Verb: "Get", Resource: "HostReservation", OutputListKey: "HostReservationSet", OutputItemKey: ""}, + "DescribeHosts": {Verb: "Get", Resource: "Host", OutputListKey: "Hosts", OutputItemKey: ""}, + "DescribeIamInstanceProfileAssociations": {Verb: "Get", Resource: "IamInstanceProfileAssociation", OutputListKey: "IamInstanceProfileAssociations", OutputItemKey: ""}, + "DescribeIdFormat": {Verb: "Get", Resource: "IdFormat", OutputListKey: "Statuses", OutputItemKey: ""}, + "DescribeIdentityIdFormat": {Verb: "Get", Resource: "IdentityIdFormat", OutputListKey: "Statuses", OutputItemKey: ""}, + "DescribeImageAttribute": {Verb: "Get", Resource: "ImageAttribute", OutputListKey: "BlockDeviceMappings", OutputItemKey: "BootMode"}, + "DescribeImageReferences": {Verb: "Get", Resource: "ImageReference", OutputListKey: "ImageReferences", OutputItemKey: ""}, + "DescribeImageUsageReportEntries": {Verb: "Get", Resource: "ImageUsageReportEntry", OutputListKey: "ImageUsageReportEntries", OutputItemKey: ""}, + "DescribeImageUsageReports": {Verb: "Get", Resource: "ImageUsageReport", OutputListKey: "ImageUsageReports", OutputItemKey: ""}, + "DescribeImages": {Verb: "Get", Resource: "Image", OutputListKey: "Images", OutputItemKey: ""}, + "DescribeImportImageTasks": {Verb: "Get", Resource: "ImportImageTask", OutputListKey: "ImportImageTasks", OutputItemKey: ""}, + "DescribeImportSnapshotTasks": {Verb: "Get", Resource: "ImportSnapshotTask", OutputListKey: "ImportSnapshotTasks", OutputItemKey: ""}, + "DescribeInstanceAttribute": {Verb: "Get", Resource: "InstanceAttribute", OutputListKey: "BlockDeviceMappings", OutputItemKey: "DisableApiStop"}, + "DescribeInstanceConnectEndpoints": {Verb: "Get", Resource: "InstanceConnectEndpoint", OutputListKey: "InstanceConnectEndpoints", OutputItemKey: ""}, + "DescribeInstanceCreditSpecifications": {Verb: "Get", Resource: "InstanceCreditSpecification", OutputListKey: "InstanceCreditSpecifications", OutputItemKey: ""}, + "DescribeInstanceEventNotificationAttributes": {Verb: "Get", Resource: "InstanceEventNotificationAttribute", OutputListKey: "", OutputItemKey: "InstanceTagAttribute"}, + "DescribeInstanceEventWindows": {Verb: "Get", Resource: "InstanceEventWindow", OutputListKey: "InstanceEventWindows", OutputItemKey: ""}, + "DescribeInstanceImageMetadata": {Verb: "Get", Resource: "InstanceImageMetadata", OutputListKey: "InstanceImageMetadata", OutputItemKey: ""}, + "DescribeInstanceSqlHaHistoryStates": {Verb: "Get", Resource: "InstanceSqlHaHistoryState", OutputListKey: "Instances", OutputItemKey: ""}, + "DescribeInstanceSqlHaStates": {Verb: "Get", Resource: "InstanceSqlHaState", OutputListKey: "Instances", OutputItemKey: ""}, + "DescribeInstanceStatus": {Verb: "Get", Resource: "InstanceStatu", OutputListKey: "InstanceStatuses", OutputItemKey: ""}, + "DescribeInstanceTopology": {Verb: "Get", Resource: "InstanceTopology", OutputListKey: "Instances", OutputItemKey: ""}, + "DescribeInstanceTypeOfferings": {Verb: "Get", Resource: "InstanceTypeOffering", OutputListKey: "InstanceTypeOfferings", OutputItemKey: ""}, + "DescribeInstanceTypes": {Verb: "Get", Resource: "InstanceType", OutputListKey: "InstanceTypes", OutputItemKey: ""}, + "DescribeInstances": {Verb: "Get", Resource: "Instance", OutputListKey: "Reservations", OutputItemKey: ""}, + "DescribeInternetGateways": {Verb: "Get", Resource: "InternetGateway", OutputListKey: "InternetGateways", OutputItemKey: ""}, + "DescribeIpamByoasn": {Verb: "Get", Resource: "IpamByoasn", OutputListKey: "Byoasns", OutputItemKey: ""}, + "DescribeIpamExternalResourceVerificationTokens": {Verb: "Get", Resource: "IpamExternalResourceVerificationToken", OutputListKey: "IpamExternalResourceVerificationTokens", OutputItemKey: ""}, + "DescribeIpamPolicies": {Verb: "Get", Resource: "IpamPolicy", OutputListKey: "IpamPolicies", OutputItemKey: ""}, + "DescribeIpamPools": {Verb: "Get", Resource: "IpamPool", OutputListKey: "IpamPools", OutputItemKey: ""}, + "DescribeIpamPrefixListResolverTargets": {Verb: "Get", Resource: "IpamPrefixListResolverTarget", OutputListKey: "IpamPrefixListResolverTargets", OutputItemKey: ""}, + "DescribeIpamPrefixListResolvers": {Verb: "Get", Resource: "IpamPrefixListResolver", OutputListKey: "IpamPrefixListResolvers", OutputItemKey: ""}, + "DescribeIpamResourceDiscoveries": {Verb: "Get", Resource: "IpamResourceDiscovery", OutputListKey: "IpamResourceDiscoveries", OutputItemKey: ""}, + "DescribeIpamResourceDiscoveryAssociations": {Verb: "Get", Resource: "IpamResourceDiscoveryAssociation", OutputListKey: "IpamResourceDiscoveryAssociations", OutputItemKey: ""}, + "DescribeIpamScopes": {Verb: "Get", Resource: "IpamScope", OutputListKey: "IpamScopes", OutputItemKey: ""}, + "DescribeIpams": {Verb: "Get", Resource: "Ipam", OutputListKey: "Ipams", OutputItemKey: ""}, + "DescribeIpv6Pools": {Verb: "Get", Resource: "Ipv6Pool", OutputListKey: "Ipv6Pools", OutputItemKey: ""}, + "DescribeKeyPairs": {Verb: "Get", Resource: "KeyPair", OutputListKey: "KeyPairs", OutputItemKey: ""}, + "DescribeLaunchTemplateVersions": {Verb: "Get", Resource: "LaunchTemplateVersion", OutputListKey: "LaunchTemplateVersions", OutputItemKey: ""}, + "DescribeLaunchTemplates": {Verb: "Get", Resource: "LaunchTemplate", OutputListKey: "LaunchTemplates", OutputItemKey: ""}, + "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations": {Verb: "Get", Resource: "LocalGatewayRouteTableVirtualInterfaceGroupAssociation", OutputListKey: "LocalGatewayRouteTableVirtualInterfaceGroupAssociations", OutputItemKey: ""}, + "DescribeLocalGatewayRouteTableVpcAssociations": {Verb: "Get", Resource: "LocalGatewayRouteTableVpcAssociation", OutputListKey: "LocalGatewayRouteTableVpcAssociations", OutputItemKey: ""}, + "DescribeLocalGatewayRouteTables": {Verb: "Get", Resource: "LocalGatewayRouteTable", OutputListKey: "LocalGatewayRouteTables", OutputItemKey: ""}, + "DescribeLocalGatewayVirtualInterfaceGroups": {Verb: "Get", Resource: "LocalGatewayVirtualInterfaceGroup", OutputListKey: "LocalGatewayVirtualInterfaceGroups", OutputItemKey: ""}, + "DescribeLocalGatewayVirtualInterfaces": {Verb: "Get", Resource: "LocalGatewayVirtualInterface", OutputListKey: "LocalGatewayVirtualInterfaces", OutputItemKey: ""}, + "DescribeLocalGateways": {Verb: "Get", Resource: "LocalGateway", OutputListKey: "LocalGateways", OutputItemKey: ""}, + "DescribeLockedSnapshots": {Verb: "Get", Resource: "LockedSnapshot", OutputListKey: "Snapshots", OutputItemKey: ""}, + "DescribeMacHosts": {Verb: "Get", Resource: "MacHost", OutputListKey: "MacHosts", OutputItemKey: ""}, + "DescribeMacModificationTasks": {Verb: "Get", Resource: "MacModificationTask", OutputListKey: "MacModificationTasks", OutputItemKey: ""}, + "DescribeManagedPrefixLists": {Verb: "Get", Resource: "ManagedPrefixList", OutputListKey: "PrefixLists", OutputItemKey: ""}, + "DescribeMovingAddresses": {Verb: "Get", Resource: "MovingAddress", OutputListKey: "MovingAddressStatuses", OutputItemKey: ""}, + "DescribeNatGateways": {Verb: "Get", Resource: "NatGateway", OutputListKey: "NatGateways", OutputItemKey: ""}, + "DescribeNetworkAcls": {Verb: "Get", Resource: "NetworkAcl", OutputListKey: "NetworkAcls", OutputItemKey: ""}, + "DescribeNetworkInsightsAccessScopeAnalyses": {Verb: "Get", Resource: "NetworkInsightsAccessScopeAnalyse", OutputListKey: "NetworkInsightsAccessScopeAnalyses", OutputItemKey: ""}, + "DescribeNetworkInsightsAccessScopes": {Verb: "Get", Resource: "NetworkInsightsAccessScope", OutputListKey: "NetworkInsightsAccessScopes", OutputItemKey: ""}, + "DescribeNetworkInsightsAnalyses": {Verb: "Get", Resource: "NetworkInsightsAnalyse", OutputListKey: "NetworkInsightsAnalyses", OutputItemKey: ""}, + "DescribeNetworkInsightsPaths": {Verb: "Get", Resource: "NetworkInsightsPath", OutputListKey: "NetworkInsightsPaths", OutputItemKey: ""}, + "DescribeNetworkInterfaceAttribute": {Verb: "Get", Resource: "NetworkInterfaceAttribute", OutputListKey: "Groups", OutputItemKey: "Attachment"}, + "DescribeNetworkInterfacePermissions": {Verb: "Get", Resource: "NetworkInterfacePermission", OutputListKey: "NetworkInterfacePermissions", OutputItemKey: ""}, + "DescribeNetworkInterfaces": {Verb: "Get", Resource: "NetworkInterface", OutputListKey: "NetworkInterfaces", OutputItemKey: ""}, + "DescribeOutpostLags": {Verb: "Get", Resource: "OutpostLag", OutputListKey: "OutpostLags", OutputItemKey: ""}, + "DescribePlacementGroups": {Verb: "Get", Resource: "PlacementGroup", OutputListKey: "PlacementGroups", OutputItemKey: ""}, + "DescribePrefixLists": {Verb: "Get", Resource: "PrefixList", OutputListKey: "PrefixLists", OutputItemKey: ""}, + "DescribePrincipalIdFormat": {Verb: "Get", Resource: "PrincipalIdFormat", OutputListKey: "Principals", OutputItemKey: ""}, + "DescribePublicIpv4Pools": {Verb: "Get", Resource: "PublicIpv4Pool", OutputListKey: "PublicIpv4Pools", OutputItemKey: ""}, + "DescribeRegions": {Verb: "Get", Resource: "Region", OutputListKey: "Regions", OutputItemKey: ""}, + "DescribeReplaceRootVolumeTasks": {Verb: "Get", Resource: "ReplaceRootVolumeTask", OutputListKey: "ReplaceRootVolumeTasks", OutputItemKey: ""}, + "DescribeReservedInstances": {Verb: "Get", Resource: "ReservedInstance", OutputListKey: "ReservedInstances", OutputItemKey: ""}, + "DescribeReservedInstancesListings": {Verb: "Get", Resource: "ReservedInstancesListing", OutputListKey: "ReservedInstancesListings", OutputItemKey: ""}, + "DescribeReservedInstancesModifications": {Verb: "Get", Resource: "ReservedInstancesModification", OutputListKey: "ReservedInstancesModifications", OutputItemKey: ""}, + "DescribeReservedInstancesOfferings": {Verb: "Get", Resource: "ReservedInstancesOffering", OutputListKey: "ReservedInstancesOfferings", OutputItemKey: ""}, + "DescribeRouteServerEndpoints": {Verb: "Get", Resource: "RouteServerEndpoint", OutputListKey: "RouteServerEndpoints", OutputItemKey: ""}, + "DescribeRouteServerPeers": {Verb: "Get", Resource: "RouteServerPeer", OutputListKey: "RouteServerPeers", OutputItemKey: ""}, + "DescribeRouteServers": {Verb: "Get", Resource: "RouteServer", OutputListKey: "RouteServers", OutputItemKey: ""}, + "DescribeRouteTables": {Verb: "Get", Resource: "RouteTable", OutputListKey: "RouteTables", OutputItemKey: ""}, + "DescribeScheduledInstanceAvailability": {Verb: "Get", Resource: "ScheduledInstanceAvailability", OutputListKey: "ScheduledInstanceAvailabilitySet", OutputItemKey: ""}, + "DescribeScheduledInstances": {Verb: "Get", Resource: "ScheduledInstance", OutputListKey: "ScheduledInstanceSet", OutputItemKey: ""}, + "DescribeSecondaryInterfaces": {Verb: "Get", Resource: "SecondaryInterface", OutputListKey: "SecondaryInterfaces", OutputItemKey: ""}, + "DescribeSecondaryNetworks": {Verb: "Get", Resource: "SecondaryNetwork", OutputListKey: "SecondaryNetworks", OutputItemKey: ""}, + "DescribeSecondarySubnets": {Verb: "Get", Resource: "SecondarySubnet", OutputListKey: "SecondarySubnets", OutputItemKey: ""}, + "DescribeSecurityGroupReferences": {Verb: "Get", Resource: "SecurityGroupReference", OutputListKey: "SecurityGroupReferenceSet", OutputItemKey: ""}, + "DescribeSecurityGroupRules": {Verb: "Get", Resource: "SecurityGroupRule", OutputListKey: "SecurityGroupRules", OutputItemKey: ""}, + "DescribeSecurityGroupVpcAssociations": {Verb: "Get", Resource: "SecurityGroupVpcAssociation", OutputListKey: "SecurityGroupVpcAssociations", OutputItemKey: ""}, + "DescribeSecurityGroups": {Verb: "Get", Resource: "SecurityGroup", OutputListKey: "SecurityGroups", OutputItemKey: ""}, + "DescribeServiceLinkVirtualInterfaces": {Verb: "Get", Resource: "ServiceLinkVirtualInterface", OutputListKey: "ServiceLinkVirtualInterfaces", OutputItemKey: ""}, + "DescribeSnapshotAttribute": {Verb: "Get", Resource: "SnapshotAttribute", OutputListKey: "CreateVolumePermissions", OutputItemKey: ""}, + "DescribeSnapshotTierStatus": {Verb: "Get", Resource: "SnapshotTierStatu", OutputListKey: "SnapshotTierStatuses", OutputItemKey: ""}, + "DescribeSnapshots": {Verb: "Get", Resource: "Snapshot", OutputListKey: "Snapshots", OutputItemKey: ""}, + "DescribeSpotDatafeedSubscription": {Verb: "Get", Resource: "SpotDatafeedSubscription", OutputListKey: "", OutputItemKey: "SpotDatafeedSubscription"}, + "DescribeSpotFleetInstances": {Verb: "Get", Resource: "SpotFleetInstance", OutputListKey: "ActiveInstances", OutputItemKey: ""}, + "DescribeSpotFleetRequestHistory": {Verb: "Get", Resource: "SpotFleetRequestHistory", OutputListKey: "HistoryRecords", OutputItemKey: ""}, + "DescribeSpotFleetRequests": {Verb: "Get", Resource: "SpotFleetRequest", OutputListKey: "SpotFleetRequestConfigs", OutputItemKey: ""}, + "DescribeSpotInstanceRequests": {Verb: "Get", Resource: "SpotInstanceRequest", OutputListKey: "SpotInstanceRequests", OutputItemKey: ""}, + "DescribeSpotPriceHistory": {Verb: "Get", Resource: "SpotPriceHistory", OutputListKey: "SpotPriceHistory", OutputItemKey: ""}, + "DescribeStaleSecurityGroups": {Verb: "Get", Resource: "StaleSecurityGroup", OutputListKey: "StaleSecurityGroupSet", OutputItemKey: ""}, + "DescribeStoreImageTasks": {Verb: "Get", Resource: "StoreImageTask", OutputListKey: "StoreImageTaskResults", OutputItemKey: ""}, + "DescribeSubnets": {Verb: "Get", Resource: "Subnet", OutputListKey: "Subnets", OutputItemKey: ""}, + "DescribeTags": {Verb: "Get", Resource: "Tag", OutputListKey: "Tags", OutputItemKey: ""}, + "DescribeTrafficMirrorFilterRules": {Verb: "Get", Resource: "TrafficMirrorFilterRule", OutputListKey: "TrafficMirrorFilterRules", OutputItemKey: ""}, + "DescribeTrafficMirrorFilters": {Verb: "Get", Resource: "TrafficMirrorFilter", OutputListKey: "TrafficMirrorFilters", OutputItemKey: ""}, + "DescribeTrafficMirrorSessions": {Verb: "Get", Resource: "TrafficMirrorSession", OutputListKey: "TrafficMirrorSessions", OutputItemKey: ""}, + "DescribeTrafficMirrorTargets": {Verb: "Get", Resource: "TrafficMirrorTarget", OutputListKey: "TrafficMirrorTargets", OutputItemKey: ""}, + "DescribeTransitGatewayAttachments": {Verb: "Get", Resource: "TransitGatewayAttachment", OutputListKey: "TransitGatewayAttachments", OutputItemKey: ""}, + "DescribeTransitGatewayConnectPeers": {Verb: "Get", Resource: "TransitGatewayConnectPeer", OutputListKey: "TransitGatewayConnectPeers", OutputItemKey: ""}, + "DescribeTransitGatewayConnects": {Verb: "Get", Resource: "TransitGatewayConnect", OutputListKey: "TransitGatewayConnects", OutputItemKey: ""}, + "DescribeTransitGatewayMeteringPolicies": {Verb: "Get", Resource: "TransitGatewayMeteringPolicy", OutputListKey: "TransitGatewayMeteringPolicies", OutputItemKey: ""}, + "DescribeTransitGatewayMulticastDomains": {Verb: "Get", Resource: "TransitGatewayMulticastDomain", OutputListKey: "TransitGatewayMulticastDomains", OutputItemKey: ""}, + "DescribeTransitGatewayPeeringAttachments": {Verb: "Get", Resource: "TransitGatewayPeeringAttachment", OutputListKey: "TransitGatewayPeeringAttachments", OutputItemKey: ""}, + "DescribeTransitGatewayPolicyTables": {Verb: "Get", Resource: "TransitGatewayPolicyTable", OutputListKey: "TransitGatewayPolicyTables", OutputItemKey: ""}, + "DescribeTransitGatewayRouteTableAnnouncements": {Verb: "Get", Resource: "TransitGatewayRouteTableAnnouncement", OutputListKey: "TransitGatewayRouteTableAnnouncements", OutputItemKey: ""}, + "DescribeTransitGatewayRouteTables": {Verb: "Get", Resource: "TransitGatewayRouteTable", OutputListKey: "TransitGatewayRouteTables", OutputItemKey: ""}, + "DescribeTransitGatewayVpcAttachments": {Verb: "Get", Resource: "TransitGatewayVpcAttachment", OutputListKey: "TransitGatewayVpcAttachments", OutputItemKey: ""}, + "DescribeTransitGateways": {Verb: "Get", Resource: "TransitGateway", OutputListKey: "TransitGateways", OutputItemKey: ""}, + "DescribeTrunkInterfaceAssociations": {Verb: "Get", Resource: "TrunkInterfaceAssociation", OutputListKey: "InterfaceAssociations", OutputItemKey: ""}, + "DescribeVerifiedAccessEndpoints": {Verb: "Get", Resource: "VerifiedAccessEndpoint", OutputListKey: "VerifiedAccessEndpoints", OutputItemKey: ""}, + "DescribeVerifiedAccessGroups": {Verb: "Get", Resource: "VerifiedAccessGroup", OutputListKey: "VerifiedAccessGroups", OutputItemKey: ""}, + "DescribeVerifiedAccessInstanceLoggingConfigurations": {Verb: "Get", Resource: "VerifiedAccessInstanceLoggingConfiguration", OutputListKey: "LoggingConfigurations", OutputItemKey: ""}, + "DescribeVerifiedAccessInstances": {Verb: "Get", Resource: "VerifiedAccessInstance", OutputListKey: "VerifiedAccessInstances", OutputItemKey: ""}, + "DescribeVerifiedAccessTrustProviders": {Verb: "Get", Resource: "VerifiedAccessTrustProvider", OutputListKey: "VerifiedAccessTrustProviders", OutputItemKey: ""}, + "DescribeVolumeAttribute": {Verb: "Get", Resource: "VolumeAttribute", OutputListKey: "ProductCodes", OutputItemKey: "AutoEnableIO"}, + "DescribeVolumeStatus": {Verb: "Get", Resource: "VolumeStatu", OutputListKey: "VolumeStatuses", OutputItemKey: ""}, + "DescribeVolumes": {Verb: "Get", Resource: "Volume", OutputListKey: "Volumes", OutputItemKey: ""}, + "DescribeVolumesModifications": {Verb: "Get", Resource: "VolumesModification", OutputListKey: "VolumesModifications", OutputItemKey: ""}, + "DescribeVpcAttribute": {Verb: "Get", Resource: "VpcAttribute", OutputListKey: "", OutputItemKey: "EnableDnsHostnames"}, + "DescribeVpcBlockPublicAccessExclusions": {Verb: "Get", Resource: "VpcBlockPublicAccessExclusion", OutputListKey: "VpcBlockPublicAccessExclusions", OutputItemKey: ""}, + "DescribeVpcBlockPublicAccessOptions": {Verb: "Get", Resource: "VpcBlockPublicAccessOption", OutputListKey: "", OutputItemKey: "VpcBlockPublicAccessOptions"}, + "DescribeVpcClassicLink": {Verb: "Get", Resource: "VpcClassicLink", OutputListKey: "Vpcs", OutputItemKey: ""}, + "DescribeVpcClassicLinkDnsSupport": {Verb: "Get", Resource: "VpcClassicLinkDnsSupport", OutputListKey: "Vpcs", OutputItemKey: ""}, + "DescribeVpcEncryptionControls": {Verb: "Get", Resource: "VpcEncryptionControl", OutputListKey: "VpcEncryptionControls", OutputItemKey: ""}, + "DescribeVpcEndpointAssociations": {Verb: "Get", Resource: "VpcEndpointAssociation", OutputListKey: "VpcEndpointAssociations", OutputItemKey: ""}, + "DescribeVpcEndpointConnectionNotifications": {Verb: "Get", Resource: "VpcEndpointConnectionNotification", OutputListKey: "ConnectionNotificationSet", OutputItemKey: ""}, + "DescribeVpcEndpointConnections": {Verb: "Get", Resource: "VpcEndpointConnection", OutputListKey: "VpcEndpointConnections", OutputItemKey: ""}, + "DescribeVpcEndpointServiceConfigurations": {Verb: "Get", Resource: "VpcEndpointServiceConfiguration", OutputListKey: "ServiceConfigurations", OutputItemKey: ""}, + "DescribeVpcEndpointServicePermissions": {Verb: "Get", Resource: "VpcEndpointServicePermission", OutputListKey: "AllowedPrincipals", OutputItemKey: ""}, + "DescribeVpcEndpointServices": {Verb: "Get", Resource: "VpcEndpointService", OutputListKey: "ServiceDetails", OutputItemKey: ""}, + "DescribeVpcEndpoints": {Verb: "Get", Resource: "VpcEndpoint", OutputListKey: "VpcEndpoints", OutputItemKey: ""}, + "DescribeVpcPeeringConnections": {Verb: "Get", Resource: "VpcPeeringConnection", OutputListKey: "VpcPeeringConnections", OutputItemKey: ""}, + "DescribeVpcs": {Verb: "Get", Resource: "Vpc", OutputListKey: "Vpcs", OutputItemKey: ""}, + "DescribeVpnConcentrators": {Verb: "Get", Resource: "VpnConcentrator", OutputListKey: "VpnConcentrators", OutputItemKey: ""}, + "DescribeVpnConnections": {Verb: "Get", Resource: "VpnConnection", OutputListKey: "VpnConnections", OutputItemKey: ""}, + "DescribeVpnGateways": {Verb: "Get", Resource: "VpnGateway", OutputListKey: "VpnGateways", OutputItemKey: ""}, + "GetActiveVpnTunnelStatus": {Verb: "Get", Resource: "ActiveVpnTunnelStatu", OutputListKey: "", OutputItemKey: "ActiveVpnTunnelStatus"}, + "GetAllowedImagesSettings": {Verb: "Get", Resource: "AllowedImagesSetting", OutputListKey: "ImageCriteria", OutputItemKey: ""}, + "GetAssociatedEnclaveCertificateIamRoles": {Verb: "Get", Resource: "AssociatedEnclaveCertificateIamRole", OutputListKey: "AssociatedRoles", OutputItemKey: ""}, + "GetAssociatedIpv6PoolCidrs": {Verb: "Get", Resource: "AssociatedIpv6PoolCidr", OutputListKey: "Ipv6CidrAssociations", OutputItemKey: ""}, + "GetAwsNetworkPerformanceData": {Verb: "Get", Resource: "AwsNetworkPerformanceData", OutputListKey: "DataResponses", OutputItemKey: ""}, + "GetCapacityManagerAttributes": {Verb: "Get", Resource: "CapacityManagerAttribute", OutputListKey: "", OutputItemKey: ""}, + "GetCapacityManagerMetricData": {Verb: "Get", Resource: "CapacityManagerMetricData", OutputListKey: "MetricDataResults", OutputItemKey: ""}, + "GetCapacityManagerMetricDimensions": {Verb: "Get", Resource: "CapacityManagerMetricDimension", OutputListKey: "MetricDimensionResults", OutputItemKey: ""}, + "GetCapacityReservationUsage": {Verb: "Get", Resource: "CapacityReservationUsage", OutputListKey: "InstanceUsages", OutputItemKey: "InterruptibleCapacityAllocation"}, + "GetCoipPoolUsage": {Verb: "Get", Resource: "CoipPoolUsage", OutputListKey: "CoipAddressUsages", OutputItemKey: ""}, + "GetConsoleOutput": {Verb: "Get", Resource: "ConsoleOutput", OutputListKey: "", OutputItemKey: ""}, + "GetConsoleScreenshot": {Verb: "Get", Resource: "ConsoleScreenshot", OutputListKey: "", OutputItemKey: ""}, + "GetDeclarativePoliciesReportSummary": {Verb: "Get", Resource: "DeclarativePoliciesReportSummary", OutputListKey: "AttributeSummaries", OutputItemKey: ""}, + "GetDefaultCreditSpecification": {Verb: "Get", Resource: "DefaultCreditSpecification", OutputListKey: "", OutputItemKey: "InstanceFamilyCreditSpecification"}, + "GetEbsDefaultKmsKeyId": {Verb: "Get", Resource: "EbsDefaultKmsKeyId", OutputListKey: "", OutputItemKey: ""}, + "GetEbsEncryptionByDefault": {Verb: "Get", Resource: "EbsEncryptionByDefault", OutputListKey: "", OutputItemKey: ""}, + "GetEnabledIpamPolicy": {Verb: "Get", Resource: "EnabledIpamPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetFlowLogsIntegrationTemplate": {Verb: "Get", Resource: "FlowLogsIntegrationTemplate", OutputListKey: "", OutputItemKey: ""}, + "GetGroupsForCapacityReservation": {Verb: "Get", Resource: "GroupsForCapacityReservation", OutputListKey: "CapacityReservationGroups", OutputItemKey: ""}, + "GetHostReservationPurchasePreview": {Verb: "Get", Resource: "HostReservationPurchasePreview", OutputListKey: "Purchase", OutputItemKey: ""}, + "GetImageAncestry": {Verb: "Get", Resource: "ImageAncestry", OutputListKey: "ImageAncestryEntries", OutputItemKey: ""}, + "GetImageBlockPublicAccessState": {Verb: "Get", Resource: "ImageBlockPublicAccessState", OutputListKey: "", OutputItemKey: ""}, + "GetInstanceMetadataDefaults": {Verb: "Get", Resource: "InstanceMetadataDefault", OutputListKey: "", OutputItemKey: "AccountLevel"}, + "GetInstanceTpmEkPub": {Verb: "Get", Resource: "InstanceTpmEkPub", OutputListKey: "", OutputItemKey: ""}, + "GetInstanceTypesFromInstanceRequirements": {Verb: "Get", Resource: "InstanceTypesFromInstanceRequirement", OutputListKey: "InstanceTypes", OutputItemKey: ""}, + "GetInstanceUefiData": {Verb: "Get", Resource: "InstanceUefiData", OutputListKey: "", OutputItemKey: ""}, + "GetIpamAddressHistory": {Verb: "Get", Resource: "IpamAddressHistory", OutputListKey: "HistoryRecords", OutputItemKey: ""}, + "GetIpamDiscoveredAccounts": {Verb: "Get", Resource: "IpamDiscoveredAccount", OutputListKey: "IpamDiscoveredAccounts", OutputItemKey: ""}, + "GetIpamDiscoveredPublicAddresses": {Verb: "Get", Resource: "IpamDiscoveredPublicAddress", OutputListKey: "IpamDiscoveredPublicAddresses", OutputItemKey: ""}, + "GetIpamDiscoveredResourceCidrs": {Verb: "Get", Resource: "IpamDiscoveredResourceCidr", OutputListKey: "IpamDiscoveredResourceCidrs", OutputItemKey: ""}, + "GetIpamPolicyAllocationRules": {Verb: "Get", Resource: "IpamPolicyAllocationRule", OutputListKey: "IpamPolicyDocuments", OutputItemKey: ""}, + "GetIpamPolicyOrganizationTargets": {Verb: "Get", Resource: "IpamPolicyOrganizationTarget", OutputListKey: "OrganizationTargets", OutputItemKey: ""}, + "GetIpamPoolAllocations": {Verb: "Get", Resource: "IpamPoolAllocation", OutputListKey: "IpamPoolAllocations", OutputItemKey: ""}, + "GetIpamPoolCidrs": {Verb: "Get", Resource: "IpamPoolCidr", OutputListKey: "IpamPoolCidrs", OutputItemKey: ""}, + "GetIpamPrefixListResolverRules": {Verb: "Get", Resource: "IpamPrefixListResolverRule", OutputListKey: "Rules", OutputItemKey: ""}, + "GetIpamPrefixListResolverVersionEntries": {Verb: "Get", Resource: "IpamPrefixListResolverVersionEntry", OutputListKey: "Entries", OutputItemKey: ""}, + "GetIpamPrefixListResolverVersions": {Verb: "Get", Resource: "IpamPrefixListResolverVersion", OutputListKey: "IpamPrefixListResolverVersions", OutputItemKey: ""}, + "GetIpamResourceCidrs": {Verb: "Get", Resource: "IpamResourceCidr", OutputListKey: "IpamResourceCidrs", OutputItemKey: ""}, + "GetLaunchTemplateData": {Verb: "Get", Resource: "LaunchTemplateData", OutputListKey: "", OutputItemKey: "LaunchTemplateData"}, + "GetManagedPrefixListAssociations": {Verb: "Get", Resource: "ManagedPrefixListAssociation", OutputListKey: "PrefixListAssociations", OutputItemKey: ""}, + "GetManagedPrefixListEntries": {Verb: "Get", Resource: "ManagedPrefixListEntry", OutputListKey: "Entries", OutputItemKey: ""}, + "GetNetworkInsightsAccessScopeAnalysisFindings": {Verb: "Get", Resource: "NetworkInsightsAccessScopeAnalysisFinding", OutputListKey: "AnalysisFindings", OutputItemKey: ""}, + "GetNetworkInsightsAccessScopeContent": {Verb: "Get", Resource: "NetworkInsightsAccessScopeContent", OutputListKey: "", OutputItemKey: "NetworkInsightsAccessScopeContent"}, + "GetPasswordData": {Verb: "Get", Resource: "PasswordData", OutputListKey: "", OutputItemKey: ""}, + "GetReservedInstancesExchangeQuote": {Verb: "Get", Resource: "ReservedInstancesExchangeQuote", OutputListKey: "ReservedInstanceValueSet", OutputItemKey: "ReservedInstanceValueRollup"}, + "GetRouteServerAssociations": {Verb: "Get", Resource: "RouteServerAssociation", OutputListKey: "RouteServerAssociations", OutputItemKey: ""}, + "GetRouteServerPropagations": {Verb: "Get", Resource: "RouteServerPropagation", OutputListKey: "RouteServerPropagations", OutputItemKey: ""}, + "GetRouteServerRoutingDatabase": {Verb: "Get", Resource: "RouteServerRoutingDatabase", OutputListKey: "Routes", OutputItemKey: ""}, + "GetSecurityGroupsForVpc": {Verb: "Get", Resource: "SecurityGroupsForVpc", OutputListKey: "SecurityGroupForVpcs", OutputItemKey: ""}, + "GetSerialConsoleAccessStatus": {Verb: "Get", Resource: "SerialConsoleAccessStatu", OutputListKey: "", OutputItemKey: ""}, + "GetSnapshotBlockPublicAccessState": {Verb: "Get", Resource: "SnapshotBlockPublicAccessState", OutputListKey: "", OutputItemKey: ""}, + "GetSpotPlacementScores": {Verb: "Get", Resource: "SpotPlacementScore", OutputListKey: "SpotPlacementScores", OutputItemKey: ""}, + "GetSubnetCidrReservations": {Verb: "Get", Resource: "SubnetCidrReservation", OutputListKey: "SubnetIpv4CidrReservations", OutputItemKey: ""}, + "GetTransitGatewayAttachmentPropagations": {Verb: "Get", Resource: "TransitGatewayAttachmentPropagation", OutputListKey: "TransitGatewayAttachmentPropagations", OutputItemKey: ""}, + "GetTransitGatewayMeteringPolicyEntries": {Verb: "Get", Resource: "TransitGatewayMeteringPolicyEntry", OutputListKey: "TransitGatewayMeteringPolicyEntries", OutputItemKey: ""}, + "GetTransitGatewayMulticastDomainAssociations": {Verb: "Get", Resource: "TransitGatewayMulticastDomainAssociation", OutputListKey: "MulticastDomainAssociations", OutputItemKey: ""}, + "GetTransitGatewayPolicyTableAssociations": {Verb: "Get", Resource: "TransitGatewayPolicyTableAssociation", OutputListKey: "Associations", OutputItemKey: ""}, + "GetTransitGatewayPolicyTableEntries": {Verb: "Get", Resource: "TransitGatewayPolicyTableEntry", OutputListKey: "TransitGatewayPolicyTableEntries", OutputItemKey: ""}, + "GetTransitGatewayPrefixListReferences": {Verb: "Get", Resource: "TransitGatewayPrefixListReference", OutputListKey: "TransitGatewayPrefixListReferences", OutputItemKey: ""}, + "GetTransitGatewayRouteTableAssociations": {Verb: "Get", Resource: "TransitGatewayRouteTableAssociation", OutputListKey: "Associations", OutputItemKey: ""}, + "GetTransitGatewayRouteTablePropagations": {Verb: "Get", Resource: "TransitGatewayRouteTablePropagation", OutputListKey: "TransitGatewayRouteTablePropagations", OutputItemKey: ""}, + "GetVerifiedAccessEndpointPolicy": {Verb: "Get", Resource: "VerifiedAccessEndpointPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetVerifiedAccessEndpointTargets": {Verb: "Get", Resource: "VerifiedAccessEndpointTarget", OutputListKey: "VerifiedAccessEndpointTargets", OutputItemKey: ""}, + "GetVerifiedAccessGroupPolicy": {Verb: "Get", Resource: "VerifiedAccessGroupPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetVpcResourcesBlockingEncryptionEnforcement": {Verb: "Get", Resource: "VpcResourcesBlockingEncryptionEnforcement", OutputListKey: "NonCompliantResources", OutputItemKey: ""}, + "GetVpnConnectionDeviceSampleConfiguration": {Verb: "Get", Resource: "VpnConnectionDeviceSampleConfiguration", OutputListKey: "", OutputItemKey: ""}, + "GetVpnConnectionDeviceTypes": {Verb: "Get", Resource: "VpnConnectionDeviceType", OutputListKey: "VpnConnectionDeviceTypes", OutputItemKey: ""}, + "GetVpnTunnelReplacementStatus": {Verb: "Get", Resource: "VpnTunnelReplacementStatu", OutputListKey: "", OutputItemKey: "MaintenanceDetails"}, + "ListImagesInRecycleBin": {Verb: "List", Resource: "ImagesInRecycleBin", OutputListKey: "Images", OutputItemKey: ""}, + "ListSnapshotsInRecycleBin": {Verb: "List", Resource: "SnapshotsInRecycleBin", OutputListKey: "Snapshots", OutputItemKey: ""}, + "ListVolumesInRecycleBin": {Verb: "List", Resource: "VolumesInRecycleBin", OutputListKey: "Volumes", OutputItemKey: ""}, + "ModifyAddressAttribute": {Verb: "Update", Resource: "AddressAttribute", OutputListKey: "", OutputItemKey: "Address"}, + "ModifyAvailabilityZoneGroup": {Verb: "Update", Resource: "AvailabilityZoneGroup", OutputListKey: "", OutputItemKey: ""}, + "ModifyCapacityReservation": {Verb: "Update", Resource: "CapacityReservation", OutputListKey: "", OutputItemKey: ""}, + "ModifyCapacityReservationFleet": {Verb: "Update", Resource: "CapacityReservationFleet", OutputListKey: "", OutputItemKey: ""}, + "ModifyClientVpnEndpoint": {Verb: "Update", Resource: "ClientVpnEndpoint", OutputListKey: "", OutputItemKey: ""}, + "ModifyDefaultCreditSpecification": {Verb: "Update", Resource: "DefaultCreditSpecification", OutputListKey: "", OutputItemKey: "InstanceFamilyCreditSpecification"}, + "ModifyEbsDefaultKmsKeyId": {Verb: "Update", Resource: "EbsDefaultKmsKeyId", OutputListKey: "", OutputItemKey: ""}, + "ModifyFleet": {Verb: "Update", Resource: "Fleet", OutputListKey: "", OutputItemKey: ""}, + "ModifyFpgaImageAttribute": {Verb: "Update", Resource: "FpgaImageAttribute", OutputListKey: "", OutputItemKey: "FpgaImageAttribute"}, + "ModifyHosts": {Verb: "Update", Resource: "Host", OutputListKey: "Successful", OutputItemKey: ""}, + "ModifyIdFormat": {Verb: "Update", Resource: "IdFormat", OutputListKey: "", OutputItemKey: ""}, + "ModifyIdentityIdFormat": {Verb: "Update", Resource: "IdentityIdFormat", OutputListKey: "", OutputItemKey: ""}, + "ModifyImageAttribute": {Verb: "Update", Resource: "ImageAttribute", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstanceAttribute": {Verb: "Update", Resource: "InstanceAttribute", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstanceCapacityReservationAttributes": {Verb: "Update", Resource: "InstanceCapacityReservationAttribute", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstanceConnectEndpoint": {Verb: "Update", Resource: "InstanceConnectEndpoint", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstanceCpuOptions": {Verb: "Update", Resource: "InstanceCpuOption", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstanceCreditSpecification": {Verb: "Update", Resource: "InstanceCreditSpecification", OutputListKey: "SuccessfulInstanceCreditSpecifications", OutputItemKey: ""}, + "ModifyInstanceEventStartTime": {Verb: "Update", Resource: "InstanceEventStartTime", OutputListKey: "", OutputItemKey: "Event"}, + "ModifyInstanceEventWindow": {Verb: "Update", Resource: "InstanceEventWindow", OutputListKey: "", OutputItemKey: "InstanceEventWindow"}, + "ModifyInstanceMaintenanceOptions": {Verb: "Update", Resource: "InstanceMaintenanceOption", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstanceMetadataDefaults": {Verb: "Update", Resource: "InstanceMetadataDefault", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstanceMetadataOptions": {Verb: "Update", Resource: "InstanceMetadataOption", OutputListKey: "", OutputItemKey: "InstanceMetadataOptions"}, + "ModifyInstanceNetworkPerformanceOptions": {Verb: "Update", Resource: "InstanceNetworkPerformanceOption", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstancePlacement": {Verb: "Update", Resource: "InstancePlacement", OutputListKey: "", OutputItemKey: ""}, + "ModifyIpam": {Verb: "Update", Resource: "Ipam", OutputListKey: "", OutputItemKey: "Ipam"}, + "ModifyIpamPolicyAllocationRules": {Verb: "Update", Resource: "IpamPolicyAllocationRule", OutputListKey: "", OutputItemKey: "IpamPolicyDocument"}, + "ModifyIpamPool": {Verb: "Update", Resource: "IpamPool", OutputListKey: "", OutputItemKey: "IpamPool"}, + "ModifyIpamPrefixListResolver": {Verb: "Update", Resource: "IpamPrefixListResolver", OutputListKey: "", OutputItemKey: "IpamPrefixListResolver"}, + "ModifyIpamPrefixListResolverTarget": {Verb: "Update", Resource: "IpamPrefixListResolverTarget", OutputListKey: "", OutputItemKey: "IpamPrefixListResolverTarget"}, + "ModifyIpamResourceCidr": {Verb: "Update", Resource: "IpamResourceCidr", OutputListKey: "", OutputItemKey: "IpamResourceCidr"}, + "ModifyIpamResourceDiscovery": {Verb: "Update", Resource: "IpamResourceDiscovery", OutputListKey: "", OutputItemKey: "IpamResourceDiscovery"}, + "ModifyIpamScope": {Verb: "Update", Resource: "IpamScope", OutputListKey: "", OutputItemKey: "IpamScope"}, + "ModifyLaunchTemplate": {Verb: "Update", Resource: "LaunchTemplate", OutputListKey: "", OutputItemKey: "LaunchTemplate"}, + "ModifyLocalGatewayRoute": {Verb: "Update", Resource: "LocalGatewayRoute", OutputListKey: "", OutputItemKey: "Route"}, + "ModifyManagedPrefixList": {Verb: "Update", Resource: "ManagedPrefixList", OutputListKey: "", OutputItemKey: "PrefixList"}, + "ModifyNetworkInterfaceAttribute": {Verb: "Update", Resource: "NetworkInterfaceAttribute", OutputListKey: "", OutputItemKey: ""}, + "ModifyPrivateDnsNameOptions": {Verb: "Update", Resource: "PrivateDnsNameOption", OutputListKey: "", OutputItemKey: ""}, + "ModifyPublicIpDnsNameOptions": {Verb: "Update", Resource: "PublicIpDnsNameOption", OutputListKey: "", OutputItemKey: ""}, + "ModifyReservedInstances": {Verb: "Update", Resource: "ReservedInstance", OutputListKey: "", OutputItemKey: ""}, + "ModifyRouteServer": {Verb: "Update", Resource: "RouteServer", OutputListKey: "", OutputItemKey: "RouteServer"}, + "ModifySecurityGroupRules": {Verb: "Update", Resource: "SecurityGroupRule", OutputListKey: "", OutputItemKey: ""}, + "ModifySnapshotAttribute": {Verb: "Update", Resource: "SnapshotAttribute", OutputListKey: "", OutputItemKey: ""}, + "ModifySnapshotTier": {Verb: "Update", Resource: "SnapshotTier", OutputListKey: "", OutputItemKey: ""}, + "ModifySpotFleetRequest": {Verb: "Update", Resource: "SpotFleetRequest", OutputListKey: "", OutputItemKey: ""}, + "ModifySubnetAttribute": {Verb: "Update", Resource: "SubnetAttribute", OutputListKey: "", OutputItemKey: ""}, + "ModifyTrafficMirrorFilterNetworkServices": {Verb: "Update", Resource: "TrafficMirrorFilterNetworkService", OutputListKey: "", OutputItemKey: "TrafficMirrorFilter"}, + "ModifyTrafficMirrorFilterRule": {Verb: "Update", Resource: "TrafficMirrorFilterRule", OutputListKey: "", OutputItemKey: "TrafficMirrorFilterRule"}, + "ModifyTrafficMirrorSession": {Verb: "Update", Resource: "TrafficMirrorSession", OutputListKey: "", OutputItemKey: "TrafficMirrorSession"}, + "ModifyTransitGateway": {Verb: "Update", Resource: "TransitGateway", OutputListKey: "", OutputItemKey: "TransitGateway"}, + "ModifyTransitGatewayMeteringPolicy": {Verb: "Update", Resource: "TransitGatewayMeteringPolicy", OutputListKey: "", OutputItemKey: "TransitGatewayMeteringPolicy"}, + "ModifyTransitGatewayPrefixListReference": {Verb: "Update", Resource: "TransitGatewayPrefixListReference", OutputListKey: "", OutputItemKey: "TransitGatewayPrefixListReference"}, + "ModifyTransitGatewayVpcAttachment": {Verb: "Update", Resource: "TransitGatewayVpcAttachment", OutputListKey: "", OutputItemKey: "TransitGatewayVpcAttachment"}, + "ModifyVerifiedAccessEndpoint": {Verb: "Update", Resource: "VerifiedAccessEndpoint", OutputListKey: "", OutputItemKey: "VerifiedAccessEndpoint"}, + "ModifyVerifiedAccessEndpointPolicy": {Verb: "Update", Resource: "VerifiedAccessEndpointPolicy", OutputListKey: "", OutputItemKey: "SseSpecification"}, + "ModifyVerifiedAccessGroup": {Verb: "Update", Resource: "VerifiedAccessGroup", OutputListKey: "", OutputItemKey: "VerifiedAccessGroup"}, + "ModifyVerifiedAccessGroupPolicy": {Verb: "Update", Resource: "VerifiedAccessGroupPolicy", OutputListKey: "", OutputItemKey: "SseSpecification"}, + "ModifyVerifiedAccessInstance": {Verb: "Update", Resource: "VerifiedAccessInstance", OutputListKey: "", OutputItemKey: "VerifiedAccessInstance"}, + "ModifyVerifiedAccessInstanceLoggingConfiguration": {Verb: "Update", Resource: "VerifiedAccessInstanceLoggingConfiguration", OutputListKey: "", OutputItemKey: "LoggingConfiguration"}, + "ModifyVerifiedAccessTrustProvider": {Verb: "Update", Resource: "VerifiedAccessTrustProvider", OutputListKey: "", OutputItemKey: "VerifiedAccessTrustProvider"}, + "ModifyVolume": {Verb: "Update", Resource: "Volume", OutputListKey: "", OutputItemKey: "VolumeModification"}, + "ModifyVolumeAttribute": {Verb: "Update", Resource: "VolumeAttribute", OutputListKey: "", OutputItemKey: ""}, + "ModifyVpcAttribute": {Verb: "Update", Resource: "VpcAttribute", OutputListKey: "", OutputItemKey: ""}, + "ModifyVpcBlockPublicAccessExclusion": {Verb: "Update", Resource: "VpcBlockPublicAccessExclusion", OutputListKey: "", OutputItemKey: "VpcBlockPublicAccessExclusion"}, + "ModifyVpcBlockPublicAccessOptions": {Verb: "Update", Resource: "VpcBlockPublicAccessOption", OutputListKey: "", OutputItemKey: "VpcBlockPublicAccessOptions"}, + "ModifyVpcEncryptionControl": {Verb: "Update", Resource: "VpcEncryptionControl", OutputListKey: "", OutputItemKey: "VpcEncryptionControl"}, + "ModifyVpcEndpoint": {Verb: "Update", Resource: "VpcEndpoint", OutputListKey: "", OutputItemKey: ""}, + "ModifyVpcEndpointConnectionNotification": {Verb: "Update", Resource: "VpcEndpointConnectionNotification", OutputListKey: "", OutputItemKey: ""}, + "ModifyVpcEndpointServiceConfiguration": {Verb: "Update", Resource: "VpcEndpointServiceConfiguration", OutputListKey: "", OutputItemKey: ""}, + "ModifyVpcEndpointServicePayerResponsibility": {Verb: "Update", Resource: "VpcEndpointServicePayerResponsibility", OutputListKey: "", OutputItemKey: ""}, + "ModifyVpcEndpointServicePermissions": {Verb: "Update", Resource: "VpcEndpointServicePermission", OutputListKey: "AddedPrincipals", OutputItemKey: ""}, + "ModifyVpcPeeringConnectionOptions": {Verb: "Update", Resource: "VpcPeeringConnectionOption", OutputListKey: "", OutputItemKey: "AccepterPeeringConnectionOptions"}, + "ModifyVpcTenancy": {Verb: "Update", Resource: "VpcTenancy", OutputListKey: "", OutputItemKey: ""}, + "ModifyVpnConnection": {Verb: "Update", Resource: "VpnConnection", OutputListKey: "", OutputItemKey: "VpnConnection"}, + "ModifyVpnConnectionOptions": {Verb: "Update", Resource: "VpnConnectionOption", OutputListKey: "", OutputItemKey: "VpnConnection"}, + "ModifyVpnTunnelCertificate": {Verb: "Update", Resource: "VpnTunnelCertificate", OutputListKey: "", OutputItemKey: "VpnConnection"}, + "ModifyVpnTunnelOptions": {Verb: "Update", Resource: "VpnTunnelOption", OutputListKey: "", OutputItemKey: "VpnConnection"}, + "RegisterImage": {Verb: "Create", Resource: "Image", OutputListKey: "", OutputItemKey: ""}, + "RegisterInstanceEventNotificationAttributes": {Verb: "Create", Resource: "InstanceEventNotificationAttribute", OutputListKey: "", OutputItemKey: "InstanceTagAttribute"}, + "RegisterTransitGatewayMulticastGroupMembers": {Verb: "Create", Resource: "TransitGatewayMulticastGroupMember", OutputListKey: "", OutputItemKey: "RegisteredMulticastGroupMembers"}, + "RegisterTransitGatewayMulticastGroupSources": {Verb: "Create", Resource: "TransitGatewayMulticastGroupSource", OutputListKey: "", OutputItemKey: "RegisteredMulticastGroupSources"}, + "UpdateCapacityManagerOrganizationsAccess": {Verb: "Update", Resource: "CapacityManagerOrganizationsAccess", OutputListKey: "", OutputItemKey: ""}, + "UpdateInterruptibleCapacityReservationAllocation": {Verb: "Update", Resource: "InterruptibleCapacityReservationAllocation", OutputListKey: "", OutputItemKey: ""}, + "UpdateSecurityGroupRuleDescriptionsEgress": {Verb: "Update", Resource: "SecurityGroupRuleDescriptionsEgress", OutputListKey: "", OutputItemKey: ""}, + "UpdateSecurityGroupRuleDescriptionsIngress": {Verb: "Update", Resource: "SecurityGroupRuleDescriptionsIngress", OutputListKey: "", OutputItemKey: ""}, + }) crud.Register("ecr", map[string]crud.OpMeta{ "BatchGetImage": {Verb: "List", Resource: "Image", OutputListKey: "failures", OutputItemKey: ""}, "BatchGetRepositoryScanningConfiguration": {Verb: "List", Resource: "RepositoryScanningConfiguration", OutputListKey: "failures", OutputItemKey: ""}, diff --git a/internal/generated/fidelity/manifest_gen.go b/internal/generated/fidelity/manifest_gen.go index f928b395..ff065647 100644 --- a/internal/generated/fidelity/manifest_gen.go +++ b/internal/generated/fidelity/manifest_gen.go @@ -6423,7 +6423,7 @@ var Services = map[string]Service{ "RestoreSnapshotTier": TierHandVerified, "StartSnapshot": TierHandVerified, }}, - "ec2": {Protocol: "", ModelBacked: true, EngineWired: false, Operations: map[string]Tier{ + "ec2": {Protocol: "ec2-query", ModelBacked: true, EngineWired: true, Operations: map[string]Tier{ "AcceptAddressTransfer": TierUnimplemented, "AcceptCapacityReservationBillingOwnership": TierUnimplemented, "AcceptReservedInstancesExchangeQuote": TierUnimplemented, @@ -6485,395 +6485,395 @@ var Services = map[string]Service{ "CopyImage": TierHandVerified, "CopySnapshot": TierHandVerified, "CopyVolumes": TierUnimplemented, - "CreateCapacityManagerDataExport": TierUnimplemented, - "CreateCapacityReservation": TierUnimplemented, - "CreateCapacityReservationBySplitting": TierUnimplemented, - "CreateCapacityReservationFleet": TierUnimplemented, - "CreateCarrierGateway": TierUnimplemented, - "CreateClientVpnEndpoint": TierUnimplemented, - "CreateClientVpnRoute": TierUnimplemented, - "CreateCoipCidr": TierUnimplemented, - "CreateCoipPool": TierUnimplemented, - "CreateCustomerGateway": TierUnimplemented, - "CreateDefaultSubnet": TierUnimplemented, - "CreateDefaultVpc": TierUnimplemented, - "CreateDelegateMacVolumeOwnershipTask": TierUnimplemented, - "CreateDhcpOptions": TierUnimplemented, - "CreateEgressOnlyInternetGateway": TierUnimplemented, - "CreateFleet": TierUnimplemented, - "CreateFlowLogs": TierUnimplemented, - "CreateFpgaImage": TierUnimplemented, + "CreateCapacityManagerDataExport": TierAutoCRUD, + "CreateCapacityReservation": TierAutoCRUD, + "CreateCapacityReservationBySplitting": TierAutoCRUD, + "CreateCapacityReservationFleet": TierAutoCRUD, + "CreateCarrierGateway": TierAutoCRUD, + "CreateClientVpnEndpoint": TierAutoCRUD, + "CreateClientVpnRoute": TierAutoCRUD, + "CreateCoipCidr": TierAutoCRUD, + "CreateCoipPool": TierAutoCRUD, + "CreateCustomerGateway": TierAutoCRUD, + "CreateDefaultSubnet": TierAutoCRUD, + "CreateDefaultVpc": TierAutoCRUD, + "CreateDelegateMacVolumeOwnershipTask": TierAutoCRUD, + "CreateDhcpOptions": TierAutoCRUD, + "CreateEgressOnlyInternetGateway": TierAutoCRUD, + "CreateFleet": TierAutoCRUD, + "CreateFlowLogs": TierAutoCRUD, + "CreateFpgaImage": TierAutoCRUD, "CreateImage": TierHandVerified, - "CreateImageUsageReport": TierUnimplemented, - "CreateInstanceConnectEndpoint": TierUnimplemented, - "CreateInstanceEventWindow": TierUnimplemented, - "CreateInstanceExportTask": TierUnimplemented, + "CreateImageUsageReport": TierAutoCRUD, + "CreateInstanceConnectEndpoint": TierAutoCRUD, + "CreateInstanceEventWindow": TierAutoCRUD, + "CreateInstanceExportTask": TierAutoCRUD, "CreateInternetGateway": TierHandVerified, - "CreateInterruptibleCapacityReservationAllocation": TierUnimplemented, - "CreateIpam": TierUnimplemented, - "CreateIpamExternalResourceVerificationToken": TierUnimplemented, - "CreateIpamPolicy": TierUnimplemented, - "CreateIpamPool": TierUnimplemented, - "CreateIpamPrefixListResolver": TierUnimplemented, - "CreateIpamPrefixListResolverTarget": TierUnimplemented, - "CreateIpamResourceDiscovery": TierUnimplemented, - "CreateIpamScope": TierUnimplemented, + "CreateInterruptibleCapacityReservationAllocation": TierAutoCRUD, + "CreateIpam": TierAutoCRUD, + "CreateIpamExternalResourceVerificationToken": TierAutoCRUD, + "CreateIpamPolicy": TierAutoCRUD, + "CreateIpamPool": TierAutoCRUD, + "CreateIpamPrefixListResolver": TierAutoCRUD, + "CreateIpamPrefixListResolverTarget": TierAutoCRUD, + "CreateIpamResourceDiscovery": TierAutoCRUD, + "CreateIpamScope": TierAutoCRUD, "CreateKeyPair": TierHandVerified, - "CreateLaunchTemplate": TierUnimplemented, - "CreateLaunchTemplateVersion": TierUnimplemented, - "CreateLocalGatewayRoute": TierUnimplemented, - "CreateLocalGatewayRouteTable": TierUnimplemented, - "CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation": TierUnimplemented, - "CreateLocalGatewayRouteTableVpcAssociation": TierUnimplemented, - "CreateLocalGatewayVirtualInterface": TierUnimplemented, - "CreateLocalGatewayVirtualInterfaceGroup": TierUnimplemented, - "CreateMacSystemIntegrityProtectionModificationTask": TierUnimplemented, - "CreateManagedPrefixList": TierUnimplemented, - "CreateNatGateway": TierUnimplemented, + "CreateLaunchTemplate": TierAutoCRUD, + "CreateLaunchTemplateVersion": TierAutoCRUD, + "CreateLocalGatewayRoute": TierAutoCRUD, + "CreateLocalGatewayRouteTable": TierAutoCRUD, + "CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation": TierAutoCRUD, + "CreateLocalGatewayRouteTableVpcAssociation": TierAutoCRUD, + "CreateLocalGatewayVirtualInterface": TierAutoCRUD, + "CreateLocalGatewayVirtualInterfaceGroup": TierAutoCRUD, + "CreateMacSystemIntegrityProtectionModificationTask": TierAutoCRUD, + "CreateManagedPrefixList": TierAutoCRUD, + "CreateNatGateway": TierAutoCRUD, "CreateNetworkAcl": TierHandVerified, "CreateNetworkAclEntry": TierHandVerified, - "CreateNetworkInsightsAccessScope": TierUnimplemented, - "CreateNetworkInsightsPath": TierUnimplemented, - "CreateNetworkInterface": TierUnimplemented, - "CreateNetworkInterfacePermission": TierUnimplemented, - "CreatePlacementGroup": TierUnimplemented, - "CreatePublicIpv4Pool": TierUnimplemented, - "CreateReplaceRootVolumeTask": TierUnimplemented, - "CreateReservedInstancesListing": TierUnimplemented, - "CreateRestoreImageTask": TierUnimplemented, + "CreateNetworkInsightsAccessScope": TierAutoCRUD, + "CreateNetworkInsightsPath": TierAutoCRUD, + "CreateNetworkInterface": TierAutoCRUD, + "CreateNetworkInterfacePermission": TierAutoCRUD, + "CreatePlacementGroup": TierAutoCRUD, + "CreatePublicIpv4Pool": TierAutoCRUD, + "CreateReplaceRootVolumeTask": TierAutoCRUD, + "CreateReservedInstancesListing": TierAutoCRUD, + "CreateRestoreImageTask": TierAutoCRUD, "CreateRoute": TierHandVerified, - "CreateRouteServer": TierUnimplemented, - "CreateRouteServerEndpoint": TierUnimplemented, - "CreateRouteServerPeer": TierUnimplemented, + "CreateRouteServer": TierAutoCRUD, + "CreateRouteServerEndpoint": TierAutoCRUD, + "CreateRouteServerPeer": TierAutoCRUD, "CreateRouteTable": TierHandVerified, - "CreateSecondaryNetwork": TierUnimplemented, - "CreateSecondarySubnet": TierUnimplemented, + "CreateSecondaryNetwork": TierAutoCRUD, + "CreateSecondarySubnet": TierAutoCRUD, "CreateSecurityGroup": TierHandVerified, "CreateSnapshot": TierHandVerified, - "CreateSnapshots": TierUnimplemented, - "CreateSpotDatafeedSubscription": TierUnimplemented, - "CreateStoreImageTask": TierUnimplemented, + "CreateSnapshots": TierAutoCRUD, + "CreateSpotDatafeedSubscription": TierAutoCRUD, + "CreateStoreImageTask": TierAutoCRUD, "CreateSubnet": TierHandVerified, - "CreateSubnetCidrReservation": TierUnimplemented, + "CreateSubnetCidrReservation": TierAutoCRUD, "CreateTags": TierHandVerified, - "CreateTrafficMirrorFilter": TierUnimplemented, - "CreateTrafficMirrorFilterRule": TierUnimplemented, - "CreateTrafficMirrorSession": TierUnimplemented, - "CreateTrafficMirrorTarget": TierUnimplemented, - "CreateTransitGateway": TierUnimplemented, - "CreateTransitGatewayConnect": TierUnimplemented, - "CreateTransitGatewayConnectPeer": TierUnimplemented, - "CreateTransitGatewayMeteringPolicy": TierUnimplemented, - "CreateTransitGatewayMeteringPolicyEntry": TierUnimplemented, - "CreateTransitGatewayMulticastDomain": TierUnimplemented, - "CreateTransitGatewayPeeringAttachment": TierUnimplemented, - "CreateTransitGatewayPolicyTable": TierUnimplemented, - "CreateTransitGatewayPrefixListReference": TierUnimplemented, - "CreateTransitGatewayRoute": TierUnimplemented, - "CreateTransitGatewayRouteTable": TierUnimplemented, - "CreateTransitGatewayRouteTableAnnouncement": TierUnimplemented, - "CreateTransitGatewayVpcAttachment": TierUnimplemented, - "CreateVerifiedAccessEndpoint": TierUnimplemented, - "CreateVerifiedAccessGroup": TierUnimplemented, - "CreateVerifiedAccessInstance": TierUnimplemented, - "CreateVerifiedAccessTrustProvider": TierUnimplemented, + "CreateTrafficMirrorFilter": TierAutoCRUD, + "CreateTrafficMirrorFilterRule": TierAutoCRUD, + "CreateTrafficMirrorSession": TierAutoCRUD, + "CreateTrafficMirrorTarget": TierAutoCRUD, + "CreateTransitGateway": TierAutoCRUD, + "CreateTransitGatewayConnect": TierAutoCRUD, + "CreateTransitGatewayConnectPeer": TierAutoCRUD, + "CreateTransitGatewayMeteringPolicy": TierAutoCRUD, + "CreateTransitGatewayMeteringPolicyEntry": TierAutoCRUD, + "CreateTransitGatewayMulticastDomain": TierAutoCRUD, + "CreateTransitGatewayPeeringAttachment": TierAutoCRUD, + "CreateTransitGatewayPolicyTable": TierAutoCRUD, + "CreateTransitGatewayPrefixListReference": TierAutoCRUD, + "CreateTransitGatewayRoute": TierAutoCRUD, + "CreateTransitGatewayRouteTable": TierAutoCRUD, + "CreateTransitGatewayRouteTableAnnouncement": TierAutoCRUD, + "CreateTransitGatewayVpcAttachment": TierAutoCRUD, + "CreateVerifiedAccessEndpoint": TierAutoCRUD, + "CreateVerifiedAccessGroup": TierAutoCRUD, + "CreateVerifiedAccessInstance": TierAutoCRUD, + "CreateVerifiedAccessTrustProvider": TierAutoCRUD, "CreateVolume": TierHandVerified, "CreateVpc": TierHandVerified, - "CreateVpcBlockPublicAccessExclusion": TierUnimplemented, - "CreateVpcEncryptionControl": TierUnimplemented, - "CreateVpcEndpoint": TierUnimplemented, - "CreateVpcEndpointConnectionNotification": TierUnimplemented, - "CreateVpcEndpointServiceConfiguration": TierUnimplemented, - "CreateVpcPeeringConnection": TierUnimplemented, - "CreateVpnConcentrator": TierUnimplemented, - "CreateVpnConnection": TierUnimplemented, - "CreateVpnConnectionRoute": TierUnimplemented, - "CreateVpnGateway": TierUnimplemented, - "DeleteCapacityManagerDataExport": TierUnimplemented, - "DeleteCarrierGateway": TierUnimplemented, - "DeleteClientVpnEndpoint": TierUnimplemented, - "DeleteClientVpnRoute": TierUnimplemented, - "DeleteCoipCidr": TierUnimplemented, - "DeleteCoipPool": TierUnimplemented, - "DeleteCustomerGateway": TierUnimplemented, - "DeleteDhcpOptions": TierUnimplemented, - "DeleteEgressOnlyInternetGateway": TierUnimplemented, - "DeleteFleets": TierUnimplemented, - "DeleteFlowLogs": TierUnimplemented, - "DeleteFpgaImage": TierUnimplemented, - "DeleteImageUsageReport": TierUnimplemented, - "DeleteInstanceConnectEndpoint": TierUnimplemented, - "DeleteInstanceEventWindow": TierUnimplemented, - "DeleteInternetGateway": TierUnimplemented, - "DeleteIpam": TierUnimplemented, - "DeleteIpamExternalResourceVerificationToken": TierUnimplemented, - "DeleteIpamPolicy": TierUnimplemented, - "DeleteIpamPool": TierUnimplemented, - "DeleteIpamPrefixListResolver": TierUnimplemented, - "DeleteIpamPrefixListResolverTarget": TierUnimplemented, - "DeleteIpamResourceDiscovery": TierUnimplemented, - "DeleteIpamScope": TierUnimplemented, + "CreateVpcBlockPublicAccessExclusion": TierAutoCRUD, + "CreateVpcEncryptionControl": TierAutoCRUD, + "CreateVpcEndpoint": TierAutoCRUD, + "CreateVpcEndpointConnectionNotification": TierAutoCRUD, + "CreateVpcEndpointServiceConfiguration": TierAutoCRUD, + "CreateVpcPeeringConnection": TierAutoCRUD, + "CreateVpnConcentrator": TierAutoCRUD, + "CreateVpnConnection": TierAutoCRUD, + "CreateVpnConnectionRoute": TierAutoCRUD, + "CreateVpnGateway": TierAutoCRUD, + "DeleteCapacityManagerDataExport": TierAutoCRUD, + "DeleteCarrierGateway": TierAutoCRUD, + "DeleteClientVpnEndpoint": TierAutoCRUD, + "DeleteClientVpnRoute": TierAutoCRUD, + "DeleteCoipCidr": TierAutoCRUD, + "DeleteCoipPool": TierAutoCRUD, + "DeleteCustomerGateway": TierAutoCRUD, + "DeleteDhcpOptions": TierAutoCRUD, + "DeleteEgressOnlyInternetGateway": TierAutoCRUD, + "DeleteFleets": TierAutoCRUD, + "DeleteFlowLogs": TierAutoCRUD, + "DeleteFpgaImage": TierAutoCRUD, + "DeleteImageUsageReport": TierAutoCRUD, + "DeleteInstanceConnectEndpoint": TierAutoCRUD, + "DeleteInstanceEventWindow": TierAutoCRUD, + "DeleteInternetGateway": TierAutoCRUD, + "DeleteIpam": TierAutoCRUD, + "DeleteIpamExternalResourceVerificationToken": TierAutoCRUD, + "DeleteIpamPolicy": TierAutoCRUD, + "DeleteIpamPool": TierAutoCRUD, + "DeleteIpamPrefixListResolver": TierAutoCRUD, + "DeleteIpamPrefixListResolverTarget": TierAutoCRUD, + "DeleteIpamResourceDiscovery": TierAutoCRUD, + "DeleteIpamScope": TierAutoCRUD, "DeleteKeyPair": TierHandVerified, - "DeleteLaunchTemplate": TierUnimplemented, - "DeleteLaunchTemplateVersions": TierUnimplemented, - "DeleteLocalGatewayRoute": TierUnimplemented, - "DeleteLocalGatewayRouteTable": TierUnimplemented, - "DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation": TierUnimplemented, - "DeleteLocalGatewayRouteTableVpcAssociation": TierUnimplemented, - "DeleteLocalGatewayVirtualInterface": TierUnimplemented, - "DeleteLocalGatewayVirtualInterfaceGroup": TierUnimplemented, - "DeleteManagedPrefixList": TierUnimplemented, - "DeleteNatGateway": TierUnimplemented, + "DeleteLaunchTemplate": TierAutoCRUD, + "DeleteLaunchTemplateVersions": TierAutoCRUD, + "DeleteLocalGatewayRoute": TierAutoCRUD, + "DeleteLocalGatewayRouteTable": TierAutoCRUD, + "DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation": TierAutoCRUD, + "DeleteLocalGatewayRouteTableVpcAssociation": TierAutoCRUD, + "DeleteLocalGatewayVirtualInterface": TierAutoCRUD, + "DeleteLocalGatewayVirtualInterfaceGroup": TierAutoCRUD, + "DeleteManagedPrefixList": TierAutoCRUD, + "DeleteNatGateway": TierAutoCRUD, "DeleteNetworkAcl": TierHandVerified, - "DeleteNetworkAclEntry": TierUnimplemented, - "DeleteNetworkInsightsAccessScope": TierUnimplemented, - "DeleteNetworkInsightsAccessScopeAnalysis": TierUnimplemented, - "DeleteNetworkInsightsAnalysis": TierUnimplemented, - "DeleteNetworkInsightsPath": TierUnimplemented, - "DeleteNetworkInterface": TierUnimplemented, - "DeleteNetworkInterfacePermission": TierUnimplemented, - "DeletePlacementGroup": TierUnimplemented, - "DeletePublicIpv4Pool": TierUnimplemented, - "DeleteQueuedReservedInstances": TierUnimplemented, + "DeleteNetworkAclEntry": TierAutoCRUD, + "DeleteNetworkInsightsAccessScope": TierAutoCRUD, + "DeleteNetworkInsightsAccessScopeAnalysis": TierAutoCRUD, + "DeleteNetworkInsightsAnalysis": TierAutoCRUD, + "DeleteNetworkInsightsPath": TierAutoCRUD, + "DeleteNetworkInterface": TierAutoCRUD, + "DeleteNetworkInterfacePermission": TierAutoCRUD, + "DeletePlacementGroup": TierAutoCRUD, + "DeletePublicIpv4Pool": TierAutoCRUD, + "DeleteQueuedReservedInstances": TierAutoCRUD, "DeleteRoute": TierHandVerified, - "DeleteRouteServer": TierUnimplemented, - "DeleteRouteServerEndpoint": TierUnimplemented, - "DeleteRouteServerPeer": TierUnimplemented, + "DeleteRouteServer": TierAutoCRUD, + "DeleteRouteServerEndpoint": TierAutoCRUD, + "DeleteRouteServerPeer": TierAutoCRUD, "DeleteRouteTable": TierHandVerified, - "DeleteSecondaryNetwork": TierUnimplemented, - "DeleteSecondarySubnet": TierUnimplemented, + "DeleteSecondaryNetwork": TierAutoCRUD, + "DeleteSecondarySubnet": TierAutoCRUD, "DeleteSecurityGroup": TierHandVerified, "DeleteSnapshot": TierHandVerified, - "DeleteSpotDatafeedSubscription": TierUnimplemented, + "DeleteSpotDatafeedSubscription": TierAutoCRUD, "DeleteSubnet": TierHandVerified, - "DeleteSubnetCidrReservation": TierUnimplemented, + "DeleteSubnetCidrReservation": TierAutoCRUD, "DeleteTags": TierHandVerified, - "DeleteTrafficMirrorFilter": TierUnimplemented, - "DeleteTrafficMirrorFilterRule": TierUnimplemented, - "DeleteTrafficMirrorSession": TierUnimplemented, - "DeleteTrafficMirrorTarget": TierUnimplemented, - "DeleteTransitGateway": TierUnimplemented, - "DeleteTransitGatewayConnect": TierUnimplemented, - "DeleteTransitGatewayConnectPeer": TierUnimplemented, - "DeleteTransitGatewayMeteringPolicy": TierUnimplemented, - "DeleteTransitGatewayMeteringPolicyEntry": TierUnimplemented, - "DeleteTransitGatewayMulticastDomain": TierUnimplemented, - "DeleteTransitGatewayPeeringAttachment": TierUnimplemented, - "DeleteTransitGatewayPolicyTable": TierUnimplemented, - "DeleteTransitGatewayPrefixListReference": TierUnimplemented, - "DeleteTransitGatewayRoute": TierUnimplemented, - "DeleteTransitGatewayRouteTable": TierUnimplemented, - "DeleteTransitGatewayRouteTableAnnouncement": TierUnimplemented, - "DeleteTransitGatewayVpcAttachment": TierUnimplemented, - "DeleteVerifiedAccessEndpoint": TierUnimplemented, - "DeleteVerifiedAccessGroup": TierUnimplemented, - "DeleteVerifiedAccessInstance": TierUnimplemented, - "DeleteVerifiedAccessTrustProvider": TierUnimplemented, + "DeleteTrafficMirrorFilter": TierAutoCRUD, + "DeleteTrafficMirrorFilterRule": TierAutoCRUD, + "DeleteTrafficMirrorSession": TierAutoCRUD, + "DeleteTrafficMirrorTarget": TierAutoCRUD, + "DeleteTransitGateway": TierAutoCRUD, + "DeleteTransitGatewayConnect": TierAutoCRUD, + "DeleteTransitGatewayConnectPeer": TierAutoCRUD, + "DeleteTransitGatewayMeteringPolicy": TierAutoCRUD, + "DeleteTransitGatewayMeteringPolicyEntry": TierAutoCRUD, + "DeleteTransitGatewayMulticastDomain": TierAutoCRUD, + "DeleteTransitGatewayPeeringAttachment": TierAutoCRUD, + "DeleteTransitGatewayPolicyTable": TierAutoCRUD, + "DeleteTransitGatewayPrefixListReference": TierAutoCRUD, + "DeleteTransitGatewayRoute": TierAutoCRUD, + "DeleteTransitGatewayRouteTable": TierAutoCRUD, + "DeleteTransitGatewayRouteTableAnnouncement": TierAutoCRUD, + "DeleteTransitGatewayVpcAttachment": TierAutoCRUD, + "DeleteVerifiedAccessEndpoint": TierAutoCRUD, + "DeleteVerifiedAccessGroup": TierAutoCRUD, + "DeleteVerifiedAccessInstance": TierAutoCRUD, + "DeleteVerifiedAccessTrustProvider": TierAutoCRUD, "DeleteVolume": TierHandVerified, "DeleteVpc": TierHandVerified, - "DeleteVpcBlockPublicAccessExclusion": TierUnimplemented, - "DeleteVpcEncryptionControl": TierUnimplemented, - "DeleteVpcEndpointConnectionNotifications": TierUnimplemented, - "DeleteVpcEndpointServiceConfigurations": TierUnimplemented, - "DeleteVpcEndpoints": TierUnimplemented, - "DeleteVpcPeeringConnection": TierUnimplemented, - "DeleteVpnConcentrator": TierUnimplemented, - "DeleteVpnConnection": TierUnimplemented, - "DeleteVpnConnectionRoute": TierUnimplemented, - "DeleteVpnGateway": TierUnimplemented, + "DeleteVpcBlockPublicAccessExclusion": TierAutoCRUD, + "DeleteVpcEncryptionControl": TierAutoCRUD, + "DeleteVpcEndpointConnectionNotifications": TierAutoCRUD, + "DeleteVpcEndpointServiceConfigurations": TierAutoCRUD, + "DeleteVpcEndpoints": TierAutoCRUD, + "DeleteVpcPeeringConnection": TierAutoCRUD, + "DeleteVpnConcentrator": TierAutoCRUD, + "DeleteVpnConnection": TierAutoCRUD, + "DeleteVpnConnectionRoute": TierAutoCRUD, + "DeleteVpnGateway": TierAutoCRUD, "DeprovisionByoipCidr": TierUnimplemented, "DeprovisionIpamByoasn": TierUnimplemented, "DeprovisionIpamPoolCidr": TierUnimplemented, "DeprovisionPublicIpv4PoolCidr": TierUnimplemented, "DeregisterImage": TierHandVerified, - "DeregisterInstanceEventNotificationAttributes": TierUnimplemented, - "DeregisterTransitGatewayMulticastGroupMembers": TierUnimplemented, - "DeregisterTransitGatewayMulticastGroupSources": TierUnimplemented, - "DescribeAccountAttributes": TierUnimplemented, - "DescribeAddressTransfers": TierUnimplemented, + "DeregisterInstanceEventNotificationAttributes": TierAutoCRUD, + "DeregisterTransitGatewayMulticastGroupMembers": TierAutoCRUD, + "DeregisterTransitGatewayMulticastGroupSources": TierAutoCRUD, + "DescribeAccountAttributes": TierAutoCRUD, + "DescribeAddressTransfers": TierAutoCRUD, "DescribeAddresses": TierHandVerified, - "DescribeAddressesAttribute": TierUnimplemented, - "DescribeAggregateIdFormat": TierUnimplemented, + "DescribeAddressesAttribute": TierAutoCRUD, + "DescribeAggregateIdFormat": TierAutoCRUD, "DescribeAvailabilityZones": TierHandVerified, - "DescribeAwsNetworkPerformanceMetricSubscriptions": TierUnimplemented, - "DescribeBundleTasks": TierUnimplemented, - "DescribeByoipCidrs": TierUnimplemented, - "DescribeCapacityBlockExtensionHistory": TierUnimplemented, - "DescribeCapacityBlockExtensionOfferings": TierUnimplemented, - "DescribeCapacityBlockOfferings": TierUnimplemented, - "DescribeCapacityBlockStatus": TierUnimplemented, - "DescribeCapacityBlocks": TierUnimplemented, - "DescribeCapacityManagerDataExports": TierUnimplemented, - "DescribeCapacityReservationBillingRequests": TierUnimplemented, - "DescribeCapacityReservationFleets": TierUnimplemented, - "DescribeCapacityReservationTopology": TierUnimplemented, - "DescribeCapacityReservations": TierUnimplemented, - "DescribeCarrierGateways": TierUnimplemented, - "DescribeClassicLinkInstances": TierUnimplemented, - "DescribeClientVpnAuthorizationRules": TierUnimplemented, - "DescribeClientVpnConnections": TierUnimplemented, - "DescribeClientVpnEndpoints": TierUnimplemented, - "DescribeClientVpnRoutes": TierUnimplemented, - "DescribeClientVpnTargetNetworks": TierUnimplemented, - "DescribeCoipPools": TierUnimplemented, - "DescribeConversionTasks": TierUnimplemented, - "DescribeCustomerGateways": TierUnimplemented, - "DescribeDeclarativePoliciesReports": TierUnimplemented, - "DescribeDhcpOptions": TierUnimplemented, - "DescribeEgressOnlyInternetGateways": TierUnimplemented, - "DescribeElasticGpus": TierUnimplemented, - "DescribeExportImageTasks": TierUnimplemented, - "DescribeExportTasks": TierUnimplemented, - "DescribeFastLaunchImages": TierUnimplemented, - "DescribeFastSnapshotRestores": TierUnimplemented, - "DescribeFleetHistory": TierUnimplemented, - "DescribeFleetInstances": TierUnimplemented, - "DescribeFleets": TierUnimplemented, - "DescribeFlowLogs": TierUnimplemented, - "DescribeFpgaImageAttribute": TierUnimplemented, - "DescribeFpgaImages": TierUnimplemented, - "DescribeHostReservationOfferings": TierUnimplemented, - "DescribeHostReservations": TierUnimplemented, - "DescribeHosts": TierUnimplemented, - "DescribeIamInstanceProfileAssociations": TierUnimplemented, - "DescribeIdFormat": TierUnimplemented, - "DescribeIdentityIdFormat": TierUnimplemented, - "DescribeImageAttribute": TierUnimplemented, - "DescribeImageReferences": TierUnimplemented, - "DescribeImageUsageReportEntries": TierUnimplemented, - "DescribeImageUsageReports": TierUnimplemented, + "DescribeAwsNetworkPerformanceMetricSubscriptions": TierAutoCRUD, + "DescribeBundleTasks": TierAutoCRUD, + "DescribeByoipCidrs": TierAutoCRUD, + "DescribeCapacityBlockExtensionHistory": TierAutoCRUD, + "DescribeCapacityBlockExtensionOfferings": TierAutoCRUD, + "DescribeCapacityBlockOfferings": TierAutoCRUD, + "DescribeCapacityBlockStatus": TierAutoCRUD, + "DescribeCapacityBlocks": TierAutoCRUD, + "DescribeCapacityManagerDataExports": TierAutoCRUD, + "DescribeCapacityReservationBillingRequests": TierAutoCRUD, + "DescribeCapacityReservationFleets": TierAutoCRUD, + "DescribeCapacityReservationTopology": TierAutoCRUD, + "DescribeCapacityReservations": TierAutoCRUD, + "DescribeCarrierGateways": TierAutoCRUD, + "DescribeClassicLinkInstances": TierAutoCRUD, + "DescribeClientVpnAuthorizationRules": TierAutoCRUD, + "DescribeClientVpnConnections": TierAutoCRUD, + "DescribeClientVpnEndpoints": TierAutoCRUD, + "DescribeClientVpnRoutes": TierAutoCRUD, + "DescribeClientVpnTargetNetworks": TierAutoCRUD, + "DescribeCoipPools": TierAutoCRUD, + "DescribeConversionTasks": TierAutoCRUD, + "DescribeCustomerGateways": TierAutoCRUD, + "DescribeDeclarativePoliciesReports": TierAutoCRUD, + "DescribeDhcpOptions": TierAutoCRUD, + "DescribeEgressOnlyInternetGateways": TierAutoCRUD, + "DescribeElasticGpus": TierAutoCRUD, + "DescribeExportImageTasks": TierAutoCRUD, + "DescribeExportTasks": TierAutoCRUD, + "DescribeFastLaunchImages": TierAutoCRUD, + "DescribeFastSnapshotRestores": TierAutoCRUD, + "DescribeFleetHistory": TierAutoCRUD, + "DescribeFleetInstances": TierAutoCRUD, + "DescribeFleets": TierAutoCRUD, + "DescribeFlowLogs": TierAutoCRUD, + "DescribeFpgaImageAttribute": TierAutoCRUD, + "DescribeFpgaImages": TierAutoCRUD, + "DescribeHostReservationOfferings": TierAutoCRUD, + "DescribeHostReservations": TierAutoCRUD, + "DescribeHosts": TierAutoCRUD, + "DescribeIamInstanceProfileAssociations": TierAutoCRUD, + "DescribeIdFormat": TierAutoCRUD, + "DescribeIdentityIdFormat": TierAutoCRUD, + "DescribeImageAttribute": TierAutoCRUD, + "DescribeImageReferences": TierAutoCRUD, + "DescribeImageUsageReportEntries": TierAutoCRUD, + "DescribeImageUsageReports": TierAutoCRUD, "DescribeImages": TierHandVerified, - "DescribeImportImageTasks": TierUnimplemented, - "DescribeImportSnapshotTasks": TierUnimplemented, - "DescribeInstanceAttribute": TierUnimplemented, - "DescribeInstanceConnectEndpoints": TierUnimplemented, - "DescribeInstanceCreditSpecifications": TierUnimplemented, - "DescribeInstanceEventNotificationAttributes": TierUnimplemented, - "DescribeInstanceEventWindows": TierUnimplemented, - "DescribeInstanceImageMetadata": TierUnimplemented, - "DescribeInstanceSqlHaHistoryStates": TierUnimplemented, - "DescribeInstanceSqlHaStates": TierUnimplemented, - "DescribeInstanceStatus": TierUnimplemented, - "DescribeInstanceTopology": TierUnimplemented, - "DescribeInstanceTypeOfferings": TierUnimplemented, - "DescribeInstanceTypes": TierUnimplemented, + "DescribeImportImageTasks": TierAutoCRUD, + "DescribeImportSnapshotTasks": TierAutoCRUD, + "DescribeInstanceAttribute": TierAutoCRUD, + "DescribeInstanceConnectEndpoints": TierAutoCRUD, + "DescribeInstanceCreditSpecifications": TierAutoCRUD, + "DescribeInstanceEventNotificationAttributes": TierAutoCRUD, + "DescribeInstanceEventWindows": TierAutoCRUD, + "DescribeInstanceImageMetadata": TierAutoCRUD, + "DescribeInstanceSqlHaHistoryStates": TierAutoCRUD, + "DescribeInstanceSqlHaStates": TierAutoCRUD, + "DescribeInstanceStatus": TierAutoCRUD, + "DescribeInstanceTopology": TierAutoCRUD, + "DescribeInstanceTypeOfferings": TierAutoCRUD, + "DescribeInstanceTypes": TierAutoCRUD, "DescribeInstances": TierHandVerified, "DescribeInternetGateways": TierHandVerified, - "DescribeIpamByoasn": TierUnimplemented, - "DescribeIpamExternalResourceVerificationTokens": TierUnimplemented, - "DescribeIpamPolicies": TierUnimplemented, - "DescribeIpamPools": TierUnimplemented, - "DescribeIpamPrefixListResolverTargets": TierUnimplemented, - "DescribeIpamPrefixListResolvers": TierUnimplemented, - "DescribeIpamResourceDiscoveries": TierUnimplemented, - "DescribeIpamResourceDiscoveryAssociations": TierUnimplemented, - "DescribeIpamScopes": TierUnimplemented, - "DescribeIpams": TierUnimplemented, - "DescribeIpv6Pools": TierUnimplemented, + "DescribeIpamByoasn": TierAutoCRUD, + "DescribeIpamExternalResourceVerificationTokens": TierAutoCRUD, + "DescribeIpamPolicies": TierAutoCRUD, + "DescribeIpamPools": TierAutoCRUD, + "DescribeIpamPrefixListResolverTargets": TierAutoCRUD, + "DescribeIpamPrefixListResolvers": TierAutoCRUD, + "DescribeIpamResourceDiscoveries": TierAutoCRUD, + "DescribeIpamResourceDiscoveryAssociations": TierAutoCRUD, + "DescribeIpamScopes": TierAutoCRUD, + "DescribeIpams": TierAutoCRUD, + "DescribeIpv6Pools": TierAutoCRUD, "DescribeKeyPairs": TierHandVerified, - "DescribeLaunchTemplateVersions": TierUnimplemented, - "DescribeLaunchTemplates": TierUnimplemented, - "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations": TierUnimplemented, - "DescribeLocalGatewayRouteTableVpcAssociations": TierUnimplemented, - "DescribeLocalGatewayRouteTables": TierUnimplemented, - "DescribeLocalGatewayVirtualInterfaceGroups": TierUnimplemented, - "DescribeLocalGatewayVirtualInterfaces": TierUnimplemented, - "DescribeLocalGateways": TierUnimplemented, - "DescribeLockedSnapshots": TierUnimplemented, - "DescribeMacHosts": TierUnimplemented, - "DescribeMacModificationTasks": TierUnimplemented, - "DescribeManagedPrefixLists": TierUnimplemented, - "DescribeMovingAddresses": TierUnimplemented, - "DescribeNatGateways": TierUnimplemented, + "DescribeLaunchTemplateVersions": TierAutoCRUD, + "DescribeLaunchTemplates": TierAutoCRUD, + "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations": TierAutoCRUD, + "DescribeLocalGatewayRouteTableVpcAssociations": TierAutoCRUD, + "DescribeLocalGatewayRouteTables": TierAutoCRUD, + "DescribeLocalGatewayVirtualInterfaceGroups": TierAutoCRUD, + "DescribeLocalGatewayVirtualInterfaces": TierAutoCRUD, + "DescribeLocalGateways": TierAutoCRUD, + "DescribeLockedSnapshots": TierAutoCRUD, + "DescribeMacHosts": TierAutoCRUD, + "DescribeMacModificationTasks": TierAutoCRUD, + "DescribeManagedPrefixLists": TierAutoCRUD, + "DescribeMovingAddresses": TierAutoCRUD, + "DescribeNatGateways": TierAutoCRUD, "DescribeNetworkAcls": TierHandVerified, - "DescribeNetworkInsightsAccessScopeAnalyses": TierUnimplemented, - "DescribeNetworkInsightsAccessScopes": TierUnimplemented, - "DescribeNetworkInsightsAnalyses": TierUnimplemented, - "DescribeNetworkInsightsPaths": TierUnimplemented, - "DescribeNetworkInterfaceAttribute": TierUnimplemented, - "DescribeNetworkInterfacePermissions": TierUnimplemented, - "DescribeNetworkInterfaces": TierUnimplemented, - "DescribeOutpostLags": TierUnimplemented, - "DescribePlacementGroups": TierUnimplemented, - "DescribePrefixLists": TierUnimplemented, - "DescribePrincipalIdFormat": TierUnimplemented, - "DescribePublicIpv4Pools": TierUnimplemented, + "DescribeNetworkInsightsAccessScopeAnalyses": TierAutoCRUD, + "DescribeNetworkInsightsAccessScopes": TierAutoCRUD, + "DescribeNetworkInsightsAnalyses": TierAutoCRUD, + "DescribeNetworkInsightsPaths": TierAutoCRUD, + "DescribeNetworkInterfaceAttribute": TierAutoCRUD, + "DescribeNetworkInterfacePermissions": TierAutoCRUD, + "DescribeNetworkInterfaces": TierAutoCRUD, + "DescribeOutpostLags": TierAutoCRUD, + "DescribePlacementGroups": TierAutoCRUD, + "DescribePrefixLists": TierAutoCRUD, + "DescribePrincipalIdFormat": TierAutoCRUD, + "DescribePublicIpv4Pools": TierAutoCRUD, "DescribeRegions": TierHandVerified, - "DescribeReplaceRootVolumeTasks": TierUnimplemented, - "DescribeReservedInstances": TierUnimplemented, - "DescribeReservedInstancesListings": TierUnimplemented, - "DescribeReservedInstancesModifications": TierUnimplemented, - "DescribeReservedInstancesOfferings": TierUnimplemented, - "DescribeRouteServerEndpoints": TierUnimplemented, - "DescribeRouteServerPeers": TierUnimplemented, - "DescribeRouteServers": TierUnimplemented, + "DescribeReplaceRootVolumeTasks": TierAutoCRUD, + "DescribeReservedInstances": TierAutoCRUD, + "DescribeReservedInstancesListings": TierAutoCRUD, + "DescribeReservedInstancesModifications": TierAutoCRUD, + "DescribeReservedInstancesOfferings": TierAutoCRUD, + "DescribeRouteServerEndpoints": TierAutoCRUD, + "DescribeRouteServerPeers": TierAutoCRUD, + "DescribeRouteServers": TierAutoCRUD, "DescribeRouteTables": TierHandVerified, - "DescribeScheduledInstanceAvailability": TierUnimplemented, - "DescribeScheduledInstances": TierUnimplemented, - "DescribeSecondaryInterfaces": TierUnimplemented, - "DescribeSecondaryNetworks": TierUnimplemented, - "DescribeSecondarySubnets": TierUnimplemented, - "DescribeSecurityGroupReferences": TierUnimplemented, - "DescribeSecurityGroupRules": TierUnimplemented, - "DescribeSecurityGroupVpcAssociations": TierUnimplemented, + "DescribeScheduledInstanceAvailability": TierAutoCRUD, + "DescribeScheduledInstances": TierAutoCRUD, + "DescribeSecondaryInterfaces": TierAutoCRUD, + "DescribeSecondaryNetworks": TierAutoCRUD, + "DescribeSecondarySubnets": TierAutoCRUD, + "DescribeSecurityGroupReferences": TierAutoCRUD, + "DescribeSecurityGroupRules": TierAutoCRUD, + "DescribeSecurityGroupVpcAssociations": TierAutoCRUD, "DescribeSecurityGroups": TierHandVerified, - "DescribeServiceLinkVirtualInterfaces": TierUnimplemented, - "DescribeSnapshotAttribute": TierUnimplemented, - "DescribeSnapshotTierStatus": TierUnimplemented, + "DescribeServiceLinkVirtualInterfaces": TierAutoCRUD, + "DescribeSnapshotAttribute": TierAutoCRUD, + "DescribeSnapshotTierStatus": TierAutoCRUD, "DescribeSnapshots": TierHandVerified, - "DescribeSpotDatafeedSubscription": TierUnimplemented, - "DescribeSpotFleetInstances": TierUnimplemented, - "DescribeSpotFleetRequestHistory": TierUnimplemented, - "DescribeSpotFleetRequests": TierUnimplemented, - "DescribeSpotInstanceRequests": TierUnimplemented, - "DescribeSpotPriceHistory": TierUnimplemented, - "DescribeStaleSecurityGroups": TierUnimplemented, - "DescribeStoreImageTasks": TierUnimplemented, + "DescribeSpotDatafeedSubscription": TierAutoCRUD, + "DescribeSpotFleetInstances": TierAutoCRUD, + "DescribeSpotFleetRequestHistory": TierAutoCRUD, + "DescribeSpotFleetRequests": TierAutoCRUD, + "DescribeSpotInstanceRequests": TierAutoCRUD, + "DescribeSpotPriceHistory": TierAutoCRUD, + "DescribeStaleSecurityGroups": TierAutoCRUD, + "DescribeStoreImageTasks": TierAutoCRUD, "DescribeSubnets": TierHandVerified, "DescribeTags": TierHandVerified, - "DescribeTrafficMirrorFilterRules": TierUnimplemented, - "DescribeTrafficMirrorFilters": TierUnimplemented, - "DescribeTrafficMirrorSessions": TierUnimplemented, - "DescribeTrafficMirrorTargets": TierUnimplemented, - "DescribeTransitGatewayAttachments": TierUnimplemented, - "DescribeTransitGatewayConnectPeers": TierUnimplemented, - "DescribeTransitGatewayConnects": TierUnimplemented, - "DescribeTransitGatewayMeteringPolicies": TierUnimplemented, - "DescribeTransitGatewayMulticastDomains": TierUnimplemented, - "DescribeTransitGatewayPeeringAttachments": TierUnimplemented, - "DescribeTransitGatewayPolicyTables": TierUnimplemented, - "DescribeTransitGatewayRouteTableAnnouncements": TierUnimplemented, - "DescribeTransitGatewayRouteTables": TierUnimplemented, - "DescribeTransitGatewayVpcAttachments": TierUnimplemented, - "DescribeTransitGateways": TierUnimplemented, - "DescribeTrunkInterfaceAssociations": TierUnimplemented, - "DescribeVerifiedAccessEndpoints": TierUnimplemented, - "DescribeVerifiedAccessGroups": TierUnimplemented, - "DescribeVerifiedAccessInstanceLoggingConfigurations": TierUnimplemented, - "DescribeVerifiedAccessInstances": TierUnimplemented, - "DescribeVerifiedAccessTrustProviders": TierUnimplemented, - "DescribeVolumeAttribute": TierUnimplemented, - "DescribeVolumeStatus": TierUnimplemented, + "DescribeTrafficMirrorFilterRules": TierAutoCRUD, + "DescribeTrafficMirrorFilters": TierAutoCRUD, + "DescribeTrafficMirrorSessions": TierAutoCRUD, + "DescribeTrafficMirrorTargets": TierAutoCRUD, + "DescribeTransitGatewayAttachments": TierAutoCRUD, + "DescribeTransitGatewayConnectPeers": TierAutoCRUD, + "DescribeTransitGatewayConnects": TierAutoCRUD, + "DescribeTransitGatewayMeteringPolicies": TierAutoCRUD, + "DescribeTransitGatewayMulticastDomains": TierAutoCRUD, + "DescribeTransitGatewayPeeringAttachments": TierAutoCRUD, + "DescribeTransitGatewayPolicyTables": TierAutoCRUD, + "DescribeTransitGatewayRouteTableAnnouncements": TierAutoCRUD, + "DescribeTransitGatewayRouteTables": TierAutoCRUD, + "DescribeTransitGatewayVpcAttachments": TierAutoCRUD, + "DescribeTransitGateways": TierAutoCRUD, + "DescribeTrunkInterfaceAssociations": TierAutoCRUD, + "DescribeVerifiedAccessEndpoints": TierAutoCRUD, + "DescribeVerifiedAccessGroups": TierAutoCRUD, + "DescribeVerifiedAccessInstanceLoggingConfigurations": TierAutoCRUD, + "DescribeVerifiedAccessInstances": TierAutoCRUD, + "DescribeVerifiedAccessTrustProviders": TierAutoCRUD, + "DescribeVolumeAttribute": TierAutoCRUD, + "DescribeVolumeStatus": TierAutoCRUD, "DescribeVolumes": TierHandVerified, - "DescribeVolumesModifications": TierUnimplemented, + "DescribeVolumesModifications": TierAutoCRUD, "DescribeVpcAttribute": TierHandVerified, - "DescribeVpcBlockPublicAccessExclusions": TierUnimplemented, - "DescribeVpcBlockPublicAccessOptions": TierUnimplemented, - "DescribeVpcClassicLink": TierUnimplemented, - "DescribeVpcClassicLinkDnsSupport": TierUnimplemented, - "DescribeVpcEncryptionControls": TierUnimplemented, - "DescribeVpcEndpointAssociations": TierUnimplemented, - "DescribeVpcEndpointConnectionNotifications": TierUnimplemented, - "DescribeVpcEndpointConnections": TierUnimplemented, - "DescribeVpcEndpointServiceConfigurations": TierUnimplemented, - "DescribeVpcEndpointServicePermissions": TierUnimplemented, - "DescribeVpcEndpointServices": TierUnimplemented, - "DescribeVpcEndpoints": TierUnimplemented, - "DescribeVpcPeeringConnections": TierUnimplemented, + "DescribeVpcBlockPublicAccessExclusions": TierAutoCRUD, + "DescribeVpcBlockPublicAccessOptions": TierAutoCRUD, + "DescribeVpcClassicLink": TierAutoCRUD, + "DescribeVpcClassicLinkDnsSupport": TierAutoCRUD, + "DescribeVpcEncryptionControls": TierAutoCRUD, + "DescribeVpcEndpointAssociations": TierAutoCRUD, + "DescribeVpcEndpointConnectionNotifications": TierAutoCRUD, + "DescribeVpcEndpointConnections": TierAutoCRUD, + "DescribeVpcEndpointServiceConfigurations": TierAutoCRUD, + "DescribeVpcEndpointServicePermissions": TierAutoCRUD, + "DescribeVpcEndpointServices": TierAutoCRUD, + "DescribeVpcEndpoints": TierAutoCRUD, + "DescribeVpcPeeringConnections": TierAutoCRUD, "DescribeVpcs": TierHandVerified, - "DescribeVpnConcentrators": TierUnimplemented, - "DescribeVpnConnections": TierUnimplemented, - "DescribeVpnGateways": TierUnimplemented, + "DescribeVpnConcentrators": TierAutoCRUD, + "DescribeVpnConnections": TierAutoCRUD, + "DescribeVpnGateways": TierAutoCRUD, "DetachClassicLinkVpc": TierUnimplemented, "DetachInternetGateway": TierHandVerified, "DetachNetworkInterface": TierUnimplemented, @@ -6947,161 +6947,161 @@ var Services = map[string]Service{ "ExportImage": TierUnimplemented, "ExportTransitGatewayRoutes": TierUnimplemented, "ExportVerifiedAccessInstanceClientConfiguration": TierUnimplemented, - "GetActiveVpnTunnelStatus": TierUnimplemented, - "GetAllowedImagesSettings": TierUnimplemented, - "GetAssociatedEnclaveCertificateIamRoles": TierUnimplemented, - "GetAssociatedIpv6PoolCidrs": TierUnimplemented, - "GetAwsNetworkPerformanceData": TierUnimplemented, - "GetCapacityManagerAttributes": TierUnimplemented, - "GetCapacityManagerMetricData": TierUnimplemented, - "GetCapacityManagerMetricDimensions": TierUnimplemented, - "GetCapacityReservationUsage": TierUnimplemented, - "GetCoipPoolUsage": TierUnimplemented, - "GetConsoleOutput": TierUnimplemented, - "GetConsoleScreenshot": TierUnimplemented, - "GetDeclarativePoliciesReportSummary": TierUnimplemented, - "GetDefaultCreditSpecification": TierUnimplemented, - "GetEbsDefaultKmsKeyId": TierUnimplemented, - "GetEbsEncryptionByDefault": TierUnimplemented, - "GetEnabledIpamPolicy": TierUnimplemented, - "GetFlowLogsIntegrationTemplate": TierUnimplemented, - "GetGroupsForCapacityReservation": TierUnimplemented, - "GetHostReservationPurchasePreview": TierUnimplemented, - "GetImageAncestry": TierUnimplemented, - "GetImageBlockPublicAccessState": TierUnimplemented, - "GetInstanceMetadataDefaults": TierUnimplemented, - "GetInstanceTpmEkPub": TierUnimplemented, - "GetInstanceTypesFromInstanceRequirements": TierUnimplemented, - "GetInstanceUefiData": TierUnimplemented, - "GetIpamAddressHistory": TierUnimplemented, - "GetIpamDiscoveredAccounts": TierUnimplemented, - "GetIpamDiscoveredPublicAddresses": TierUnimplemented, - "GetIpamDiscoveredResourceCidrs": TierUnimplemented, - "GetIpamPolicyAllocationRules": TierUnimplemented, - "GetIpamPolicyOrganizationTargets": TierUnimplemented, - "GetIpamPoolAllocations": TierUnimplemented, - "GetIpamPoolCidrs": TierUnimplemented, - "GetIpamPrefixListResolverRules": TierUnimplemented, - "GetIpamPrefixListResolverVersionEntries": TierUnimplemented, - "GetIpamPrefixListResolverVersions": TierUnimplemented, - "GetIpamResourceCidrs": TierUnimplemented, - "GetLaunchTemplateData": TierUnimplemented, - "GetManagedPrefixListAssociations": TierUnimplemented, - "GetManagedPrefixListEntries": TierUnimplemented, - "GetNetworkInsightsAccessScopeAnalysisFindings": TierUnimplemented, - "GetNetworkInsightsAccessScopeContent": TierUnimplemented, - "GetPasswordData": TierUnimplemented, - "GetReservedInstancesExchangeQuote": TierUnimplemented, - "GetRouteServerAssociations": TierUnimplemented, - "GetRouteServerPropagations": TierUnimplemented, - "GetRouteServerRoutingDatabase": TierUnimplemented, - "GetSecurityGroupsForVpc": TierUnimplemented, - "GetSerialConsoleAccessStatus": TierUnimplemented, - "GetSnapshotBlockPublicAccessState": TierUnimplemented, - "GetSpotPlacementScores": TierUnimplemented, - "GetSubnetCidrReservations": TierUnimplemented, - "GetTransitGatewayAttachmentPropagations": TierUnimplemented, - "GetTransitGatewayMeteringPolicyEntries": TierUnimplemented, - "GetTransitGatewayMulticastDomainAssociations": TierUnimplemented, - "GetTransitGatewayPolicyTableAssociations": TierUnimplemented, - "GetTransitGatewayPolicyTableEntries": TierUnimplemented, - "GetTransitGatewayPrefixListReferences": TierUnimplemented, - "GetTransitGatewayRouteTableAssociations": TierUnimplemented, - "GetTransitGatewayRouteTablePropagations": TierUnimplemented, - "GetVerifiedAccessEndpointPolicy": TierUnimplemented, - "GetVerifiedAccessEndpointTargets": TierUnimplemented, - "GetVerifiedAccessGroupPolicy": TierUnimplemented, - "GetVpcResourcesBlockingEncryptionEnforcement": TierUnimplemented, - "GetVpnConnectionDeviceSampleConfiguration": TierUnimplemented, - "GetVpnConnectionDeviceTypes": TierUnimplemented, - "GetVpnTunnelReplacementStatus": TierUnimplemented, + "GetActiveVpnTunnelStatus": TierAutoCRUD, + "GetAllowedImagesSettings": TierAutoCRUD, + "GetAssociatedEnclaveCertificateIamRoles": TierAutoCRUD, + "GetAssociatedIpv6PoolCidrs": TierAutoCRUD, + "GetAwsNetworkPerformanceData": TierAutoCRUD, + "GetCapacityManagerAttributes": TierAutoCRUD, + "GetCapacityManagerMetricData": TierAutoCRUD, + "GetCapacityManagerMetricDimensions": TierAutoCRUD, + "GetCapacityReservationUsage": TierAutoCRUD, + "GetCoipPoolUsage": TierAutoCRUD, + "GetConsoleOutput": TierAutoCRUD, + "GetConsoleScreenshot": TierAutoCRUD, + "GetDeclarativePoliciesReportSummary": TierAutoCRUD, + "GetDefaultCreditSpecification": TierAutoCRUD, + "GetEbsDefaultKmsKeyId": TierAutoCRUD, + "GetEbsEncryptionByDefault": TierAutoCRUD, + "GetEnabledIpamPolicy": TierAutoCRUD, + "GetFlowLogsIntegrationTemplate": TierAutoCRUD, + "GetGroupsForCapacityReservation": TierAutoCRUD, + "GetHostReservationPurchasePreview": TierAutoCRUD, + "GetImageAncestry": TierAutoCRUD, + "GetImageBlockPublicAccessState": TierAutoCRUD, + "GetInstanceMetadataDefaults": TierAutoCRUD, + "GetInstanceTpmEkPub": TierAutoCRUD, + "GetInstanceTypesFromInstanceRequirements": TierAutoCRUD, + "GetInstanceUefiData": TierAutoCRUD, + "GetIpamAddressHistory": TierAutoCRUD, + "GetIpamDiscoveredAccounts": TierAutoCRUD, + "GetIpamDiscoveredPublicAddresses": TierAutoCRUD, + "GetIpamDiscoveredResourceCidrs": TierAutoCRUD, + "GetIpamPolicyAllocationRules": TierAutoCRUD, + "GetIpamPolicyOrganizationTargets": TierAutoCRUD, + "GetIpamPoolAllocations": TierAutoCRUD, + "GetIpamPoolCidrs": TierAutoCRUD, + "GetIpamPrefixListResolverRules": TierAutoCRUD, + "GetIpamPrefixListResolverVersionEntries": TierAutoCRUD, + "GetIpamPrefixListResolverVersions": TierAutoCRUD, + "GetIpamResourceCidrs": TierAutoCRUD, + "GetLaunchTemplateData": TierAutoCRUD, + "GetManagedPrefixListAssociations": TierAutoCRUD, + "GetManagedPrefixListEntries": TierAutoCRUD, + "GetNetworkInsightsAccessScopeAnalysisFindings": TierAutoCRUD, + "GetNetworkInsightsAccessScopeContent": TierAutoCRUD, + "GetPasswordData": TierAutoCRUD, + "GetReservedInstancesExchangeQuote": TierAutoCRUD, + "GetRouteServerAssociations": TierAutoCRUD, + "GetRouteServerPropagations": TierAutoCRUD, + "GetRouteServerRoutingDatabase": TierAutoCRUD, + "GetSecurityGroupsForVpc": TierAutoCRUD, + "GetSerialConsoleAccessStatus": TierAutoCRUD, + "GetSnapshotBlockPublicAccessState": TierAutoCRUD, + "GetSpotPlacementScores": TierAutoCRUD, + "GetSubnetCidrReservations": TierAutoCRUD, + "GetTransitGatewayAttachmentPropagations": TierAutoCRUD, + "GetTransitGatewayMeteringPolicyEntries": TierAutoCRUD, + "GetTransitGatewayMulticastDomainAssociations": TierAutoCRUD, + "GetTransitGatewayPolicyTableAssociations": TierAutoCRUD, + "GetTransitGatewayPolicyTableEntries": TierAutoCRUD, + "GetTransitGatewayPrefixListReferences": TierAutoCRUD, + "GetTransitGatewayRouteTableAssociations": TierAutoCRUD, + "GetTransitGatewayRouteTablePropagations": TierAutoCRUD, + "GetVerifiedAccessEndpointPolicy": TierAutoCRUD, + "GetVerifiedAccessEndpointTargets": TierAutoCRUD, + "GetVerifiedAccessGroupPolicy": TierAutoCRUD, + "GetVpcResourcesBlockingEncryptionEnforcement": TierAutoCRUD, + "GetVpnConnectionDeviceSampleConfiguration": TierAutoCRUD, + "GetVpnConnectionDeviceTypes": TierAutoCRUD, + "GetVpnTunnelReplacementStatus": TierAutoCRUD, "ImportClientVpnClientCertificateRevocationList": TierUnimplemented, "ImportImage": TierUnimplemented, "ImportInstance": TierUnimplemented, "ImportKeyPair": TierHandVerified, "ImportSnapshot": TierUnimplemented, "ImportVolume": TierUnimplemented, - "ListImagesInRecycleBin": TierUnimplemented, - "ListSnapshotsInRecycleBin": TierUnimplemented, - "ListVolumesInRecycleBin": TierUnimplemented, + "ListImagesInRecycleBin": TierAutoCRUD, + "ListSnapshotsInRecycleBin": TierAutoCRUD, + "ListVolumesInRecycleBin": TierAutoCRUD, "LockSnapshot": TierUnimplemented, - "ModifyAddressAttribute": TierUnimplemented, - "ModifyAvailabilityZoneGroup": TierUnimplemented, - "ModifyCapacityReservation": TierUnimplemented, - "ModifyCapacityReservationFleet": TierUnimplemented, - "ModifyClientVpnEndpoint": TierUnimplemented, - "ModifyDefaultCreditSpecification": TierUnimplemented, - "ModifyEbsDefaultKmsKeyId": TierUnimplemented, - "ModifyFleet": TierUnimplemented, - "ModifyFpgaImageAttribute": TierUnimplemented, - "ModifyHosts": TierUnimplemented, - "ModifyIdFormat": TierUnimplemented, - "ModifyIdentityIdFormat": TierUnimplemented, - "ModifyImageAttribute": TierUnimplemented, - "ModifyInstanceAttribute": TierUnimplemented, - "ModifyInstanceCapacityReservationAttributes": TierUnimplemented, - "ModifyInstanceConnectEndpoint": TierUnimplemented, - "ModifyInstanceCpuOptions": TierUnimplemented, - "ModifyInstanceCreditSpecification": TierUnimplemented, - "ModifyInstanceEventStartTime": TierUnimplemented, - "ModifyInstanceEventWindow": TierUnimplemented, - "ModifyInstanceMaintenanceOptions": TierUnimplemented, - "ModifyInstanceMetadataDefaults": TierUnimplemented, - "ModifyInstanceMetadataOptions": TierUnimplemented, - "ModifyInstanceNetworkPerformanceOptions": TierUnimplemented, - "ModifyInstancePlacement": TierUnimplemented, - "ModifyIpam": TierUnimplemented, - "ModifyIpamPolicyAllocationRules": TierUnimplemented, - "ModifyIpamPool": TierUnimplemented, - "ModifyIpamPrefixListResolver": TierUnimplemented, - "ModifyIpamPrefixListResolverTarget": TierUnimplemented, - "ModifyIpamResourceCidr": TierUnimplemented, - "ModifyIpamResourceDiscovery": TierUnimplemented, - "ModifyIpamScope": TierUnimplemented, - "ModifyLaunchTemplate": TierUnimplemented, - "ModifyLocalGatewayRoute": TierUnimplemented, - "ModifyManagedPrefixList": TierUnimplemented, - "ModifyNetworkInterfaceAttribute": TierUnimplemented, - "ModifyPrivateDnsNameOptions": TierUnimplemented, - "ModifyPublicIpDnsNameOptions": TierUnimplemented, - "ModifyReservedInstances": TierUnimplemented, - "ModifyRouteServer": TierUnimplemented, - "ModifySecurityGroupRules": TierUnimplemented, - "ModifySnapshotAttribute": TierUnimplemented, - "ModifySnapshotTier": TierUnimplemented, - "ModifySpotFleetRequest": TierUnimplemented, - "ModifySubnetAttribute": TierUnimplemented, - "ModifyTrafficMirrorFilterNetworkServices": TierUnimplemented, - "ModifyTrafficMirrorFilterRule": TierUnimplemented, - "ModifyTrafficMirrorSession": TierUnimplemented, - "ModifyTransitGateway": TierUnimplemented, - "ModifyTransitGatewayMeteringPolicy": TierUnimplemented, - "ModifyTransitGatewayPrefixListReference": TierUnimplemented, - "ModifyTransitGatewayVpcAttachment": TierUnimplemented, - "ModifyVerifiedAccessEndpoint": TierUnimplemented, - "ModifyVerifiedAccessEndpointPolicy": TierUnimplemented, - "ModifyVerifiedAccessGroup": TierUnimplemented, - "ModifyVerifiedAccessGroupPolicy": TierUnimplemented, - "ModifyVerifiedAccessInstance": TierUnimplemented, - "ModifyVerifiedAccessInstanceLoggingConfiguration": TierUnimplemented, - "ModifyVerifiedAccessTrustProvider": TierUnimplemented, + "ModifyAddressAttribute": TierAutoCRUD, + "ModifyAvailabilityZoneGroup": TierAutoCRUD, + "ModifyCapacityReservation": TierAutoCRUD, + "ModifyCapacityReservationFleet": TierAutoCRUD, + "ModifyClientVpnEndpoint": TierAutoCRUD, + "ModifyDefaultCreditSpecification": TierAutoCRUD, + "ModifyEbsDefaultKmsKeyId": TierAutoCRUD, + "ModifyFleet": TierAutoCRUD, + "ModifyFpgaImageAttribute": TierAutoCRUD, + "ModifyHosts": TierAutoCRUD, + "ModifyIdFormat": TierAutoCRUD, + "ModifyIdentityIdFormat": TierAutoCRUD, + "ModifyImageAttribute": TierAutoCRUD, + "ModifyInstanceAttribute": TierAutoCRUD, + "ModifyInstanceCapacityReservationAttributes": TierAutoCRUD, + "ModifyInstanceConnectEndpoint": TierAutoCRUD, + "ModifyInstanceCpuOptions": TierAutoCRUD, + "ModifyInstanceCreditSpecification": TierAutoCRUD, + "ModifyInstanceEventStartTime": TierAutoCRUD, + "ModifyInstanceEventWindow": TierAutoCRUD, + "ModifyInstanceMaintenanceOptions": TierAutoCRUD, + "ModifyInstanceMetadataDefaults": TierAutoCRUD, + "ModifyInstanceMetadataOptions": TierAutoCRUD, + "ModifyInstanceNetworkPerformanceOptions": TierAutoCRUD, + "ModifyInstancePlacement": TierAutoCRUD, + "ModifyIpam": TierAutoCRUD, + "ModifyIpamPolicyAllocationRules": TierAutoCRUD, + "ModifyIpamPool": TierAutoCRUD, + "ModifyIpamPrefixListResolver": TierAutoCRUD, + "ModifyIpamPrefixListResolverTarget": TierAutoCRUD, + "ModifyIpamResourceCidr": TierAutoCRUD, + "ModifyIpamResourceDiscovery": TierAutoCRUD, + "ModifyIpamScope": TierAutoCRUD, + "ModifyLaunchTemplate": TierAutoCRUD, + "ModifyLocalGatewayRoute": TierAutoCRUD, + "ModifyManagedPrefixList": TierAutoCRUD, + "ModifyNetworkInterfaceAttribute": TierAutoCRUD, + "ModifyPrivateDnsNameOptions": TierAutoCRUD, + "ModifyPublicIpDnsNameOptions": TierAutoCRUD, + "ModifyReservedInstances": TierAutoCRUD, + "ModifyRouteServer": TierAutoCRUD, + "ModifySecurityGroupRules": TierAutoCRUD, + "ModifySnapshotAttribute": TierAutoCRUD, + "ModifySnapshotTier": TierAutoCRUD, + "ModifySpotFleetRequest": TierAutoCRUD, + "ModifySubnetAttribute": TierAutoCRUD, + "ModifyTrafficMirrorFilterNetworkServices": TierAutoCRUD, + "ModifyTrafficMirrorFilterRule": TierAutoCRUD, + "ModifyTrafficMirrorSession": TierAutoCRUD, + "ModifyTransitGateway": TierAutoCRUD, + "ModifyTransitGatewayMeteringPolicy": TierAutoCRUD, + "ModifyTransitGatewayPrefixListReference": TierAutoCRUD, + "ModifyTransitGatewayVpcAttachment": TierAutoCRUD, + "ModifyVerifiedAccessEndpoint": TierAutoCRUD, + "ModifyVerifiedAccessEndpointPolicy": TierAutoCRUD, + "ModifyVerifiedAccessGroup": TierAutoCRUD, + "ModifyVerifiedAccessGroupPolicy": TierAutoCRUD, + "ModifyVerifiedAccessInstance": TierAutoCRUD, + "ModifyVerifiedAccessInstanceLoggingConfiguration": TierAutoCRUD, + "ModifyVerifiedAccessTrustProvider": TierAutoCRUD, "ModifyVolume": TierHandVerified, - "ModifyVolumeAttribute": TierUnimplemented, + "ModifyVolumeAttribute": TierAutoCRUD, "ModifyVpcAttribute": TierHandVerified, - "ModifyVpcBlockPublicAccessExclusion": TierUnimplemented, - "ModifyVpcBlockPublicAccessOptions": TierUnimplemented, - "ModifyVpcEncryptionControl": TierUnimplemented, - "ModifyVpcEndpoint": TierUnimplemented, - "ModifyVpcEndpointConnectionNotification": TierUnimplemented, - "ModifyVpcEndpointServiceConfiguration": TierUnimplemented, - "ModifyVpcEndpointServicePayerResponsibility": TierUnimplemented, - "ModifyVpcEndpointServicePermissions": TierUnimplemented, - "ModifyVpcPeeringConnectionOptions": TierUnimplemented, - "ModifyVpcTenancy": TierUnimplemented, - "ModifyVpnConnection": TierUnimplemented, - "ModifyVpnConnectionOptions": TierUnimplemented, - "ModifyVpnTunnelCertificate": TierUnimplemented, - "ModifyVpnTunnelOptions": TierUnimplemented, + "ModifyVpcBlockPublicAccessExclusion": TierAutoCRUD, + "ModifyVpcBlockPublicAccessOptions": TierAutoCRUD, + "ModifyVpcEncryptionControl": TierAutoCRUD, + "ModifyVpcEndpoint": TierAutoCRUD, + "ModifyVpcEndpointConnectionNotification": TierAutoCRUD, + "ModifyVpcEndpointServiceConfiguration": TierAutoCRUD, + "ModifyVpcEndpointServicePayerResponsibility": TierAutoCRUD, + "ModifyVpcEndpointServicePermissions": TierAutoCRUD, + "ModifyVpcPeeringConnectionOptions": TierAutoCRUD, + "ModifyVpcTenancy": TierAutoCRUD, + "ModifyVpnConnection": TierAutoCRUD, + "ModifyVpnConnectionOptions": TierAutoCRUD, + "ModifyVpnTunnelCertificate": TierAutoCRUD, + "ModifyVpnTunnelOptions": TierAutoCRUD, "MonitorInstances": TierUnimplemented, "MoveAddressToVpc": TierUnimplemented, "MoveByoipCidrToIpam": TierUnimplemented, @@ -7117,9 +7117,9 @@ var Services = map[string]Service{ "PurchaseScheduledInstances": TierUnimplemented, "RebootInstances": TierHandVerified, "RegisterImage": TierHandVerified, - "RegisterInstanceEventNotificationAttributes": TierUnimplemented, - "RegisterTransitGatewayMulticastGroupMembers": TierUnimplemented, - "RegisterTransitGatewayMulticastGroupSources": TierUnimplemented, + "RegisterInstanceEventNotificationAttributes": TierAutoCRUD, + "RegisterTransitGatewayMulticastGroupMembers": TierAutoCRUD, + "RegisterTransitGatewayMulticastGroupSources": TierAutoCRUD, "RejectCapacityReservationBillingOwnership": TierUnimplemented, "RejectTransitGatewayMulticastDomainAssociations": TierUnimplemented, "RejectTransitGatewayPeeringAttachment": TierUnimplemented, @@ -7175,10 +7175,10 @@ var Services = map[string]Service{ "UnassignPrivateNatGatewayAddress": TierUnimplemented, "UnlockSnapshot": TierUnimplemented, "UnmonitorInstances": TierUnimplemented, - "UpdateCapacityManagerOrganizationsAccess": TierUnimplemented, - "UpdateInterruptibleCapacityReservationAllocation": TierUnimplemented, - "UpdateSecurityGroupRuleDescriptionsEgress": TierUnimplemented, - "UpdateSecurityGroupRuleDescriptionsIngress": TierUnimplemented, + "UpdateCapacityManagerOrganizationsAccess": TierAutoCRUD, + "UpdateInterruptibleCapacityReservationAllocation": TierAutoCRUD, + "UpdateSecurityGroupRuleDescriptionsEgress": TierAutoCRUD, + "UpdateSecurityGroupRuleDescriptionsIngress": TierAutoCRUD, "WithdrawByoipCidr": TierUnimplemented, }}, "ec2instanceconnect": {Protocol: "json-1.1", ModelBacked: true, EngineWired: true, Operations: map[string]Tier{ diff --git a/internal/services/ec2/provider.go b/internal/services/ec2/provider.go index 81f4dfd0..2c31780b 100644 --- a/internal/services/ec2/provider.go +++ b/internal/services/ec2/provider.go @@ -200,7 +200,7 @@ func (p *Provider) HandleRequest(ctx context.Context, op string, req *http.Reque case "DescribeVpcAttribute": return p.handleDescribeVpcAttribute(form) default: - return ec2XMLError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/shared/crud/crud.go b/internal/shared/crud/crud.go index f74165cc..4e4b84c2 100644 --- a/internal/shared/crud/crud.go +++ b/internal/shared/crud/crud.go @@ -273,12 +273,8 @@ func JSONProtocol(protocol string) bool { // Each protocol says which operation it means in a different place, and the // engine now reads all three: the JSON protocols put it in an X-Amz-Target // header; rest-json and rest-xml bind every operation to a method and URI -// template, which the route table turns back into a name; query puts it in the -// Action field of a form body. -// -// ec2-query is the one left out. It is form-encoded like query but not -// interchangeable with it, and no registered service speaks it except EC2, -// whose provider is hand-written and never reaches the engine. +// template, which the route table turns back into a name; query and ec2-query put it in +// the Action field of a form body. // // This is deliberately the same question codegen's engineServable answers. The // two must agree: a protocol admitted there but refused here registers @@ -286,7 +282,8 @@ func JSONProtocol(protocol string) bool { // auto-crud. func Servable(protocol string) bool { return JSONProtocol(protocol) || protocol == protocolRESTJSON || - protocol == protocolRESTXML || protocol == protocolQuery + protocol == protocolRESTXML || protocol == protocolQuery || + protocol == protocolEC2Query } // NeedsBody reports whether the gateway must buffer the request body before @@ -300,10 +297,11 @@ func Servable(protocol string) bool { // CRUD-shaped S3 Control operation addresses its resource with a path label or // a query term, so the engine has what it needs without the body. // -// query is the mirror image: servable, and unservable without the body, because -// the operation name itself is a field in it. +// query and ec2-query are the mirror image: servable, and unservable without the body, +// because the operation name itself is a field in it. func NeedsBody(protocol string) bool { - return JSONProtocol(protocol) || protocol == protocolRESTJSON || protocol == protocolQuery + return JSONProtocol(protocol) || protocol == protocolRESTJSON || + protocol == protocolQuery || protocol == protocolEC2Query } // Handle attempts to serve a call from the service's registered operations. It @@ -318,13 +316,13 @@ func Handle(c Call) (*Result, error) { switch { case JSONProtocol(c.Protocol): // The operation name arrived in X-Amz-Target; nothing to resolve. - case c.Protocol == protocolQuery: - // query names its operation in neither a header nor a path: Action is - // a field of the form body, which is why it outlived the two REST - // protocols as a gap. An absent or empty Action is not a request this - // engine can classify — the other fields describe a resource, not an - // operation, and picking one from them would be a guess. + case c.Protocol == protocolQuery || c.Protocol == protocolEC2Query: + // query and ec2-query name their operation in neither a header nor a path: + // Action is a field of the form body. op, form = parseQueryForm(c.Body) + if op == "" { + op = c.Op + } if op == "" { return nil, ErrUnclassified } @@ -365,7 +363,7 @@ func Handle(c Call) (*Result, error) { maps.Copy(params, queryParams(c.URI)) } switch { - case c.Protocol == protocolQuery: + case c.Protocol == protocolQuery || c.Protocol == protocolEC2Query: // Already decoded above. A query body is form-encoded, not JSON, so it // must not reach the branch below — parsing it as JSON fails, and // reporting that as a SerializationException would decline every query @@ -442,10 +440,10 @@ func queryParams(uri string) map[string]any { } // xmlProtocol reports whether a protocol's bodies are XML. It is the -// serialization question, not the routing one: query and rest-xml resolve their +// serialization question, not the routing one: query, ec2-query, and rest-xml resolve their // operation in completely different ways but write the same kind of body. func xmlProtocol(protocol string) bool { - return protocol == protocolRESTXML || protocol == protocolQuery + return protocol == protocolRESTXML || protocol == protocolQuery || protocol == protocolEC2Query } // withContentType stamps the protocol-appropriate content type so a json-1.0 @@ -460,6 +458,8 @@ func withContentType(res *Result, protocol string) *Result { res.ContentType = "application/x-amz-json-1.0" case protocolRESTJSON: res.ContentType = restJSONType + case protocolEC2Query: + res.ContentType = "text/xml" } return res } @@ -679,7 +679,11 @@ func list(service, resource string) ([]map[string]any, error) { // encodeXML, which needs the operation name to build its envelope. func okBody(protocol, op string, v map[string]any) (*Result, error) { if xmlProtocol(protocol) { - return &Result{Status: 200, Body: encodeXML(protocol, op, v), ContentType: xmlContentType}, nil + ct := xmlContentType + if protocol == protocolEC2Query { + ct = "text/xml" + } + return &Result{Status: 200, Body: encodeXML(protocol, op, v), ContentType: ct}, nil } b, err := json.Marshal(v) if err != nil { @@ -705,13 +709,21 @@ func serializationError(protocol string) *Result { func errorResult(protocol, code, message string) *Result { if xmlProtocol(protocol) { body := xmlHeader - if protocol == protocolQuery { + switch protocol { + case protocolQuery: body += "Sender" + code + "" + message + "" - } else { + case protocolEC2Query: + body += "" + code + + "" + message + "" + randHex(8) + "" + default: body += "" + code + "" + message + "" } - return &Result{Status: 400, Body: []byte(body), ContentType: xmlContentType} + ct := xmlContentType + if protocol == protocolEC2Query { + ct = "text/xml" + } + return &Result{Status: 400, Body: []byte(body), ContentType: ct} } b, _ := json.Marshal(map[string]string{"__type": code, "message": message}) return &Result{Status: 400, Body: b, ContentType: jsonContentType} diff --git a/internal/shared/crud/crud_test.go b/internal/shared/crud/crud_test.go index aa44d5c9..e48839b4 100644 --- a/internal/shared/crud/crud_test.go +++ b/internal/shared/crud/crud_test.go @@ -123,9 +123,8 @@ func TestEngineUnclassified(t *testing.T) { if _, err := handleJSON(t, svc, "SomeCustomOp", nil); err != ErrUnclassified { t.Fatalf("unknown op: want ErrUnclassified, got %v", err) } - // ec2-query is the protocol still outside the engine: unlike query, it is - // not form-encoded with an Action field the engine can read. - if _, err := Handle(Call{Service: svc, Protocol: "ec2-query", Op: "CreateWidget", Body: []byte("{}")}); err != ErrUnclassified { + // An unknown protocol returns ErrUnclassified. + if _, err := Handle(Call{Service: svc, Protocol: "nonsense", Op: "CreateWidget", Body: []byte("{}")}); err != ErrUnclassified { t.Fatalf("unservable protocol: want ErrUnclassified, got %v", err) } if _, err := handleJSON(t, "unregistered", "CreateThing", nil); err != ErrUnclassified { @@ -513,7 +512,7 @@ func TestServableAndNeedsBody(t *testing.T) { // The mirror image: servable, and its operation name is in the body, so // it must be buffered before it can be read. {"query", true, true}, - {"ec2-query", false, false}, + {"ec2-query", true, true}, {"nonsense", false, false}, } for _, c := range cases { @@ -528,6 +527,51 @@ func TestServableAndNeedsBody(t *testing.T) { } } +func handleEC2Query(t *testing.T, service string, form url.Values) (*Result, error) { + t.Helper() + return Handle(Call{ + Service: service, Protocol: "ec2-query", + Method: "POST", URI: "/", Body: []byte(form.Encode()), + }) +} + +func TestEngineEC2QueryRoundTrip(t *testing.T) { + const svc = "ec2test" + Register(svc, map[string]OpMeta{ + "CreateRoute": {Verb: "Create", Resource: "Route"}, + "DescribeRoutes": {Verb: "Get", Resource: "Route", OutputListKey: "RouteSet"}, + "DeleteRoute": {Verb: "Delete", Resource: "Route"}, + }) + + r, err := handleEC2Query(t, svc, url.Values{ + "Action": {"CreateRoute"}, + "Version": {"2016-11-15"}, + "DestinationCidrBlock": {"10.0.0.0/16"}, + }) + if err != nil || r.Status != 200 { + t.Fatalf("create route: status=%d err=%v", statusOf(r), err) + } + if r.ContentType != "text/xml" { + t.Errorf("content type = %q, want text/xml", r.ContentType) + } + body := string(r.Body) + if !strings.Contains(body, "") { + t.Fatalf("not an ec2 query envelope: %s", body) + } + + r, err = handleEC2Query(t, svc, url.Values{ + "Action": {"DescribeRoutes"}, + "Version": {"2016-11-15"}, + }) + if err != nil || r.Status != 200 { + t.Fatalf("describe routes: status=%d err=%v", statusOf(r), err) + } + body = string(r.Body) + if !strings.Contains(body, "") { + t.Fatalf("not an ec2 query list envelope: %s", body) + } +} + // --- rest-xml --- func handleXML(t *testing.T, service, method, uri string) (*Result, error) { diff --git a/internal/shared/crud/xml.go b/internal/shared/crud/xml.go index 91f9dd0a..b0775743 100644 --- a/internal/shared/crud/xml.go +++ b/internal/shared/crud/xml.go @@ -12,22 +12,17 @@ import ( const xmlHeader = `` const ( - protocolQuery = "query" - protocolRESTXML = "rest-xml" + protocolQuery = "query" + protocolRESTXML = "rest-xml" + protocolEC2Query = "ec2-query" ) // encodeXML renders an engine response as an AWS XML body. // -// The two dialects differ only in the envelope. botocore's query parser looks -// for nested inside and returns a result -// with nothing in it when the nesting is absent; its rest-xml parser maps the -// root element's children straight onto the output shape and ignores the root's -// name. So query gets both wrappers and rest-xml gets one. -// -// No xmlns is emitted. botocore strips the namespace from every element before -// matching it, so declaring one would be bytes on the wire that nothing reads. -// If that ever stops being true the namespace belongs on OpMeta, from the -// model's xmlNamespace trait, rather than guessed at here. +// The dialects differ in the envelope: +// - query: ...... +// - rest-xml: ... (botocore maps root children directly) +// - ec2-query: ...... // // This is the same "plausible, not faithful" contract as the JSON path: the // body echoes what the caller stored, in the shape an SDK can parse. It is not @@ -37,51 +32,57 @@ func encodeXML(protocol, op string, v map[string]any) []byte { var b strings.Builder b.WriteString(xmlHeader) - if protocol == protocolQuery { + switch protocol { + case protocolEC2Query: + b.WriteString("<" + op + "Response xmlns=\"http://ec2.amazonaws.com/doc/2016-11-15/\">") + b.WriteString("" + randHex(8) + "") + writeValue(&b, protocol, v) + b.WriteString("") + case protocolQuery: b.WriteString("<" + op + "Response>") - } - writeElement(&b, op+"Result", v) - if protocol == protocolQuery { - // RequestId is not optional: botocore's query parser reads - // ResponseMetadata into every response's metadata, and an SDK that logs - // or retries on it gets an empty string otherwise. + writeElement(&b, protocol, op+"Result", v) b.WriteString("" + randHex(8) + "") b.WriteString("") + default: + writeElement(&b, protocol, op+"Result", v) } return []byte(b.String()) } // writeElement writes one … element whose content is value. -func writeElement(b *strings.Builder, name string, value any) { +func writeElement(b *strings.Builder, protocol, name string, value any) { b.WriteString("<" + name + ">") - writeValue(b, value) + writeValue(b, protocol, value) b.WriteString("") } // writeValue writes the content of an element: nested elements for a map, -// entries for a list, escaped text for anything else. -func writeValue(b *strings.Builder, value any) { +// (for ec2-query) or (for query/rest-xml) entries for a list, escaped text for anything else. +func writeValue(b *strings.Builder, protocol string, value any) { switch val := value.(type) { case nil: case map[string]any: for _, k := range sortedKeys(val) { - writeElement(b, k, val[k]) + writeElement(b, protocol, k, val[k]) } case []map[string]any: - // AWS wraps list entries in for both dialects unless the model - // flattens the list. The engine has no flattening information, so it - // emits the default rather than guessing per service. + listElem := "member" + if protocol == protocolEC2Query { + listElem = "item" + } for _, item := range val { - writeElement(b, "member", item) + writeElement(b, protocol, listElem, item) } case []any: - // The engine's own list() produces []map[string]any, but a list echoed - // back from a caller's JSON body arrives as []any. + listElem := "member" + if protocol == protocolEC2Query { + listElem = "item" + } for _, item := range val { - writeElement(b, "member", item) + writeElement(b, protocol, listElem, item) } case string: diff --git a/internal/shared/crud/xml_test.go b/internal/shared/crud/xml_test.go index 9178df4a..33b8e4a4 100644 --- a/internal/shared/crud/xml_test.go +++ b/internal/shared/crud/xml_test.go @@ -10,17 +10,17 @@ import ( // requestIDPattern strips the synthesized RequestId so envelope assertions can // compare a fixed string. -var requestIDPattern = regexp.MustCompile(`[0-9a-f]+`) +var requestIDPattern = regexp.MustCompile(`<(RequestId|requestId)>[0-9a-f]+`) func normalize(b []byte) string { - s := requestIDPattern.ReplaceAllString(string(b), "ID") + s := requestIDPattern.ReplaceAllString(string(b), "<$1>ID") return strings.TrimPrefix(s, xmlHeader) } -// TestEncodeXMLEnvelopes pins the two dialects apart. botocore's query parser +// TestEncodeXMLEnvelopes pins the three XML dialects apart. botocore's query parser // looks for inside ; its rest-xml parser // maps the root element's children straight onto the output shape and ignores -// the root's name. +// the root's name; ec2-query wraps in with root children and item lists. func TestEncodeXMLEnvelopes(t *testing.T) { body := map[string]any{"DNSName": "lb-1.example.com"} @@ -38,6 +38,29 @@ func TestEncodeXMLEnvelopes(t *testing.T) { if got != want { t.Errorf("rest-xml envelope:\n got %s\nwant %s", got, want) } + + got = normalize(encodeXML(protocolEC2Query, "CreateRoute", body)) + want = "" + + "ID" + + "lb-1.example.com" + + "" + if got != want { + t.Errorf("ec2-query envelope:\n got %s\nwant %s", got, want) + } +} + +func TestEncodeXMLEC2ListUsesItem(t *testing.T) { + body := map[string]any{"SecurityGroups": []map[string]any{ + {"GroupId": "sg-1"}, {"GroupId": "sg-2"}, + }} + got := normalize(encodeXML(protocolEC2Query, "DescribeSecurityGroups", body)) + want := "" + + "ID" + + "sg-1sg-2" + + "" + if got != want { + t.Errorf("ec2-query list:\n got %s\nwant %s", got, want) + } } func TestEncodeXMLValues(t *testing.T) {