Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to use PageSize consistently across Paginators due to problems with service models. #3261

Closed
rustyconover opened this issue Sep 20, 2024 · 3 comments
Assignees
Labels
bug This issue is a confirmed bug. p2 This is a standard priority issue paginator

Comments

@rustyconover
Copy link

rustyconover commented Sep 20, 2024

Describe the bug

While working to implement the use of PageSize as part of the PaginationConfig across all services, I’ve encountered a few issues within the service models.

I’ve put together a report that highlights these issues, summarized in the type column below. Here's what the entries in the type column represent:

"Missing limit member": The operation does not define a member that specifies how to set PageSize in the API call.
"Limit type is not an integer": The shape that specifies the limit is not an integer. The actual type and name are included.
"Missing max": The max attribute is missing in the shape's metadata, which should define the maximum number of results.
"Missing min": The min attribute is missing in the shape's metadata, which should define the minimum number of results.

Could you please help address these inconsistencies in the service models so that PageSize can be used seamlessly across all services?

service_name operation_name type limit_key found_type
accessanalyzer ListPolicyGenerations Missing max maxResults
amplifyuibuilder ExportComponents Missing limit member
amplifyuibuilder ExportForms Missing limit member
amplifyuibuilder ExportThemes Missing limit member
apigatewayv2 GetApis Limit type is not an integer MaxResults string
apigatewayv2 GetAuthorizers Limit type is not an integer MaxResults string
apigatewayv2 GetDeployments Limit type is not an integer MaxResults string
apigatewayv2 GetDomainNames Limit type is not an integer MaxResults string
apigatewayv2 GetIntegrationResponses Limit type is not an integer MaxResults string
apigatewayv2 GetIntegrations Limit type is not an integer MaxResults string
apigatewayv2 GetModels Limit type is not an integer MaxResults string
apigatewayv2 GetRouteResponses Limit type is not an integer MaxResults string
apigatewayv2 GetRoutes Limit type is not an integer MaxResults string
apigatewayv2 GetStages Limit type is not an integer MaxResults string
appstream DescribeFleets Missing limit member
appstream DescribeStacks Missing limit member
appstream ListAssociatedFleets Missing limit member
appstream ListAssociatedStacks Missing limit member
athena ListTagsForResource Missing max MaxResults
backup-gateway ListGateways Missing max MaxResults
backup-gateway ListHypervisors Missing max MaxResults
backup-gateway ListVirtualMachines Missing max MaxResults
bcm-data-exports ListExecutions Missing max MaxResults
bcm-data-exports ListExports Missing max MaxResults
bcm-data-exports ListTables Missing max MaxResults
bedrock-agent-runtime Retrieve Missing limit member
billingconductor ListAccountAssociations Missing limit member
clouddirectory ListAppliedSchemaArns Missing max MaxResults
clouddirectory ListAttachedIndices Missing max MaxResults
clouddirectory ListDevelopmentSchemaArns Missing max MaxResults
clouddirectory ListDirectories Missing max MaxResults
clouddirectory ListFacetAttributes Missing max MaxResults
clouddirectory ListFacetNames Missing max MaxResults
clouddirectory ListIncomingTypedLinks Missing max MaxResults
clouddirectory ListIndex Missing max MaxResults
clouddirectory ListManagedSchemaArns Missing max MaxResults
clouddirectory ListObjectAttributes Missing max MaxResults
clouddirectory ListObjectParentPaths Missing max MaxResults
clouddirectory ListObjectPolicies Missing max MaxResults
clouddirectory ListOutgoingTypedLinks Missing max MaxResults
clouddirectory ListPolicyAttachments Missing max MaxResults
clouddirectory ListPublishedSchemaArns Missing max MaxResults
clouddirectory ListTagsForResource Missing max MaxResults
clouddirectory ListTypedLinkFacetAttributes Missing max MaxResults
clouddirectory ListTypedLinkFacetNames Missing max MaxResults
clouddirectory LookupPolicy Missing max MaxResults
cloudformation DescribeAccountLimits Missing limit member
cloudformation DescribeChangeSet Missing limit member
cloudformation DescribeStackEvents Missing limit member
cloudformation DescribeStacks Missing limit member
cloudformation ListChangeSets Missing limit member
cloudformation ListExports Missing limit member
cloudformation ListImports Missing limit member
cloudformation ListStackResources Missing limit member
cloudformation ListStacks Missing limit member
cloudfront ListCloudFrontOriginAccessIdentities Limit type is not an integer MaxItems string
cloudfront ListDistributions Limit type is not an integer MaxItems string
cloudfront ListInvalidations Limit type is not an integer MaxItems string
cloudfront ListKeyValueStores Limit type is not an integer MaxItems string
cloudfront ListStreamingDistributions Limit type is not an integer MaxItems string
cloudhsm ListHapgs Missing limit member
cloudhsm ListHsms Missing limit member
cloudhsm ListLunaClients Missing limit member
cloudtrail ListPublicKeys Missing limit member
cloudtrail ListTags Missing limit member
cloudtrail ListTrails Missing limit member
cloudwatch DescribeAnomalyDetectors Missing max MaxResults
cloudwatch ListDashboards Missing limit member
cloudwatch ListMetrics Missing limit member
codebuild ListBuilds Missing limit member
codebuild ListBuildsForProject Missing limit member
codebuild ListProjects Missing limit member
codecatalyst ListAccessTokens Missing min maxResults
codecatalyst ListSpaces Missing limit member
codecommit ListBranches Missing limit member
codecommit ListRepositories Missing limit member
codedeploy ListApplicationRevisions Missing limit member
codedeploy ListApplications Missing limit member
codedeploy ListDeploymentConfigs Missing limit member
codedeploy ListDeploymentGroups Missing limit member
codedeploy ListDeploymentInstances Missing limit member
codedeploy ListDeploymentTargets Missing limit member
codedeploy ListDeployments Missing limit member
codedeploy ListGitHubAccountTokenNames Missing limit member
codedeploy ListOnPremisesInstances Missing limit member
codepipeline ListActionTypes Missing limit member
config DescribeComplianceByConfigRule Missing limit member
config DescribeConfigRules Missing limit member
config DescribeRetentionConfigurations Missing limit member
config GetComplianceDetailsByResource Missing limit member
connect ListContactEvaluations Missing limit member
connect ListContactReferences Missing limit member
datapipeline DescribeObjects Missing limit member
datapipeline ListPipelines Missing limit member
dax ListTags Missing limit member
devicefarm GetOfferingStatus Missing limit member
devicefarm ListArtifacts Missing limit member
devicefarm ListDevicePools Missing limit member
devicefarm ListDevices Missing limit member
devicefarm ListJobs Missing limit member
devicefarm ListNetworkProfiles Missing limit member
devicefarm ListOfferingPromotions Missing limit member
devicefarm ListOfferingTransactions Missing limit member
devicefarm ListOfferings Missing limit member
devicefarm ListProjects Missing limit member
devicefarm ListRemoteAccessSessions Missing limit member
devicefarm ListRuns Missing limit member
devicefarm ListSamples Missing limit member
devicefarm ListSuites Missing limit member
devicefarm ListTests Missing limit member
devicefarm ListUniqueProblems Missing limit member
devicefarm ListUploads Missing limit member
devops-guru DescribeOrganizationResourceCollectionHealth Missing limit member
devops-guru DescribeResourceCollectionHealth Missing limit member
devops-guru GetCostEstimation Missing limit member
devops-guru GetResourceCollection Missing limit member
devops-guru ListNotificationChannels Missing limit member
devops-guru ListRecommendations Missing limit member
drs DescribeJobLogItems Missing max maxResults
drs DescribeJobs Missing max maxResults
drs DescribeRecoveryInstances Missing max maxResults
drs DescribeRecoverySnapshots Missing max maxResults
drs DescribeReplicationConfigurationTemplates Missing max maxResults
drs DescribeSourceNetworks Missing max maxResults
drs DescribeSourceServers Missing max maxResults
ds DescribeDirectories Missing max Limit
ds DescribeDomainControllers Missing max Limit
ds DescribeRegions Missing limit member
ds DescribeSharedDirectories Missing max Limit
ds DescribeSnapshots Missing max Limit
ds DescribeTrusts Missing max Limit
ds DescribeUpdateDirectory Missing limit member
ds ListIpRoutes Missing max Limit
ds ListLogSubscriptions Missing max Limit
ds ListSchemaExtensions Missing max Limit
ds ListTagsForResource Missing max Limit
dynamodb ListTagsOfResource Missing limit member
dynamodb Query Missing max Limit
dynamodb Scan Missing max Limit
ec2 DescribeReservedInstancesModifications Missing limit member
efs DescribeAccessPoints Missing max MaxResults
efs DescribeFileSystems Missing max MaxItems
efs DescribeMountTargets Missing max MaxItems
efs DescribeReplicationConfigurations Missing max MaxResults
efs DescribeTags Missing max MaxItems
elasticbeanstalk ListPlatformVersions Missing max MaxRecords
elastictranscoder ListJobsByPipeline Missing limit member
elastictranscoder ListJobsByStatus Missing limit member
elastictranscoder ListPipelines Missing limit member
elastictranscoder ListPresets Missing limit member
emr ListBootstrapActions Missing limit member
emr ListClusters Missing limit member
emr ListInstanceFleets Missing limit member
emr ListInstanceGroups Missing limit member
emr ListInstances Missing limit member
emr ListNotebookExecutions Missing limit member
emr ListSecurityConfigurations Missing limit member
emr ListSteps Missing limit member
emr ListStudioSessionMappings Missing limit member
emr ListStudios Missing limit member
entityresolution ListIdMappingWorkflows Missing min maxResults
entityresolution ListIdNamespaces Missing min maxResults
entityresolution ListMatchingWorkflows Missing min maxResults
entityresolution ListSchemaMappings Missing min maxResults
es DescribeReservedElasticsearchInstanceOfferings Missing min MaxResults
es DescribeReservedElasticsearchInstances Missing min MaxResults
es GetUpgradeHistory Missing min MaxResults
es ListElasticsearchInstanceTypes Missing min MaxResults
es ListElasticsearchVersions Missing min MaxResults
gamelift DescribeFleetAttributes Missing max Limit
gamelift DescribeFleetCapacity Missing max Limit
gamelift DescribeFleetEvents Missing max Limit
gamelift DescribeFleetUtilization Missing max Limit
gamelift DescribeGameServerInstances Missing max Limit
gamelift DescribeGameSessionDetails Missing max Limit
gamelift DescribeGameSessionQueues Missing max Limit
gamelift DescribeGameSessions Missing max Limit
gamelift DescribeInstances Missing max Limit
gamelift DescribeMatchmakingConfigurations Missing max Limit
gamelift DescribePlayerSessions Missing max Limit
gamelift DescribeScalingPolicies Missing max Limit
gamelift ListAliases Missing max Limit
gamelift ListBuilds Missing max Limit
gamelift ListCompute Missing max Limit
gamelift ListFleets Missing max Limit
gamelift ListGameServerGroups Missing max Limit
gamelift ListGameServers Missing max Limit
gamelift ListScripts Missing max Limit
gamelift SearchGameSessions Missing max Limit
glacier ListJobs Limit type is not an integer limit string
glacier ListMultipartUploads Limit type is not an integer limit string
glacier ListParts Limit type is not an integer limit string
glacier ListVaults Limit type is not an integer limit string
glue GetPartitionIndexes Missing limit member
greengrass ListBulkDeploymentDetailedReports Limit type is not an integer MaxResults string
greengrass ListBulkDeployments Limit type is not an integer MaxResults string
greengrass ListConnectorDefinitionVersions Limit type is not an integer MaxResults string
greengrass ListConnectorDefinitions Limit type is not an integer MaxResults string
greengrass ListCoreDefinitionVersions Limit type is not an integer MaxResults string
greengrass ListCoreDefinitions Limit type is not an integer MaxResults string
greengrass ListDeployments Limit type is not an integer MaxResults string
greengrass ListDeviceDefinitionVersions Limit type is not an integer MaxResults string
greengrass ListDeviceDefinitions Limit type is not an integer MaxResults string
greengrass ListFunctionDefinitionVersions Limit type is not an integer MaxResults string
greengrass ListFunctionDefinitions Limit type is not an integer MaxResults string
greengrass ListGroupVersions Limit type is not an integer MaxResults string
greengrass ListGroups Limit type is not an integer MaxResults string
greengrass ListLoggerDefinitionVersions Limit type is not an integer MaxResults string
greengrass ListLoggerDefinitions Limit type is not an integer MaxResults string
greengrass ListResourceDefinitionVersions Limit type is not an integer MaxResults string
greengrass ListResourceDefinitions Limit type is not an integer MaxResults string
greengrass ListSubscriptionDefinitionVersions Limit type is not an integer MaxResults string
greengrass ListSubscriptionDefinitions Limit type is not an integer MaxResults string
inspector2 ListCoverageStatistics Missing limit member
inspector2 SearchVulnerabilities Missing limit member
iot ListTagsForResource Missing limit member
iotfleethub ListApplications Missing limit member
iotsitewise ExecuteQuery Missing max maxResults
iotsitewise GetAssetPropertyAggregates Missing max maxResults
iotsitewise GetAssetPropertyValueHistory Missing max maxResults
iotsitewise GetInterpolatedAssetPropertyValues Missing max maxResults
kinesis-video-archived-media GetImages Limit type is not an integer MaxResults long
kinesis-video-archived-media ListFragments Limit type is not an integer MaxResults long
lightsail GetActiveNames Missing limit member
lightsail GetBlueprints Missing limit member
lightsail GetBundles Missing limit member
lightsail GetCloudFormationStackRecords Missing limit member
lightsail GetDiskSnapshots Missing limit member
lightsail GetDisks Missing limit member
lightsail GetDomains Missing limit member
lightsail GetExportSnapshotRecords Missing limit member
lightsail GetInstanceSnapshots Missing limit member
lightsail GetInstances Missing limit member
lightsail GetKeyPairs Missing limit member
lightsail GetLoadBalancers Missing limit member
lightsail GetOperations Missing limit member
lightsail GetRelationalDatabaseBlueprints Missing limit member
lightsail GetRelationalDatabaseBundles Missing limit member
lightsail GetRelationalDatabaseEvents Missing limit member
lightsail GetRelationalDatabaseParameters Missing limit member
lightsail GetRelationalDatabaseSnapshots Missing limit member
lightsail GetRelationalDatabases Missing limit member
lightsail GetStaticIps Missing limit member
macie2 ListClassificationScopes Missing limit member
macie2 ListManagedDataIdentifiers Missing limit member
macie2 ListResourceProfileArtifacts Missing limit member
nimble ListEulaAcceptances Missing limit member
nimble ListEulas Missing limit member
nimble ListStreamingImages Missing limit member
nimble ListStreamingSessionBackups Missing limit member
nimble ListStreamingSessions Missing limit member
nimble ListStudios Missing limit member
opsworkscm DescribeBackups Missing max MaxResults
opsworkscm DescribeEvents Missing max MaxResults
opsworkscm DescribeServers Missing max MaxResults
opsworkscm ListTagsForResource Missing max MaxResults
organizations ListTagsForResource Missing limit member
polly DescribeVoices Missing limit member
polly ListLexicons Missing limit member
proton ListComponentOutputs Missing limit member
proton ListComponentProvisionedResources Missing limit member
proton ListEnvironmentOutputs Missing limit member
proton ListEnvironmentProvisionedResources Missing limit member
proton ListRepositorySyncDefinitions Missing limit member
proton ListServiceInstanceOutputs Missing limit member
proton ListServiceInstanceProvisionedResources Missing limit member
proton ListServicePipelineOutputs Missing limit member
proton ListServicePipelineProvisionedResources Missing limit member
redshift-data GetStatementResult Missing limit member
rekognition ListStreamProcessors Missing max MaxResults
resourcegroupstaggingapi GetTagKeys Missing limit member
resourcegroupstaggingapi GetTagValues Missing limit member
rolesanywhere ListCrls Missing limit member
rolesanywhere ListProfiles Missing limit member
rolesanywhere ListSubjects Missing limit member
rolesanywhere ListTrustAnchors Missing limit member
route53 ListCidrBlocks Limit type is not an integer MaxResults string
route53 ListCidrCollections Limit type is not an integer MaxResults string
route53 ListCidrLocations Limit type is not an integer MaxResults string
route53 ListHealthChecks Limit type is not an integer MaxItems string
route53 ListHostedZones Limit type is not an integer MaxItems string
route53 ListQueryLoggingConfigs Limit type is not an integer MaxResults string
route53 ListResourceRecordSets Limit type is not an integer MaxItems string
route53 ListVPCAssociationAuthorizations Missing limit member
route53-recovery-cluster ListRoutingControls Missing max MaxResults
route53domains ListDomains Missing min MaxItems
route53domains ListOperations Missing min MaxItems
route53domains ListPrices Missing min MaxItems
route53domains ViewBilling Missing min MaxItems
sagemaker ListDeviceFleets Missing min MaxResults
sagemaker ListDevices Missing min MaxResults
sagemaker ListEdgeDeploymentPlans Missing min MaxResults
sagemaker ListEdgePackagingJobs Missing min MaxResults
sagemaker ListStageDevices Missing min MaxResults
sagemaker ListTags Missing max MaxResults
sdb Select Missing limit member
ses ListReceiptRuleSets Missing limit member
sns ListEndpointsByPlatformApplication Missing limit member
sns ListPhoneNumbersOptedOut Missing limit member
sns ListPlatformApplications Missing limit member
sns ListSubscriptions Missing limit member
sns ListSubscriptionsByTopic Missing limit member
sns ListTopics Missing limit member
ssm DescribeMaintenanceWindowSchedule Missing max MaxResults
ssm DescribeMaintenanceWindowsForTarget Missing max MaxResults
ssm-contacts ListPageResolutions Missing limit member
sso-admin ListApplicationAuthenticationMethods Missing limit member
sso-admin ListApplicationGrants Missing limit member
sso-admin ListTagsForResource Missing limit member
storagegateway DescribeTapeArchives Missing max Limit
storagegateway DescribeTapeRecoveryPoints Missing max Limit
storagegateway DescribeTapes Missing max Limit
storagegateway DescribeVTLDevices Missing max Limit
storagegateway ListFileShares Missing max Limit
storagegateway ListFileSystemAssociations Missing max Limit
storagegateway ListGateways Missing max Limit
storagegateway ListTagsForResource Missing max Limit
storagegateway ListTapePools Missing max Limit
storagegateway ListTapes Missing max Limit
storagegateway ListVolumes Missing max Limit
textract ListAdapterVersions Missing max MaxResults
textract ListAdapters Missing max MaxResults
verifiedpermissions ListIdentitySources Missing max maxResults
verifiedpermissions ListPolicies Missing max maxResults
verifiedpermissions ListPolicyStores Missing max maxResults
verifiedpermissions ListPolicyTemplates Missing max maxResults
waf GetRateBasedRuleManagedKeys Missing limit member
workdocs DescribeGroups Missing max Limit
workspaces DescribeAccountModifications Missing limit member
workspaces DescribeWorkspaceBundles Missing limit member
workspaces DescribeWorkspaceDirectories Missing limit member
workspaces DescribeWorkspacesConnectionStatus Missing limit member
xray BatchGetTraces Missing limit member
xray GetGroups Missing limit member
xray GetSamplingRules Missing limit member
xray GetSamplingStatisticSummaries Missing limit member
xray GetServiceGraph Missing limit member
xray GetTimeSeriesServiceStatistics Missing limit member
xray GetTraceGraph Missing limit member
xray GetTraceSummaries Missing limit member
xray ListResourcePolicies Missing limit member
xray ListTagsForResource Missing limit member

