我有这个 lambda 函数
def lambda_handler(event, context):
response = client.describe_maintenance_windows(
Filters=[
{
'Key': 'Name',
'Values': [
'test',
]
},
],
)
MWId = response["WindowIdentities"]
return(MWId)
我得到了下面的响应响应结构
[
{
"WindowId": "mw-0154acefa2151234",
"Name": "test",
"Enabled": true,
"Duration": 4,
"Cutoff": 0,
"Schedule": "cron(0 0 11 ? * SUN#4 *)",
"NextExecutionTime": "2024-08-25T11:00Z"
}
]
如何获取 WindowId 的值,以便将其传递给变量?我在下面尝试过,但收到“errorMessage”:“'list'对象不可调用”
mwidvalue = MWId("WindowId")
在尝试将
WindowId
作为函数调用到
MWId
列表对象时收到错误消息
“errorMessage”:“'list' object is not callable”
。为了访问
WindowId
的值,需要通过其索引访问列表中的字典。
试试这个代码片段:
def lambda_handler(event, context):
response = client.describe_maintenance_windows(
Filters=[
{
'Key': 'Name',
'Values': [
'test',
]
},
],
)
MWId = response["WindowIdentities"]
# 检查列表是否为空
if MWId:
# 访问第一个元素的 WindowId(如果有多个窗口,则为索引 0)
mwidvalue = MWId[0]["WindowId"]
return mwidvalue
else:
# 处理空列表的情况
return "未找到维护窗口"
这段代码做了什么:
-
获取
WindowIdentities
列表: 这与的代码相同,它从describe_maintenance_windows
响应中获取WindowIdentities
列表。 -
检查列表是否为空:
它验证
MWId
列表是否不为空。这可以防止在没有找到维护窗口时出现IndexError
。 -
访问
WindowId
: 如果列表不为空,它将访问列表中第一个字典元素(索引 0)的WindowId
值。 - 处理空列表: 如果列表为空,它将返回一条消息,指示未找到维护窗口。
这假设只期望有一个名为“测试”的维护窗口。如果有多个,需要遍历
MWId
列表以找到所需的窗口。