首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要每小时启动一次工作区,但start_workspaces()和describe_workspaces()限制在25个

需要每小时启动一次工作区,但start_workspaces()和describe_workspaces()限制在25个
EN

Stack Overflow用户
提问于 2021-11-19 00:32:14
回答 1查看 30关注 0票数 1

我有下面的脚本,可以启动工作区,但是它得到了前25个工作区,尽管它是可用的或停止状态的。

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

我期待着听到你的反馈。

谢谢

代码语言:javascript
复制
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
      },
    ]
  )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-19 08:57:59

文件说明,可以在请求参数中提供Limit

限制返回的最大项数。 类型:整数 有效范围:最小值1。最大值25。 要求:否

您只得到25项,因为这是您可以获得的最大项目数。要获得所有项目,您必须签入任何响应是否存在NextToken。如果有下一个令牌,您必须在下一个请求中使用它,则迭代它,直到没有下一个令牌为止。

代码语言:javascript
复制
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       
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70028429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档