需要启动每小时工作空间,但 start_workspaces() 和 describe_workspaces() 限制为 25

Posted

技术标签:

【中文标题】需要启动每小时工作空间,但 start_workspaces() 和 describe_workspaces() 限制为 25【英文标题】:Need to boot hourly workspaces but start_workspaces() and describe_workspaces() limited to 25 【发布时间】:2021-12-29 20:23:16 【问题描述】:

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

我在我的环境中运行了超过 25 个工作区,我试图找出我需要在上面添加什么,以便检查我的环境中的所有工作区 (50

我期待听到您的反馈。

谢谢

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
      ,
    ]
  )

【问题讨论】:

你的 lambda 函数的超时时间是多少? 【参考方案1】:

The documentation states,您可以在请求参数中提供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       

【讨论】:

谢谢@st.huber,这正是我想要的! 太棒了。随意upvote并将此答案标记为已接受的答案,这将使其他人也更容易找到它

以上是关于需要启动每小时工作空间,但 start_workspaces() 和 describe_workspaces() 限制为 25的主要内容,如果未能解决你的问题,请参考以下文章

用更大的堆空间重新启动 JVM

systemd概念和运行机制

simulink模型仿真时明明有将变量存储到工作空间,即有to workspace, 但最终运行完后,工作空间中没有该变量

在 Linux 启动时尽早保留物理内存空间

芹菜:启动时启动任务

Eclipse - 怎么设置在启动时提示选择工作空间