【问题标题】:Error while iterating through AWS workspaces using for loop使用 for 循环遍历 AWS 工作区时出错
【发布时间】:2021-07-15 16:09:21
【问题描述】:

所以我一直在尝试在 python 函数中使用 for 循环,但它一直抛出错误:

"errorMessage": "'dict' object is not callable","errorType": "TypeError"

我正在尝试使用 lambda 函数遍历 aws 工作区,以使用状态检测不健康的工作区,并且由于 'describe_workspaces' api 的响应是一个字典,我无法弄清楚如何进行迭代。

下面是我的代码

import json
import boto3

client = boto3.client('workspaces')
    
def lambda_handler(event, context):
        
    response = client.describe_workspaces(
        WorkspaceIds = ['ws-8hy50vsm0','ws-jx4zr56wv','ws-08qhmql31']
    )
        
    print(response)

    for i in response['Workspaces']:
        if(i['State']== 'STOPPED'):
            print(i['WorkspaceId'])
            client.start_workspaces(i['WorkspaceId'])

【问题讨论】:

  • 现在,错误在for i in response('Workspaces'):。即使我删除 client.reboot_workspaces(i['WorkspaceId']) 并仅打印该值,它也会抛出相同的错误。
  • 啊,好的。在这种情况下,请查看response,它可能是dict。也许你想要reponse['Workspaces'],即方括号而不是圆括号?
  • 好的,谢谢。它奏效了。

标签: python amazon-web-services aws-lambda boto3


【解决方案1】:

正如一位评论员已经指出的那样,问题在于您的for 循环。您需要使用方括号 ([]) 而不是括号 (())。

Wrong Right
for i in response('Workspaces'): for i in response['Workspaces']:

【讨论】:

  • 好的,谢谢。有效。您能否也查看client.start_workspaces(i['WorkspaceId']),因为我正在尝试启动 State= 'STOPPED' 的工作区。谢谢
  • @AnshikaTyagi 你没有写出start_workspaces 等有什么问题。但即便如此,在 Stackoverflow 我们也不会同时回答多个不同的问题。你的问题是关于迭代字典。这将是一个不同的问题。请创建一个新问题并提供所有必需的信息:您要做什么、您的代码、您期望什么、实际发生的情况、任何错误消息等。
  • 好的,谢谢。这是有道理的。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
相关资源
最近更新 更多