docs: publish only the AWS operations Spinifex serves

The coverage pages led with a percentage and an "x of y" count, and every
table listed the modelled operations Spinifex does not implement, which reads
as a scorecard against AWS rather than a statement of what the platform serves.

A published page now opens with the operation count alone, tables the
operations the gateway serves, and carries a separate not-applicable table with
each reason inline instead of footnotes. The unimplemented operations and the
counts move to docs/coverage/internal-report.md, which no docs-site slug points
at. A service with no implemented operations has no publishable page.
This commit is contained in:
Julian Sommer
2026-09-15 10:28:35 +10:00
parent 546053d430
commit e2fb37c0ac
19 changed files with 1568 additions and 1225 deletions
+2
View File
@@ -4,6 +4,8 @@ This directory contains the Spinifex documentation. This is available in individ
The [AWS API coverage](coverage/README.md) pages are generated from Spinifex's dispatch tables and the pinned AWS API models, one page per service. Run `make aws-model-coverage` to regenerate them and print a summary. Only `pages.json` and the `intro.md` files under `coverage/` are hand-written; every `README.md` there is generated and will be overwritten.
A published page names the operations Spinifex serves and the ones the platform will never serve, with the reason for each. It carries no percentage and no unimplemented operation: the same run writes those to [`coverage/internal-report.md`](coverage/internal-report.md), which no slug in the docs site's configuration points at, so it stays internal.
## Frontmatter
Each published page lives at `<category>/<slug>/README.md` and carries YAML frontmatter that the docs site turns into page metadata. Three fields have length rules, because search engines flag a title tag or meta description that falls outside them:
+13 -13
View File
@@ -1,7 +1,7 @@
---
title: "AWS API Coverage"
seoTitle: "Which AWS API Operations Spinifex Implements — Spinifex Docs"
description: "Operation-level coverage of every AWS API Spinifex serves, generated from its gateway dispatch tables and the pinned AWS SDK service models on each build."
description: "The AWS API operations Spinifex serves, generated from its gateway dispatch tables and the pinned AWS SDK service models on each build, service by service."
category: "Coverage"
sections:
- overview
@@ -17,16 +17,16 @@ tags:
## Overview
Spinifex serves the AWS APIs below. Every page counts the operations in the pinned `aws-sdk-go v1.55.8` `api-2.json` model for its service and reports, operation by operation, whether Spinifex implements it.
Spinifex serves the AWS APIs below. Every page names the operations Spinifex implements from the pinned `aws-sdk-go v1.55.8` `api-2.json` model for its service, alongside those the platform does not offer and why.
| Service | Implemented | Modelled | Coverage |
|---|---:|---:|---:|
| [ACM](/coverage/acm) | 9 | 15 | 60.0% |
| [EC2](/coverage/ec2) | 125 | 625 | 20.0% |
| [ECR](/coverage/ecr) | 19 | 47 | 40.4% |
| [ECS](/coverage/ecs) | 31 | 56 | 55.4% |
| [EKS](/coverage/eks) | 34 | 56 | 60.7% |
| [ELBv2](/coverage/elbv2) | 34 | 46 | 73.9% |
| [IAM](/coverage/iam) | 75 | 159 | 47.2% |
| [RDS](/coverage/rds) | 26 | 162 | 16.0% |
| [STS](/coverage/sts) | 5 | 8 | 62.5% |
| Service | Operations |
|---|---:|
| [ACM](/coverage/acm) | 9 |
| [EC2](/coverage/ec2) | 125 |
| [ECR](/coverage/ecr) | 19 |
| [ECS](/coverage/ecs) | 31 |
| [EKS](/coverage/eks) | 34 |
| [ELBv2](/coverage/elbv2) | 34 |
| [IAM](/coverage/iam) | 75 |
| [RDS](/coverage/rds) | 26 |
| [STS](/coverage/sts) | 5 |
+13 -19
View File
@@ -1,7 +1,7 @@
---
title: "ACM API Coverage"
seoTitle: "AWS Certificate Manager API Coverage — Spinifex Docs"
description: "Every operation in the AWS Certificate Manager API model and whether Spinifex implements it, generated from the gateway dispatch tables on each build."
description: "The AWS Certificate Manager API operations Spinifex implements, generated from the gateway dispatch tables on each build, with those it does not offer and why."
category: "Coverage"
sections:
- overview
@@ -18,7 +18,7 @@ tags:
## Overview
Spinifex implements **9 of the 15** operations (**60.0%**) in the ACM `2015-12-08` API model.
Spinifex implements **9 operations** in the ACM `2015-12-08` API model.
### Import and issuance
@@ -30,20 +30,14 @@ Terraform's canonical certificate, DNS record and validation flow works unmodifi
### Operations
| Operation | Status |
|---|---|
| `AddTagsToCertificate` | ✅ Implemented |
| `DeleteCertificate` | ✅ Implemented |
| `DescribeCertificate` | ✅ Implemented |
| `ExportCertificate` | ❌ Not implemented |
| `GetAccountConfiguration` | ❌ Not implemented |
| `GetCertificate` | ✅ Implemented |
| `ImportCertificate` | ✅ Implemented |
| `ListCertificates` | ✅ Implemented |
| `ListTagsForCertificate` | ✅ Implemented |
| `PutAccountConfiguration` | ❌ Not implemented |
| `RemoveTagsFromCertificate` | ✅ Implemented |
| `RenewCertificate` | ❌ Not implemented |
| `RequestCertificate` | ✅ Implemented |
| `ResendValidationEmail` | ❌ Not implemented |
| `UpdateCertificateOptions` | ❌ Not implemented |
| Operation |
|---|
| `AddTagsToCertificate` |
| `DeleteCertificate` |
| `DescribeCertificate` |
| `GetCertificate` |
| `ImportCertificate` |
| `ListCertificates` |
| `ListTagsForCertificate` |
| `RemoveTagsFromCertificate` |
| `RequestCertificate` |
+136 -632
View File
@@ -1,7 +1,7 @@
---
title: "EC2 API Coverage"
seoTitle: "Amazon EC2 API Coverage on Spinifex — Spinifex Docs"
description: "Every operation in the Amazon EC2 API model and whether Spinifex implements it, covering instances, EBS volumes, VPC networking, tags and security groups."
description: "The Amazon EC2 API operations Spinifex implements, covering instances, EBS volumes, VPC networking, tags and security groups, with those it does not offer."
category: "Coverage"
sections:
- overview
@@ -18,7 +18,7 @@ tags:
## Overview
Spinifex implements **125 of the 625** operations (**20.0%**) in the EC2 `2016-11-15` API model.
Spinifex implements **125 operations** in the EC2 `2016-11-15` API model.
### Spot Instances Are a Mock
@@ -26,634 +26,138 @@ Spot Instance Requests are a mock over the on-demand `RunInstances` path. A requ
### Operations
| Operation | Status |
| Operation |
|---|
| `AllocateAddress` |
| `AssociateAddress` |
| `AssociateIamInstanceProfile` |
| `AssociateRouteTable` |
| `AttachInternetGateway` |
| `AttachNetworkInterface` |
| `AttachVolume` |
| `AuthorizeSecurityGroupEgress` |
| `AuthorizeSecurityGroupIngress` |
| `CancelCapacityReservation` |
| `CancelSpotInstanceRequests` |
| `CopyImage` |
| `CopySnapshot` |
| `CreateCapacityReservation` |
| `CreateEgressOnlyInternetGateway` |
| `CreateImage` |
| `CreateInternetGateway` |
| `CreateKeyPair` |
| `CreateLaunchTemplate` |
| `CreateLaunchTemplateVersion` |
| `CreateNatGateway` |
| `CreateNetworkInterface` |
| `CreatePlacementGroup` |
| `CreateRoute` |
| `CreateRouteTable` |
| `CreateSecurityGroup` |
| `CreateSnapshot` |
| `CreateSubnet` |
| `CreateTags` |
| `CreateVolume` |
| `CreateVpc` |
| `DeleteEgressOnlyInternetGateway` |
| `DeleteInternetGateway` |
| `DeleteKeyPair` |
| `DeleteLaunchTemplate` |
| `DeleteLaunchTemplateVersions` |
| `DeleteNatGateway` |
| `DeleteNetworkInterface` |
| `DeletePlacementGroup` |
| `DeleteRoute` |
| `DeleteRouteTable` |
| `DeleteSecurityGroup` |
| `DeleteSnapshot` |
| `DeleteSubnet` |
| `DeleteTags` |
| `DeleteVolume` |
| `DeleteVpc` |
| `DeregisterImage` |
| `DescribeAccountAttributes` |
| `DescribeAddresses` |
| `DescribeAddressesAttribute` |
| `DescribeAvailabilityZones` |
| `DescribeCapacityReservations` |
| `DescribeEgressOnlyInternetGateways` |
| `DescribeIamInstanceProfileAssociations` |
| `DescribeImageAttribute` |
| `DescribeImages` |
| `DescribeInstanceAttribute` |
| `DescribeInstanceCreditSpecifications` |
| `DescribeInstanceStatus` |
| `DescribeInstanceTypeOfferings` |
| `DescribeInstanceTypes` |
| `DescribeInstances` |
| `DescribeInternetGateways` |
| `DescribeKeyPairs` |
| `DescribeLaunchTemplateVersions` |
| `DescribeLaunchTemplates` |
| `DescribeNatGateways` |
| `DescribeNetworkInterfaces` |
| `DescribePlacementGroups` |
| `DescribeRegions` |
| `DescribeRouteTables` |
| `DescribeSecurityGroupRules` |
| `DescribeSecurityGroups` |
| `DescribeSnapshots` |
| `DescribeSpotInstanceRequests` |
| `DescribeSubnets` |
| `DescribeTags` |
| `DescribeVolumeStatus` |
| `DescribeVolumes` |
| `DescribeVolumesModifications` |
| `DescribeVpcAttribute` |
| `DescribeVpcs` |
| `DetachInternetGateway` |
| `DetachNetworkInterface` |
| `DetachVolume` |
| `DisableEbsEncryptionByDefault` |
| `DisableSerialConsoleAccess` |
| `DisassociateAddress` |
| `DisassociateIamInstanceProfile` |
| `DisassociateRouteTable` |
| `EnableEbsEncryptionByDefault` |
| `EnableSerialConsoleAccess` |
| `GetConsoleOutput` |
| `GetEbsEncryptionByDefault` |
| `GetPasswordData` |
| `GetSecurityGroupsForVpc` |
| `GetSerialConsoleAccessStatus` |
| `ImportKeyPair` |
| `ModifyImageAttribute` |
| `ModifyInstanceAttribute` |
| `ModifyInstanceMetadataOptions` |
| `ModifyLaunchTemplate` |
| `ModifyNetworkInterfaceAttribute` |
| `ModifySubnetAttribute` |
| `ModifyVolume` |
| `ModifyVpcAttribute` |
| `MonitorInstances` |
| `RebootInstances` |
| `RegisterImage` |
| `ReleaseAddress` |
| `ReplaceIamInstanceProfileAssociation` |
| `ReplaceRoute` |
| `ReplaceRouteTableAssociation` |
| `RequestSpotInstances` |
| `ResetImageAttribute` |
| `RevokeSecurityGroupEgress` |
| `RevokeSecurityGroupIngress` |
| `RunInstances` |
| `StartInstances` |
| `StopInstances` |
| `TerminateInstances` |
| `UnmonitorInstances` |
| `UpdateSecurityGroupRuleDescriptionsEgress` |
| `UpdateSecurityGroupRuleDescriptionsIngress` |
### Not applicable
These operations describe AWS-hosted features this platform does not offer.
| Operation | Reason |
|---|---|
| `AcceptAddressTransfer` | ❌ Not implemented |
| `AcceptReservedInstancesExchangeQuote` | ❌ Not implemented |
| `AcceptTransitGatewayMulticastDomainAssociations` | ❌ Not implemented |
| `AcceptTransitGatewayPeeringAttachment` | ❌ Not implemented |
| `AcceptTransitGatewayVpcAttachment` | ❌ Not implemented |
| `AcceptVpcEndpointConnections` | ❌ Not implemented |
| `AcceptVpcPeeringConnection` | ❌ Not implemented |
| `AdvertiseByoipCidr` | ❌ Not implemented |
| `AllocateAddress` | ✅ Implemented |
| `AllocateHosts` | ❌ Not implemented |
| `AllocateIpamPoolCidr` | ❌ Not implemented |
| `ApplySecurityGroupsToClientVpnTargetNetwork` | ❌ Not implemented |
| `AssignIpv6Addresses` | ❌ Not implemented |
| `AssignPrivateIpAddresses` | ❌ Not implemented |
| `AssignPrivateNatGatewayAddress` | ❌ Not implemented |
| `AssociateAddress` | ✅ Implemented |
| `AssociateClientVpnTargetNetwork` | ❌ Not implemented |
| `AssociateDhcpOptions` | ❌ Not implemented |
| `AssociateEnclaveCertificateIamRole` | ❌ Not implemented |
| `AssociateIamInstanceProfile` | ✅ Implemented |
| `AssociateInstanceEventWindow` | ❌ Not implemented |
| `AssociateIpamByoasn` | ❌ Not implemented |
| `AssociateIpamResourceDiscovery` | ❌ Not implemented |
| `AssociateNatGatewayAddress` | ❌ Not implemented |
| `AssociateRouteTable` | ✅ Implemented |
| `AssociateSubnetCidrBlock` | ❌ Not implemented |
| `AssociateTransitGatewayMulticastDomain` | ❌ Not implemented |
| `AssociateTransitGatewayPolicyTable` | ❌ Not implemented |
| `AssociateTransitGatewayRouteTable` | ❌ Not implemented |
| `AssociateTrunkInterface` | ❌ Not implemented |
| `AssociateVpcCidrBlock` | ❌ Not implemented |
| `AttachClassicLinkVpc` | ❌ Not implemented |
| `AttachInternetGateway` | ✅ Implemented |
| `AttachNetworkInterface` | ✅ Implemented |
| `AttachVerifiedAccessTrustProvider` | ❌ Not implemented |
| `AttachVolume` | ✅ Implemented |
| `AttachVpnGateway` | ❌ Not implemented |
| `AuthorizeClientVpnIngress` | ❌ Not implemented |
| `AuthorizeSecurityGroupEgress` | ✅ Implemented |
| `AuthorizeSecurityGroupIngress` | ✅ Implemented |
| `BundleInstance` | ❌ Not implemented |
| `CancelBundleTask` | ❌ Not implemented |
| `CancelCapacityReservation` | ✅ Implemented |
| `CancelCapacityReservationFleets` | ❌ Not implemented |
| `CancelConversionTask` | ❌ Not implemented |
| `CancelExportTask` | ❌ Not implemented |
| `CancelImageLaunchPermission` | ❌ Not implemented |
| `CancelImportTask` | ❌ Not implemented |
| `CancelReservedInstancesListing` | ❌ Not implemented |
| `CancelSpotFleetRequests` | ❌ Not implemented |
| `CancelSpotInstanceRequests` | ✅ Implemented |
| `ConfirmProductInstance` | ❌ Not implemented |
| `CopyFpgaImage` | ❌ Not implemented |
| `CopyImage` | ✅ Implemented |
| `CopySnapshot` | ✅ Implemented |
| `CreateCapacityReservation` | ✅ Implemented |
| `CreateCapacityReservationFleet` | ❌ Not implemented |
| `CreateCarrierGateway` | ❌ Not implemented |
| `CreateClientVpnEndpoint` | ❌ Not implemented |
| `CreateClientVpnRoute` | ❌ Not implemented |
| `CreateCoipCidr` | ❌ Not implemented |
| `CreateCoipPool` | ❌ Not implemented |
| `CreateCustomerGateway` | ❌ Not implemented |
| `CreateDefaultSubnet` | ❌ Not implemented |
| `CreateDefaultVpc` | ❌ Not implemented |
| `CreateDhcpOptions` | ❌ Not implemented |
| `CreateEgressOnlyInternetGateway` | ✅ Implemented |
| `CreateFleet` | ❌ Not implemented |
| `CreateFlowLogs` | ❌ Not implemented |
| `CreateFpgaImage` | ❌ Not implemented |
| `CreateImage` | ✅ Implemented |
| `CreateInstanceConnectEndpoint` | ❌ Not implemented |
| `CreateInstanceEventWindow` | ❌ Not implemented |
| `CreateInstanceExportTask` | ❌ Not implemented |
| `CreateInternetGateway` | ✅ Implemented |
| `CreateIpam` | ❌ Not implemented |
| `CreateIpamExternalResourceVerificationToken` | ❌ Not implemented |
| `CreateIpamPool` | ❌ Not implemented |
| `CreateIpamResourceDiscovery` | ❌ Not implemented |
| `CreateIpamScope` | ❌ Not implemented |
| `CreateKeyPair` | ✅ Implemented |
| `CreateLaunchTemplate` | ✅ Implemented |
| `CreateLaunchTemplateVersion` | ✅ Implemented |
| `CreateLocalGatewayRoute` | ❌ Not implemented |
| `CreateLocalGatewayRouteTable` | ❌ Not implemented |
| `CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation` | ❌ Not implemented |
| `CreateLocalGatewayRouteTableVpcAssociation` | ❌ Not implemented |
| `CreateManagedPrefixList` | ❌ Not implemented |
| `CreateNatGateway` | ✅ Implemented |
| `CreateNetworkAcl` | ❌ Not implemented |
| `CreateNetworkAclEntry` | ❌ Not implemented |
| `CreateNetworkInsightsAccessScope` | ❌ Not implemented |
| `CreateNetworkInsightsPath` | ❌ Not implemented |
| `CreateNetworkInterface` | ✅ Implemented |
| `CreateNetworkInterfacePermission` | ❌ Not implemented |
| `CreatePlacementGroup` | ✅ Implemented |
| `CreatePublicIpv4Pool` | ❌ Not implemented |
| `CreateReplaceRootVolumeTask` | ❌ Not implemented |
| `CreateReservedInstancesListing` | ❌ Not implemented |
| `CreateRestoreImageTask` | ❌ Not implemented |
| `CreateRoute` | ✅ Implemented |
| `CreateRouteTable` | ✅ Implemented |
| `CreateSecurityGroup` | ✅ Implemented |
| `CreateSnapshot` | ✅ Implemented |
| `CreateSnapshots` | ❌ Not implemented |
| `CreateSpotDatafeedSubscription` | ❌ Not implemented |
| `CreateStoreImageTask` | ❌ Not implemented |
| `CreateSubnet` | ✅ Implemented |
| `CreateSubnetCidrReservation` | ❌ Not implemented |
| `CreateTags` | ✅ Implemented |
| `CreateTrafficMirrorFilter` | ❌ Not implemented |
| `CreateTrafficMirrorFilterRule` | ❌ Not implemented |
| `CreateTrafficMirrorSession` | ❌ Not implemented |
| `CreateTrafficMirrorTarget` | ❌ Not implemented |
| `CreateTransitGateway` | ❌ Not implemented |
| `CreateTransitGatewayConnect` | ❌ Not implemented |
| `CreateTransitGatewayConnectPeer` | ❌ Not implemented |
| `CreateTransitGatewayMulticastDomain` | ❌ Not implemented |
| `CreateTransitGatewayPeeringAttachment` | ❌ Not implemented |
| `CreateTransitGatewayPolicyTable` | ❌ Not implemented |
| `CreateTransitGatewayPrefixListReference` | ❌ Not implemented |
| `CreateTransitGatewayRoute` | ❌ Not implemented |
| `CreateTransitGatewayRouteTable` | ❌ Not implemented |
| `CreateTransitGatewayRouteTableAnnouncement` | ❌ Not implemented |
| `CreateTransitGatewayVpcAttachment` | ❌ Not implemented |
| `CreateVerifiedAccessEndpoint` | ❌ Not implemented |
| `CreateVerifiedAccessGroup` | ❌ Not implemented |
| `CreateVerifiedAccessInstance` | ❌ Not implemented |
| `CreateVerifiedAccessTrustProvider` | ❌ Not implemented |
| `CreateVolume` | ✅ Implemented |
| `CreateVpc` | ✅ Implemented |
| `CreateVpcEndpoint` | ❌ Not implemented |
| `CreateVpcEndpointConnectionNotification` | ❌ Not implemented |
| `CreateVpcEndpointServiceConfiguration` | ❌ Not implemented |
| `CreateVpcPeeringConnection` | ❌ Not implemented |
| `CreateVpnConnection` | ❌ Not implemented |
| `CreateVpnConnectionRoute` | ❌ Not implemented |
| `CreateVpnGateway` | ❌ Not implemented |
| `DeleteCarrierGateway` | ❌ Not implemented |
| `DeleteClientVpnEndpoint` | ❌ Not implemented |
| `DeleteClientVpnRoute` | ❌ Not implemented |
| `DeleteCoipCidr` | ❌ Not implemented |
| `DeleteCoipPool` | ❌ Not implemented |
| `DeleteCustomerGateway` | ❌ Not implemented |
| `DeleteDhcpOptions` | ❌ Not implemented |
| `DeleteEgressOnlyInternetGateway` | ✅ Implemented |
| `DeleteFleets` | ❌ Not implemented |
| `DeleteFlowLogs` | ❌ Not implemented |
| `DeleteFpgaImage` | ❌ Not implemented |
| `DeleteInstanceConnectEndpoint` | ❌ Not implemented |
| `DeleteInstanceEventWindow` | ❌ Not implemented |
| `DeleteInternetGateway` | ✅ Implemented |
| `DeleteIpam` | ❌ Not implemented |
| `DeleteIpamExternalResourceVerificationToken` | ❌ Not implemented |
| `DeleteIpamPool` | ❌ Not implemented |
| `DeleteIpamResourceDiscovery` | ❌ Not implemented |
| `DeleteIpamScope` | ❌ Not implemented |
| `DeleteKeyPair` | ✅ Implemented |
| `DeleteLaunchTemplate` | ✅ Implemented |
| `DeleteLaunchTemplateVersions` | ✅ Implemented |
| `DeleteLocalGatewayRoute` | ❌ Not implemented |
| `DeleteLocalGatewayRouteTable` | ❌ Not implemented |
| `DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation` | ❌ Not implemented |
| `DeleteLocalGatewayRouteTableVpcAssociation` | ❌ Not implemented |
| `DeleteManagedPrefixList` | ❌ Not implemented |
| `DeleteNatGateway` | ✅ Implemented |
| `DeleteNetworkAcl` | ❌ Not implemented |
| `DeleteNetworkAclEntry` | ❌ Not implemented |
| `DeleteNetworkInsightsAccessScope` | ❌ Not implemented |
| `DeleteNetworkInsightsAccessScopeAnalysis` | ❌ Not implemented |
| `DeleteNetworkInsightsAnalysis` | ❌ Not implemented |
| `DeleteNetworkInsightsPath` | ❌ Not implemented |
| `DeleteNetworkInterface` | ✅ Implemented |
| `DeleteNetworkInterfacePermission` | ❌ Not implemented |
| `DeletePlacementGroup` | ✅ Implemented |
| `DeletePublicIpv4Pool` | ❌ Not implemented |
| `DeleteQueuedReservedInstances` | ❌ Not implemented |
| `DeleteRoute` | ✅ Implemented |
| `DeleteRouteTable` | ✅ Implemented |
| `DeleteSecurityGroup` | ✅ Implemented |
| `DeleteSnapshot` | ✅ Implemented |
| `DeleteSpotDatafeedSubscription` | ❌ Not implemented |
| `DeleteSubnet` | ✅ Implemented |
| `DeleteSubnetCidrReservation` | ❌ Not implemented |
| `DeleteTags` | ✅ Implemented |
| `DeleteTrafficMirrorFilter` | ❌ Not implemented |
| `DeleteTrafficMirrorFilterRule` | ❌ Not implemented |
| `DeleteTrafficMirrorSession` | ❌ Not implemented |
| `DeleteTrafficMirrorTarget` | ❌ Not implemented |
| `DeleteTransitGateway` | ❌ Not implemented |
| `DeleteTransitGatewayConnect` | ❌ Not implemented |
| `DeleteTransitGatewayConnectPeer` | ❌ Not implemented |
| `DeleteTransitGatewayMulticastDomain` | ❌ Not implemented |
| `DeleteTransitGatewayPeeringAttachment` | ❌ Not implemented |
| `DeleteTransitGatewayPolicyTable` | ❌ Not implemented |
| `DeleteTransitGatewayPrefixListReference` | ❌ Not implemented |
| `DeleteTransitGatewayRoute` | ❌ Not implemented |
| `DeleteTransitGatewayRouteTable` | ❌ Not implemented |
| `DeleteTransitGatewayRouteTableAnnouncement` | ❌ Not implemented |
| `DeleteTransitGatewayVpcAttachment` | ❌ Not implemented |
| `DeleteVerifiedAccessEndpoint` | ❌ Not implemented |
| `DeleteVerifiedAccessGroup` | ❌ Not implemented |
| `DeleteVerifiedAccessInstance` | ❌ Not implemented |
| `DeleteVerifiedAccessTrustProvider` | ❌ Not implemented |
| `DeleteVolume` | ✅ Implemented |
| `DeleteVpc` | ✅ Implemented |
| `DeleteVpcEndpointConnectionNotifications` | ❌ Not implemented |
| `DeleteVpcEndpointServiceConfigurations` | ❌ Not implemented |
| `DeleteVpcEndpoints` | ❌ Not implemented |
| `DeleteVpcPeeringConnection` | ❌ Not implemented |
| `DeleteVpnConnection` | ❌ Not implemented |
| `DeleteVpnConnectionRoute` | ❌ Not implemented |
| `DeleteVpnGateway` | ❌ Not implemented |
| `DeprovisionByoipCidr` | ❌ Not implemented |
| `DeprovisionIpamByoasn` | ❌ Not implemented |
| `DeprovisionIpamPoolCidr` | ❌ Not implemented |
| `DeprovisionPublicIpv4PoolCidr` | ❌ Not implemented |
| `DeregisterImage` | ✅ Implemented |
| `DeregisterInstanceEventNotificationAttributes` | ❌ Not implemented |
| `DeregisterTransitGatewayMulticastGroupMembers` | ❌ Not implemented |
| `DeregisterTransitGatewayMulticastGroupSources` | ❌ Not implemented |
| `DescribeAccountAttributes` | ✅ Implemented |
| `DescribeAddressTransfers` | ❌ Not implemented |
| `DescribeAddresses` | ✅ Implemented |
| `DescribeAddressesAttribute` | ✅ Implemented |
| `DescribeAggregateIdFormat` | ❌ Not implemented |
| `DescribeAvailabilityZones` | ✅ Implemented |
| `DescribeAwsNetworkPerformanceMetricSubscriptions` | ❌ Not implemented |
| `DescribeBundleTasks` | ❌ Not implemented |
| `DescribeByoipCidrs` | ❌ Not implemented |
| `DescribeCapacityBlockOfferings` | ❌ Not implemented |
| `DescribeCapacityReservationFleets` | ❌ Not implemented |
| `DescribeCapacityReservations` | ✅ Implemented |
| `DescribeCarrierGateways` | ❌ Not implemented |
| `DescribeClassicLinkInstances` | ❌ Not implemented |
| `DescribeClientVpnAuthorizationRules` | ❌ Not implemented |
| `DescribeClientVpnConnections` | ❌ Not implemented |
| `DescribeClientVpnEndpoints` | ❌ Not implemented |
| `DescribeClientVpnRoutes` | ❌ Not implemented |
| `DescribeClientVpnTargetNetworks` | ❌ Not implemented |
| `DescribeCoipPools` | ❌ Not implemented |
| `DescribeConversionTasks` | ❌ Not implemented |
| `DescribeCustomerGateways` | ❌ Not implemented |
| `DescribeDhcpOptions` | ❌ Not implemented |
| `DescribeEgressOnlyInternetGateways` | ✅ Implemented |
| `DescribeElasticGpus` | ❌ Not implemented |
| `DescribeExportImageTasks` | ❌ Not implemented |
| `DescribeExportTasks` | ❌ Not implemented |
| `DescribeFastLaunchImages` | ❌ Not implemented |
| `DescribeFastSnapshotRestores` | ❌ Not implemented |
| `DescribeFleetHistory` | ❌ Not implemented |
| `DescribeFleetInstances` | ❌ Not implemented |
| `DescribeFleets` | ❌ Not implemented |
| `DescribeFlowLogs` | ❌ Not implemented |
| `DescribeFpgaImageAttribute` | ❌ Not implemented |
| `DescribeFpgaImages` | ❌ Not implemented |
| `DescribeHostReservationOfferings` | ❌ Not implemented |
| `DescribeHostReservations` | ❌ Not implemented |
| `DescribeHosts` | ❌ Not implemented |
| `DescribeIamInstanceProfileAssociations` | ✅ Implemented |
| `DescribeIdFormat` | ❌ Not implemented |
| `DescribeIdentityIdFormat` | ❌ Not implemented |
| `DescribeImageAttribute` | ✅ Implemented |
| `DescribeImages` | ✅ Implemented |
| `DescribeImportImageTasks` | ❌ Not implemented |
| `DescribeImportSnapshotTasks` | ❌ Not implemented |
| `DescribeInstanceAttribute` | ✅ Implemented |
| `DescribeInstanceConnectEndpoints` | ❌ Not implemented |
| `DescribeInstanceCreditSpecifications` | ✅ Implemented |
| `DescribeInstanceEventNotificationAttributes` | ❌ Not implemented |
| `DescribeInstanceEventWindows` | ❌ Not implemented |
| `DescribeInstanceStatus` | ✅ Implemented |
| `DescribeInstanceTopology` | ❌ Not implemented |
| `DescribeInstanceTypeOfferings` | ✅ Implemented |
| `DescribeInstanceTypes` | ✅ Implemented |
| `DescribeInstances` | ✅ Implemented |
| `DescribeInternetGateways` | ✅ Implemented |
| `DescribeIpamByoasn` | ❌ Not implemented |
| `DescribeIpamExternalResourceVerificationTokens` | ❌ Not implemented |
| `DescribeIpamPools` | ❌ Not implemented |
| `DescribeIpamResourceDiscoveries` | ❌ Not implemented |
| `DescribeIpamResourceDiscoveryAssociations` | ❌ Not implemented |
| `DescribeIpamScopes` | ❌ Not implemented |
| `DescribeIpams` | ❌ Not implemented |
| `DescribeIpv6Pools` | ❌ Not implemented |
| `DescribeKeyPairs` | ✅ Implemented |
| `DescribeLaunchTemplateVersions` | ✅ Implemented |
| `DescribeLaunchTemplates` | ✅ Implemented |
| `DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations` | ❌ Not implemented |
| `DescribeLocalGatewayRouteTableVpcAssociations` | ❌ Not implemented |
| `DescribeLocalGatewayRouteTables` | ❌ Not implemented |
| `DescribeLocalGatewayVirtualInterfaceGroups` | ❌ Not implemented |
| `DescribeLocalGatewayVirtualInterfaces` | ❌ Not implemented |
| `DescribeLocalGateways` | ❌ Not implemented |
| `DescribeLockedSnapshots` | ❌ Not implemented |
| `DescribeMacHosts` | ❌ Not implemented |
| `DescribeManagedPrefixLists` | ❌ Not implemented |
| `DescribeMovingAddresses` | ❌ Not implemented |
| `DescribeNatGateways` | ✅ Implemented |
| `DescribeNetworkAcls` | ❌ Not implemented |
| `DescribeNetworkInsightsAccessScopeAnalyses` | ❌ Not implemented |
| `DescribeNetworkInsightsAccessScopes` | ❌ Not implemented |
| `DescribeNetworkInsightsAnalyses` | ❌ Not implemented |
| `DescribeNetworkInsightsPaths` | ❌ Not implemented |
| `DescribeNetworkInterfaceAttribute` | ❌ Not implemented |
| `DescribeNetworkInterfacePermissions` | ❌ Not implemented |
| `DescribeNetworkInterfaces` | ✅ Implemented |
| `DescribePlacementGroups` | ✅ Implemented |
| `DescribePrefixLists` | ❌ Not implemented |
| `DescribePrincipalIdFormat` | ❌ Not implemented |
| `DescribePublicIpv4Pools` | ❌ Not implemented |
| `DescribeRegions` | ✅ Implemented |
| `DescribeReplaceRootVolumeTasks` | ❌ Not implemented |
| `DescribeReservedInstances` | ❌ Not implemented |
| `DescribeReservedInstancesListings` | ❌ Not implemented |
| `DescribeReservedInstancesModifications` | ❌ Not implemented |
| `DescribeReservedInstancesOfferings` | ❌ Not implemented |
| `DescribeRouteTables` | ✅ Implemented |
| `DescribeScheduledInstanceAvailability` | ❌ Not implemented |
| `DescribeScheduledInstances` | ❌ Not implemented |
| `DescribeSecurityGroupReferences` | ❌ Not implemented |
| `DescribeSecurityGroupRules` | ✅ Implemented |
| `DescribeSecurityGroups` | ✅ Implemented |
| `DescribeSnapshotAttribute` | ❌ Not implemented |
| `DescribeSnapshotTierStatus` | ❌ Not implemented |
| `DescribeSnapshots` | ✅ Implemented |
| `DescribeSpotDatafeedSubscription` | ❌ Not implemented |
| `DescribeSpotFleetInstances` | ❌ Not implemented |
| `DescribeSpotFleetRequestHistory` | ❌ Not implemented |
| `DescribeSpotFleetRequests` | ❌ Not implemented |
| `DescribeSpotInstanceRequests` | ✅ Implemented |
| `DescribeSpotPriceHistory` | ⛔ Not applicable [1](#notes) |
| `DescribeStaleSecurityGroups` | ❌ Not implemented |
| `DescribeStoreImageTasks` | ❌ Not implemented |
| `DescribeSubnets` | ✅ Implemented |
| `DescribeTags` | ✅ Implemented |
| `DescribeTrafficMirrorFilterRules` | ❌ Not implemented |
| `DescribeTrafficMirrorFilters` | ❌ Not implemented |
| `DescribeTrafficMirrorSessions` | ❌ Not implemented |
| `DescribeTrafficMirrorTargets` | ❌ Not implemented |
| `DescribeTransitGatewayAttachments` | ❌ Not implemented |
| `DescribeTransitGatewayConnectPeers` | ❌ Not implemented |
| `DescribeTransitGatewayConnects` | ❌ Not implemented |
| `DescribeTransitGatewayMulticastDomains` | ❌ Not implemented |
| `DescribeTransitGatewayPeeringAttachments` | ❌ Not implemented |
| `DescribeTransitGatewayPolicyTables` | ❌ Not implemented |
| `DescribeTransitGatewayRouteTableAnnouncements` | ❌ Not implemented |
| `DescribeTransitGatewayRouteTables` | ❌ Not implemented |
| `DescribeTransitGatewayVpcAttachments` | ❌ Not implemented |
| `DescribeTransitGateways` | ❌ Not implemented |
| `DescribeTrunkInterfaceAssociations` | ❌ Not implemented |
| `DescribeVerifiedAccessEndpoints` | ❌ Not implemented |
| `DescribeVerifiedAccessGroups` | ❌ Not implemented |
| `DescribeVerifiedAccessInstanceLoggingConfigurations` | ❌ Not implemented |
| `DescribeVerifiedAccessInstances` | ❌ Not implemented |
| `DescribeVerifiedAccessTrustProviders` | ❌ Not implemented |
| `DescribeVolumeAttribute` | ❌ Not implemented |
| `DescribeVolumeStatus` | ✅ Implemented |
| `DescribeVolumes` | ✅ Implemented |
| `DescribeVolumesModifications` | ✅ Implemented |
| `DescribeVpcAttribute` | ✅ Implemented |
| `DescribeVpcClassicLink` | ❌ Not implemented |
| `DescribeVpcClassicLinkDnsSupport` | ❌ Not implemented |
| `DescribeVpcEndpointConnectionNotifications` | ❌ Not implemented |
| `DescribeVpcEndpointConnections` | ❌ Not implemented |
| `DescribeVpcEndpointServiceConfigurations` | ❌ Not implemented |
| `DescribeVpcEndpointServicePermissions` | ❌ Not implemented |
| `DescribeVpcEndpointServices` | ❌ Not implemented |
| `DescribeVpcEndpoints` | ❌ Not implemented |
| `DescribeVpcPeeringConnections` | ❌ Not implemented |
| `DescribeVpcs` | ✅ Implemented |
| `DescribeVpnConnections` | ❌ Not implemented |
| `DescribeVpnGateways` | ❌ Not implemented |
| `DetachClassicLinkVpc` | ❌ Not implemented |
| `DetachInternetGateway` | ✅ Implemented |
| `DetachNetworkInterface` | ✅ Implemented |
| `DetachVerifiedAccessTrustProvider` | ❌ Not implemented |
| `DetachVolume` | ✅ Implemented |
| `DetachVpnGateway` | ❌ Not implemented |
| `DisableAddressTransfer` | ❌ Not implemented |
| `DisableAwsNetworkPerformanceMetricSubscription` | ❌ Not implemented |
| `DisableEbsEncryptionByDefault` | ✅ Implemented |
| `DisableFastLaunch` | ❌ Not implemented |
| `DisableFastSnapshotRestores` | ❌ Not implemented |
| `DisableImage` | ❌ Not implemented |
| `DisableImageBlockPublicAccess` | ❌ Not implemented |
| `DisableImageDeprecation` | ❌ Not implemented |
| `DisableImageDeregistrationProtection` | ❌ Not implemented |
| `DisableIpamOrganizationAdminAccount` | ❌ Not implemented |
| `DisableSerialConsoleAccess` | ✅ Implemented |
| `DisableSnapshotBlockPublicAccess` | ❌ Not implemented |
| `DisableTransitGatewayRouteTablePropagation` | ❌ Not implemented |
| `DisableVgwRoutePropagation` | ❌ Not implemented |
| `DisableVpcClassicLink` | ❌ Not implemented |
| `DisableVpcClassicLinkDnsSupport` | ❌ Not implemented |
| `DisassociateAddress` | ✅ Implemented |
| `DisassociateClientVpnTargetNetwork` | ❌ Not implemented |
| `DisassociateEnclaveCertificateIamRole` | ❌ Not implemented |
| `DisassociateIamInstanceProfile` | ✅ Implemented |
| `DisassociateInstanceEventWindow` | ❌ Not implemented |
| `DisassociateIpamByoasn` | ❌ Not implemented |
| `DisassociateIpamResourceDiscovery` | ❌ Not implemented |
| `DisassociateNatGatewayAddress` | ❌ Not implemented |
| `DisassociateRouteTable` | ✅ Implemented |
| `DisassociateSubnetCidrBlock` | ❌ Not implemented |
| `DisassociateTransitGatewayMulticastDomain` | ❌ Not implemented |
| `DisassociateTransitGatewayPolicyTable` | ❌ Not implemented |
| `DisassociateTransitGatewayRouteTable` | ❌ Not implemented |
| `DisassociateTrunkInterface` | ❌ Not implemented |
| `DisassociateVpcCidrBlock` | ❌ Not implemented |
| `EnableAddressTransfer` | ❌ Not implemented |
| `EnableAwsNetworkPerformanceMetricSubscription` | ❌ Not implemented |
| `EnableEbsEncryptionByDefault` | ✅ Implemented |
| `EnableFastLaunch` | ❌ Not implemented |
| `EnableFastSnapshotRestores` | ❌ Not implemented |
| `EnableImage` | ❌ Not implemented |
| `EnableImageBlockPublicAccess` | ❌ Not implemented |
| `EnableImageDeprecation` | ❌ Not implemented |
| `EnableImageDeregistrationProtection` | ❌ Not implemented |
| `EnableIpamOrganizationAdminAccount` | ❌ Not implemented |
| `EnableReachabilityAnalyzerOrganizationSharing` | ❌ Not implemented |
| `EnableSerialConsoleAccess` | ✅ Implemented |
| `EnableSnapshotBlockPublicAccess` | ❌ Not implemented |
| `EnableTransitGatewayRouteTablePropagation` | ❌ Not implemented |
| `EnableVgwRoutePropagation` | ❌ Not implemented |
| `EnableVolumeIO` | ❌ Not implemented |
| `EnableVpcClassicLink` | ❌ Not implemented |
| `EnableVpcClassicLinkDnsSupport` | ❌ Not implemented |
| `ExportClientVpnClientCertificateRevocationList` | ❌ Not implemented |
| `ExportClientVpnClientConfiguration` | ❌ Not implemented |
| `ExportImage` | ❌ Not implemented |
| `ExportTransitGatewayRoutes` | ❌ Not implemented |
| `GetAssociatedEnclaveCertificateIamRoles` | ❌ Not implemented |
| `GetAssociatedIpv6PoolCidrs` | ❌ Not implemented |
| `GetAwsNetworkPerformanceData` | ❌ Not implemented |
| `GetCapacityReservationUsage` | ❌ Not implemented |
| `GetCoipPoolUsage` | ❌ Not implemented |
| `GetConsoleOutput` | ✅ Implemented |
| `GetConsoleScreenshot` | ❌ Not implemented |
| `GetDefaultCreditSpecification` | ❌ Not implemented |
| `GetEbsDefaultKmsKeyId` | ❌ Not implemented |
| `GetEbsEncryptionByDefault` | ✅ Implemented |
| `GetFlowLogsIntegrationTemplate` | ❌ Not implemented |
| `GetGroupsForCapacityReservation` | ❌ Not implemented |
| `GetHostReservationPurchasePreview` | ❌ Not implemented |
| `GetImageBlockPublicAccessState` | ❌ Not implemented |
| `GetInstanceMetadataDefaults` | ❌ Not implemented |
| `GetInstanceTpmEkPub` | ❌ Not implemented |
| `GetInstanceTypesFromInstanceRequirements` | ❌ Not implemented |
| `GetInstanceUefiData` | ❌ Not implemented |
| `GetIpamAddressHistory` | ❌ Not implemented |
| `GetIpamDiscoveredAccounts` | ❌ Not implemented |
| `GetIpamDiscoveredPublicAddresses` | ❌ Not implemented |
| `GetIpamDiscoveredResourceCidrs` | ❌ Not implemented |
| `GetIpamPoolAllocations` | ❌ Not implemented |
| `GetIpamPoolCidrs` | ❌ Not implemented |
| `GetIpamResourceCidrs` | ❌ Not implemented |
| `GetLaunchTemplateData` | ❌ Not implemented |
| `GetManagedPrefixListAssociations` | ❌ Not implemented |
| `GetManagedPrefixListEntries` | ❌ Not implemented |
| `GetNetworkInsightsAccessScopeAnalysisFindings` | ❌ Not implemented |
| `GetNetworkInsightsAccessScopeContent` | ❌ Not implemented |
| `GetPasswordData` | ✅ Implemented |
| `GetReservedInstancesExchangeQuote` | ❌ Not implemented |
| `GetSecurityGroupsForVpc` | ✅ Implemented |
| `GetSerialConsoleAccessStatus` | ✅ Implemented |
| `GetSnapshotBlockPublicAccessState` | ❌ Not implemented |
| `GetSpotPlacementScores` | ❌ Not implemented |
| `GetSubnetCidrReservations` | ❌ Not implemented |
| `GetTransitGatewayAttachmentPropagations` | ❌ Not implemented |
| `GetTransitGatewayMulticastDomainAssociations` | ❌ Not implemented |
| `GetTransitGatewayPolicyTableAssociations` | ❌ Not implemented |
| `GetTransitGatewayPolicyTableEntries` | ❌ Not implemented |
| `GetTransitGatewayPrefixListReferences` | ❌ Not implemented |
| `GetTransitGatewayRouteTableAssociations` | ❌ Not implemented |
| `GetTransitGatewayRouteTablePropagations` | ❌ Not implemented |
| `GetVerifiedAccessEndpointPolicy` | ❌ Not implemented |
| `GetVerifiedAccessGroupPolicy` | ❌ Not implemented |
| `GetVpnConnectionDeviceSampleConfiguration` | ❌ Not implemented |
| `GetVpnConnectionDeviceTypes` | ❌ Not implemented |
| `GetVpnTunnelReplacementStatus` | ❌ Not implemented |
| `ImportClientVpnClientCertificateRevocationList` | ❌ Not implemented |
| `ImportImage` | ❌ Not implemented |
| `ImportInstance` | ❌ Not implemented |
| `ImportKeyPair` | ✅ Implemented |
| `ImportSnapshot` | ❌ Not implemented |
| `ImportVolume` | ❌ Not implemented |
| `ListImagesInRecycleBin` | ❌ Not implemented |
| `ListSnapshotsInRecycleBin` | ❌ Not implemented |
| `LockSnapshot` | ❌ Not implemented |
| `ModifyAddressAttribute` | ❌ Not implemented |
| `ModifyAvailabilityZoneGroup` | ❌ Not implemented |
| `ModifyCapacityReservation` | ❌ Not implemented |
| `ModifyCapacityReservationFleet` | ❌ Not implemented |
| `ModifyClientVpnEndpoint` | ❌ Not implemented |
| `ModifyDefaultCreditSpecification` | ❌ Not implemented |
| `ModifyEbsDefaultKmsKeyId` | ❌ Not implemented |
| `ModifyFleet` | ❌ Not implemented |
| `ModifyFpgaImageAttribute` | ❌ Not implemented |
| `ModifyHosts` | ❌ Not implemented |
| `ModifyIdFormat` | ❌ Not implemented |
| `ModifyIdentityIdFormat` | ❌ Not implemented |
| `ModifyImageAttribute` | ✅ Implemented |
| `ModifyInstanceAttribute` | ✅ Implemented |
| `ModifyInstanceCapacityReservationAttributes` | ❌ Not implemented |
| `ModifyInstanceCreditSpecification` | ❌ Not implemented |
| `ModifyInstanceEventStartTime` | ❌ Not implemented |
| `ModifyInstanceEventWindow` | ❌ Not implemented |
| `ModifyInstanceMaintenanceOptions` | ❌ Not implemented |
| `ModifyInstanceMetadataDefaults` | ❌ Not implemented |
| `ModifyInstanceMetadataOptions` | ✅ Implemented |
| `ModifyInstancePlacement` | ❌ Not implemented |
| `ModifyIpam` | ❌ Not implemented |
| `ModifyIpamPool` | ❌ Not implemented |
| `ModifyIpamResourceCidr` | ❌ Not implemented |
| `ModifyIpamResourceDiscovery` | ❌ Not implemented |
| `ModifyIpamScope` | ❌ Not implemented |
| `ModifyLaunchTemplate` | ✅ Implemented |
| `ModifyLocalGatewayRoute` | ❌ Not implemented |
| `ModifyManagedPrefixList` | ❌ Not implemented |
| `ModifyNetworkInterfaceAttribute` | ✅ Implemented |
| `ModifyPrivateDnsNameOptions` | ❌ Not implemented |
| `ModifyReservedInstances` | ❌ Not implemented |
| `ModifySecurityGroupRules` | ❌ Not implemented |
| `ModifySnapshotAttribute` | ❌ Not implemented |
| `ModifySnapshotTier` | ❌ Not implemented |
| `ModifySpotFleetRequest` | ❌ Not implemented |
| `ModifySubnetAttribute` | ✅ Implemented |
| `ModifyTrafficMirrorFilterNetworkServices` | ❌ Not implemented |
| `ModifyTrafficMirrorFilterRule` | ❌ Not implemented |
| `ModifyTrafficMirrorSession` | ❌ Not implemented |
| `ModifyTransitGateway` | ❌ Not implemented |
| `ModifyTransitGatewayPrefixListReference` | ❌ Not implemented |
| `ModifyTransitGatewayVpcAttachment` | ❌ Not implemented |
| `ModifyVerifiedAccessEndpoint` | ❌ Not implemented |
| `ModifyVerifiedAccessEndpointPolicy` | ❌ Not implemented |
| `ModifyVerifiedAccessGroup` | ❌ Not implemented |
| `ModifyVerifiedAccessGroupPolicy` | ❌ Not implemented |
| `ModifyVerifiedAccessInstance` | ❌ Not implemented |
| `ModifyVerifiedAccessInstanceLoggingConfiguration` | ❌ Not implemented |
| `ModifyVerifiedAccessTrustProvider` | ❌ Not implemented |
| `ModifyVolume` | ✅ Implemented |
| `ModifyVolumeAttribute` | ❌ Not implemented |
| `ModifyVpcAttribute` | ✅ Implemented |
| `ModifyVpcEndpoint` | ❌ Not implemented |
| `ModifyVpcEndpointConnectionNotification` | ❌ Not implemented |
| `ModifyVpcEndpointServiceConfiguration` | ❌ Not implemented |
| `ModifyVpcEndpointServicePayerResponsibility` | ❌ Not implemented |
| `ModifyVpcEndpointServicePermissions` | ❌ Not implemented |
| `ModifyVpcPeeringConnectionOptions` | ❌ Not implemented |
| `ModifyVpcTenancy` | ❌ Not implemented |
| `ModifyVpnConnection` | ❌ Not implemented |
| `ModifyVpnConnectionOptions` | ❌ Not implemented |
| `ModifyVpnTunnelCertificate` | ❌ Not implemented |
| `ModifyVpnTunnelOptions` | ❌ Not implemented |
| `MonitorInstances` | ✅ Implemented |
| `MoveAddressToVpc` | ❌ Not implemented |
| `MoveByoipCidrToIpam` | ❌ Not implemented |
| `ProvisionByoipCidr` | ❌ Not implemented |
| `ProvisionIpamByoasn` | ❌ Not implemented |
| `ProvisionIpamPoolCidr` | ❌ Not implemented |
| `ProvisionPublicIpv4PoolCidr` | ❌ Not implemented |
| `PurchaseCapacityBlock` | ❌ Not implemented |
| `PurchaseHostReservation` | ❌ Not implemented |
| `PurchaseReservedInstancesOffering` | ❌ Not implemented |
| `PurchaseScheduledInstances` | ❌ Not implemented |
| `RebootInstances` | ✅ Implemented |
| `RegisterImage` | ✅ Implemented |
| `RegisterInstanceEventNotificationAttributes` | ❌ Not implemented |
| `RegisterTransitGatewayMulticastGroupMembers` | ❌ Not implemented |
| `RegisterTransitGatewayMulticastGroupSources` | ❌ Not implemented |
| `RejectTransitGatewayMulticastDomainAssociations` | ❌ Not implemented |
| `RejectTransitGatewayPeeringAttachment` | ❌ Not implemented |
| `RejectTransitGatewayVpcAttachment` | ❌ Not implemented |
| `RejectVpcEndpointConnections` | ❌ Not implemented |
| `RejectVpcPeeringConnection` | ❌ Not implemented |
| `ReleaseAddress` | ✅ Implemented |
| `ReleaseHosts` | ❌ Not implemented |
| `ReleaseIpamPoolAllocation` | ❌ Not implemented |
| `ReplaceIamInstanceProfileAssociation` | ✅ Implemented |
| `ReplaceNetworkAclAssociation` | ❌ Not implemented |
| `ReplaceNetworkAclEntry` | ❌ Not implemented |
| `ReplaceRoute` | ✅ Implemented |
| `ReplaceRouteTableAssociation` | ✅ Implemented |
| `ReplaceTransitGatewayRoute` | ❌ Not implemented |
| `ReplaceVpnTunnel` | ❌ Not implemented |
| `ReportInstanceStatus` | ❌ Not implemented |
| `RequestSpotFleet` | ❌ Not implemented |
| `RequestSpotInstances` | ✅ Implemented |
| `ResetAddressAttribute` | ❌ Not implemented |
| `ResetEbsDefaultKmsKeyId` | ❌ Not implemented |
| `ResetFpgaImageAttribute` | ❌ Not implemented |
| `ResetImageAttribute` | ✅ Implemented |
| `ResetInstanceAttribute` | ❌ Not implemented |
| `ResetNetworkInterfaceAttribute` | ❌ Not implemented |
| `ResetSnapshotAttribute` | ❌ Not implemented |
| `RestoreAddressToClassic` | ❌ Not implemented |
| `RestoreImageFromRecycleBin` | ❌ Not implemented |
| `RestoreManagedPrefixListVersion` | ❌ Not implemented |
| `RestoreSnapshotFromRecycleBin` | ❌ Not implemented |
| `RestoreSnapshotTier` | ❌ Not implemented |
| `RevokeClientVpnIngress` | ❌ Not implemented |
| `RevokeSecurityGroupEgress` | ✅ Implemented |
| `RevokeSecurityGroupIngress` | ✅ Implemented |
| `RunInstances` | ✅ Implemented |
| `RunScheduledInstances` | ❌ Not implemented |
| `SearchLocalGatewayRoutes` | ❌ Not implemented |
| `SearchTransitGatewayMulticastGroups` | ❌ Not implemented |
| `SearchTransitGatewayRoutes` | ❌ Not implemented |
| `SendDiagnosticInterrupt` | ❌ Not implemented |
| `StartInstances` | ✅ Implemented |
| `StartNetworkInsightsAccessScopeAnalysis` | ❌ Not implemented |
| `StartNetworkInsightsAnalysis` | ❌ Not implemented |
| `StartVpcEndpointServicePrivateDnsVerification` | ❌ Not implemented |
| `StopInstances` | ✅ Implemented |
| `TerminateClientVpnConnections` | ❌ Not implemented |
| `TerminateInstances` | ✅ Implemented |
| `UnassignIpv6Addresses` | ❌ Not implemented |
| `UnassignPrivateIpAddresses` | ❌ Not implemented |
| `UnassignPrivateNatGatewayAddress` | ❌ Not implemented |
| `UnlockSnapshot` | ❌ Not implemented |
| `UnmonitorInstances` | ✅ Implemented |
| `UpdateSecurityGroupRuleDescriptionsEgress` | ✅ Implemented |
| `UpdateSecurityGroupRuleDescriptionsIngress` | ✅ Implemented |
| `WithdrawByoipCidr` | ❌ Not implemented |
### Notes
1. On owned hardware there is no spot-to-on-demand price differential, so any figure would be invented.
| `DescribeSpotPriceHistory` | On owned hardware there is no spot-to-on-demand price differential, so any figure would be invented. |
+15 -23
View File
@@ -1,7 +1,7 @@
---
title: "ECR API Coverage"
seoTitle: "Elastic Container Registry API Coverage — Spinifex Docs"
description: "Every operation in the Amazon ECR API model and whether Spinifex implements it, alongside the OCI distribution endpoint that carries the image layers."
description: "The Amazon ECR API operations Spinifex implements, alongside the OCI distribution endpoint that carries the image layers, and those the platform will not."
category: "Coverage"
sections:
- overview
@@ -18,15 +18,15 @@ tags:
## Overview
Spinifex implements **19 of the 47** operations (**40.4%**) in the ECR `2015-09-21` API model.
Spinifex implements **19 operations** in the ECR `2015-09-21` API model.
### Two endpoints, one registry
Repository metadata is served over the AWS API on the gateway endpoint. Image data moves over the OCI Distribution `/v2/` endpoint on that same host, authenticated by the bearer token `GetAuthorizationToken` mints for `docker login`.
The split explains the largest group of unimplemented operations below. The layer-transfer operations — `BatchCheckLayerAvailability`, `InitiateLayerUpload`, `UploadLayerPart`, `CompleteLayerUpload` and `GetDownloadUrlForLayer` — are registered stubs because the `/v2/` endpoint carries that traffic instead. A client using `docker` or any OCI-compatible tool never calls them.
The split explains the stubs below. The layer-transfer operations — `BatchCheckLayerAvailability`, `InitiateLayerUpload`, `UploadLayerPart`, `CompleteLayerUpload` and `GetDownloadUrlForLayer` — are registered stubs because the `/v2/` endpoint carries that traffic instead. A client using `docker` or any OCI-compatible tool never calls them.
Registry replication is absent as well: a deployment is a single registry, with no cross-region peer to replicate to.
Registry replication is a stub for the same kind of reason: a deployment is a single registry, with no cross-region peer to replicate to.
### Operations
@@ -35,54 +35,46 @@ Registry replication is absent as well: a deployment is a single registry, with
| `BatchCheckLayerAvailability` | 🟡 Stub |
| `BatchDeleteImage` | ✅ Implemented |
| `BatchGetImage` | ✅ Implemented |
| `BatchGetRepositoryScanningConfiguration` | ⛔ Not applicable [1](#notes) |
| `CompleteLayerUpload` | 🟡 Stub |
| `CreatePullThroughCacheRule` | ❌ Not implemented |
| `CreateRepository` | ✅ Implemented |
| `CreateRepositoryCreationTemplate` | ❌ Not implemented |
| `DeleteLifecyclePolicy` | ✅ Implemented |
| `DeletePullThroughCacheRule` | ❌ Not implemented |
| `DeleteRegistryPolicy` | ❌ Not implemented |
| `DeleteRepository` | ✅ Implemented |
| `DeleteRepositoryCreationTemplate` | ❌ Not implemented |
| `DeleteRepositoryPolicy` | ✅ Implemented |
| `DescribeImageReplicationStatus` | ❌ Not implemented |
| `DescribeImageScanFindings` | ⛔ Not applicable [1](#notes) |
| `DescribeImages` | ✅ Implemented |
| `DescribePullThroughCacheRules` | ❌ Not implemented |
| `DescribeRegistry` | 🟡 Stub |
| `DescribeRepositories` | ✅ Implemented |
| `DescribeRepositoryCreationTemplates` | ❌ Not implemented |
| `GetAuthorizationToken` | ✅ Implemented |
| `GetDownloadUrlForLayer` | 🟡 Stub |
| `GetLifecyclePolicy` | ✅ Implemented |
| `GetLifecyclePolicyPreview` | ✅ Implemented |
| `GetRegistryPolicy` | 🟡 Stub |
| `GetRegistryScanningConfiguration` | ⛔ Not applicable [1](#notes) |
| `GetRepositoryPolicy` | ✅ Implemented |
| `InitiateLayerUpload` | 🟡 Stub |
| `ListImages` | ✅ Implemented |
| `ListTagsForResource` | ✅ Implemented |
| `PutImage` | ✅ Implemented |
| `PutImageScanningConfiguration` | ⛔ Not applicable [1](#notes) |
| `PutImageTagMutability` | ✅ Implemented |
| `PutLifecyclePolicy` | ✅ Implemented |
| `PutRegistryPolicy` | 🟡 Stub |
| `PutRegistryScanningConfiguration` | ⛔ Not applicable [1](#notes) |
| `PutReplicationConfiguration` | 🟡 Stub |
| `SetRepositoryPolicy` | ✅ Implemented |
| `StartImageScan` | ⛔ Not applicable [1](#notes) |
| `StartLifecyclePolicyPreview` | ✅ Implemented |
| `TagResource` | 🟡 Stub |
| `UntagResource` | 🟡 Stub |
| `UpdatePullThroughCacheRule` | ❌ Not implemented |
| `UpdateRepositoryCreationTemplate` | ❌ Not implemented |
| `UploadLayerPart` | 🟡 Stub |
| `ValidatePullThroughCacheRule` | ❌ Not implemented |
| `GetImageScanningConfiguration` | 🔒 Outside the pinned model |
| `ListRepositories` | 🔒 Outside the pinned model |
| `ReplicateImage` | 🔒 Outside the pinned model |
### Notes
### Not applicable
1. Image scanning is an AWS-hosted vulnerability service with no equivalent here, so a finding set would always be empty.
These operations describe AWS-hosted features this platform does not offer.
| Operation | Reason |
|---|---|
| `BatchGetRepositoryScanningConfiguration` | Image scanning is an AWS-hosted vulnerability service with no equivalent here, so a finding set would always be empty. |
| `DescribeImageScanFindings` | Image scanning is an AWS-hosted vulnerability service with no equivalent here, so a finding set would always be empty. |
| `GetRegistryScanningConfiguration` | Image scanning is an AWS-hosted vulnerability service with no equivalent here, so a finding set would always be empty. |
| `PutImageScanningConfiguration` | Image scanning is an AWS-hosted vulnerability service with no equivalent here, so a finding set would always be empty. |
| `PutRegistryScanningConfiguration` | Image scanning is an AWS-hosted vulnerability service with no equivalent here, so a finding set would always be empty. |
| `StartImageScan` | Image scanning is an AWS-hosted vulnerability service with no equivalent here, so a finding set would always be empty. |
+2 -2
View File
@@ -2,6 +2,6 @@
Repository metadata is served over the AWS API on the gateway endpoint. Image data moves over the OCI Distribution `/v2/` endpoint on that same host, authenticated by the bearer token `GetAuthorizationToken` mints for `docker login`.
The split explains the largest group of unimplemented operations below. The layer-transfer operations — `BatchCheckLayerAvailability`, `InitiateLayerUpload`, `UploadLayerPart`, `CompleteLayerUpload` and `GetDownloadUrlForLayer` — are registered stubs because the `/v2/` endpoint carries that traffic instead. A client using `docker` or any OCI-compatible tool never calls them.
The split explains the stubs below. The layer-transfer operations — `BatchCheckLayerAvailability`, `InitiateLayerUpload`, `UploadLayerPart`, `CompleteLayerUpload` and `GetDownloadUrlForLayer` — are registered stubs because the `/v2/` endpoint carries that traffic instead. A client using `docker` or any OCI-compatible tool never calls them.
Registry replication is absent as well: a deployment is a single registry, with no cross-region peer to replicate to.
Registry replication is a stub for the same kind of reason: a deployment is a single registry, with no cross-region peer to replicate to.
+2 -22
View File
@@ -1,7 +1,7 @@
---
title: "ECS API Coverage"
seoTitle: "Elastic Container Service API Coverage — Spinifex Docs"
description: "Every operation in the Amazon ECS API model and whether Spinifex implements it, covering clusters, services, tasks and container instances on each build."
description: "The Amazon ECS API operations Spinifex implements, covering clusters, services, tasks and container instances, with those the platform does not offer."
category: "Coverage"
sections:
- overview
@@ -18,7 +18,7 @@ tags:
## Overview
Spinifex implements **31 of the 56** operations (**55.4%**) in the ECS `2014-11-13` API model.
Spinifex implements **31 operations** in the ECS `2014-11-13` API model.
### No Fargate
@@ -31,14 +31,9 @@ Clusters, services and tasks run on EC2 container instances. There is no Fargate
| `CreateCapacityProvider` | ✅ Implemented |
| `CreateCluster` | ✅ Implemented |
| `CreateService` | ✅ Implemented |
| `CreateTaskSet` | ❌ Not implemented |
| `DeleteAccountSetting` | ❌ Not implemented |
| `DeleteAttributes` | ❌ Not implemented |
| `DeleteCapacityProvider` | ✅ Implemented |
| `DeleteCluster` | ✅ Implemented |
| `DeleteService` | ✅ Implemented |
| `DeleteTaskDefinitions` | ❌ Not implemented |
| `DeleteTaskSet` | ❌ Not implemented |
| `DeregisterContainerInstance` | ✅ Implemented |
| `DeregisterTaskDefinition` | ✅ Implemented |
| `DescribeCapacityProviders` | ✅ Implemented |
@@ -46,13 +41,8 @@ Clusters, services and tasks run on EC2 container instances. There is no Fargate
| `DescribeContainerInstances` | ✅ Implemented |
| `DescribeServices` | ✅ Implemented |
| `DescribeTaskDefinition` | ✅ Implemented |
| `DescribeTaskSets` | ❌ Not implemented |
| `DescribeTasks` | ✅ Implemented |
| `DiscoverPollEndpoint` | ❌ Not implemented |
| `ExecuteCommand` | ❌ Not implemented |
| `GetTaskProtection` | ❌ Not implemented |
| `ListAccountSettings` | 🟡 Stub |
| `ListAttributes` | ❌ Not implemented |
| `ListClusters` | ✅ Implemented |
| `ListContainerInstances` | ✅ Implemented |
| `ListServices` | ✅ Implemented |
@@ -62,25 +52,15 @@ Clusters, services and tasks run on EC2 container instances. There is no Fargate
| `ListTaskDefinitions` | ✅ Implemented |
| `ListTasks` | ✅ Implemented |
| `PutAccountSetting` | 🟡 Stub |
| `PutAccountSettingDefault` | ❌ Not implemented |
| `PutAttributes` | ❌ Not implemented |
| `PutClusterCapacityProviders` | ✅ Implemented |
| `RegisterContainerInstance` | ✅ Implemented |
| `RegisterTaskDefinition` | ✅ Implemented |
| `RunTask` | ✅ Implemented |
| `StartTask` | ✅ Implemented |
| `StopTask` | ✅ Implemented |
| `SubmitAttachmentStateChanges` | ❌ Not implemented |
| `SubmitContainerStateChange` | ❌ Not implemented |
| `SubmitTaskStateChange` | ✅ Implemented |
| `TagResource` | ✅ Implemented |
| `UntagResource` | ✅ Implemented |
| `UpdateCapacityProvider` | ❌ Not implemented |
| `UpdateCluster` | 🟡 Stub |
| `UpdateClusterSettings` | ❌ Not implemented |
| `UpdateContainerAgent` | ❌ Not implemented |
| `UpdateContainerInstancesState` | ✅ Implemented |
| `UpdateService` | ✅ Implemented |
| `UpdateServicePrimaryTaskSet` | ❌ Not implemented |
| `UpdateTaskProtection` | ❌ Not implemented |
| `UpdateTaskSet` | ❌ Not implemented |
+38 -60
View File
@@ -1,7 +1,7 @@
---
title: "EKS API Coverage"
seoTitle: "Elastic Kubernetes Service API Coverage — Spinifex Docs"
description: "Every operation in the Amazon EKS API model and whether Spinifex implements it, covering clusters, nodegroups, add-ons and access entries on each build."
description: "The Amazon EKS API operations Spinifex implements, covering clusters, nodegroups, add-ons and access entries, with those the platform does not offer and why."
category: "Coverage"
sections:
- overview
@@ -18,65 +18,43 @@ tags:
## Overview
Spinifex implements **34 of the 56** operations (**60.7%**) in the EKS `2017-11-01` API model.
Spinifex implements **34 operations** in the EKS `2017-11-01` API model.
### Operations
| Operation | Status |
|---|---|
| `AssociateAccessPolicy` | ✅ Implemented |
| `AssociateEncryptionConfig` | ❌ Not implemented |
| `AssociateIdentityProviderConfig` | ✅ Implemented |
| `CreateAccessEntry` | ✅ Implemented |
| `CreateAddon` | ✅ Implemented |
| `CreateCluster` | ✅ Implemented |
| `CreateEksAnywhereSubscription` | ❌ Not implemented |
| `CreateFargateProfile` | ❌ Not implemented |
| `CreateNodegroup` | ✅ Implemented |
| `CreatePodIdentityAssociation` | ❌ Not implemented |
| `DeleteAccessEntry` | ✅ Implemented |
| `DeleteAddon` | ✅ Implemented |
| `DeleteCluster` | ✅ Implemented |
| `DeleteEksAnywhereSubscription` | ❌ Not implemented |
| `DeleteFargateProfile` | ❌ Not implemented |
| `DeleteNodegroup` | ✅ Implemented |
| `DeletePodIdentityAssociation` | ❌ Not implemented |
| `DeregisterCluster` | ❌ Not implemented |
| `DescribeAccessEntry` | ✅ Implemented |
| `DescribeAddon` | ✅ Implemented |
| `DescribeAddonConfiguration` | ❌ Not implemented |
| `DescribeAddonVersions` | ✅ Implemented |
| `DescribeCluster` | ✅ Implemented |
| `DescribeEksAnywhereSubscription` | ❌ Not implemented |
| `DescribeFargateProfile` | ❌ Not implemented |
| `DescribeIdentityProviderConfig` | ✅ Implemented |
| `DescribeInsight` | ❌ Not implemented |
| `DescribeNodegroup` | ✅ Implemented |
| `DescribePodIdentityAssociation` | ❌ Not implemented |
| `DescribeUpdate` | ❌ Not implemented |
| `DisassociateAccessPolicy` | ✅ Implemented |
| `DisassociateIdentityProviderConfig` | ✅ Implemented |
| `ListAccessEntries` | ✅ Implemented |
| `ListAccessPolicies` | ✅ Implemented |
| `ListAddons` | ✅ Implemented |
| `ListAssociatedAccessPolicies` | ✅ Implemented |
| `ListClusters` | ✅ Implemented |
| `ListEksAnywhereSubscriptions` | ❌ Not implemented |
| `ListFargateProfiles` | ❌ Not implemented |
| `ListIdentityProviderConfigs` | ✅ Implemented |
| `ListInsights` | ❌ Not implemented |
| `ListNodegroups` | ✅ Implemented |
| `ListPodIdentityAssociations` | ❌ Not implemented |
| `ListTagsForResource` | ✅ Implemented |
| `ListUpdates` | ❌ Not implemented |
| `RegisterCluster` | ❌ Not implemented |
| `TagResource` | ✅ Implemented |
| `UntagResource` | ✅ Implemented |
| `UpdateAccessEntry` | ✅ Implemented |
| `UpdateAddon` | ✅ Implemented |
| `UpdateClusterConfig` | ✅ Implemented |
| `UpdateClusterVersion` | ✅ Implemented |
| `UpdateEksAnywhereSubscription` | ❌ Not implemented |
| `UpdateNodegroupConfig` | ✅ Implemented |
| `UpdateNodegroupVersion` | ✅ Implemented |
| `UpdatePodIdentityAssociation` | ❌ Not implemented |
| Operation |
|---|
| `AssociateAccessPolicy` |
| `AssociateIdentityProviderConfig` |
| `CreateAccessEntry` |
| `CreateAddon` |
| `CreateCluster` |
| `CreateNodegroup` |
| `DeleteAccessEntry` |
| `DeleteAddon` |
| `DeleteCluster` |
| `DeleteNodegroup` |
| `DescribeAccessEntry` |
| `DescribeAddon` |
| `DescribeAddonVersions` |
| `DescribeCluster` |
| `DescribeIdentityProviderConfig` |
| `DescribeNodegroup` |
| `DisassociateAccessPolicy` |
| `DisassociateIdentityProviderConfig` |
| `ListAccessEntries` |
| `ListAccessPolicies` |
| `ListAddons` |
| `ListAssociatedAccessPolicies` |
| `ListClusters` |
| `ListIdentityProviderConfigs` |
| `ListNodegroups` |
| `ListTagsForResource` |
| `TagResource` |
| `UntagResource` |
| `UpdateAccessEntry` |
| `UpdateAddon` |
| `UpdateClusterConfig` |
| `UpdateClusterVersion` |
| `UpdateNodegroupConfig` |
| `UpdateNodegroupVersion` |
+2 -14
View File
@@ -1,7 +1,7 @@
---
title: "ELBv2 API Coverage"
seoTitle: "Elastic Load Balancing v2 API Coverage — Spinifex Docs"
description: "Every operation in the Elastic Load Balancing v2 API model and whether Spinifex implements it, for both the Application and Network Load Balancers it serves."
description: "The Elastic Load Balancing v2 API operations Spinifex implements, for both the Application and Network Load Balancers it serves, with those it does not."
category: "Coverage"
sections:
- overview
@@ -18,7 +18,7 @@ tags:
## Overview
Spinifex implements **34 of the 46** operations (**73.9%**) in the ELBv2 `2015-12-01` API model.
Spinifex implements **34 operations** in the ELBv2 `2015-12-01` API model.
### Two data planes
@@ -30,18 +30,14 @@ The data plane is a system-managed load balancer VM, launched automatically duri
|---|---|
| `AddListenerCertificates` | ✅ Implemented |
| `AddTags` | ✅ Implemented |
| `AddTrustStoreRevocations` | ❌ Not implemented |
| `CreateListener` | ✅ Implemented |
| `CreateLoadBalancer` | ✅ Implemented |
| `CreateRule` | ✅ Implemented |
| `CreateTargetGroup` | ✅ Implemented |
| `CreateTrustStore` | ❌ Not implemented |
| `DeleteListener` | ✅ Implemented |
| `DeleteLoadBalancer` | ✅ Implemented |
| `DeleteRule` | ✅ Implemented |
| `DeleteSharedTrustStoreAssociation` | ❌ Not implemented |
| `DeleteTargetGroup` | ✅ Implemented |
| `DeleteTrustStore` | ❌ Not implemented |
| `DeregisterTargets` | ✅ Implemented |
| `DescribeAccountLimits` | ✅ Implemented |
| `DescribeListenerCertificates` | ✅ Implemented |
@@ -54,22 +50,14 @@ The data plane is a system-managed load balancer VM, launched automatically duri
| `DescribeTargetGroupAttributes` | ✅ Implemented |
| `DescribeTargetGroups` | ✅ Implemented |
| `DescribeTargetHealth` | ✅ Implemented |
| `DescribeTrustStoreAssociations` | ❌ Not implemented |
| `DescribeTrustStoreRevocations` | ❌ Not implemented |
| `DescribeTrustStores` | ❌ Not implemented |
| `GetResourcePolicy` | ❌ Not implemented |
| `GetTrustStoreCaCertificatesBundle` | ❌ Not implemented |
| `GetTrustStoreRevocationContent` | ❌ Not implemented |
| `ModifyListener` | ✅ Implemented |
| `ModifyLoadBalancerAttributes` | ✅ Implemented |
| `ModifyRule` | ✅ Implemented |
| `ModifyTargetGroup` | ✅ Implemented |
| `ModifyTargetGroupAttributes` | ✅ Implemented |
| `ModifyTrustStore` | ❌ Not implemented |
| `RegisterTargets` | ✅ Implemented |
| `RemoveListenerCertificates` | ✅ Implemented |
| `RemoveTags` | ✅ Implemented |
| `RemoveTrustStoreRevocations` | ❌ Not implemented |
| `SetIpAddressType` | ✅ Implemented |
| `SetRulePriorities` | ✅ Implemented |
| `SetSecurityGroups` | ✅ Implemented |
+104 -169
View File
@@ -1,7 +1,7 @@
---
title: "IAM API Coverage"
seoTitle: "AWS IAM API Operation Coverage on Spinifex — Spinifex Docs"
description: "Every operation in the AWS IAM API model and whether Spinifex implements it, covering users, roles, policies, groups and instance profiles on each build."
description: "The AWS IAM API operations Spinifex implements, covering users, roles, policies, groups and instance profiles, with those the platform does not offer."
category: "Coverage"
sections:
- overview
@@ -18,7 +18,7 @@ tags:
## Overview
Spinifex implements **75 of the 159** operations (**47.2%**) in the IAM `2010-05-08` API model.
Spinifex implements **75 operations** in the IAM `2010-05-08` API model.
### Scope
@@ -26,171 +26,106 @@ All IAM operations are account-scoped. The root user of an account bypasses poli
### Operations
| Operation | Status |
| Operation |
|---|
| `AddRoleToInstanceProfile` |
| `AddUserToGroup` |
| `AttachGroupPolicy` |
| `AttachRolePolicy` |
| `AttachUserPolicy` |
| `CreateAccessKey` |
| `CreateGroup` |
| `CreateInstanceProfile` |
| `CreateOpenIDConnectProvider` |
| `CreatePolicy` |
| `CreateRole` |
| `CreateUser` |
| `DeleteAccessKey` |
| `DeleteGroup` |
| `DeleteGroupPolicy` |
| `DeleteInstanceProfile` |
| `DeleteOpenIDConnectProvider` |
| `DeletePolicy` |
| `DeleteRole` |
| `DeleteRolePolicy` |
| `DeleteUser` |
| `DeleteUserPolicy` |
| `DetachGroupPolicy` |
| `DetachRolePolicy` |
| `DetachUserPolicy` |
| `GetAccountSummary` |
| `GetGroup` |
| `GetGroupPolicy` |
| `GetInstanceProfile` |
| `GetOpenIDConnectProvider` |
| `GetPolicy` |
| `GetPolicyVersion` |
| `GetRole` |
| `GetRolePolicy` |
| `GetUser` |
| `GetUserPolicy` |
| `ListAccessKeys` |
| `ListAttachedGroupPolicies` |
| `ListAttachedRolePolicies` |
| `ListAttachedUserPolicies` |
| `ListGroupPolicies` |
| `ListGroups` |
| `ListGroupsForUser` |
| `ListInstanceProfileTags` |
| `ListInstanceProfiles` |
| `ListInstanceProfilesForRole` |
| `ListOpenIDConnectProviderTags` |
| `ListOpenIDConnectProviders` |
| `ListPolicies` |
| `ListPolicyTags` |
| `ListPolicyVersions` |
| `ListRolePolicies` |
| `ListRoleTags` |
| `ListRoles` |
| `ListUserPolicies` |
| `ListUserTags` |
| `ListUsers` |
| `PutGroupPolicy` |
| `PutRolePolicy` |
| `PutUserPolicy` |
| `RemoveRoleFromInstanceProfile` |
| `RemoveUserFromGroup` |
| `TagInstanceProfile` |
| `TagOpenIDConnectProvider` |
| `TagPolicy` |
| `TagRole` |
| `TagUser` |
| `UntagInstanceProfile` |
| `UntagOpenIDConnectProvider` |
| `UntagPolicy` |
| `UntagRole` |
| `UntagUser` |
| `UpdateAccessKey` |
| `UpdateAssumeRolePolicy` |
| `UpdateRole` |
### Not applicable
These operations describe AWS-hosted features this platform does not offer.
| Operation | Reason |
|---|---|
| `AddClientIDToOpenIDConnectProvider` | ❌ Not implemented |
| `AddRoleToInstanceProfile` | ✅ Implemented |
| `AddUserToGroup` | ✅ Implemented |
| `AttachGroupPolicy` | ✅ Implemented |
| `AttachRolePolicy` | ✅ Implemented |
| `AttachUserPolicy` | ✅ Implemented |
| `ChangePassword` | ❌ Not implemented |
| `CreateAccessKey` | ✅ Implemented |
| `CreateAccountAlias` | ❌ Not implemented |
| `CreateGroup` | ✅ Implemented |
| `CreateInstanceProfile` | ✅ Implemented |
| `CreateLoginProfile` | ❌ Not implemented |
| `CreateOpenIDConnectProvider` | ✅ Implemented |
| `CreatePolicy` | ✅ Implemented |
| `CreatePolicyVersion` | ❌ Not implemented |
| `CreateRole` | ✅ Implemented |
| `CreateSAMLProvider` | ❌ Not implemented |
| `CreateServiceLinkedRole` | ⛔ Not applicable [3](#notes) |
| `CreateServiceSpecificCredential` | ⛔ Not applicable [1](#notes) |
| `CreateUser` | ✅ Implemented |
| `CreateVirtualMFADevice` | ❌ Not implemented |
| `DeactivateMFADevice` | ❌ Not implemented |
| `DeleteAccessKey` | ✅ Implemented |
| `DeleteAccountAlias` | ❌ Not implemented |
| `DeleteAccountPasswordPolicy` | ❌ Not implemented |
| `DeleteGroup` | ✅ Implemented |
| `DeleteGroupPolicy` | ✅ Implemented |
| `DeleteInstanceProfile` | ✅ Implemented |
| `DeleteLoginProfile` | ❌ Not implemented |
| `DeleteOpenIDConnectProvider` | ✅ Implemented |
| `DeletePolicy` | ✅ Implemented |
| `DeletePolicyVersion` | ❌ Not implemented |
| `DeleteRole` | ✅ Implemented |
| `DeleteRolePermissionsBoundary` | ❌ Not implemented |
| `DeleteRolePolicy` | ✅ Implemented |
| `DeleteSAMLProvider` | ❌ Not implemented |
| `DeleteSSHPublicKey` | ⛔ Not applicable [1](#notes) |
| `DeleteServerCertificate` | ❌ Not implemented |
| `DeleteServiceLinkedRole` | ⛔ Not applicable [3](#notes) |
| `DeleteServiceSpecificCredential` | ⛔ Not applicable [1](#notes) |
| `DeleteSigningCertificate` | ⛔ Not applicable [4](#notes) |
| `DeleteUser` | ✅ Implemented |
| `DeleteUserPermissionsBoundary` | ❌ Not implemented |
| `DeleteUserPolicy` | ✅ Implemented |
| `DeleteVirtualMFADevice` | ❌ Not implemented |
| `DetachGroupPolicy` | ✅ Implemented |
| `DetachRolePolicy` | ✅ Implemented |
| `DetachUserPolicy` | ✅ Implemented |
| `EnableMFADevice` | ❌ Not implemented |
| `GenerateCredentialReport` | ❌ Not implemented |
| `GenerateOrganizationsAccessReport` | ⛔ Not applicable [2](#notes) |
| `GenerateServiceLastAccessedDetails` | ❌ Not implemented |
| `GetAccessKeyLastUsed` | ❌ Not implemented |
| `GetAccountAuthorizationDetails` | ❌ Not implemented |
| `GetAccountPasswordPolicy` | ❌ Not implemented |
| `GetAccountSummary` | ✅ Implemented |
| `GetContextKeysForCustomPolicy` | ❌ Not implemented |
| `GetContextKeysForPrincipalPolicy` | ❌ Not implemented |
| `GetCredentialReport` | ❌ Not implemented |
| `GetGroup` | ✅ Implemented |
| `GetGroupPolicy` | ✅ Implemented |
| `GetInstanceProfile` | ✅ Implemented |
| `GetLoginProfile` | ❌ Not implemented |
| `GetMFADevice` | ❌ Not implemented |
| `GetOpenIDConnectProvider` | ✅ Implemented |
| `GetOrganizationsAccessReport` | ⛔ Not applicable [2](#notes) |
| `GetPolicy` | ✅ Implemented |
| `GetPolicyVersion` | ✅ Implemented |
| `GetRole` | ✅ Implemented |
| `GetRolePolicy` | ✅ Implemented |
| `GetSAMLProvider` | ❌ Not implemented |
| `GetSSHPublicKey` | ⛔ Not applicable [1](#notes) |
| `GetServerCertificate` | ❌ Not implemented |
| `GetServiceLastAccessedDetails` | ❌ Not implemented |
| `GetServiceLastAccessedDetailsWithEntities` | ❌ Not implemented |
| `GetServiceLinkedRoleDeletionStatus` | ⛔ Not applicable [3](#notes) |
| `GetUser` | ✅ Implemented |
| `GetUserPolicy` | ✅ Implemented |
| `ListAccessKeys` | ✅ Implemented |
| `ListAccountAliases` | ❌ Not implemented |
| `ListAttachedGroupPolicies` | ✅ Implemented |
| `ListAttachedRolePolicies` | ✅ Implemented |
| `ListAttachedUserPolicies` | ✅ Implemented |
| `ListEntitiesForPolicy` | ❌ Not implemented |
| `ListGroupPolicies` | ✅ Implemented |
| `ListGroups` | ✅ Implemented |
| `ListGroupsForUser` | ✅ Implemented |
| `ListInstanceProfileTags` | ✅ Implemented |
| `ListInstanceProfiles` | ✅ Implemented |
| `ListInstanceProfilesForRole` | ✅ Implemented |
| `ListMFADeviceTags` | ❌ Not implemented |
| `ListMFADevices` | ❌ Not implemented |
| `ListOpenIDConnectProviderTags` | ✅ Implemented |
| `ListOpenIDConnectProviders` | ✅ Implemented |
| `ListPolicies` | ✅ Implemented |
| `ListPoliciesGrantingServiceAccess` | ❌ Not implemented |
| `ListPolicyTags` | ✅ Implemented |
| `ListPolicyVersions` | ✅ Implemented |
| `ListRolePolicies` | ✅ Implemented |
| `ListRoleTags` | ✅ Implemented |
| `ListRoles` | ✅ Implemented |
| `ListSAMLProviderTags` | ❌ Not implemented |
| `ListSAMLProviders` | ❌ Not implemented |
| `ListSSHPublicKeys` | ⛔ Not applicable [1](#notes) |
| `ListServerCertificateTags` | ❌ Not implemented |
| `ListServerCertificates` | ❌ Not implemented |
| `ListServiceSpecificCredentials` | ⛔ Not applicable [1](#notes) |
| `ListSigningCertificates` | ⛔ Not applicable [4](#notes) |
| `ListUserPolicies` | ✅ Implemented |
| `ListUserTags` | ✅ Implemented |
| `ListUsers` | ✅ Implemented |
| `ListVirtualMFADevices` | ❌ Not implemented |
| `PutGroupPolicy` | ✅ Implemented |
| `PutRolePermissionsBoundary` | ❌ Not implemented |
| `PutRolePolicy` | ✅ Implemented |
| `PutUserPermissionsBoundary` | ❌ Not implemented |
| `PutUserPolicy` | ✅ Implemented |
| `RemoveClientIDFromOpenIDConnectProvider` | ❌ Not implemented |
| `RemoveRoleFromInstanceProfile` | ✅ Implemented |
| `RemoveUserFromGroup` | ✅ Implemented |
| `ResetServiceSpecificCredential` | ⛔ Not applicable [1](#notes) |
| `ResyncMFADevice` | ❌ Not implemented |
| `SetDefaultPolicyVersion` | ❌ Not implemented |
| `SetSecurityTokenServicePreferences` | ❌ Not implemented |
| `SimulateCustomPolicy` | ❌ Not implemented |
| `SimulatePrincipalPolicy` | ❌ Not implemented |
| `TagInstanceProfile` | ✅ Implemented |
| `TagMFADevice` | ❌ Not implemented |
| `TagOpenIDConnectProvider` | ✅ Implemented |
| `TagPolicy` | ✅ Implemented |
| `TagRole` | ✅ Implemented |
| `TagSAMLProvider` | ❌ Not implemented |
| `TagServerCertificate` | ❌ Not implemented |
| `TagUser` | ✅ Implemented |
| `UntagInstanceProfile` | ✅ Implemented |
| `UntagMFADevice` | ❌ Not implemented |
| `UntagOpenIDConnectProvider` | ✅ Implemented |
| `UntagPolicy` | ✅ Implemented |
| `UntagRole` | ✅ Implemented |
| `UntagSAMLProvider` | ❌ Not implemented |
| `UntagServerCertificate` | ❌ Not implemented |
| `UntagUser` | ✅ Implemented |
| `UpdateAccessKey` | ✅ Implemented |
| `UpdateAccountPasswordPolicy` | ❌ Not implemented |
| `UpdateAssumeRolePolicy` | ✅ Implemented |
| `UpdateGroup` | ❌ Not implemented |
| `UpdateLoginProfile` | ❌ Not implemented |
| `UpdateOpenIDConnectProviderThumbprint` | ❌ Not implemented |
| `UpdateRole` | ✅ Implemented |
| `UpdateRoleDescription` | ❌ Not implemented |
| `UpdateSAMLProvider` | ❌ Not implemented |
| `UpdateSSHPublicKey` | ⛔ Not applicable [1](#notes) |
| `UpdateServerCertificate` | ❌ Not implemented |
| `UpdateServiceSpecificCredential` | ⛔ Not applicable [1](#notes) |
| `UpdateSigningCertificate` | ⛔ Not applicable [4](#notes) |
| `UpdateUser` | ❌ Not implemented |
| `UploadSSHPublicKey` | ⛔ Not applicable [1](#notes) |
| `UploadServerCertificate` | ❌ Not implemented |
| `UploadSigningCertificate` | ⛔ Not applicable [4](#notes) |
### Notes
1. CodeCommit credentials and SSH keys; the service does not exist here.
2. AWS Organizations is not offered, so there is no organization to report on.
3. Service-linked roles exist for AWS service principals, which this platform has none of.
4. X.509 signing certificates are an EC2-Classic SOAP credential, retired by AWS.
| `CreateServiceLinkedRole` | Service-linked roles exist for AWS service principals, which this platform has none of. |
| `CreateServiceSpecificCredential` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `DeleteSSHPublicKey` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `DeleteServiceLinkedRole` | Service-linked roles exist for AWS service principals, which this platform has none of. |
| `DeleteServiceSpecificCredential` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `DeleteSigningCertificate` | X.509 signing certificates are an EC2-Classic SOAP credential, retired by AWS. |
| `GenerateOrganizationsAccessReport` | AWS Organizations is not offered, so there is no organization to report on. |
| `GetOrganizationsAccessReport` | AWS Organizations is not offered, so there is no organization to report on. |
| `GetSSHPublicKey` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `GetServiceLinkedRoleDeletionStatus` | Service-linked roles exist for AWS service principals, which this platform has none of. |
| `ListSSHPublicKeys` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `ListServiceSpecificCredentials` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `ListSigningCertificates` | X.509 signing certificates are an EC2-Classic SOAP credential, retired by AWS. |
| `ResetServiceSpecificCredential` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `UpdateSSHPublicKey` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `UpdateServiceSpecificCredential` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `UpdateSigningCertificate` | X.509 signing certificates are an EC2-Classic SOAP credential, retired by AWS. |
| `UploadSSHPublicKey` | CodeCommit credentials and SSH keys; the service does not exist here. |
| `UploadSigningCertificate` | X.509 signing certificates are an EC2-Classic SOAP credential, retired by AWS. |
+938
View File
@@ -0,0 +1,938 @@
# AWS Model Operation Coverage (internal)
Generated by `make aws-model-coverage`. This file is not published: it carries the counts and the unimplemented operations that the pages under this directory deliberately leave out.
Pinned model source: `aws-sdk-go v1.55.8`.
## acm
`2015-12-08` — 9 of 15 modelled operations implemented (60.0%), 0 stubbed, 0 unsupported, 0 registered outside the pinned model.
### Not implemented
- `ExportCertificate`
- `GetAccountConfiguration`
- `PutAccountConfiguration`
- `RenewCertificate`
- `ResendValidationEmail`
- `UpdateCertificateOptions`
## ec2
`2016-11-15` — 125 of 625 modelled operations implemented (20.0%), 0 stubbed, 0 unsupported, 0 registered outside the pinned model.
### Not implemented
- `AcceptAddressTransfer`
- `AcceptReservedInstancesExchangeQuote`
- `AcceptTransitGatewayMulticastDomainAssociations`
- `AcceptTransitGatewayPeeringAttachment`
- `AcceptTransitGatewayVpcAttachment`
- `AcceptVpcEndpointConnections`
- `AcceptVpcPeeringConnection`
- `AdvertiseByoipCidr`
- `AllocateHosts`
- `AllocateIpamPoolCidr`
- `ApplySecurityGroupsToClientVpnTargetNetwork`
- `AssignIpv6Addresses`
- `AssignPrivateIpAddresses`
- `AssignPrivateNatGatewayAddress`
- `AssociateClientVpnTargetNetwork`
- `AssociateDhcpOptions`
- `AssociateEnclaveCertificateIamRole`
- `AssociateInstanceEventWindow`
- `AssociateIpamByoasn`
- `AssociateIpamResourceDiscovery`
- `AssociateNatGatewayAddress`
- `AssociateSubnetCidrBlock`
- `AssociateTransitGatewayMulticastDomain`
- `AssociateTransitGatewayPolicyTable`
- `AssociateTransitGatewayRouteTable`
- `AssociateTrunkInterface`
- `AssociateVpcCidrBlock`
- `AttachClassicLinkVpc`
- `AttachVerifiedAccessTrustProvider`
- `AttachVpnGateway`
- `AuthorizeClientVpnIngress`
- `BundleInstance`
- `CancelBundleTask`
- `CancelCapacityReservationFleets`
- `CancelConversionTask`
- `CancelExportTask`
- `CancelImageLaunchPermission`
- `CancelImportTask`
- `CancelReservedInstancesListing`
- `CancelSpotFleetRequests`
- `ConfirmProductInstance`
- `CopyFpgaImage`
- `CreateCapacityReservationFleet`
- `CreateCarrierGateway`
- `CreateClientVpnEndpoint`
- `CreateClientVpnRoute`
- `CreateCoipCidr`
- `CreateCoipPool`
- `CreateCustomerGateway`
- `CreateDefaultSubnet`
- `CreateDefaultVpc`
- `CreateDhcpOptions`
- `CreateFleet`
- `CreateFlowLogs`
- `CreateFpgaImage`
- `CreateInstanceConnectEndpoint`
- `CreateInstanceEventWindow`
- `CreateInstanceExportTask`
- `CreateIpam`
- `CreateIpamExternalResourceVerificationToken`
- `CreateIpamPool`
- `CreateIpamResourceDiscovery`
- `CreateIpamScope`
- `CreateLocalGatewayRoute`
- `CreateLocalGatewayRouteTable`
- `CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation`
- `CreateLocalGatewayRouteTableVpcAssociation`
- `CreateManagedPrefixList`
- `CreateNetworkAcl`
- `CreateNetworkAclEntry`
- `CreateNetworkInsightsAccessScope`
- `CreateNetworkInsightsPath`
- `CreateNetworkInterfacePermission`
- `CreatePublicIpv4Pool`
- `CreateReplaceRootVolumeTask`
- `CreateReservedInstancesListing`
- `CreateRestoreImageTask`
- `CreateSnapshots`
- `CreateSpotDatafeedSubscription`
- `CreateStoreImageTask`
- `CreateSubnetCidrReservation`
- `CreateTrafficMirrorFilter`
- `CreateTrafficMirrorFilterRule`
- `CreateTrafficMirrorSession`
- `CreateTrafficMirrorTarget`
- `CreateTransitGateway`
- `CreateTransitGatewayConnect`
- `CreateTransitGatewayConnectPeer`
- `CreateTransitGatewayMulticastDomain`
- `CreateTransitGatewayPeeringAttachment`
- `CreateTransitGatewayPolicyTable`
- `CreateTransitGatewayPrefixListReference`
- `CreateTransitGatewayRoute`
- `CreateTransitGatewayRouteTable`
- `CreateTransitGatewayRouteTableAnnouncement`
- `CreateTransitGatewayVpcAttachment`
- `CreateVerifiedAccessEndpoint`
- `CreateVerifiedAccessGroup`
- `CreateVerifiedAccessInstance`
- `CreateVerifiedAccessTrustProvider`
- `CreateVpcEndpoint`
- `CreateVpcEndpointConnectionNotification`
- `CreateVpcEndpointServiceConfiguration`
- `CreateVpcPeeringConnection`
- `CreateVpnConnection`
- `CreateVpnConnectionRoute`
- `CreateVpnGateway`
- `DeleteCarrierGateway`
- `DeleteClientVpnEndpoint`
- `DeleteClientVpnRoute`
- `DeleteCoipCidr`
- `DeleteCoipPool`
- `DeleteCustomerGateway`
- `DeleteDhcpOptions`
- `DeleteFleets`
- `DeleteFlowLogs`
- `DeleteFpgaImage`
- `DeleteInstanceConnectEndpoint`
- `DeleteInstanceEventWindow`
- `DeleteIpam`
- `DeleteIpamExternalResourceVerificationToken`
- `DeleteIpamPool`
- `DeleteIpamResourceDiscovery`
- `DeleteIpamScope`
- `DeleteLocalGatewayRoute`
- `DeleteLocalGatewayRouteTable`
- `DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation`
- `DeleteLocalGatewayRouteTableVpcAssociation`
- `DeleteManagedPrefixList`
- `DeleteNetworkAcl`
- `DeleteNetworkAclEntry`
- `DeleteNetworkInsightsAccessScope`
- `DeleteNetworkInsightsAccessScopeAnalysis`
- `DeleteNetworkInsightsAnalysis`
- `DeleteNetworkInsightsPath`
- `DeleteNetworkInterfacePermission`
- `DeletePublicIpv4Pool`
- `DeleteQueuedReservedInstances`
- `DeleteSpotDatafeedSubscription`
- `DeleteSubnetCidrReservation`
- `DeleteTrafficMirrorFilter`
- `DeleteTrafficMirrorFilterRule`
- `DeleteTrafficMirrorSession`
- `DeleteTrafficMirrorTarget`
- `DeleteTransitGateway`
- `DeleteTransitGatewayConnect`
- `DeleteTransitGatewayConnectPeer`
- `DeleteTransitGatewayMulticastDomain`
- `DeleteTransitGatewayPeeringAttachment`
- `DeleteTransitGatewayPolicyTable`
- `DeleteTransitGatewayPrefixListReference`
- `DeleteTransitGatewayRoute`
- `DeleteTransitGatewayRouteTable`
- `DeleteTransitGatewayRouteTableAnnouncement`
- `DeleteTransitGatewayVpcAttachment`
- `DeleteVerifiedAccessEndpoint`
- `DeleteVerifiedAccessGroup`
- `DeleteVerifiedAccessInstance`
- `DeleteVerifiedAccessTrustProvider`
- `DeleteVpcEndpointConnectionNotifications`
- `DeleteVpcEndpointServiceConfigurations`
- `DeleteVpcEndpoints`
- `DeleteVpcPeeringConnection`
- `DeleteVpnConnection`
- `DeleteVpnConnectionRoute`
- `DeleteVpnGateway`
- `DeprovisionByoipCidr`
- `DeprovisionIpamByoasn`
- `DeprovisionIpamPoolCidr`
- `DeprovisionPublicIpv4PoolCidr`
- `DeregisterInstanceEventNotificationAttributes`
- `DeregisterTransitGatewayMulticastGroupMembers`
- `DeregisterTransitGatewayMulticastGroupSources`
- `DescribeAddressTransfers`
- `DescribeAggregateIdFormat`
- `DescribeAwsNetworkPerformanceMetricSubscriptions`
- `DescribeBundleTasks`
- `DescribeByoipCidrs`
- `DescribeCapacityBlockOfferings`
- `DescribeCapacityReservationFleets`
- `DescribeCarrierGateways`
- `DescribeClassicLinkInstances`
- `DescribeClientVpnAuthorizationRules`
- `DescribeClientVpnConnections`
- `DescribeClientVpnEndpoints`
- `DescribeClientVpnRoutes`
- `DescribeClientVpnTargetNetworks`
- `DescribeCoipPools`
- `DescribeConversionTasks`
- `DescribeCustomerGateways`
- `DescribeDhcpOptions`
- `DescribeElasticGpus`
- `DescribeExportImageTasks`
- `DescribeExportTasks`
- `DescribeFastLaunchImages`
- `DescribeFastSnapshotRestores`
- `DescribeFleetHistory`
- `DescribeFleetInstances`
- `DescribeFleets`
- `DescribeFlowLogs`
- `DescribeFpgaImageAttribute`
- `DescribeFpgaImages`
- `DescribeHostReservationOfferings`
- `DescribeHostReservations`
- `DescribeHosts`
- `DescribeIdFormat`
- `DescribeIdentityIdFormat`
- `DescribeImportImageTasks`
- `DescribeImportSnapshotTasks`
- `DescribeInstanceConnectEndpoints`
- `DescribeInstanceEventNotificationAttributes`
- `DescribeInstanceEventWindows`
- `DescribeInstanceTopology`
- `DescribeIpamByoasn`
- `DescribeIpamExternalResourceVerificationTokens`
- `DescribeIpamPools`
- `DescribeIpamResourceDiscoveries`
- `DescribeIpamResourceDiscoveryAssociations`
- `DescribeIpamScopes`
- `DescribeIpams`
- `DescribeIpv6Pools`
- `DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations`
- `DescribeLocalGatewayRouteTableVpcAssociations`
- `DescribeLocalGatewayRouteTables`
- `DescribeLocalGatewayVirtualInterfaceGroups`
- `DescribeLocalGatewayVirtualInterfaces`
- `DescribeLocalGateways`
- `DescribeLockedSnapshots`
- `DescribeMacHosts`
- `DescribeManagedPrefixLists`
- `DescribeMovingAddresses`
- `DescribeNetworkAcls`
- `DescribeNetworkInsightsAccessScopeAnalyses`
- `DescribeNetworkInsightsAccessScopes`
- `DescribeNetworkInsightsAnalyses`
- `DescribeNetworkInsightsPaths`
- `DescribeNetworkInterfaceAttribute`
- `DescribeNetworkInterfacePermissions`
- `DescribePrefixLists`
- `DescribePrincipalIdFormat`
- `DescribePublicIpv4Pools`
- `DescribeReplaceRootVolumeTasks`
- `DescribeReservedInstances`
- `DescribeReservedInstancesListings`
- `DescribeReservedInstancesModifications`
- `DescribeReservedInstancesOfferings`
- `DescribeScheduledInstanceAvailability`
- `DescribeScheduledInstances`
- `DescribeSecurityGroupReferences`
- `DescribeSnapshotAttribute`
- `DescribeSnapshotTierStatus`
- `DescribeSpotDatafeedSubscription`
- `DescribeSpotFleetInstances`
- `DescribeSpotFleetRequestHistory`
- `DescribeSpotFleetRequests`
- `DescribeSpotPriceHistory`
- `DescribeStaleSecurityGroups`
- `DescribeStoreImageTasks`
- `DescribeTrafficMirrorFilterRules`
- `DescribeTrafficMirrorFilters`
- `DescribeTrafficMirrorSessions`
- `DescribeTrafficMirrorTargets`
- `DescribeTransitGatewayAttachments`
- `DescribeTransitGatewayConnectPeers`
- `DescribeTransitGatewayConnects`
- `DescribeTransitGatewayMulticastDomains`
- `DescribeTransitGatewayPeeringAttachments`
- `DescribeTransitGatewayPolicyTables`
- `DescribeTransitGatewayRouteTableAnnouncements`
- `DescribeTransitGatewayRouteTables`
- `DescribeTransitGatewayVpcAttachments`
- `DescribeTransitGateways`
- `DescribeTrunkInterfaceAssociations`
- `DescribeVerifiedAccessEndpoints`
- `DescribeVerifiedAccessGroups`
- `DescribeVerifiedAccessInstanceLoggingConfigurations`
- `DescribeVerifiedAccessInstances`
- `DescribeVerifiedAccessTrustProviders`
- `DescribeVolumeAttribute`
- `DescribeVpcClassicLink`
- `DescribeVpcClassicLinkDnsSupport`
- `DescribeVpcEndpointConnectionNotifications`
- `DescribeVpcEndpointConnections`
- `DescribeVpcEndpointServiceConfigurations`
- `DescribeVpcEndpointServicePermissions`
- `DescribeVpcEndpointServices`
- `DescribeVpcEndpoints`
- `DescribeVpcPeeringConnections`
- `DescribeVpnConnections`
- `DescribeVpnGateways`
- `DetachClassicLinkVpc`
- `DetachVerifiedAccessTrustProvider`
- `DetachVpnGateway`
- `DisableAddressTransfer`
- `DisableAwsNetworkPerformanceMetricSubscription`
- `DisableFastLaunch`
- `DisableFastSnapshotRestores`
- `DisableImage`
- `DisableImageBlockPublicAccess`
- `DisableImageDeprecation`
- `DisableImageDeregistrationProtection`
- `DisableIpamOrganizationAdminAccount`
- `DisableSnapshotBlockPublicAccess`
- `DisableTransitGatewayRouteTablePropagation`
- `DisableVgwRoutePropagation`
- `DisableVpcClassicLink`
- `DisableVpcClassicLinkDnsSupport`
- `DisassociateClientVpnTargetNetwork`
- `DisassociateEnclaveCertificateIamRole`
- `DisassociateInstanceEventWindow`
- `DisassociateIpamByoasn`
- `DisassociateIpamResourceDiscovery`
- `DisassociateNatGatewayAddress`
- `DisassociateSubnetCidrBlock`
- `DisassociateTransitGatewayMulticastDomain`
- `DisassociateTransitGatewayPolicyTable`
- `DisassociateTransitGatewayRouteTable`
- `DisassociateTrunkInterface`
- `DisassociateVpcCidrBlock`
- `EnableAddressTransfer`
- `EnableAwsNetworkPerformanceMetricSubscription`
- `EnableFastLaunch`
- `EnableFastSnapshotRestores`
- `EnableImage`
- `EnableImageBlockPublicAccess`
- `EnableImageDeprecation`
- `EnableImageDeregistrationProtection`
- `EnableIpamOrganizationAdminAccount`
- `EnableReachabilityAnalyzerOrganizationSharing`
- `EnableSnapshotBlockPublicAccess`
- `EnableTransitGatewayRouteTablePropagation`
- `EnableVgwRoutePropagation`
- `EnableVolumeIO`
- `EnableVpcClassicLink`
- `EnableVpcClassicLinkDnsSupport`
- `ExportClientVpnClientCertificateRevocationList`
- `ExportClientVpnClientConfiguration`
- `ExportImage`
- `ExportTransitGatewayRoutes`
- `GetAssociatedEnclaveCertificateIamRoles`
- `GetAssociatedIpv6PoolCidrs`
- `GetAwsNetworkPerformanceData`
- `GetCapacityReservationUsage`
- `GetCoipPoolUsage`
- `GetConsoleScreenshot`
- `GetDefaultCreditSpecification`
- `GetEbsDefaultKmsKeyId`
- `GetFlowLogsIntegrationTemplate`
- `GetGroupsForCapacityReservation`
- `GetHostReservationPurchasePreview`
- `GetImageBlockPublicAccessState`
- `GetInstanceMetadataDefaults`
- `GetInstanceTpmEkPub`
- `GetInstanceTypesFromInstanceRequirements`
- `GetInstanceUefiData`
- `GetIpamAddressHistory`
- `GetIpamDiscoveredAccounts`
- `GetIpamDiscoveredPublicAddresses`
- `GetIpamDiscoveredResourceCidrs`
- `GetIpamPoolAllocations`
- `GetIpamPoolCidrs`
- `GetIpamResourceCidrs`
- `GetLaunchTemplateData`
- `GetManagedPrefixListAssociations`
- `GetManagedPrefixListEntries`
- `GetNetworkInsightsAccessScopeAnalysisFindings`
- `GetNetworkInsightsAccessScopeContent`
- `GetReservedInstancesExchangeQuote`
- `GetSnapshotBlockPublicAccessState`
- `GetSpotPlacementScores`
- `GetSubnetCidrReservations`
- `GetTransitGatewayAttachmentPropagations`
- `GetTransitGatewayMulticastDomainAssociations`
- `GetTransitGatewayPolicyTableAssociations`
- `GetTransitGatewayPolicyTableEntries`
- `GetTransitGatewayPrefixListReferences`
- `GetTransitGatewayRouteTableAssociations`
- `GetTransitGatewayRouteTablePropagations`
- `GetVerifiedAccessEndpointPolicy`
- `GetVerifiedAccessGroupPolicy`
- `GetVpnConnectionDeviceSampleConfiguration`
- `GetVpnConnectionDeviceTypes`
- `GetVpnTunnelReplacementStatus`
- `ImportClientVpnClientCertificateRevocationList`
- `ImportImage`
- `ImportInstance`
- `ImportSnapshot`
- `ImportVolume`
- `ListImagesInRecycleBin`
- `ListSnapshotsInRecycleBin`
- `LockSnapshot`
- `ModifyAddressAttribute`
- `ModifyAvailabilityZoneGroup`
- `ModifyCapacityReservation`
- `ModifyCapacityReservationFleet`
- `ModifyClientVpnEndpoint`
- `ModifyDefaultCreditSpecification`
- `ModifyEbsDefaultKmsKeyId`
- `ModifyFleet`
- `ModifyFpgaImageAttribute`
- `ModifyHosts`
- `ModifyIdFormat`
- `ModifyIdentityIdFormat`
- `ModifyInstanceCapacityReservationAttributes`
- `ModifyInstanceCreditSpecification`
- `ModifyInstanceEventStartTime`
- `ModifyInstanceEventWindow`
- `ModifyInstanceMaintenanceOptions`
- `ModifyInstanceMetadataDefaults`
- `ModifyInstancePlacement`
- `ModifyIpam`
- `ModifyIpamPool`
- `ModifyIpamResourceCidr`
- `ModifyIpamResourceDiscovery`
- `ModifyIpamScope`
- `ModifyLocalGatewayRoute`
- `ModifyManagedPrefixList`
- `ModifyPrivateDnsNameOptions`
- `ModifyReservedInstances`
- `ModifySecurityGroupRules`
- `ModifySnapshotAttribute`
- `ModifySnapshotTier`
- `ModifySpotFleetRequest`
- `ModifyTrafficMirrorFilterNetworkServices`
- `ModifyTrafficMirrorFilterRule`
- `ModifyTrafficMirrorSession`
- `ModifyTransitGateway`
- `ModifyTransitGatewayPrefixListReference`
- `ModifyTransitGatewayVpcAttachment`
- `ModifyVerifiedAccessEndpoint`
- `ModifyVerifiedAccessEndpointPolicy`
- `ModifyVerifiedAccessGroup`
- `ModifyVerifiedAccessGroupPolicy`
- `ModifyVerifiedAccessInstance`
- `ModifyVerifiedAccessInstanceLoggingConfiguration`
- `ModifyVerifiedAccessTrustProvider`
- `ModifyVolumeAttribute`
- `ModifyVpcEndpoint`
- `ModifyVpcEndpointConnectionNotification`
- `ModifyVpcEndpointServiceConfiguration`
- `ModifyVpcEndpointServicePayerResponsibility`
- `ModifyVpcEndpointServicePermissions`
- `ModifyVpcPeeringConnectionOptions`
- `ModifyVpcTenancy`
- `ModifyVpnConnection`
- `ModifyVpnConnectionOptions`
- `ModifyVpnTunnelCertificate`
- `ModifyVpnTunnelOptions`
- `MoveAddressToVpc`
- `MoveByoipCidrToIpam`
- `ProvisionByoipCidr`
- `ProvisionIpamByoasn`
- `ProvisionIpamPoolCidr`
- `ProvisionPublicIpv4PoolCidr`
- `PurchaseCapacityBlock`
- `PurchaseHostReservation`
- `PurchaseReservedInstancesOffering`
- `PurchaseScheduledInstances`
- `RegisterInstanceEventNotificationAttributes`
- `RegisterTransitGatewayMulticastGroupMembers`
- `RegisterTransitGatewayMulticastGroupSources`
- `RejectTransitGatewayMulticastDomainAssociations`
- `RejectTransitGatewayPeeringAttachment`
- `RejectTransitGatewayVpcAttachment`
- `RejectVpcEndpointConnections`
- `RejectVpcPeeringConnection`
- `ReleaseHosts`
- `ReleaseIpamPoolAllocation`
- `ReplaceNetworkAclAssociation`
- `ReplaceNetworkAclEntry`
- `ReplaceTransitGatewayRoute`
- `ReplaceVpnTunnel`
- `ReportInstanceStatus`
- `RequestSpotFleet`
- `ResetAddressAttribute`
- `ResetEbsDefaultKmsKeyId`
- `ResetFpgaImageAttribute`
- `ResetInstanceAttribute`
- `ResetNetworkInterfaceAttribute`
- `ResetSnapshotAttribute`
- `RestoreAddressToClassic`
- `RestoreImageFromRecycleBin`
- `RestoreManagedPrefixListVersion`
- `RestoreSnapshotFromRecycleBin`
- `RestoreSnapshotTier`
- `RevokeClientVpnIngress`
- `RunScheduledInstances`
- `SearchLocalGatewayRoutes`
- `SearchTransitGatewayMulticastGroups`
- `SearchTransitGatewayRoutes`
- `SendDiagnosticInterrupt`
- `StartNetworkInsightsAccessScopeAnalysis`
- `StartNetworkInsightsAnalysis`
- `StartVpcEndpointServicePrivateDnsVerification`
- `TerminateClientVpnConnections`
- `UnassignIpv6Addresses`
- `UnassignPrivateIpAddresses`
- `UnassignPrivateNatGatewayAddress`
- `UnlockSnapshot`
- `WithdrawByoipCidr`
## ecr
`2015-09-21` — 19 of 47 modelled operations implemented (40.4%), 13 stubbed, 7 unsupported, 3 registered outside the pinned model.
### Not implemented
- `CreatePullThroughCacheRule`
- `CreateRepositoryCreationTemplate`
- `DeletePullThroughCacheRule`
- `DeleteRegistryPolicy`
- `DeleteRepositoryCreationTemplate`
- `DescribeImageReplicationStatus`
- `DescribePullThroughCacheRules`
- `DescribeRepositoryCreationTemplates`
- `UpdatePullThroughCacheRule`
- `UpdateRepositoryCreationTemplate`
- `ValidatePullThroughCacheRule`
### Stubbed
- `BatchCheckLayerAvailability`
- `CompleteLayerUpload`
- `DescribeRegistry`
- `GetDownloadUrlForLayer`
- `GetRegistryPolicy`
- `InitiateLayerUpload`
- `ListRepositories`
- `PutRegistryPolicy`
- `PutReplicationConfiguration`
- `ReplicateImage`
- `TagResource`
- `UntagResource`
- `UploadLayerPart`
### Registered and refused
- `BatchGetRepositoryScanningConfiguration`
- `DescribeImageScanFindings`
- `GetImageScanningConfiguration`
- `GetRegistryScanningConfiguration`
- `PutImageScanningConfiguration`
- `PutRegistryScanningConfiguration`
- `StartImageScan`
### Registered outside the pinned model
- `GetImageScanningConfiguration`
- `ListRepositories`
- `ReplicateImage`
## ecs
`2014-11-13` — 31 of 56 modelled operations implemented (55.4%), 5 stubbed, 0 unsupported, 3 registered outside the pinned model.
### Not implemented
- `CreateTaskSet`
- `DeleteAccountSetting`
- `DeleteAttributes`
- `DeleteTaskDefinitions`
- `DeleteTaskSet`
- `DescribeTaskSets`
- `DiscoverPollEndpoint`
- `ExecuteCommand`
- `GetTaskProtection`
- `ListAttributes`
- `PutAccountSettingDefault`
- `PutAttributes`
- `SubmitAttachmentStateChanges`
- `SubmitContainerStateChange`
- `UpdateCapacityProvider`
- `UpdateClusterSettings`
- `UpdateContainerAgent`
- `UpdateServicePrimaryTaskSet`
- `UpdateTaskProtection`
- `UpdateTaskSet`
### Stubbed
- `ListAccountSettings`
- `ListServicesByNamespace`
- `ListTaskDefinitionFamilies`
- `PutAccountSetting`
- `UpdateCluster`
### Registered outside the pinned model
- `PollAssignments`
- `ProvisionCapacity`
- `ReportTaskGPU`
## eks
`2017-11-01` — 34 of 56 modelled operations implemented (60.7%), 0 stubbed, 0 unsupported, 4 registered outside the pinned model.
### Not implemented
- `AssociateEncryptionConfig`
- `CreateEksAnywhereSubscription`
- `CreateFargateProfile`
- `CreatePodIdentityAssociation`
- `DeleteEksAnywhereSubscription`
- `DeleteFargateProfile`
- `DeletePodIdentityAssociation`
- `DeregisterCluster`
- `DescribeAddonConfiguration`
- `DescribeEksAnywhereSubscription`
- `DescribeFargateProfile`
- `DescribeInsight`
- `DescribePodIdentityAssociation`
- `DescribeUpdate`
- `ListEksAnywhereSubscriptions`
- `ListFargateProfiles`
- `ListInsights`
- `ListPodIdentityAssociations`
- `ListUpdates`
- `RegisterCluster`
- `UpdateEksAnywhereSubscription`
- `UpdatePodIdentityAssociation`
### Registered outside the pinned model
- `GetRecoveryDirective`
- `ListInternalAddons`
- `PublishInternal`
- `WebhookTokenReview`
## elasticloadbalancingv2
`2015-12-01` — 34 of 46 modelled operations implemented (73.9%), 0 stubbed, 0 unsupported, 4 registered outside the pinned model.
### Not implemented
- `AddTrustStoreRevocations`
- `CreateTrustStore`
- `DeleteSharedTrustStoreAssociation`
- `DeleteTrustStore`
- `DescribeTrustStoreAssociations`
- `DescribeTrustStoreRevocations`
- `DescribeTrustStores`
- `GetResourcePolicy`
- `GetTrustStoreCaCertificatesBundle`
- `GetTrustStoreRevocationContent`
- `ModifyTrustStore`
- `RemoveTrustStoreRevocations`
### Registered outside the pinned model
- `DescribeListenerAttributes`
- `GetLBConfig`
- `LBAgentHeartbeat`
- `ModifyListenerAttributes`
## iam
`2010-05-08` — 75 of 159 modelled operations implemented (47.2%), 0 stubbed, 0 unsupported, 0 registered outside the pinned model.
### Not implemented
- `AddClientIDToOpenIDConnectProvider`
- `ChangePassword`
- `CreateAccountAlias`
- `CreateLoginProfile`
- `CreatePolicyVersion`
- `CreateSAMLProvider`
- `CreateServiceLinkedRole`
- `CreateServiceSpecificCredential`
- `CreateVirtualMFADevice`
- `DeactivateMFADevice`
- `DeleteAccountAlias`
- `DeleteAccountPasswordPolicy`
- `DeleteLoginProfile`
- `DeletePolicyVersion`
- `DeleteRolePermissionsBoundary`
- `DeleteSAMLProvider`
- `DeleteSSHPublicKey`
- `DeleteServerCertificate`
- `DeleteServiceLinkedRole`
- `DeleteServiceSpecificCredential`
- `DeleteSigningCertificate`
- `DeleteUserPermissionsBoundary`
- `DeleteVirtualMFADevice`
- `EnableMFADevice`
- `GenerateCredentialReport`
- `GenerateOrganizationsAccessReport`
- `GenerateServiceLastAccessedDetails`
- `GetAccessKeyLastUsed`
- `GetAccountAuthorizationDetails`
- `GetAccountPasswordPolicy`
- `GetContextKeysForCustomPolicy`
- `GetContextKeysForPrincipalPolicy`
- `GetCredentialReport`
- `GetLoginProfile`
- `GetMFADevice`
- `GetOrganizationsAccessReport`
- `GetSAMLProvider`
- `GetSSHPublicKey`
- `GetServerCertificate`
- `GetServiceLastAccessedDetails`
- `GetServiceLastAccessedDetailsWithEntities`
- `GetServiceLinkedRoleDeletionStatus`
- `ListAccountAliases`
- `ListEntitiesForPolicy`
- `ListMFADeviceTags`
- `ListMFADevices`
- `ListPoliciesGrantingServiceAccess`
- `ListSAMLProviderTags`
- `ListSAMLProviders`
- `ListSSHPublicKeys`
- `ListServerCertificateTags`
- `ListServerCertificates`
- `ListServiceSpecificCredentials`
- `ListSigningCertificates`
- `ListVirtualMFADevices`
- `PutRolePermissionsBoundary`
- `PutUserPermissionsBoundary`
- `RemoveClientIDFromOpenIDConnectProvider`
- `ResetServiceSpecificCredential`
- `ResyncMFADevice`
- `SetDefaultPolicyVersion`
- `SetSecurityTokenServicePreferences`
- `SimulateCustomPolicy`
- `SimulatePrincipalPolicy`
- `TagMFADevice`
- `TagSAMLProvider`
- `TagServerCertificate`
- `UntagMFADevice`
- `UntagSAMLProvider`
- `UntagServerCertificate`
- `UpdateAccountPasswordPolicy`
- `UpdateGroup`
- `UpdateLoginProfile`
- `UpdateOpenIDConnectProviderThumbprint`
- `UpdateRoleDescription`
- `UpdateSAMLProvider`
- `UpdateSSHPublicKey`
- `UpdateServerCertificate`
- `UpdateServiceSpecificCredential`
- `UpdateSigningCertificate`
- `UpdateUser`
- `UploadSSHPublicKey`
- `UploadServerCertificate`
- `UploadSigningCertificate`
## rds
`2014-10-31` — 26 of 162 modelled operations implemented (16.0%), 0 stubbed, 12 unsupported, 5 registered outside the pinned model.
### Not implemented
- `AddRoleToDBCluster`
- `AddRoleToDBInstance`
- `AddSourceIdentifierToSubscription`
- `ApplyPendingMaintenanceAction`
- `AuthorizeDBSecurityGroupIngress`
- `BacktrackDBCluster`
- `CancelExportTask`
- `CopyDBClusterParameterGroup`
- `CopyDBClusterSnapshot`
- `CopyDBParameterGroup`
- `CopyDBSnapshot`
- `CopyOptionGroup`
- `CreateBlueGreenDeployment`
- `CreateCustomDBEngineVersion`
- `CreateDBClusterEndpoint`
- `CreateDBClusterParameterGroup`
- `CreateDBClusterSnapshot`
- `CreateDBProxy`
- `CreateDBProxyEndpoint`
- `CreateDBSecurityGroup`
- `CreateDBShardGroup`
- `CreateEventSubscription`
- `CreateGlobalCluster`
- `CreateIntegration`
- `CreateTenantDatabase`
- `DeleteBlueGreenDeployment`
- `DeleteCustomDBEngineVersion`
- `DeleteDBClusterAutomatedBackup`
- `DeleteDBClusterEndpoint`
- `DeleteDBClusterParameterGroup`
- `DeleteDBClusterSnapshot`
- `DeleteDBInstanceAutomatedBackup`
- `DeleteDBProxy`
- `DeleteDBProxyEndpoint`
- `DeleteDBSecurityGroup`
- `DeleteDBShardGroup`
- `DeleteEventSubscription`
- `DeleteGlobalCluster`
- `DeleteIntegration`
- `DeleteTenantDatabase`
- `DeregisterDBProxyTargets`
- `DescribeAccountAttributes`
- `DescribeBlueGreenDeployments`
- `DescribeCertificates`
- `DescribeDBClusterAutomatedBackups`
- `DescribeDBClusterBacktracks`
- `DescribeDBClusterEndpoints`
- `DescribeDBClusterParameterGroups`
- `DescribeDBClusterParameters`
- `DescribeDBClusterSnapshotAttributes`
- `DescribeDBClusterSnapshots`
- `DescribeDBLogFiles`
- `DescribeDBProxies`
- `DescribeDBProxyEndpoints`
- `DescribeDBProxyTargetGroups`
- `DescribeDBProxyTargets`
- `DescribeDBRecommendations`
- `DescribeDBSecurityGroups`
- `DescribeDBShardGroups`
- `DescribeDBSnapshotAttributes`
- `DescribeDBSnapshotTenantDatabases`
- `DescribeEngineDefaultClusterParameters`
- `DescribeEngineDefaultParameters`
- `DescribeEventCategories`
- `DescribeEventSubscriptions`
- `DescribeExportTasks`
- `DescribeGlobalClusters`
- `DescribeIntegrations`
- `DescribeOptionGroupOptions`
- `DescribePendingMaintenanceActions`
- `DescribeReservedDBInstances`
- `DescribeReservedDBInstancesOfferings`
- `DescribeSourceRegions`
- `DescribeTenantDatabases`
- `DescribeValidDBInstanceModifications`
- `DisableHttpEndpoint`
- `DownloadDBLogFilePortion`
- `EnableHttpEndpoint`
- `FailoverGlobalCluster`
- `ModifyActivityStream`
- `ModifyCertificates`
- `ModifyCurrentDBClusterCapacity`
- `ModifyCustomDBEngineVersion`
- `ModifyDBClusterEndpoint`
- `ModifyDBClusterParameterGroup`
- `ModifyDBClusterSnapshotAttribute`
- `ModifyDBProxy`
- `ModifyDBProxyEndpoint`
- `ModifyDBProxyTargetGroup`
- `ModifyDBRecommendation`
- `ModifyDBShardGroup`
- `ModifyDBSnapshot`
- `ModifyDBSnapshotAttribute`
- `ModifyDBSubnetGroup`
- `ModifyEventSubscription`
- `ModifyGlobalCluster`
- `ModifyIntegration`
- `ModifyTenantDatabase`
- `PromoteReadReplicaDBCluster`
- `PurchaseReservedDBInstancesOffering`
- `RebootDBCluster`
- `RebootDBShardGroup`
- `RegisterDBProxyTargets`
- `RemoveFromGlobalCluster`
- `RemoveRoleFromDBCluster`
- `RemoveRoleFromDBInstance`
- `RemoveSourceIdentifierFromSubscription`
- `ResetDBClusterParameterGroup`
- `ResetDBParameterGroup`
- `RestoreDBClusterFromS3`
- `RestoreDBClusterFromSnapshot`
- `RestoreDBClusterToPointInTime`
- `RestoreDBInstanceFromS3`
- `RevokeDBSecurityGroupIngress`
- `StartActivityStream`
- `StartDBCluster`
- `StartDBInstanceAutomatedBackupsReplication`
- `StartExportTask`
- `StopActivityStream`
- `StopDBCluster`
- `StopDBInstanceAutomatedBackupsReplication`
- `SwitchoverBlueGreenDeployment`
- `SwitchoverGlobalCluster`
- `SwitchoverReadReplica`
### Registered and refused
- `CreateDBCluster`
- `CreateDBInstanceReadReplica`
- `CreateOptionGroup`
- `DeleteDBCluster`
- `DeleteOptionGroup`
- `DescribeDBClusters`
- `DescribeOptionGroups`
- `FailoverDBCluster`
- `ModifyDBCluster`
- `ModifyOptionGroup`
- `PromoteReadReplica`
- `RestoreDBInstanceToPointInTime`
### Registered outside the pinned model
- `AcknowledgeDBBootstrap`
- `GetDBBootstrapConfig`
- `PollDBCommands`
- `RegisterDBInstance`
- `SubmitDBStateChange`
## s3
`2006-03-01` — not enumerable. Spinifex delegates the S3 REST surface to Predastore, which has no operation-name dispatch table to compare mechanically.
## sts
`2011-06-15` — 5 of 8 modelled operations implemented (62.5%), 0 stubbed, 0 unsupported, 0 registered outside the pinned model.
### Not implemented
- `AssumeRoleWithSAML`
- `DecodeAuthorizationMessage`
- `GetFederationToken`
+10 -10
View File
@@ -5,7 +5,7 @@
"name": "All services",
"title": "AWS API Coverage",
"seoTitle": "Which AWS API Operations Spinifex Implements — Spinifex Docs",
"description": "Operation-level coverage of every AWS API Spinifex serves, generated from its gateway dispatch tables and the pinned AWS SDK service models on each build.",
"description": "The AWS API operations Spinifex serves, generated from its gateway dispatch tables and the pinned AWS SDK service models on each build, service by service.",
"tags": [
"aws",
"compatibility",
@@ -20,7 +20,7 @@
"name": "ACM",
"title": "ACM API Coverage",
"seoTitle": "AWS Certificate Manager API Coverage — Spinifex Docs",
"description": "Every operation in the AWS Certificate Manager API model and whether Spinifex implements it, generated from the gateway dispatch tables on each build.",
"description": "The AWS Certificate Manager API operations Spinifex implements, generated from the gateway dispatch tables on each build, with those it does not offer and why.",
"tags": [
"aws",
"compatibility",
@@ -35,7 +35,7 @@
"name": "EC2",
"title": "EC2 API Coverage",
"seoTitle": "Amazon EC2 API Coverage on Spinifex — Spinifex Docs",
"description": "Every operation in the Amazon EC2 API model and whether Spinifex implements it, covering instances, EBS volumes, VPC networking, tags and security groups.",
"description": "The Amazon EC2 API operations Spinifex implements, covering instances, EBS volumes, VPC networking, tags and security groups, with those it does not offer.",
"tags": [
"aws",
"compatibility",
@@ -56,7 +56,7 @@
"name": "ECR",
"title": "ECR API Coverage",
"seoTitle": "Elastic Container Registry API Coverage — Spinifex Docs",
"description": "Every operation in the Amazon ECR API model and whether Spinifex implements it, alongside the OCI distribution endpoint that carries the image layers.",
"description": "The Amazon ECR API operations Spinifex implements, alongside the OCI distribution endpoint that carries the image layers, and those the platform will not.",
"tags": [
"aws",
"compatibility",
@@ -82,7 +82,7 @@
"name": "ECS",
"title": "ECS API Coverage",
"seoTitle": "Elastic Container Service API Coverage — Spinifex Docs",
"description": "Every operation in the Amazon ECS API model and whether Spinifex implements it, covering clusters, services, tasks and container instances on each build.",
"description": "The Amazon ECS API operations Spinifex implements, covering clusters, services, tasks and container instances, with those the platform does not offer.",
"tags": [
"aws",
"compatibility",
@@ -102,7 +102,7 @@
"name": "EKS",
"title": "EKS API Coverage",
"seoTitle": "Elastic Kubernetes Service API Coverage — Spinifex Docs",
"description": "Every operation in the Amazon EKS API model and whether Spinifex implements it, covering clusters, nodegroups, add-ons and access entries on each build.",
"description": "The Amazon EKS API operations Spinifex implements, covering clusters, nodegroups, add-ons and access entries, with those the platform does not offer and why.",
"tags": [
"aws",
"compatibility",
@@ -123,7 +123,7 @@
"name": "ELBv2",
"title": "ELBv2 API Coverage",
"seoTitle": "Elastic Load Balancing v2 API Coverage — Spinifex Docs",
"description": "Every operation in the Elastic Load Balancing v2 API model and whether Spinifex implements it, for both the Application and Network Load Balancers it serves.",
"description": "The Elastic Load Balancing v2 API operations Spinifex implements, for both the Application and Network Load Balancers it serves, with those it does not.",
"tags": [
"aws",
"compatibility",
@@ -142,7 +142,7 @@
"name": "IAM",
"title": "IAM API Coverage",
"seoTitle": "AWS IAM API Operation Coverage on Spinifex — Spinifex Docs",
"description": "Every operation in the AWS IAM API model and whether Spinifex implements it, covering users, roles, policies, groups and instance profiles on each build.",
"description": "The AWS IAM API operations Spinifex implements, covering users, roles, policies, groups and instance profiles, with those the platform does not offer.",
"tags": [
"aws",
"compatibility",
@@ -184,7 +184,7 @@
"name": "RDS",
"title": "RDS API Coverage",
"seoTitle": "Relational Database Service API Coverage — Spinifex Docs",
"description": "Every operation in the Amazon RDS API model and whether Spinifex implements it, for the managed PostgreSQL and MariaDB engines it offers on each build.",
"description": "The Amazon RDS API operations Spinifex implements, for the managed PostgreSQL and MariaDB engines it offers, with those the platform does not offer and why.",
"tags": [
"aws",
"compatibility",
@@ -227,7 +227,7 @@
"name": "STS",
"title": "STS API Coverage",
"seoTitle": "AWS Security Token Service API Coverage — Spinifex Docs",
"description": "Every operation in the AWS STS API model and whether Spinifex implements it, covering role assumption, session tokens and web identity federation (IRSA).",
"description": "The AWS STS API operations Spinifex implements, covering role assumption, session tokens and web identity federation (IRSA), with those it does not offer.",
"tags": [
"aws",
"compatibility",
+48 -172
View File
@@ -1,7 +1,7 @@
---
title: "RDS API Coverage"
seoTitle: "Relational Database Service API Coverage — Spinifex Docs"
description: "Every operation in the Amazon RDS API model and whether Spinifex implements it, for the managed PostgreSQL and MariaDB engines it offers on each build."
description: "The Amazon RDS API operations Spinifex implements, for the managed PostgreSQL and MariaDB engines it offers, with those the platform does not offer and why."
category: "Coverage"
sections:
- overview
@@ -19,7 +19,7 @@ tags:
## Overview
Spinifex implements **26 of the 162** operations (**16.0%**) in the RDS `2014-10-31` API model.
Spinifex implements **26 operations** in the RDS `2014-10-31` API model.
### Engines
@@ -70,174 +70,50 @@ A parameter whose omission would create a false safety, security or availability
### Operations
| Operation | Status |
| Operation |
|---|
| `AddTagsToResource` |
| `CreateDBInstance` |
| `CreateDBParameterGroup` |
| `CreateDBSnapshot` |
| `CreateDBSubnetGroup` |
| `DeleteDBInstance` |
| `DeleteDBParameterGroup` |
| `DeleteDBSnapshot` |
| `DeleteDBSubnetGroup` |
| `DescribeDBEngineVersions` |
| `DescribeDBInstanceAutomatedBackups` |
| `DescribeDBInstances` |
| `DescribeDBParameterGroups` |
| `DescribeDBParameters` |
| `DescribeDBSnapshots` |
| `DescribeDBSubnetGroups` |
| `DescribeEvents` |
| `DescribeOrderableDBInstanceOptions` |
| `ListTagsForResource` |
| `ModifyDBInstance` |
| `ModifyDBParameterGroup` |
| `RebootDBInstance` |
| `RemoveTagsFromResource` |
| `RestoreDBInstanceFromDBSnapshot` |
| `StartDBInstance` |
| `StopDBInstance` |
### Not applicable
These operations describe AWS-hosted features this platform does not offer.
| Operation | Reason |
|---|---|
| `AddRoleToDBCluster` | ❌ Not implemented |
| `AddRoleToDBInstance` | ❌ Not implemented |
| `AddSourceIdentifierToSubscription` | ❌ Not implemented |
| `AddTagsToResource` | ✅ Implemented |
| `ApplyPendingMaintenanceAction` | ❌ Not implemented |
| `AuthorizeDBSecurityGroupIngress` | ❌ Not implemented |
| `BacktrackDBCluster` | ❌ Not implemented |
| `CancelExportTask` | ❌ Not implemented |
| `CopyDBClusterParameterGroup` | ❌ Not implemented |
| `CopyDBClusterSnapshot` | ❌ Not implemented |
| `CopyDBParameterGroup` | ❌ Not implemented |
| `CopyDBSnapshot` | ❌ Not implemented |
| `CopyOptionGroup` | ❌ Not implemented |
| `CreateBlueGreenDeployment` | ❌ Not implemented |
| `CreateCustomDBEngineVersion` | ❌ Not implemented |
| `CreateDBCluster` | ⛔ Not applicable [1](#notes) |
| `CreateDBClusterEndpoint` | ❌ Not implemented |
| `CreateDBClusterParameterGroup` | ❌ Not implemented |
| `CreateDBClusterSnapshot` | ❌ Not implemented |
| `CreateDBInstance` | ✅ Implemented |
| `CreateDBInstanceReadReplica` | ⛔ Not applicable [4](#notes) |
| `CreateDBParameterGroup` | ✅ Implemented |
| `CreateDBProxy` | ❌ Not implemented |
| `CreateDBProxyEndpoint` | ❌ Not implemented |
| `CreateDBSecurityGroup` | ❌ Not implemented |
| `CreateDBShardGroup` | ❌ Not implemented |
| `CreateDBSnapshot` | ✅ Implemented |
| `CreateDBSubnetGroup` | ✅ Implemented |
| `CreateEventSubscription` | ❌ Not implemented |
| `CreateGlobalCluster` | ❌ Not implemented |
| `CreateIntegration` | ❌ Not implemented |
| `CreateOptionGroup` | ⛔ Not applicable [2](#notes) |
| `CreateTenantDatabase` | ❌ Not implemented |
| `DeleteBlueGreenDeployment` | ❌ Not implemented |
| `DeleteCustomDBEngineVersion` | ❌ Not implemented |
| `DeleteDBCluster` | ⛔ Not applicable [1](#notes) |
| `DeleteDBClusterAutomatedBackup` | ❌ Not implemented |
| `DeleteDBClusterEndpoint` | ❌ Not implemented |
| `DeleteDBClusterParameterGroup` | ❌ Not implemented |
| `DeleteDBClusterSnapshot` | ❌ Not implemented |
| `DeleteDBInstance` | ✅ Implemented |
| `DeleteDBInstanceAutomatedBackup` | ❌ Not implemented |
| `DeleteDBParameterGroup` | ✅ Implemented |
| `DeleteDBProxy` | ❌ Not implemented |
| `DeleteDBProxyEndpoint` | ❌ Not implemented |
| `DeleteDBSecurityGroup` | ❌ Not implemented |
| `DeleteDBShardGroup` | ❌ Not implemented |
| `DeleteDBSnapshot` | ✅ Implemented |
| `DeleteDBSubnetGroup` | ✅ Implemented |
| `DeleteEventSubscription` | ❌ Not implemented |
| `DeleteGlobalCluster` | ❌ Not implemented |
| `DeleteIntegration` | ❌ Not implemented |
| `DeleteOptionGroup` | ⛔ Not applicable [2](#notes) |
| `DeleteTenantDatabase` | ❌ Not implemented |
| `DeregisterDBProxyTargets` | ❌ Not implemented |
| `DescribeAccountAttributes` | ❌ Not implemented |
| `DescribeBlueGreenDeployments` | ❌ Not implemented |
| `DescribeCertificates` | ❌ Not implemented |
| `DescribeDBClusterAutomatedBackups` | ❌ Not implemented |
| `DescribeDBClusterBacktracks` | ❌ Not implemented |
| `DescribeDBClusterEndpoints` | ❌ Not implemented |
| `DescribeDBClusterParameterGroups` | ❌ Not implemented |
| `DescribeDBClusterParameters` | ❌ Not implemented |
| `DescribeDBClusterSnapshotAttributes` | ❌ Not implemented |
| `DescribeDBClusterSnapshots` | ❌ Not implemented |
| `DescribeDBClusters` | ⛔ Not applicable [1](#notes) |
| `DescribeDBEngineVersions` | ✅ Implemented |
| `DescribeDBInstanceAutomatedBackups` | ✅ Implemented |
| `DescribeDBInstances` | ✅ Implemented |
| `DescribeDBLogFiles` | ❌ Not implemented |
| `DescribeDBParameterGroups` | ✅ Implemented |
| `DescribeDBParameters` | ✅ Implemented |
| `DescribeDBProxies` | ❌ Not implemented |
| `DescribeDBProxyEndpoints` | ❌ Not implemented |
| `DescribeDBProxyTargetGroups` | ❌ Not implemented |
| `DescribeDBProxyTargets` | ❌ Not implemented |
| `DescribeDBRecommendations` | ❌ Not implemented |
| `DescribeDBSecurityGroups` | ❌ Not implemented |
| `DescribeDBShardGroups` | ❌ Not implemented |
| `DescribeDBSnapshotAttributes` | ❌ Not implemented |
| `DescribeDBSnapshotTenantDatabases` | ❌ Not implemented |
| `DescribeDBSnapshots` | ✅ Implemented |
| `DescribeDBSubnetGroups` | ✅ Implemented |
| `DescribeEngineDefaultClusterParameters` | ❌ Not implemented |
| `DescribeEngineDefaultParameters` | ❌ Not implemented |
| `DescribeEventCategories` | ❌ Not implemented |
| `DescribeEventSubscriptions` | ❌ Not implemented |
| `DescribeEvents` | ✅ Implemented |
| `DescribeExportTasks` | ❌ Not implemented |
| `DescribeGlobalClusters` | ❌ Not implemented |
| `DescribeIntegrations` | ❌ Not implemented |
| `DescribeOptionGroupOptions` | ❌ Not implemented |
| `DescribeOptionGroups` | ⛔ Not applicable [2](#notes) |
| `DescribeOrderableDBInstanceOptions` | ✅ Implemented |
| `DescribePendingMaintenanceActions` | ❌ Not implemented |
| `DescribeReservedDBInstances` | ❌ Not implemented |
| `DescribeReservedDBInstancesOfferings` | ❌ Not implemented |
| `DescribeSourceRegions` | ❌ Not implemented |
| `DescribeTenantDatabases` | ❌ Not implemented |
| `DescribeValidDBInstanceModifications` | ❌ Not implemented |
| `DisableHttpEndpoint` | ❌ Not implemented |
| `DownloadDBLogFilePortion` | ❌ Not implemented |
| `EnableHttpEndpoint` | ❌ Not implemented |
| `FailoverDBCluster` | ⛔ Not applicable [1](#notes) |
| `FailoverGlobalCluster` | ❌ Not implemented |
| `ListTagsForResource` | ✅ Implemented |
| `ModifyActivityStream` | ❌ Not implemented |
| `ModifyCertificates` | ❌ Not implemented |
| `ModifyCurrentDBClusterCapacity` | ❌ Not implemented |
| `ModifyCustomDBEngineVersion` | ❌ Not implemented |
| `ModifyDBCluster` | ⛔ Not applicable [1](#notes) |
| `ModifyDBClusterEndpoint` | ❌ Not implemented |
| `ModifyDBClusterParameterGroup` | ❌ Not implemented |
| `ModifyDBClusterSnapshotAttribute` | ❌ Not implemented |
| `ModifyDBInstance` | ✅ Implemented |
| `ModifyDBParameterGroup` | ✅ Implemented |
| `ModifyDBProxy` | ❌ Not implemented |
| `ModifyDBProxyEndpoint` | ❌ Not implemented |
| `ModifyDBProxyTargetGroup` | ❌ Not implemented |
| `ModifyDBRecommendation` | ❌ Not implemented |
| `ModifyDBShardGroup` | ❌ Not implemented |
| `ModifyDBSnapshot` | ❌ Not implemented |
| `ModifyDBSnapshotAttribute` | ❌ Not implemented |
| `ModifyDBSubnetGroup` | ❌ Not implemented |
| `ModifyEventSubscription` | ❌ Not implemented |
| `ModifyGlobalCluster` | ❌ Not implemented |
| `ModifyIntegration` | ❌ Not implemented |
| `ModifyOptionGroup` | ⛔ Not applicable [2](#notes) |
| `ModifyTenantDatabase` | ❌ Not implemented |
| `PromoteReadReplica` | ⛔ Not applicable [4](#notes) |
| `PromoteReadReplicaDBCluster` | ❌ Not implemented |
| `PurchaseReservedDBInstancesOffering` | ❌ Not implemented |
| `RebootDBCluster` | ❌ Not implemented |
| `RebootDBInstance` | ✅ Implemented |
| `RebootDBShardGroup` | ❌ Not implemented |
| `RegisterDBProxyTargets` | ❌ Not implemented |
| `RemoveFromGlobalCluster` | ❌ Not implemented |
| `RemoveRoleFromDBCluster` | ❌ Not implemented |
| `RemoveRoleFromDBInstance` | ❌ Not implemented |
| `RemoveSourceIdentifierFromSubscription` | ❌ Not implemented |
| `RemoveTagsFromResource` | ✅ Implemented |
| `ResetDBClusterParameterGroup` | ❌ Not implemented |
| `ResetDBParameterGroup` | ❌ Not implemented |
| `RestoreDBClusterFromS3` | ❌ Not implemented |
| `RestoreDBClusterFromSnapshot` | ❌ Not implemented |
| `RestoreDBClusterToPointInTime` | ❌ Not implemented |
| `RestoreDBInstanceFromDBSnapshot` | ✅ Implemented |
| `RestoreDBInstanceFromS3` | ❌ Not implemented |
| `RestoreDBInstanceToPointInTime` | ⛔ Not applicable [3](#notes) |
| `RevokeDBSecurityGroupIngress` | ❌ Not implemented |
| `StartActivityStream` | ❌ Not implemented |
| `StartDBCluster` | ❌ Not implemented |
| `StartDBInstance` | ✅ Implemented |
| `StartDBInstanceAutomatedBackupsReplication` | ❌ Not implemented |
| `StartExportTask` | ❌ Not implemented |
| `StopActivityStream` | ❌ Not implemented |
| `StopDBCluster` | ❌ Not implemented |
| `StopDBInstance` | ✅ Implemented |
| `StopDBInstanceAutomatedBackupsReplication` | ❌ Not implemented |
| `SwitchoverBlueGreenDeployment` | ❌ Not implemented |
| `SwitchoverGlobalCluster` | ❌ Not implemented |
| `SwitchoverReadReplica` | ❌ Not implemented |
### Notes
1. Aurora and Multi-AZ clusters are not offered; a DB instance here is a single VM running the engine directly.
2. Option groups configure engine add-ons for engines this platform does not offer, such as Oracle and SQL Server.
3. Point-in-time restore needs continuous transaction-log archival, which the backup path does not keep.
4. Replication between instances is not offered, so there is no replica to create or promote.
| `CreateDBCluster` | Aurora and Multi-AZ clusters are not offered; a DB instance here is a single VM running the engine directly. |
| `CreateDBInstanceReadReplica` | Replication between instances is not offered, so there is no replica to create or promote. |
| `CreateOptionGroup` | Option groups configure engine add-ons for engines this platform does not offer, such as Oracle and SQL Server. |
| `DeleteDBCluster` | Aurora and Multi-AZ clusters are not offered; a DB instance here is a single VM running the engine directly. |
| `DeleteOptionGroup` | Option groups configure engine add-ons for engines this platform does not offer, such as Oracle and SQL Server. |
| `DescribeDBClusters` | Aurora and Multi-AZ clusters are not offered; a DB instance here is a single VM running the engine directly. |
| `DescribeOptionGroups` | Option groups configure engine add-ons for engines this platform does not offer, such as Oracle and SQL Server. |
| `FailoverDBCluster` | Aurora and Multi-AZ clusters are not offered; a DB instance here is a single VM running the engine directly. |
| `ModifyDBCluster` | Aurora and Multi-AZ clusters are not offered; a DB instance here is a single VM running the engine directly. |
| `ModifyOptionGroup` | Option groups configure engine add-ons for engines this platform does not offer, such as Oracle and SQL Server. |
| `PromoteReadReplica` | Replication between instances is not offered, so there is no replica to create or promote. |
| `RestoreDBInstanceToPointInTime` | Point-in-time restore needs continuous transaction-log archival, which the backup path does not keep. |
+9 -12
View File
@@ -1,7 +1,7 @@
---
title: "STS API Coverage"
seoTitle: "AWS Security Token Service API Coverage — Spinifex Docs"
description: "Every operation in the AWS STS API model and whether Spinifex implements it, covering role assumption, session tokens and web identity federation (IRSA)."
description: "The AWS STS API operations Spinifex implements, covering role assumption, session tokens and web identity federation (IRSA), with those it does not offer."
category: "Coverage"
sections:
- overview
@@ -18,7 +18,7 @@ tags:
## Overview
Spinifex implements **5 of the 8** operations (**62.5%**) in the STS `2011-06-15` API model.
Spinifex implements **5 operations** in the STS `2011-06-15` API model.
### Trust policies
@@ -32,13 +32,10 @@ Several inputs the model describes are deliberately rejected rather than accepte
### Operations
| Operation | Status |
|---|---|
| `AssumeRole` | ✅ Implemented |
| `AssumeRoleWithSAML` | ❌ Not implemented |
| `AssumeRoleWithWebIdentity` | ✅ Implemented |
| `DecodeAuthorizationMessage` | ❌ Not implemented |
| `GetAccessKeyInfo` | ✅ Implemented |
| `GetCallerIdentity` | ✅ Implemented |
| `GetFederationToken` | ❌ Not implemented |
| `GetSessionToken` | ✅ Implemented |
| Operation |
|---|
| `AssumeRole` |
| `AssumeRoleWithWebIdentity` |
| `GetAccessKeyInfo` |
| `GetCallerIdentity` |
| `GetSessionToken` |
+37
View File
@@ -140,6 +140,43 @@ func RenderCoverageSummary(coverages []OperationCoverage) string {
return report.String()
}
// RenderInternalReport renders the full comparison, including the operations
// the published pages leave out. It is not a site page: the docs build renders
// only the slugs it is configured with, and this file is not one of them.
func RenderInternalReport(coverages []OperationCoverage) string {
var report strings.Builder
report.WriteString("# AWS Model Operation Coverage (internal)\n\n")
report.WriteString("Generated by `make aws-model-coverage`. This file is not published: it carries the counts and the unimplemented operations that the pages under this directory deliberately leave out.\n\n")
fmt.Fprintf(&report, "Pinned model source: `aws-sdk-go %s`.\n\n", SourceSDKVersion)
for _, coverage := range sortedCoverages(coverages) {
fmt.Fprintf(&report, "## %s\n\n", coverage.Service)
if coverage.Opaque {
fmt.Fprintf(&report, "`%s` — not enumerable. %s\n\n", coverage.APIVersion, coverage.Note)
continue
}
fmt.Fprintf(&report, "`%s` — %d of %d modelled operations implemented (%.1f%%), %d stubbed, %d unsupported, %d registered outside the pinned model.\n\n",
coverage.APIVersion, len(coverage.Implemented), len(coverage.Modelled), coverage.ImplementedPercent(),
len(coverage.Stubbed), len(coverage.Unsupported), len(coverage.Extra))
writeOperationList(&report, "Not implemented", coverage.Missing)
writeOperationList(&report, "Stubbed", coverage.Stubbed)
writeOperationList(&report, "Registered and refused", coverage.Unsupported)
writeOperationList(&report, "Registered outside the pinned model", coverage.Extra)
}
return report.String()
}
func writeOperationList(report *strings.Builder, heading string, operations []string) {
if len(operations) == 0 {
return
}
fmt.Fprintf(report, "### %s\n\n", heading)
for _, operation := range operations {
fmt.Fprintf(report, "- `%s`\n", operation)
}
report.WriteString("\n")
}
func sortedCoverages(coverages []OperationCoverage) []OperationCoverage {
ordered := append([]OperationCoverage(nil), coverages...)
sort.Slice(ordered, func(i, j int) bool { return ordered[i].Service < ordered[j].Service })
+92 -49
View File
@@ -21,6 +21,10 @@ const (
StatusOutsideModel = "🔒 Outside the pinned model"
)
// The reason published for an operation a handler refuses without the page
// declaring why. The refusal is mechanical, so the row cannot be silent.
const refusedByHandler = "The handler refuses this operation; the platform does not offer it."
// Frontmatter length rules enforced by the docs site. See docs/README.md.
const (
seoTitleSuffix = " — Spinifex Docs"
@@ -230,40 +234,31 @@ func validateFrontmatter(owner string, page PageMetadata) error {
return nil
}
// noteOrder returns the note keys in the order they are published. Sorted by
// key rather than by first use, so adding an operation cannot renumber a note
// that is already published.
func noteOrder(notes map[string]string) []string {
keys := make([]string, 0, len(notes))
for key := range notes {
keys = append(keys, key)
}
sort.Strings(keys)
return keys
}
// numberNotes assigns each note its published footnote number, rejecting a note
// nothing references and a reference to a note that does not exist.
func numberNotes(page PageMetadata) (map[string]int, error) {
// validateNotes checks both directions of the note references, rejecting a note
// nothing points at and a reference to a note that does not exist.
func validateNotes(page PageMetadata) error {
referenced := map[string]bool{}
for operation, key := range page.NotApplicable {
if _, ok := page.Notes[key]; !ok {
return nil, fmt.Errorf("awsmodel: coverage page %s: operation %q references undefined note %q", page.Slug, operation, key)
return fmt.Errorf("awsmodel: coverage page %s: operation %q references undefined note %q", page.Slug, operation, key)
}
referenced[key] = true
}
numbering := make(map[string]int, len(page.Notes))
for index, key := range noteOrder(page.Notes) {
keys := make([]string, 0, len(page.Notes))
for key := range page.Notes {
keys = append(keys, key)
}
sort.Strings(keys)
for _, key := range keys {
if !referenced[key] {
return nil, fmt.Errorf("awsmodel: coverage page %s: note %q is never referenced", page.Slug, key)
return fmt.Errorf("awsmodel: coverage page %s: note %q is never referenced", page.Slug, key)
}
if page.Notes[key] == "" {
return nil, fmt.Errorf("awsmodel: coverage page %s: note %q is empty", page.Slug, key)
return fmt.Errorf("awsmodel: coverage page %s: note %q is empty", page.Slug, key)
}
numbering[key] = index + 1
}
return numbering, nil
return nil
}
// RenderServicePage renders one publishable coverage page. intro is optional
@@ -283,42 +278,90 @@ func RenderServicePage(coverage OperationCoverage, pages PageSet, intro string)
return "", fmt.Errorf("awsmodel: %s coverage is not enumerable, so it has no publishable page", coverage.Service)
}
var body strings.Builder
writeFrontmatter(&body, page, pages.Category)
fmt.Fprintf(&body, "# %s\n\n## Overview\n\n", page.Title)
fmt.Fprintf(&body, "Spinifex implements **%d of the %d** operations (**%.1f%%**) in the %s `%s` API model.\n\n",
len(coverage.Implemented), len(coverage.Modelled), coverage.ImplementedPercent(), page.Name, coverage.APIVersion)
if intro != "" {
body.WriteString(strings.TrimSpace(intro) + "\n\n")
// A page exists to say what the platform serves. A service with nothing
// behind it has no such statement to make.
if len(coverage.Implemented) == 0 {
return "", fmt.Errorf("awsmodel: %s has no implemented operations, so it has no publishable page", coverage.Service)
}
statuses, err := coverage.OperationStatuses(page)
if err != nil {
return "", err
}
numbering, err := numberNotes(page)
if err != nil {
if err := validateNotes(page); err != nil {
return "", err
}
body.WriteString("### Operations\n\n| Operation | Status |\n|---|---|\n")
for _, status := range statuses {
if number, ok := numbering[status.NoteKey]; ok {
fmt.Fprintf(&body, "| `%s` | %s [%d](#notes) |\n", status.Operation, status.Status, number)
continue
}
fmt.Fprintf(&body, "| `%s` | %s |\n", status.Operation, status.Status)
var body strings.Builder
writeFrontmatter(&body, page, pages.Category)
fmt.Fprintf(&body, "# %s\n\n## Overview\n\n", page.Title)
noun := "operations"
if len(coverage.Implemented) == 1 {
noun = "operation"
}
fmt.Fprintf(&body, "Spinifex implements **%d %s** in the %s `%s` API model.\n\n",
len(coverage.Implemented), noun, page.Name, coverage.APIVersion)
if intro != "" {
body.WriteString(strings.TrimSpace(intro) + "\n\n")
}
if len(numbering) > 0 {
body.WriteString("\n### Notes\n\n")
for index, key := range noteOrder(page.Notes) {
fmt.Fprintf(&body, "%d. %s\n", index+1, page.Notes[key])
writeOperations(&body, statuses)
writeNotApplicable(&body, page, statuses)
return body.String(), nil
}
// writeOperations publishes the operations the gateway serves. The status
// column is written only where a row needs it: a table whose every cell reads
// "Implemented" says nothing the heading has not.
func writeOperations(body *strings.Builder, statuses []OperationStatus) {
rows := make([]OperationStatus, 0, len(statuses))
uniform := true
for _, status := range statuses {
if status.Status == StatusNotApplicable || status.Status == StatusNotImplemented {
continue
}
uniform = uniform && status.Status == StatusImplemented
rows = append(rows, status)
}
if uniform {
body.WriteString("### Operations\n\n| Operation |\n|---|\n")
for _, row := range rows {
fmt.Fprintf(body, "| `%s` |\n", row.Operation)
}
return
}
body.WriteString("### Operations\n\n| Operation | Status |\n|---|---|\n")
for _, row := range rows {
fmt.Fprintf(body, "| `%s` | %s |\n", row.Operation, row.Status)
}
}
// writeNotApplicable publishes the operations the platform will never serve,
// each with its reason in the row. A refusal reached mechanically carries the
// generic reason, so no row is published without one.
func writeNotApplicable(body *strings.Builder, page PageMetadata, statuses []OperationStatus) {
rows := make([]OperationStatus, 0, len(page.NotApplicable))
for _, status := range statuses {
if status.Status == StatusNotApplicable {
rows = append(rows, status)
}
}
return body.String(), nil
if len(rows) == 0 {
return
}
body.WriteString("\n### Not applicable\n\nThese operations describe AWS-hosted features this platform does not offer.\n\n")
body.WriteString("| Operation | Reason |\n|---|---|\n")
for _, row := range rows {
reason := page.Notes[row.NoteKey]
if reason == "" {
reason = refusedByHandler
}
fmt.Fprintf(body, "| `%s` | %s |\n", row.Operation, reason)
}
}
// RenderIndexPage renders the cross-service summary that links to each page.
@@ -330,15 +373,15 @@ func RenderIndexPage(coverages []OperationCoverage, pages PageSet, intro string)
var body strings.Builder
writeFrontmatter(&body, pages.Index, pages.Category)
fmt.Fprintf(&body, "# %s\n\n## Overview\n\n", pages.Index.Title)
fmt.Fprintf(&body, "Spinifex serves the AWS APIs below. Every page counts the operations in the pinned `aws-sdk-go %s` `api-2.json` model for its service and reports, operation by operation, whether Spinifex implements it.\n\n", SourceSDKVersion)
body.WriteString("| Service | Implemented | Modelled | Coverage |\n|---|---:|---:|---:|\n")
fmt.Fprintf(&body, "Spinifex serves the AWS APIs below. Every page names the operations Spinifex implements from the pinned `aws-sdk-go %s` `api-2.json` model for its service, alongside those the platform does not offer and why.\n\n", SourceSDKVersion)
body.WriteString("| Service | Operations |\n|---|---:|\n")
for _, coverage := range sortedCoverages(coverages) {
page, ok := pages.Services[coverage.Service]
if !ok {
continue
}
fmt.Fprintf(&body, "| [%s](%s/%s) | %d | %d | %.1f%% |\n",
page.Name, pages.BasePath, page.Slug, len(coverage.Implemented), len(coverage.Modelled), coverage.ImplementedPercent())
fmt.Fprintf(&body, "| [%s](%s/%s) | %d |\n",
page.Name, pages.BasePath, page.Slug, len(coverage.Implemented))
}
if intro != "" {
+69 -23
View File
@@ -66,7 +66,7 @@ func TestParsePageSetRejectsUnpublishableMetadata(t *testing.T) {
}
}
func TestRenderServicePageCarriesEveryStatus(t *testing.T) {
func TestRenderServicePageCarriesEveryPublishedStatus(t *testing.T) {
pages := testPageSet(t)
coverage, err := CompareOperations(STS, DispatchInventory{
Registered: []string{"AssumeRole", "GetCallerIdentity", "GetSessionToken", "PublishInternal"},
@@ -86,13 +86,12 @@ func TestRenderServicePageCarriesEveryStatus(t *testing.T) {
`category: "Coverage"`,
"sections:\n - overview\n",
"# STS API Coverage\n\n## Overview\n",
"Spinifex implements **1 of the 8** operations (**12.5%**) in the STS `2011-06-15` API model.",
"Spinifex implements **1 operation** in the STS `2011-06-15` API model.",
"### Scope\n\nHand-written prose.",
"| `AssumeRole` | " + StatusImplemented + " |",
"| `GetSessionToken` | " + StatusStub + " |",
"| `GetCallerIdentity` | " + StatusNotApplicable + " |",
"| `AssumeRoleWithSAML` | " + StatusNotImplemented + " |",
"| `PublishInternal` | " + StatusOutsideModel + " |",
"### Not applicable\n",
} {
if !strings.Contains(page, want) {
t.Errorf("page does not contain %q:\n%s", want, page)
@@ -103,9 +102,10 @@ func TestRenderServicePageCarriesEveryStatus(t *testing.T) {
}
}
// A modelled operation is never summarised as a count: a visitor asking whether
// Spinifex runs their workload is asking about the absent operations too.
func TestRenderServicePageRowsEveryModelledOperation(t *testing.T) {
// A published page states what the platform serves. An operation Spinifex has
// not implemented is not a row on it, and no count invites reading the page as
// a score against AWS.
func TestRenderServicePagePublishesNeitherGapsNorScores(t *testing.T) {
pages := testPageSet(t)
coverage, err := CompareOperations(STS, DispatchInventory{Registered: []string{"AssumeRole"}})
if err != nil {
@@ -116,11 +116,36 @@ func TestRenderServicePageRowsEveryModelledOperation(t *testing.T) {
if err != nil {
t.Fatal(err)
}
for _, operation := range coverage.Modelled {
if !strings.Contains(page, "| `"+operation+"` |") {
t.Errorf("page has no row for modelled operation %q", operation)
if strings.Contains(page, StatusNotImplemented) {
t.Errorf("page publishes an unimplemented operation:\n%s", page)
}
if strings.Contains(page, "%") || strings.Contains(page, " of the ") {
t.Errorf("page publishes a coverage score:\n%s", page)
}
for _, operation := range coverage.Missing {
if strings.Contains(page, "| `"+operation+"` |") {
t.Errorf("page has a row for unimplemented operation %q", operation)
}
}
for _, operation := range coverage.Implemented {
if !strings.Contains(page, "| `"+operation+"` |") {
t.Errorf("page has no row for implemented operation %q", operation)
}
}
}
// A service page says what Spinifex serves, so a service that serves nothing
// has no page rather than an empty one.
func TestRenderServicePageRefusesAServiceWithNoImplementation(t *testing.T) {
pages := testPageSet(t)
coverage, err := CompareOperations(STS, DispatchInventory{})
if err != nil {
t.Fatal(err)
}
if _, err := RenderServicePage(coverage, pages, ""); err == nil {
t.Fatal("RenderServicePage published a page for a service with no implemented operations")
}
}
func TestRenderServicePageWithoutIntro(t *testing.T) {
@@ -235,13 +260,13 @@ func TestOperationStatusesRejectsAnInternalRouteThatIsModelled(t *testing.T) {
}
}
// A footnote reused across operations is written once, and both directions of
// the reference are checked so neither side can rot.
func TestRenderServicePageFootnotesSharedNotes(t *testing.T) {
// Every not-applicable row carries its reason inline, so a visitor reads why an
// operation is absent without following a footnote.
func TestRenderServicePageGivesEveryNotApplicableRowAReason(t *testing.T) {
pages := testPageSet(t)
iam := pages.Services[IAM]
if len(iam.Notes) == 0 {
t.Skip("no notes are declared for IAM")
if len(iam.NotApplicable) == 0 {
t.Skip("no not-applicable operations are declared for IAM")
}
coverage, err := CompareOperations(IAM, DispatchInventory{Registered: []string{"CreateUser"}})
if err != nil {
@@ -252,19 +277,37 @@ func TestRenderServicePageFootnotesSharedNotes(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if !strings.Contains(page, "\n### Notes\n\n1. ") {
t.Errorf("page has no numbered notes section:\n%s", page)
if !strings.Contains(page, "\n### Not applicable\n") {
t.Fatalf("page has no not-applicable section:\n%s", page)
}
if !strings.Contains(page, "| `UploadSSHPublicKey` | "+StatusNotApplicable+" [") {
t.Errorf("a declared operation carries no footnote reference:\n%s", page)
}
for _, text := range iam.Notes {
if strings.Count(page, text) != 1 {
t.Errorf("note %q is not written exactly once", text)
for operation, key := range iam.NotApplicable {
if !strings.Contains(page, "| `"+operation+"` | "+iam.Notes[key]+" |") {
t.Errorf("operation %q carries no reason:\n%s", operation, page)
}
}
}
// A refusal the dispatch tables report, with no declared reason behind it, is
// still published with one.
func TestRenderServicePageGivesAnUndeclaredRefusalAReason(t *testing.T) {
pages := testPageSet(t)
coverage, err := CompareOperations(STS, DispatchInventory{
Registered: []string{"AssumeRole", "GetFederationToken"},
Unsupported: []string{"GetFederationToken"},
})
if err != nil {
t.Fatal(err)
}
page, err := RenderServicePage(coverage, pages, "")
if err != nil {
t.Fatal(err)
}
if !strings.Contains(page, "| `GetFederationToken` | The handler refuses this operation") {
t.Errorf("an undeclared refusal is published with no reason:\n%s", page)
}
}
func TestRenderServicePageRejectsBrokenNoteReferences(t *testing.T) {
pages := testPageSet(t)
coverage, err := CompareOperations(STS, DispatchInventory{Registered: []string{"AssumeRole"}})
@@ -330,6 +373,9 @@ func TestRenderIndexPageLinksEveryPublishedService(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if strings.Contains(index, "%") {
t.Errorf("index publishes a coverage score:\n%s", index)
}
for _, service := range Services() {
page, published := pages.Services[service]
if !published {
+13 -4
View File
@@ -9,9 +9,10 @@ import (
)
const (
pagesFile = "pages.json"
introFile = "intro.md"
pageFile = "README.md"
pagesFile = "pages.json"
introFile = "intro.md"
pageFile = "README.md"
internalFile = "internal-report.md"
)
// WritePages renders the publishable coverage pages into outputDir, which must
@@ -54,7 +55,15 @@ func WritePages(outputDir string, coverages []OperationCoverage) error {
if err != nil {
return err
}
return writePage(outputDir, pages.Index.Slug, body)
if err := writePage(outputDir, pages.Index.Slug, body); err != nil {
return err
}
report := RenderInternalReport(coverages)
if err := os.WriteFile(filepath.Join(outputDir, internalFile), []byte(report), 0o600); err != nil {
return fmt.Errorf("awsmodel: write internal coverage report: %w", err)
}
return nil
}
// readIntro returns the hand-written prose for a page, or "" where the page has
+25 -1
View File
@@ -44,7 +44,7 @@ func TestWritePagesWritesAServicePageAndTheIndex(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if !strings.Contains(string(service), "| `AssumeRole` | "+StatusImplemented+" |") {
if !strings.Contains(string(service), "| `AssumeRole` |") {
t.Errorf("service page is missing its operation table:\n%s", service)
}
index, err := os.ReadFile(filepath.Join(dir, "README.md"))
@@ -56,6 +56,30 @@ func TestWritePagesWritesAServicePageAndTheIndex(t *testing.T) {
}
}
// The gaps the pages leave out are still written down, in a file the docs site
// is not configured to render.
func TestWritePagesWritesTheInternalReport(t *testing.T) {
dir := stagePages(t)
coverage := stsCoverage(t)
if err := WritePages(dir, []OperationCoverage{coverage}); err != nil {
t.Fatal(err)
}
report, err := os.ReadFile(filepath.Join(dir, "internal-report.md"))
if err != nil {
t.Fatal(err)
}
for _, operation := range coverage.Missing {
if !strings.Contains(string(report), "- `"+operation+"`") {
t.Errorf("internal report omits unimplemented operation %q:\n%s", operation, report)
}
}
if !strings.Contains(string(report), "% ") && !strings.Contains(string(report), "%)") {
t.Errorf("internal report carries no coverage figure:\n%s", report)
}
}
func TestWritePagesIncludesAnIntroAndOverwritesTheGeneratedPage(t *testing.T) {
dir := stagePages(t)
pageDir := filepath.Join(dir, "sts")