Expected Behavior

I expected that setting PageSize in PaginationConfig will work across all services and all operations.

Current Behavior

Exceptions are raised:

PageSize parameter is not supported for the pagination interface for this operation.

Reproduction Steps

Create any service client, create a pagination for one of the operations listed above, receive the exception.

Possible Solution

Change the service models to resolve the defects listed above.

Additional Information/Context

I'm happy to supply the code that produced this report.

SDK version used

1.35.5

Environment details (OS name and version, etc.)

Mac OS X

@tim-finnigan
Copy link
Contributor

tim-finnigan commented Sep 24, 2024

Thanks for reaching out. Linking paginator docs for reference: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html

There is some variation in the models across services, so these are not completely standardized. There are not plans to do this, but if you are having issues with specific paginator, then we can raise those with service teams on a case-by-case basis. Not every service API supports PageSize, but if you're having an issue with a specific paginator please let us know and we can reach out to the service team regarding the model if necessary.

@tim-finnigan tim-finnigan self-assigned this Sep 24, 2024
@tim-finnigan tim-finnigan added response-requested Waiting on additional info and feedback. paginator p2 This is a standard priority issue closing-soon and removed needs-triage This issue or PR still needs to be triaged. response-requested Waiting on additional info and feedback. labels Sep 24, 2024
@rustyconover
Copy link
Author

Hi @tim-finnigan,

If aligning the service definition models with the data table I provided isn’t feasible, I’ll implement a workaround on my end.

Thanks for taking the time to look into this.

Best,
Rusty

@tim-finnigan tim-finnigan closed this as not planned Won't fix, can't repro, duplicate, stale Sep 25, 2024
Copy link

This issue is now closed. Comments on closed issues are hard for our team to see.
If you need more assistance, please open a new issue that references this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug This issue is a confirmed bug. p2 This is a standard priority issue paginator
Projects
None yet
Development

No branches or pull requests

2 participants