能否依赖EKS.Client.list_updates()的排序获取节点组最新更新?
关于EKS list_updates返回排序的问题
绝对不能依赖返回结果按从最新到最旧的顺序排列。AWS官方文档未明确说明list_updates接口的返回排序规则,这意味着返回顺序是未定义的——哪怕你当前测试时结果是按时间倒序排列的,AWS也可能在后续服务迭代中调整排序逻辑,依赖这种未明确的行为会导致代码在未来出现不可预期的问题。
如果要稳妥获取节点组的最后一次更新,推荐以下步骤:
- 调用
list_updates获取该节点组的所有updateId(不设置maxResults=1) - 对每个updateId调用
describe_update,获取更新的创建时间(createdAt字段) - 根据
createdAt时间戳对更新详情进行倒序排序,取第一条即为最新的更新
示例代码:
# 获取该节点组的所有更新ID updates_response = client.list_updates( name=myCluster, nodegroupName=myNodegroup ) update_ids = updates_response.get('updateIds', []) # 批量获取更新详情并筛选最新的 update_details = [] for update_id in update_ids: detail_response = client.describe_update( name=myCluster, updateId=update_id, nodegroupName=myNodegroup ) update_details.append(detail_response['update']) # 按创建时间倒序排序,取第一个就是最新更新 if update_details: latest_update = sorted(update_details, key=lambda x: x['createdAt'], reverse=True)[0] print(f"最新更新ID: {latest_update['id']}, 创建时间: {latest_update['createdAt']}")
内容的提问来源于stack exchange,提问作者Rutvik Saptarshi
相关产品推荐
相关产品推荐

