一般故障排除 - 亚马逊 AppStream 2.0

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

一般故障排除

以下是您在使用 Amazon AppStream 2.0 时可能出现的一般问题。

SAML联邦不起作用。用户无权查看 AppStream 2.0 应用程序。

之所以会发生这种情况,是因为嵌入到 SAML 2.0 联合IAM角色的内联策略不包括对堆栈的权限ARN。该IAM角色由正在访问 AppStream 2.0 堆栈的联合用户担任。编辑角色权限以包含堆栈ARN。有关更多信息,请参阅亚马逊 AppStream 2.0 与 SAML 2.0 集成IAM用户指南》 AWS中的 “使用 SAML2.0 Federation 进行故障排除”。

从ADFS门户网站联合后,我的直播会话无法启动。我收到错误消息“Sorry connection went down”。

将声明规则的 NameID SAML 属性的传入声明类型设置为,UPN然后重试连接。

我收到一个无效的重定向URI错误。

出现此错误的原因是 AppStream 2.0 堆栈中继状态URL格式错误或无效。确保在联合设置中配置的中继状态与通过 AppStream 2.0 控制台显示在堆栈详细信息中的堆栈中继状态相同。如果它们相同但问题仍然存在,请与联系 AWS Support。有关更多信息,请参阅 亚马逊 AppStream 2.0 与 SAML 2.0 集成

我的映像生成器和实例集永不会达到运行状态。我的DNS服务器位于 Simple AD 目录中。

AppStream 2.0 依靠你内部的DNS服务器VPC为不存在的本地域名返回不存在的域 (NXDOMAIN) 响应。这样, AppStream 2.0 托管的网络接口就可以与管理服务器进行通信。

使用 Simple AD 创建目录时, AWS Directory Service 会创建两个同时代表您充当DNS服务器的域控制器。由于域控制器不提供NXDOMAIN响应,因此它们不能用于 AppStream 2.0。

我已为用户启用应用程序设置持久性,但其持久性应用程序设置未保存或未加载。

AppStream 2.0 会自动保存在 Windows 实例的特定位置创建的应用程序设置。仅当您的应用程序将这些设置保存在以下位置之一时,这些设置才会得以保存。有关受支持的位置的列表,请参阅应用程序设置持久性如何工作。如果您的应用程序配置为保存到 C:\Users\%username%,而用户的应用程序设置在会话之间不是持久性的,则可能无法创建挂载点。这样可以防止将设置保存到包含用户永久应用程序设置VHD的文件中。

要解决该问题,请完成以下步骤:

  1. 在实例集实例中,打开文件资源管理器并浏览到用户配置文件目录 C:\Users\%username%。

  2. 确认此目录是否包含一个符号链接,然后执行以下任一操作:

    • 如果存在一个符号链接,确认它指向 D:\%username%。

    • 如果没有符号链接,请尝试删除 C:\Users\%username% 目录。

      如果您无法删除此目录,请确定目录中使该目录无法删除的文件以及创建该文件的应用程序。然后与应用程序供应商联系,以获取有关如何更改文件权限或移动文件的信息。

      如果可以删除此目录,请联系以 AWS Support 获取解决此问题的进一步指导。有关更多信息,请参阅 AWS Support 中心

我为我的用户启用了应用程序设置持久性,但对于某些流应用程序,用户的密码不会跨会话保留。

此问题在以下情况下会出现:

  • 用户正在流式传输应用程序,例如使用微软数据保护的微软 Outlook API。

  • 已为未加入 Active Directory 域的流实例启用应用程序设置持久性。

如果流媒体实例未加入 Active Directory 域,则每个队列实例上的 Windows 用户是不同的。 PhotonUser由于DPAPI安全模型的工作方式,DPAPI在这种情况下使用的应用程序不会保留用户的密码。如果流媒体实例加入 Active Directory 域并且用户是域用户,则 Windows 用户名就是登录用户的用户名,并且使用的应用程序的用户密码将保留DPAPI。

Google Chrome 的数据正在填充包含我用户的永久应用程序设置的VHD文件。这样可防止其设置持久性存在。我如何管理 Chrome 配置文件?

默认情况下,Google Chrome 将用户数据和本地磁盘缓存都存储在 Windows 用户配置文件中。要防止本地磁盘缓存数据填充包含用户永久应用程序设置的VHD文件,请将 Chrome 配置为仅保存用户数据。为此,请在实例集实例中以管理员身份打开命令行,并用以下参数启动 Chrome,以更改磁盘缓存的位置:

