本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
一般故障排除
以下是您在使用 Amazon AppStream 2.0 时可能出现的一般问题。
问题
- SAML联邦不起作用。用户无权查看 AppStream 2.0 应用程序。
- 从ADFS门户网站联合后,我的直播会话无法启动。我收到错误消息“Sorry connection went down”。
- 我收到一个无效的重定向URI错误。
- 我的映像生成器和实例集永不会达到运行状态。我的DNS服务器位于 Simple AD 目录中。
- 我已为用户启用应用程序设置持久性,但其持久性应用程序设置未保存或未加载。
- 我为我的用户启用了应用程序设置持久性,但对于某些流应用程序,用户的密码不会跨会话保留。
- Google Chrome 的数据正在填充包含我用户的永久应用程序设置的VHD文件。这样可防止其设置持久性存在。我如何管理 Chrome 配置文件?
- 我为嵌入式 AppStream 2.0 直播会话设置了一个自定义域,但是我的 AppStream 2.0 直播URLs没有重定向到我的自定义域。
- 我在支持智能卡的 AppStream 2.0 舰队上启动了一个应用程序,但该应用程序可用于身份验证的证书数量有限(或没有)。
- 我的支持智能卡的 2.0 机 AppStream 队尚未启动认证传播服务。
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的文件中。
要解决该问题,请完成以下步骤:
在实例集实例中,打开文件资源管理器并浏览到用户配置文件目录 C:\Users\%username%。
确认此目录是否包含一个符号链接,然后执行以下任一操作:
如果存在一个符号链接,确认它指向 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
例如,在证书传播服务运行之前,以下脚本不会启动应用程序:
$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 队列上启动,请在队列实例启动时使用 Start-Ser
例如,如果以下 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) }