AWS Lambda中如何从describe_maintenance_windows响应提取WindowId?
解决从SSM维护窗口响应中提取WindowId的错误问题
你碰到的'list' object is not callable错误,核心原因是MWId是个列表(看返回的响应结构,它是用[]包裹的数组),但你用了函数调用的写法MWId("WindowId")——Python里列表不能这么用,自然报错。
正确的提取方式
直接通过列表索引取出里面的字典,再用键名取值就行,修改后的Lambda函数如下:
def lambda_handler(event, context): # 先初始化SSM客户端,别忘了导入boto3 import boto3 client = boto3.client('ssm') response = client.describe_maintenance_windows(Filters=[ { 'Key': 'Name', 'Values': ['test'] }, ]) MWId = response["WindowIdentities"] # 取列表第一个元素(字典),再提取WindowId mwidvalue = MWId[0]["WindowId"] return mwidvalue
扩展:如果有多个匹配的维护窗口
如果你的过滤器能匹配到多个维护窗口,就需要遍历列表收集所有WindowId:
# 用列表推导式批量提取所有WindowId all_window_ids = [window["WindowId"] for window in MWId] # all_window_ids会是一个包含所有匹配ID的列表
内容的提问来源于stack exchange,提问作者iwamoto
相关产品推荐
相关产品推荐