chrome.exe --disk-cache-dir C:\path-to-unsaved-location\

使用这些参数运行 Chrome 可以防止磁盘缓存在 AppStream 2.0 会话之间保存。

我为嵌入式 AppStream 2.0 直播会话设置了一个自定义域,但是我的 AppStream 2.0 直播URLs没有重定向到我的自定义域。

要解决此问题,请验证在创建 AppStream 2.0 直播时URL,是否已将 AppStream 2.0 端点替换为自定义域。默认情况下, AppStream 2.0 流媒体的格式URLs如下:

https://appstream2.region.aws.amazon.com/authenticate?parameters=authenticationcode

要替换直播中的默认 AppStream 2.0 端点URL,请替换 https://appstream2.region 在URL使用您的自定义域名中。例如,如果您的自定义域名是training.example.com,则您的新直播URL必须遵循以下格式:

https://training.example.com/authenticate?parameters=authenticationcode

有关为嵌入式 AppStream 2.0 直播会话配置自定义域的更多信息,请参阅使用自定义域的配置要求

我在支持智能卡的 AppStream 2.0 舰队上启动了一个应用程序,但该应用程序可用于身份验证的证书数量有限(或没有)。

如果应用程序在证书传播服务处于运行状态之前启动,就会发生这种情况。

要解决此问题,请使用 Get-Serv ice PowerShell 模块查询证书传播服务的状态,并在启动应用程序之前确保其处于运行状态。

例如,在证书传播服务运行之前,以下脚本不会启动应用程序:

$logFile = "$Env:TEMP\AS2\Logging\$(Get-Date -Format "yyyy-MM-dd-HH-mm-ss")_applaunch.log" New-Item -path $logfile -ItemType File -Force | Out-Null Function Write-Log { Param ([string]$message) $stamp = Get-Date -Format "yyyy/MM/dd HH:mm:ss" $logoutput = "$stamp $message" Add-content $logfile -value $logoutput } if (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Running) { Write-Log "The Certificate Propagation Service is running. Launching Application..." try { Start-Process -FilePath "Path to Application" -WindowStyle Maximized -ErrorAction Stop } catch { Write-Log "There was an error launching the application: $_" } } else { do { $status = Get-Service "CertPropSvc" | select-object -ExpandProperty Status Write-Log "The Certificate Propagation service status is currently $status" Start-Sleep -Seconds 2 } until (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Running) write-log "The Certificate Propagation Service is running. Launching Application..." try { Start-Process -FilePath "Path to Application" -WindowStyle Maximized -ErrorAction Stop } catch { Write-Log "There was an error launching the application: $_" } }

我的支持智能卡的 2.0 机 AppStream 队尚未启动认证传播服务。

如果证书传播服务未启动,该服务的启动类型可能设置为已禁用。要解决此问题,请在用于创建队列映像的 AppStream 2.0 映像生成器上启动 Windows 服务 Microsoft 管理控制台,并确保证书传播服务的启动类型未设置为 “已禁用”。

如果启动类型未设置为已禁用,并且服务仍未在您的 AppStream 2.0 队列上启动,请在队列实例启动时使用 Start-Ser vice PowerShell 模块启动证书传播服务。

例如,如果以下 PowerShell 脚本检测到服务处于停止状态,它将启动该服务:

$logFile = "C:\AppStream\Logging\$(Get-Date -Format "yyyy-MM-dd-HH-mm-ss")_certpropcheck.log" New-Item -path $logfile -ItemType File -Force | Out-Null Function Write-Log { Param ([string]$message) $stamp = Get-Date -Format "yyyy/MM/dd HH:mm:ss" $logoutput = "$stamp $message" Add-content $logfile -value $logoutput } if (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Running) { Write-Log "The Certificate Propagation Service is running. Exiting..." Exit } else { do { if (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Stopped) { Write-Log "The Certificate Propagation Service is stopped, attepmting to start..." try { Start-Service -Name "CertPropSvc" -ErrorAction Stop } catch { Write-Log "There was a problem starting the service: $_" break } $status = Get-Service "CertPropSvc" | select-object -ExpandProperty Status Write-Log "The Certificate Propagation service status is currently $status" } else { $status = Get-Service "CertPropSvc" | select-object -ExpandProperty Status Write-Log "The Certificate Propagation service status is currently $status" break } } until (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Running) }