

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# CreateSessions
<a name="CreateSessions"></a>

使用指定的详细信息创建新的 Amazon DCV 会话。

**Topics**
+ [请求参数](#request)
+ [响应参数](#response)
+ [示例](#example)

## 请求参数
<a name="request"></a>

**`Name`**  
会话的名称。  
类型：字符串  
是否必需：是

**`Owner`**  
会话所有者的名称。这必须是目标 Amazon DCV 服务器上的现有用户的名称。  
类型：字符串  
是否必需：是

**`Type`**  
会话类型。有关会话类型的更多信息，请参阅《Amazon DCV 管理员指南》中的 [Amazon DCV 会话简介](https://docs.aws.amazon.com/dcv/latest/adminguide/managing-sessions.html)。**  
有效值：CONSOLE \$1 VIRTUAL  
类型：字符串  
是否必需：是

**`InitFile`**  
Linux Amazon DCV 服务器上的虚拟会话支持。Windows 和 Linux Amazon DCV 服务器上的控制台会话不支持该参数。这是 Amazon DCV 服务器上的自定义脚本的路径，用于在创建会话时运行以初始化会话。文件路径相对于为 `agent.init_folder` Agent 配置参数指定的 init 目录。如果文件位于指定的 init 目录中，请仅指定文件名。如果文件没有位于指定的 init 目录中，请指定相对路径。有关更多信息，请参阅《Amazon DCV Session Manager 管理员指南》中的 [Agent 配置文件](https://docs.aws.amazon.com/dcv/latest/sm-admin/agent-file.html)。**  
类型：字符串  
必需：否

**`MaxConcurrents`**  
并发 Amazon DCV 客户端的最大数量。  
类型：整数  
必需：否

**`DcvGlEnabled`**  
指示虚拟会话是否配置为使用基于硬件的 OpenGL。仅虚拟会话支持。Windows Amazon DCV 服务器不支持该参数。  
有效值：true \$1 false  
类型：布尔值  
必需：否

**`PermissionsFile`**  
Base64 编码的权限文件内容。如果省略，则默认为服务器默认值。有关更多信息，请参阅《Amazon DCV 管理员指南》中的[配置 Amazon DCV 授权](https://docs.aws.amazon.com/dcv/latest/adminguide/security-authorization.html)。**  
类型：字符串  
必需：否

**`EnqueueRequest`**  
指示在无法立即完成请求时是否将其排入队列。  
类型：布尔值  
默认：false  
必需：否

**`AutorunFile`**  
Windows Amazon DCV 服务器上的控制台会话和 Linux Amazon DCV 服务器上的虚拟会话支持。Linux Amazon DCV 服务器上的控制台会话不支持该参数。  
位于主机服务器上并在会话中运行的文件的路径。文件路径相对于为 `agent.autorun_folder` Agent 配置参数指定的 autorun 目录。如果文件位于指定的 autorun 目录中，请仅指定文件名。如果文件没有位于指定的 autorun 目录中，请指定相对路径。有关更多信息，请参阅《Amazon DCV Session Manager 管理员指南》中的 [Agent 配置文件](https://docs.aws.amazon.com/dcv/latest/sm-admin/agent-file.html)。**  
该文件是代表指定**所有者**运行的。指定的所有者必须有权在服务器上运行该文件。在 Windows Amazon DCV 服务器上，该文件是在所有者登录到会话时运行的。在 Linux Amazon DCV 服务器上，该文件是在创建会话时运行的。  
类型：字符串  
必需：否

**`AutorunFileArguments`**  
Linux Amazon DCV 服务器上的虚拟会话支持。Windows 和 Linux Amazon DCV 服务器上的控制台会话不支持该参数。命令行参数在会话中执行**AutorunFile**时传递给。参数是按照它们在给定数组中的出现顺序传递的。可以配置最大允许参数数量以及每个参数的最大允许长度。有关更多信息，请参阅《Amazon DCV Session Manager 管理员指南》中的 [Broker 配置文件](https://docs.aws.amazon.com/dcv/latest/sm-admin/broker-file.html)。**  
类型：字符串数组  
必需：否

**`DisableRetryOnFailure`**  
指示创建会话请求在 Amazon DCV 主机上由于任何原因失败后是否不重试。有关创建会话重试机制的更多信息，请参阅《Amazon DCV Session Manager 管理员指南》中的 [Broker 配置文件](https://docs.aws.amazon.com/dcv/latest/sm-admin/broker-file.html)。**  
类型：布尔值  
默认：false  
必需：否

**`Requirements`**  
服务器必须满足才能放置会话的要求。要求可能包括服务器标签服务器属性， and/or 服务器标签和服务器属性都是通过调用 **DescribeServers**API 来检索的。  
要求条件表达式：  
+ *a***！ 如果不等于*a*，则为** *b* true *b*
+ *a***=** 如果等于*a*，则为 *b* true *b*
+ *a***>** 如果大于*a*，则为 *b* true *b*
+ *a***>=** 如果大于或等于*a*，则*b*为 true *b*
+ *a*如果小于，则*b**a*为 **<** true *b*
+ *a*如果小于或等于*a*，则为 **<=** *b* true *b*
+ *a***如果*a*包含字符串，则*b*为 true** *b*
要求布尔运算符：  
+ *a*如果***a*和**为*b*真则*b*为真
+ *a*如果***a*或**为*b*真则*b*为真
+ 如果*a*为假则@@ **不**正*a*确
标签键必须以 `tag:` 为前缀，服务器属性必须以 `server:` 为前缀。要求表达式支持圆括号 `()`。  
要求示例：  
+ `tag:color = 'pink' and (server:Host.Os.Family = 'windows' or tag:color := 'red')`
+ `"server:Host.Aws.Ec2InstanceType := 't2' and server:Host.CpuInfo.NumberOfCpus >= 2"`
可以使用指数表示法指定数值，例如：`"server:Host.Memory.TotalBytes > 1024E6"`。  
支持的服务器属性包括：  
+ `Id`
+ `Hostname`
+ `Version`
+ `SessionManagerAgentVersion`
+ `Host.Os.BuildNumber`
+ `Host.Os.Family`
+ `Host.Os.KernelVersion`
+ `Host.Os.Name`
+ `Host.Os.Version`
+ `Host.Memory.TotalBytes`
+ `Host.Memory.UsedBytes`
+ `Host.Swap.TotalBytes`
+ `Host.Swap.UsedBytes`
+ `Host.CpuLoadAverage.OneMinute`
+ `Host.CpuLoadAverage.FiveMinutes`
+ `Host.CpuLoadAverage.FifteenMinutes`
+ `Host.Aws.Ec2InstanceId`
+ `Host.Aws.Ec2InstanceType`
+ `Host.Aws.Region`
+ `Host.Aws.Ec2ImageId`
+ `Host.CpuInfo.Architecture`
+ `Host.CpuInfo.ModelName`
+ `Host.CpuInfo.NumberOfCpus`
+ `Host.CpuInfo.PhysicalCoresPerCpu`
+ `Host.CpuInfo.Vendor`
类型：字符串  
必需：否

**`StorageRoot`**  
指定用于会话存储的文件夹的路径。有关 Amazon DCV 会话存储的更多信息，请参阅《Amazon DCV 管理员指南》中的[启用会话存储](https://docs.aws.amazon.com/dcv/latest/adminguide/manage-storage.html)。**  
类型：字符串  
必需：否

## 响应参数
<a name="response"></a>

**`Id`**  
会话的唯一 ID。

**`Name`**  
会话名称。

**`Owner`**  
会话所有者。

**`Type`**  
会话的类型。

**`State`**  
会话的状态。如果请求成功完成，会话将进入 `CREATING` 状态。

**`Substate`**  
会话的子状态。如果请求成功完成，会话将进入 `SESSION_PLACING` 子状态。

## 示例
<a name="example"></a>

------
#### [ Python ]

**请求**  
以下示例创建三个会话。

```
from swagger_client.models.create_session_request_data import CreateSessionRequestData

def get_sessions_api():
    api_instance = swagger_client.SessionsApi(swagger_client.ApiClient(get_client_configuration()))
    set_request_headers(api_instance.api_client)
    return api_instance

def create_sessions(sessions_to_create):
    create_sessions_request = list()
    for name, owner, session_type, init_file_path, autorun_file, autorun_file_arguments, max_concurrent_clients,\
            dcv_gl_enabled, permissions_file, requirements, storage_root in sessions_to_create:
        a_request = CreateSessionRequestData(
            name=name, owner=owner, type=session_type,
            init_file_path=init_file_path, autorun_file=autorun_file, autorun_file_arguments=autorun_file_arguments, max_concurrent_clients=max_concurrent_clients,
            dcv_gl_enabled=dcv_gl_enabled, permissions_file=permissions_file, requirements=requirements, storage_root=storage_root)
        create_sessions_request.append(a_request)

    api_instance = get_sessions_api()
    print('Create Sessions Request:', create_sessions_request)
    api_response = api_instance.create_sessions(body=create_sessions_request)
    print('Create Sessions Response:', api_response)

def main():
    create_sessions([
    ('session1', 'user1', 'CONSOLE', None, None, None, 1, None, '/dcv/permissions.file', "tag:os = 'windows' and server:Host.Memory.TotalBytes > 1024", "/storage/root"),
    ('session2', 'user1', 'VIRTUAL', None, 'myapp.sh', None, 1, False, None, "tag:os = 'linux'", None),
    ('session3', 'user1', 'VIRTUAL', '/dcv/script.sh', 'myapp.sh', ['argument1', 'argument2'], 1, False, None, "tag:os = 'linux'", None),
])
```

**响应**  
以下是示例输出。

```
{
              "RequestId": "e32d0b83-25f7-41e7-8c8b-e89326ecc87f",
    "SuccessfulList": [
    {
            "Id": "78b45deb-1163-46b1-879b-7d8fcbe9d9d6",
            "Name": "session1",
            "Owner": "user1",
            "Type": "CONSOLE",
            "State": "CREATING"
    },
    {
            "Id": " a0c743c4-9ff7-43ce-b13f-0c4d55a268dd",
            "Name": "session2",
            "Owner": "user1",
            "Type": "VIRTUAL",
            "State": "CREATING"
    },
    {
            "Id": " 10311636-df90-4cd1-bcf7-474e9675b7cd",
            "Name": "session3",
            "Owner": "user1",
            "Type": "VIRTUAL",
            "State": "CREATING"
    }
    ],
    "UnsuccessfulList": [
    ]
}
```

------