Paging Response Data - AWS SDK for Ruby

Paging Response Data

Some AWS calls provide paged responses to limit the amount of data returned with each response. A page of data represents up to 1,000 items.

Paged Responses Are Enumerable

The simplest way to handle paged response data is to use the built-in enumerator in the response object, as shown in the following example.

s3 = s3.list_objects(bucket:'aws-sdk').each do |response| puts end

This yields one response object per API call made, and enumerates objects in the named bucket. The SDK retrieves additional pages of data to complete the request.

Handling Paged Responses Manually

To handle paging yourself, use the response’s next_page? method to verify there are more pages to retrieve, or use the last_page? method to verify there are no more pages to retrieve.

If there are more pages, use the next_page (notice there is no ?) method to retrieve the next page of results, as shown in the following example.

s3 = # Get the first page of data response = s3.list_objects(bucket:'aws-sdk') # Get additional pages while response.next_page? do response = response.next_page # Use the response data here... end

If you call the next_page method and there are no more pages to retrieve, the SDK raises an Aws::PageableResponse::LastPageError exception.

Paged Data Classes

Paged data in the AWS SDK for Ruby is handled by the Aws::PageableResponse class, which is included with Seahorse::Client::Response to provide access to paged data.