我有一个lambda函数来启动env中的所有工作区机器。
Lambda功能:
import boto3
client = boto3.client('workspaces')
def lambda_handler(event,context):
workspaces = client.describe_workspaces()['Workspaces']
for workspace in workspaces:
if workspace['WorkspaceProperties']['RunningMode'] == 'AUTO_STOP':
if workspace['State'] == 'STOPPED':
workspaces_id = (workspace['WorkspaceId'])
client.start_workspaces(
StartWorkspaceRequests=[
{
'WorkspaceId': workspaces_id
},
]
)client.start_workspaces每个请求有25个工作空间的限制,知道如何克服这个问题吗?我试图为超过25个工作空间建立一个强有力的解决方案。
提前感谢帮助者
发布于 2022-12-04 15:52:04
您可以使用分页方法通过工作区列表自动分页,并为每一页结果调用start_workspaces。这个看起来是这样的:
import boto3
client = boto3.client('workspaces')
def lambda_handler(event, context):
workspaces_paginator = client.get_paginator('describe_workspaces')
# Loop through all pages of workspaces
for page in workspaces_paginator.paginate():
workspaces = page['Workspaces']
# Filter for workspaces that are in AUTO_STOP mode and are currently stopped
stopped_workspaces = [workspace for workspace in workspaces if workspace['WorkspaceProperties']['RunningMode'] == 'AUTO_STOP' and workspace['State'] == 'STOPPED']
# Call start_workspaces for the current page of workspaces
if stopped_workspaces:
client.start_workspaces(
StartWorkspaceRequests=[
{
'WorkspaceId': workspace['WorkspaceId']
} for workspace in stopped_workspaces
]
)https://stackoverflow.com/questions/74678009
复制相似问题