1

我有以下可用于启动工作区的脚本,但它获得了前 25 个工作区,尽管处于 AVAILABLE 或 STOPPED 状态。

我在我的环境中运行超过 25 个工作区,我试图弄清楚我需要在上面添加什么,以便检查我的环境中的所有工作区 (50<) 并启动 START 中的工作区已停止状态。

我期待听到您的反馈。

谢谢

import boto3

workspaces = boto3.client('workspaces')


def lambda_handler(event, context):

  workspaces_client_list = workspaces.describe_workspaces()

  for workspaces_info in workspaces_client_list['Workspaces']:
    workspace_id = workspaces_info['WorkspaceId']
    workspace_state = workspaces_info['State']

    if workspace_state == 'STOPPED':
      start_workspaces(workspace_id)


def start_workspaces(workspace_id):

  workspaces.start_workspaces(
    StartWorkspaceRequests = [
      {
        'WorkspaceId': workspace_id
      },
    ]
  )

4

1 回答 1

0

文档说明您可以Limit在请求参数中提供

限制

要返回的最大项目数。
类型:整数
有效范围:最小值为 1。最大值为 25。
必需:否

您只能获得 25 件物品,因为这是您可以获得的最大物品数量。要获得所有项目,您必须检查是否有任何响应NextToken。如果有下一个令牌,您必须将其用于下一个请求,则重复此操作,直到没有下一个令牌。

def lambda_handler(event, context):
   workspaces_client_list = get_all_workspaces()

   for workspaces_info in workspaces_client_list:
     workspace_id = workspaces_info['WorkspaceId']
     workspace_state = workspaces_info['State']

     if workspace_state == 'STOPPED':
       start_workspaces(workspace_id)

def get_all_workspaces():
   response = workspaces.describe_workspaces()
   workspaces_client_list = response['Workspaces']
   while "NextToken" in response:
    response = workspaces.describe_workspaces(NextToken=response['NextToken'])
    workspaces_client_list.extend(response['Workspaces'])    
    
   return workspaces_client_list       
于 2021-11-19T08:57:59.087 回答