You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Boto3实现AWS Amplify list-apps CLI命令等价功能及分页异常问题求助

等价的Boto3操作及分页问题解决

首先明确:在Boto3中,与CLI命令aws amplify list-apps完全等价的操作就是调用Amplify客户端的list_apps()方法,也就是你初始代码里的amplify.list_apps()。

接下来我们看看你的分页代码为什么没按预期工作:

1. 手动分页的问题

你的手动分页代码有两个关键问题:

  • 没有收集所有页面的应用数据:你只是打印了每一页的响应,但没有把各页的apps列表合并起来,导致你看不到完整的应用集合。
  • 循环逻辑的小瑕疵:当你执行apps = amplify.list_apps(nextToken=apps['nextToken'])时,你覆盖了原来的apps变量,丢失了前一页的数据。

正确的手动分页实现应该是这样的:

import boto3

amplify = boto3.client('amplify')
all_apps = []

# 获取第一页数据
response = amplify.list_apps()
all_apps.extend(response['apps'])

# 循环获取后续所有页面
while 'nextToken' in response:
    response = amplify.list_apps(nextToken=response['nextToken'])
    all_apps.extend(response['apps'])

# 查看完整的应用列表
print(f"找到的应用总数: {len(all_apps)}")
for app in all_apps:
    print(f"应用ID: {app['appId']}, 应用名称: {app['name']}")

2. 分页器的问题

你使用分页器的代码本身没有错误,但你只是打印了每一页的完整响应,而没有提取其中的apps核心数据。分页器返回的每一个迭代项都是一页的响应对象,其中的apps字段才是该页的应用列表。

正确的分页器实现:

import boto3

amplify = boto3.client('amplify')
paginator = amplify.get_paginator('list_apps')
all_apps = []

for page in paginator.paginate(
    PaginationConfig={
        'MaxItems': 100,
        'PageSize': 100
    }
):
    all_apps.extend(page['apps'])

# 输出所有应用信息
print(f"找到的应用总数: {len(all_apps)}")
for app in all_apps:
    print(f"应用ID: {app['appId']}, 应用名称: {app['name']}")

关于你看不到后续nextToken的困惑

从你补充的输出可以看到,第二次调用list_apps后返回的响应里没有nextToken字段——这说明已经没有更多的应用数据了,你已经获取了所有的Amplify应用。AWS的API只会在还有未返回的数据时才会返回nextToken,一旦所有数据都已返回,就不会再提供这个字段。

如果你确实认为还有更多应用未被获取,可以检查以下两点:

  • 确认你的Boto3客户端使用的AWS凭证和CLI是同一个账号/区域(可以通过print(amplify._endpoint)查看客户端的区域信息)。
  • 直接运行CLI命令aws amplify list-apps,对比实际存在的应用数量是否和Boto3获取的一致。

内容的提问来源于stack exchange,提问作者kraken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 19:57:40