首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >start_workspaces()只接受关键字参数

start_workspaces()只接受关键字参数
EN

Stack Overflow用户
提问于 2021-07-15 16:21:26
回答 1查看 119关注 0票数 0

我正在尝试写一个在Lambda函数中的Python代码,它将在警报触发时启动停止的工作区。响应类型为dict。

但是我得到了错误。下面是我的代码和错误。

代码语言:javascript
复制
import json
import boto3

client = boto3.client('workspaces')
    
def lambda_handler(event, context):
    response = client.describe_workspaces(
        DirectoryId='d-966714f114'
    )
        
    #print(response)
    
    print("hello")

    for i in response['Workspaces']:
        if(i['State']== 'STOPPED'):
            print(i['WorkspaceId'])
            client.start_workspaces(i['WorkspaceId'])
代码语言:javascript
复制
{
    "errorMessage": "start_workspaces() only accepts keyword arguments.",
    "errorType": "TypeError",
    "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 21, in lambda_handler\n    client.start_workspaces(i)\n",
    "  File \"/var/runtime/botocore/client.py\", line 354, in _api_call\n    raise TypeError(\n"
    ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-15 17:05:11

如果你看一下调用的documentation,它说它需要关键字StartWorkspaceRequests,它本身就是一个字典列表:

代码语言:javascript
复制
{
    'WorkspaceId': 'string'
},

调用不接受参数(只是传递一个没有对应关键字的值)。您需要调整您的调用以符合boto3期望的格式。

代码语言:javascript
复制
import json
import boto3

client = boto3.client('workspaces')
    
def lambda_handler(event, context):
    response = client.describe_workspaces(
        DirectoryId='d-966714f114'
    )
        
    workspaces_to_start = []
         
    for i in response['Workspaces']:
        if(i['State']== 'STOPPED'):
            workspaces_to_start.append({'WorkspaceId': i['WorkspaceId']})

    if workspaces_to_start:
        client.start_workspaces(StartWorkspaceRequests=workspaces_to_start)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68390294

复制
相关文章

相似问题

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