

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

# Amazon WorkSpaces 应用程序中的会话上下文
<a name="managing-stacks-fleets-session-context"></a>

您可以使用以下任一方法将参数传递给流应用程序：
+ 在 CreateStreaming URL WorkSpaces 应用程序 API 操作中指定会话内容。有关更多信息，请参阅 [CreateStreamingURL](https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateStreamingURL.html)。
+ 将 sts: TagSession 权限添加到您的 IAM 角色的信任策略中，并在您的 SAML 2.0 身份提供商的身份验证响应中将会话上下文指定为 SAML 断言。有关更多信息，请参阅[步骤 5：为 SAML 身份验证响应创建断言](external-identity-providers-setting-up-saml.md#external-identity-providers-create-assertions)和[步骤 5：为 SAML 身份验证响应创建断言](external-identity-providers-setting-up-saml.md#external-identity-providers-create-assertions)。

如果您的映像使用在 2018 年 10 月 30 日当天或之后发布的 WorkSpaces 应用程序代理版本，则会话上下文将作为 Windows 或 Linux 环境变量存储在映像中。有关特定环境变量的信息，请参阅中的 “ WorkSpaces 应用程序队列的用户和实例元数据”。[自定义 Amazon WorkSpaces 应用程序队列以优化用户的应用程序流媒体体验](customize-fleets.md)

**注意**  
用户可以在 WorkSpaces 应用程序的直播 URL 中看到会话上下文参数。我们强烈建议您切勿在会话上下文参数中输入机密或敏感信息。由于用户可以修改流式传输 URL，因此我们建议您进行额外的验证，以确定会话上下文对最终用户是否有效。例如，您可以将会话上下文与其他会话信息（例如 WorkSpaces 应用程序队列的用户和实例元数据）进行比较。  
WorkSpaces 应用程序不对会话上下文参数执行验证。

## 使用会话上下文将参数传递给流应用程序
<a name="managing-stacks-fleets-parameters"></a>

在以下步骤中，您将使用会话上下文来启动 Web 浏览器并自动打开特定网站。对于运行 Windows 的实例，您需要使用 Firefox。对于运行 Linux 的实例，您需要使用 Chromium。

**使用会话上下文启动网站**

1. 在左侧导航窗格中，依次选择**映像**和**映像生成器**。

1. 选择要使用的映像生成器，验证它是否处于**正在运行**状态，然后选择**连接**。

1. 在**本地用户**选项卡上选择**管理员**，以登录映像生成器。

1. 创建 `C:\` 的一个子文件夹。对于本示例，请使用 `C:\Scripts`。

1. 在新文件夹中创建一个 Windows 批处理文件。对于此示例，创建 `C:\Scripts\session-context-test.bat` 并添加脚本，此脚本使用来自会话上下文的 URL 启动 Firefox。

   运行以下脚本：

   ```
   CD "C:\Program Files (x86)\Mozilla Firefox"
   Start firefox.exe %APPSTREAM_SESSION_CONTEXT%
   ```

1. 在 Image Assistant 中，添加 `session-context-test.bat` 并将名称更改为 **Firefox**。

   您不需要添加 Firefox。此步骤只要求您添加批处理文件。

1. 创建映像、实例集和堆栈。对于此示例，使用实例集名称 **session-context-test-fleet** 和堆栈名称 **session-context-test-stack**。

1. 队列运行后，您可以使用`session-context`参数[create-streaming-url](https://docs.aws.amazon.com/cli/latest/reference/appstream/create-streaming-url.html)进行调用，如本示例所示。

   ```
   aws appstream create-streaming-url --stack-name session-context-test-stack \ 
   --fleet-name session-context-test-fleet \
   --user-id username –-validity 10000 \
   --application-id firefox --session-context "www.amazon.com"
   ```

1. 在浏览器中打开流式传输 URL。此脚本文件会启动 Firefox 并加载 `http://www.amazon.com`。

同样，您可以通过执行以下步骤将参数传递给 Linux 流应用程序。

**向 Linux 流应用程序传递参数**

1. 在左侧导航窗格中，依次选择**映像**和**映像生成器**。

1. 选择要使用的映像生成器，验证它是否处于**正在运行**状态，然后选择**连接**。

1. 默认使用以下身份登录映像生成器**ImageBuilderAdmin**。

1. 通过运行以下命令创建脚本文件（例如 launch-chromium.sh）：

   **sudo vim /usr/bin/launch-chromium.sh**

1. 编写脚本并设置可执行权限，如下所示：
**注意**  
\$1\$1 /在脚本中始终bin/bash and source /etc/profile是必需的。

   ```
   #!/bin/bash
   source /etc/profile
   /usr/bin/chromium-browser $APPSTREAM_SESSION_CONTEXT
   ```

1. 使用 Image Assistant CLI 添加 launch-chromium.sh：

   ```
   sudo AppStreamImageAssistant add-application \ 
   --name chromium \
   --absolute-app-path /usr/bin/launch-chromium.sh
   ```

1. 创建映像、实例集和堆栈。对于此示例，使用实例集名称 **session-context-test-fleet** 和堆栈名称 **session-context-test-stack**。

1. 队列运行后，您可以使用`session-context`参数[create-streaming-url](https://docs.aws.amazon.com/cli/latest/reference/appstream/create-streaming-url.html)进行调用，如本示例所示。

   ```
   aws appstream create-streaming-url --stack-name session-context-test-stack \ 
   --fleet-name session-context-test-fleet \
   --user-id username \
   --application-id chromium --session-context "www.amazon.com"
   ```

1. 在浏览器中打开流式传输 URL。批处理文件会启动 Chromium 并加载 `http://www.amazon.com`。