AWS-sdk 没有用于 rds 集群的分页器

AWS-sdk no paginators for rds cluster

我刚刚发现我最多可以获得 DBClusterSnapshots 的 100 条记录,幸运的是 AWS 支持分页,您可以按页获取列表。我正在查看 aws-sdk-go 的文档以查看我的操作如何实现分页。不幸的是,我的操作没有分页方法。

这是我要分页的操作。它在文档中说它支持分页。

但是我的操作的分页方式似乎不受支持

只支持DBSnapshotsPages不支持DBClusterSnapshotsPages

适用于 Go 的 AWS 开发工具包具有 DescribeDBClusterSnapshots 函数:

func (c *RDS) DescribeDBClusterSnapshots(input *DescribeDBClusterSnapshotsInput) (*DescribeDBClusterSnapshotsOutput, error)

它接受一个参数DescribeDBClusterSnapshotsInput,其中包括:

Marker *string type:"string"

An optional pagination token provided by a previous DescribeDBClusterSnapshots request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

因此,您的代码可以调用 DescribeDBClusterSnapshots,存储 returned 的 marker,然后再次调用 DescribeDBClusterSnapshots,为 marker。这将 return 下 'page' 个结果。

在 aws sdk 上,您可以使用响应的 next_page 方法自行处理分页,以验证没有要检索的页面。为了检索下一页结果,附上一些ruby例子:

# object initializtion:
rds_client = Aws::RDS::Client.new

# implementation:
def self.describe_all_db_snapshots(db_instance_identifier: db_instance_identifier)
  response = rds_client.describe_db_snapshots({
                   db_instance_identifier: db_instance_identifier,
                   snapshot_type: "automated",
                   include_shared: false,
                   include_public: false,
                   max_records: 100 })

   while response.next_page? do

     # use the response data here...
     puts #{response}
     
     # next pagination iterator
     response = response.next_page
     
   end        
 end      

有关更多详细信息,请阅读 aws sdk documentation