View a markdown version of this page

已知问题 - 研究与工程工作室

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

已知问题

2024.x 已知问题

........................

(2024.12 和 2024.12.01)注册新的 Cognito 用户时正则表达式失败

错误描述

如果您尝试通过门户网站注册电子邮件前缀包含” 的 AWS Cognito 用户 。 “,例如,这将导致错误<firstname>.<lastname>@<company>.com,指出 Cognito 用户名与定义的正则表达式模式不匹配。

参数无效错误

此错误是由于 RES 从用户的电子邮件前缀自动生成用户名引起的。但是,在 RES 支持的某些 Linux 发行版中,带有 “.” 的用户名不是 VDI 的有效用户。此修复程序在生成用户名时会删除电子邮件前缀中的任何 “.”,以便该用户名在 RES Linux VDI 上有效。

受影响的版本

RES 版本 2024.12 和 2024.12.01

缓解方法

  1. 运行以下命令进行下载patch.pycognito_sign_up_email_fix.patch对于版本 2024.12 或版本 2024.12.01,<output-directory>替换cognito_sign_up_email_fix.patch为要下载补丁脚本和补丁文件的目录以及 RES 环境<environment-name>的名称:

    1. 该补丁适用于 RES 2024.12 和 2024.12.01。

    2. 补丁脚本需要 AWS CLI v2、Python 3.9.16 或更高版本以及 Boto3。

    3. 为部署 RES 的账户和区域配置 AWS CLI,并确保您拥有 S3 权限来写入 RES 创建的存储桶。

    OUTPUT_DIRECTORY=<output-directory> ENVIRONMENT_NAME=<environment-name> RES_VERSION=<res-version> # either 2024.12 or 2024.12.01 mkdir -p ${OUTPUT_DIRECTORY} curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/${RES_VERSION}/patch_scripts/patch.py --output ${OUTPUT_DIRECTORY}/patch.py curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/${RES_VERSION}/patch_scripts/patches/cognito_sign_up_email_fix.patch --output ${OUTPUT_DIRECTORY}/cognito_sign_up_email_fix.patch
  2. 导航到下载补丁脚本和补丁文件的目录。运行以下补丁命令:

    python3 ${OUTPUT_DIRECTORY}/patch.py --environment-name ${ENVIRONMENT_NAME} --res-version ${RES_VERSION} --module cluster-manager --patch ${OUTPUT_DIRECTORY}/cognito_sign_up_email_fix.patch
  3. 为您的环境重新启动集群管理器实例。您也可以通过 Amazon EC2 管理控制台终止该实例。

    INSTANCE_ID=$(aws ec2 describe-instances \ --filters \ Name=tag:Name,Values=${ENVIRONMENT_NAME}-cluster-manager \ Name=tag:res:EnvironmentName,Values=${ENVIRONMENT_NAME}\ --query "Reservations[0].Instances[0].InstanceId" \ --output text) aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}
  4. 通过检查名称开头的 auto Scaling 组的活动,验证集群管理器实例的状态<RES-EnvironmentName>-cluster-manager-asg。等到新实例成功启动。

........................

(2024.12.01 及更早版本)使用自定义域连接到 VDI 时出现无效的错误证书错误

错误描述

使用自定义门户域名部署外部资源配方和 RES 时, CertificateRenewalNode 无法刷新 VDI 连接的 TLS 证书,错误如下:/var/log/user-data.log

{ "type": "urn:ietf:params:acme:error:unauthorized", "detail": "Error finalizing order :: OCSP must-staple extension is no longer available: see https://letsencrypt.org/2024/12/05/ending-ocsp", "status": 403 }

因此,当你在 RES 门户网站中连接到 VDI 时,你会遇到一个错误,上面写着 net::ERR_CERT_DATE_INVALID Error code: SSL_ERROR_BAD_CERT_DOMAIN (ChromeFireFox) 或 ()。

受影响的版本

2024.12.01 及更早版本

缓解方法

  1. 导航到 EC2 控制台。如果存在名为的实例CertificateRenewalNode-,则终止该实例。

  2. 导航到 Lambda 控制台。打开名为的 Lambda 函数的源代码。-CertificateRenewalLambda-找出以开头的行./acme.sh --issue --dns dns_aws --ocsp-must-staple --keylength 4096并移除--ocsp-must-staple参数。

  3. 选择 “部署”,等待代码更改生效。

  4. 要手动触发 Lambda 函数,请执行以下操作:前往 “测试” 选项卡,然后选择 “测试”。无需其他输入。这应该会创建一个证书 EC2 实例,用于更新 Secret Manager 中的证书和 PrivateKey 机密。密钥更新后,实例将自动终止。

  5. 终止现有 dcv-gateway 实例:<env-name>-vdc-gateway然后等待 auto Scaling 组自动部署一个新实例。

错误详情

Let's Encrypt 将于 2025 年终止 OCSP 支持。从 2025 年 1 月 30 日起,除非 Must-Staple 请求的账户之前已颁发包含 OCSP Must Staple 扩展名的证书,否则 OCSP 请求将失败。查看https://letsencrypt.org/2024/12/05/ending-ocsp/更多详情。

........................

(2024.12 和 2024.12.01)Active Directory 用户无法通过 SSH 连接到堡垒主机

错误描述

Active Directory 用户在按照 RES 门户网站的说明连接到堡垒主机时会收到权限被拒绝的错误。

由于缺少环境变量,在堡垒主机上运行的 Python 应用程序无法启动 SSSD 服务。因此,操作系统不知道 AD 用户,因此无法登录。

受影响的版本

2024.12 和 2024.12.01

缓解方法

  1. 从 EC2 控制台连接到堡垒主机实例。

  2. 在 IDEA_CLUSTER_NAME 下编辑/etc/environment并添加environment_name=<res-environment-name>为新行。

  3. 在实例上运行以下命令:

    source /etc/environment sudo service supervisord restart sudo systemctl restart supervisord
  4. 按照 RES 门户网站的说明再次尝试连接堡垒主机。

........................

(2024.10) 部署在隔离 VPC 中的 RES 环境的 VDI auto stop 中断

错误描述

在 2024.10 RES 版本中,为在一段时间内处于空闲状态的 VDI 添加了 VDI 自动停止。可以在桌面设置 → 服务器 → 会话中配置此设置。

部署在隔离 VPC 中的 RES 环境目前不支持 VDI auto stop。

受影响的版本

2024.10

缓解方法

我们目前正在研究一个修复程序,该修复程序将包含在未来的版本中。但是,在部署在隔离 VPC 中的 RES 环境中,仍然可以手动停止 VDI。

........................

(2024.10 及更早版本)无法为图形增强型实例类型启动 VDI

错误描述

当在图形增强型实例类型(g4、g5)上启动亚马逊 Linux 2-x86_64、RHEL 8-x86_64 或 RHEL 9 x86_64 VDI 时,该实例将停留在配置状态。这意味着该实例将永远无法进入 “就绪” 状态并可供连接。

发生这种情况是因为 X Server 无法在实例上正确实例化。应用此补丁后,我们还建议您将图形实例软件堆栈的根卷大小增加到 50GB,以确保有足够的空间来安装所有依赖项。

受影响的版本

所有 RES 版本 2024.10 或更早版本。

缓解方法

  1. 下载 patch.py 和 g raphic_enhanced_instance_types_fix.pat ch,方法是在以下命令中<output-directory>替换为要下载补丁脚本和补丁文件的目录以及 RES 环境的名称:<environment-name>

    1. 该补丁仅适用于 RES 2024.10。

    2. 补丁脚本需要 AWS CLI v2、Python 3.9.16 或更高版本以及 Boto3。

    3. 为部署 RES 的账户和区域配置 AWS CLI,并确保您拥有 S3 权限来写入 RES 创建的存储桶。

    OUTPUT_DIRECTORY=<output-directory> ENVIRONMENT_NAME=<environment-name> mkdir -p ${OUTPUT_DIRECTORY} curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.10/patch_scripts/patch.py --output ${OUTPUT_DIRECTORY}/patch.py curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.10/patch_scripts/patches/graphic_enhanced_instance_types_fix.patch --output ${OUTPUT_DIRECTORY}/graphic_enhanced_instance_types_fix.patch
  2. 导航到下载补丁脚本和补丁文件的目录。运行以下补丁命令:

    python3 ${OUTPUT_DIRECTORY}/patch.py --environment-name ${ENVIRONMENT_NAME} --res-version 2024.10 --module virtual-desktop-controller --patch ${OUTPUT_DIRECTORY}/graphic_enhanced_instance_types_fix.patch
  3. 要终止您的环境的虚拟桌面控制器(vdc-controller)实例,请运行以下命令,替换所示的 RES 环境名称。

    INSTANCE_ID=$(aws ec2 describe-instances \ --filters \ Name=tag:Name,Values=${ENVIRONMENT_NAME}-vdc-controller \ Name=tag:res:EnvironmentName,Values=${ENVIRONMENT_NAME}\ --query "Reservations[0].Instances[0].InstanceId" \ --output text) aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}
  4. 在名称<RES-EnvironmentName>-vdc-ext开头的目标组运行正常后启动新实例。我们建议您为图形实例注册的任何新软件堆栈至少有 50GB 的存储空间。

........................

(2024.08) 准备基础设施 AMI 故障

错误描述

根据先决条件文档中列出的说明使用 EC2 Image Builder 准备 AMI 时,构建过程失败并显示以下错误消息:

CmdExecution: [ERROR] Command execution has resulted in an error

这是由于文档中提供的依赖项文件中存在错误。

受影响的版本

2024.08

缓解方法

创建新的 EC2 Image Builder 资源:

(如果您从未为 RES 实例准备 AMI,请按照以下步骤操作)

  1. 下载更新后的 res-installation-scripts.tar.gz 文件。

  2. 按照先决条件页面上准备 Amazon 系统映像 (AMI) 下列出的步骤进行操作。

重复使用之前的 EC2 Image Builder 资源:

(如果您已为 RES 实例准备好了 AMI,请按照以下步骤操作)

  1. 下载更新后的 res-installation-scripts.tar.gz 文件。

  2. 导航到 EC2 Image Builder → 组件 → 点击为准备 RES AMI 而创建的组件。

  3. 请注意 “内容” → “ DownloadRESInstallScripts 步骤” → “输入” → “来源” 下列出的 S3 位置。

  4. 上面找到的 S3 位置包含以前使用的依赖关系文件,请将此文件替换为第一步中下载的文件。

........................

(2024.08) 虚拟桌面无法挂载带有根存储桶 ARN 和自定义前缀的 read/write Amazon S3 存储桶

错误描述

使用根存储 read/write 桶 ARN(即)和自定义前缀(项目名称或项目名称和用户名)时,Research and Engineering Studio 2024.08 无法将 S3 存储桶安装到虚拟桌面基础架构 (VDIarn:aws:s3:::example-bucket) 实例上。

不受此问题影响的存储桶配置包括:

  • 只读存储桶

  • read/write 存储桶 ARN 中包含前缀(即arn:aws:s3:::example-bucket/example-folder-prefix)和自定义前缀(项目名称或项目名称和用户名)

  • read/write 带有根存储桶 ARN 但没有自定义前缀的存储桶

在您配置 VDI 实例后,该 S3 存储桶的指定装载目录将不会装载该存储桶。尽管 VDI 上的挂载目录将存在,但该目录将为空且不包含存储桶的当前内容。当您使用终端将文件写入目录时,Permission denied, unable to write a file将引发错误,并且文件内容不会上传到相应的 S3 存储桶。

受影响的版本

2024.08

缓解方法

  1. 要下载补丁脚本和补丁文件(patch.pys3_mount_custom_prefix_fix.patch),请运行以下命令,<output-directory>替换为要下载补丁脚本和补丁文件的目录以及 <environment-name> RES 环境的名称:

    1. 该补丁仅适用于 RES 2024.08。

    2. 补丁脚本需要 AWS CLI v2、Python 3.9.16 或更高版本以及 Boto3。

    3. 为部署 RES 的账户和区域配置 AWS CLI,并确保您拥有 Amazon S3 权限来写入由 RES 创建的存储桶。

    OUTPUT_DIRECTORY=<output-directory> ENVIRONMENT_NAME=<environment-name> mkdir -p ${OUTPUT_DIRECTORY} curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.08/patch_scripts/patch.py --output ${OUTPUT_DIRECTORY}/patch.py curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.08/patch_scripts/patches/s3_mount_custom_prefix_fix.patch --output ${OUTPUT_DIRECTORY}/s3_mount_custom_prefix_fix.patch
  2. 导航到下载补丁脚本和补丁文件的目录。运行以下补丁命令:

    python3 ${OUTPUT_DIRECTORY}/patch.py --environment-name ${ENVIRONMENT_NAME} --res-version 2024.08 --module virtual-desktop-controller --patch ${OUTPUT_DIRECTORY}/s3_mount_custom_prefix_fix.patch
  3. 要终止您环境的虚拟桌面控制器(vdc-controller)实例,请运行以下命令。(在第一步中,您已经将ENVIRONMENT_NAME变量设置为 RES 环境的名称。)

    INSTANCE_ID=$(aws ec2 describe-instances \ --filters \ Name=tag:Name,Values=${ENVIRONMENT_NAME}-vdc-controller \ Name=tag:res:EnvironmentName,Values=${ENVIRONMENT_NAME}\ --query "Reservations[0].Instances[0].InstanceId" \ --output text) aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}
    注意

    对于私有 VPC 设置,如果您还没有这样做,请务必为<RES-EnvironmentName>-vdc-custom-credential-broker-lambda函数添加Environment variable名称AWS_STS_REGIONAL_ENDPOINTS和值。regional请参阅隔离 VPC 部署的 Amazon S3 存储桶先决条件了解更多信息。

  4. 以该名称<RES-EnvironmentName>-vdc-ext开头的目标组运行正常后,需要启动新的 VDI,以正确安装带有根存储 read/write 桶 ARN 和自定义前缀的 S3 存储桶。

........................

(2024.06) 当 AD 组名称包含空格时,应用快照失败

问题

如果 AD 组的名称中包含空格,则 RES 2024.06 将无法应用先前版本的快照。

在 AD 同步期间,集群管理器 CloudWatch 日志(在/<environment-name>/cluster-manager日志组下)将包含以下错误:

[apply-snapshot] authz.role-assignments/<Group name with spaces>:group#<projectID>:project FAILED_APPLY because: [INVALID_PARAMS] Actor key doesn't match the regex pattern ^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{1,20}:(user|group)$

该错误是由于 RES 仅接受符合以下要求的组名:

  • 它只能包含小写和大写的 ASCII 字母、数字、破折号 (-)、句点 (.) 和下划线 (_)

  • 不允许使用破折号 (-) 作为第一个字符

  • 它不能含有空格。

受影响的版本

2024.06

缓解方法

  1. 要下载补丁脚本和补丁文件(patch.py 和 g roupname_regex.patch),请运行以下命令,<output-directory>替换为要存放文件的目录和 RES 环境<environment-name>的名称:

    1. 该补丁仅适用于 RES 2024.06

    2. 补丁脚本需要 AWS CLI v2、Python 3.9.16 或更高版本以及 Boto3。

    3. 为部署 RES 的账户和区域配置 AWS CLI,并确保您拥有 S3 权限来写入 RES 创建的存储桶:

      OUTPUT_DIRECTORY=<output-directory> ENVIRONMENT_NAME=<environment-name> mkdir -p ${OUTPUT_DIRECTORY} curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.06/patch_scripts/patch.py --output ${OUTPUT_DIRECTORY}/patch.py curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.06/patch_scripts/patches/groupname_regex.patch --output ${OUTPUT_DIRECTORY}/groupname_regex.patch
  2. 导航到下载补丁脚本和补丁文件的目录。运行以下补丁命令:

    python3 patch.py --environment-name ${ENVIRONMENT_NAME} --res-version 2024.06 --module cluster-manager --patch ${OUTPUT_DIRECTORY}/groupname_regex.patch
  3. 要重启您的环境的集群管理器实例,请运行以下命令:您也可以从 Amazon EC2 管理控制台终止该实例。

    INSTANCE_ID=$(aws ec2 describe-instances \ --filters \ Name=tag:Name,Values=${ENVIRONMENT_NAME}-cluster-manager \ Name=tag:res:EnvironmentName,Values=${ENVIRONMENT_NAME}\ --query "Reservations[0].Instances[0].InstanceId" \ --output text) aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}
注意

该补丁允许 AD 组名称包含小写和大写的 ASCII 字母、数字、短划线 (-)、句点 (.)、下划线 (_) 以及总长度介于 1 到 30 之间(含)的空格。

........................

(2024.06 及更早版本)在 AD 同步期间,群组成员未与 RES 同步

错误描述

如果 GroupOU 与 userOU 不同,群组成员将无法正确同步到 RES。

尝试同步 AD 组中的用户时,RES 会创建 ldapsearch 过滤器。当前过滤器错误地使用了 userOu 参数而不是 groupOU 参数。结果是搜索未能返回任何用户。只有在 UsersOU 和 groupOU 不同的情况下才会出现这种行为。

受影响的版本

所有 RES 版本 2024.06 或更早版本

缓解方法

请按照以下步骤解决问题:

  1. 要下载 patch.py 脚本和 group_member_sync_bug_fix.patch 文件,请运行以下命令,<output-directory>替换为要下载文件的本地目录和要修补的 RES 版本:<res_version>

    注意
    • 补丁脚本需要 AWS CLI v2、Python 3.9.16 或更高版本以及 Boto3。

    • 为部署 RES 的账户和区域配置 AWS CLI,并确保您拥有 S3 权限来写入 RES 创建的存储桶。

    • 该补丁仅支持 RES 版本 2024.04.02 和 2024.06。如果您使用的是 2024.04 或 2024.04.01,则在应用补丁之前,可以按照中列出的步骤将您的环境先更新次要版本更新到 2024.04.02。

      • RES 版本:RES 2024.04.02

        补丁下载链接:20 24.04.02_group_member_sync_bug_fix.patch

      • RES 版本:RES 2024.06

        补丁下载链接:202 4.06_group_member_sync_bug_fix.patch

    OUTPUT_DIRECTORY=<output-directory> RES_VERSION=<res_version> mkdir -p ${OUTPUT_DIRECTORY} curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/${RES_VERSION}/patch_scripts/patch.py --output ${OUTPUT_DIRECTORY}/patch.py curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/${RES_VERSION}/patch_scripts/patches/${RES_VERSION}_group_member_sync_bug_fix.patch --output ${OUTPUT_DIRECTORY}/${RES_VERSION}_group_member_sync_bug_fix.patch
  2. 导航到下载补丁脚本和补丁文件的目录。运行以下补丁命令,<environment-name>替换为 RES 环境的名称:

    cd ${OUTPUT_DIRECTORY} ENVIRONMENT_NAME=<environment-name> python3 patch.py --environment-name ${ENVIRONMENT_NAME} --res-version ${RES_VERSION} --module cluster-manager --patch $PWD/${RES_VERSION}_group_member_sync_bug_fix.patch
  3. 要重新启动环境的集群管理器实例,请运行以下命令:

    INSTANCE_ID=$(aws ec2 describe-instances \ --filters \ Name=tag:Name,Values=${ENVIRONMENT_NAME}-cluster-manager \ Name=tag:res:EnvironmentName,Values=${ENVIRONMENT_NAME}\ --query "Reservations[0].Instances[0].InstanceId" \ --output text) aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}

........................

(2024.06 及更早版本) CVE-2024-6387、RegressHion、RHEL9 和 Ubuntu VDI 中的安全漏洞

错误描述

CVE-2024-6387,名为 RegressHion,已在 OpenSSH 服务器中被发现。此漏洞使未经身份验证的远程攻击者能够在目标服务器上执行任意代码,从而给使用 OpenSSH 进行安全通信的系统带来严重风险。

对于 RES,标准配置是通过堡垒主机通过 SSH 进入虚拟桌面,堡垒主机不受此漏洞的影响。但是,我们在所有 RES 版本中为 RHEL9 和 Ubuntu2024 vDI(虚拟桌面基础架构)提供的默认 AMI(亚马逊系统映像)使用的是容易受到安全威胁攻击的 OpenSSH 版本。

这意味着现有的 RHEL9 和 Ubuntu2024 VDI 可能被利用,但攻击者需要访问堡垒主机。

有关该问题的更多细节可以在这里找到。

受影响的版本

所有 RES 版本 2024.06 或更早版本。

缓解方法

RHEL9 和 Ubuntu 都发布了修复安全漏洞的 OpenSSH 补丁。可以使用平台的相应软件包管理器进行提取。

如果您已有 RHEL9 或 Ubuntu VDI,我们建议您按照以下修补现有 VDI 的说明进行操作。要修补未来的 VDI,我们建议按照 PATCH FUTURE VDI 的说明进行操作。这些说明描述了如何运行脚本以在您的 VDI 上应用平台更新。

修补现有 VDI
  1. 运行以下命令以修补所有现有的 Ubuntu 和 RHEL9 VDI:

    1. 补丁脚本需要 AWS CLI v2

    2. 为部署 RES 的账户和区域配置 AWS CLI,并确保您拥有发送 S AWS ystems Manager 运行命令的 Systems Manager 权限。

      aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --targets "Key=tag:res:NodeType,Values=virtual-desktop-dcv-host" \ --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.06/patch_scripts/scripts/patch_openssh.sh\"}"],"commandLine":["bash patch_openssh.sh"]}'
  2. 您可以在 “运行命令” 页面上验证脚本是否成功运行。单击 “命令历史记录” 选项卡,选择最新的命令 ID,然后确认所有实例 ID 都有成功消息。

修补未来的 VDI
  1. 要下载补丁脚本和补丁文件(patch.pyupdate_openssh.patch),请运行以下命令,<output-directory>替换为要下载文件的目录和 RES 环境<environment-name>的名称:

    注意
    • 该补丁仅适用于 RES 2024.06。

    • 补丁脚本需要 AWS CLI v2)、Python 3.9.16 或更高版本以及 Boto3。

    • 为部署 RES 的账户和区域配置 AWS CLI 副本,并确保您拥有 S3 权限来写入 RES 创建的存储桶。

    OUTPUT_DIRECTORY=<output-directory> ENVIRONMENT_NAME=<environment-name> curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.06/patch_scripts/patch.py --output ${OUTPUT_DIRECTORY}/patch.py curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.06/patch_scripts/patches/update_openssh.patch --output ${OUTPUT_DIRECTORY}/update_openssh.patch
  2. 运行以下补丁命令:

    python3 ${OUTPUT_DIRECTORY}/patch.py --environment-name ${ENVIRONMENT_NAME} --res-version 2024.06 --module virtual-desktop-controller --patch ${OUTPUT_DIRECTORY}/update_openssh.patch
  3. 使用以下命令重新启动您的环境的 VDC 控制器实例:

    INSTANCE_ID=$(aws ec2 describe-instances \ --filters \ Name=tag:Name,Values=${ENVIRONMENT_NAME}-vdc-controller \ Name=tag:res:EnvironmentName,Values=${ENVIRONMENT_NAME}\ --query "Reservations[0].Instances[0].InstanceId" \ --output text) aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}
重要

只有 RES 版本 2024.06 及更高版本支持修补 future VDI。要在版本早于 2024.06 的 RES 环境中修补未来的 VDI,请首先使用以下说明将 RES 环境升级到 2024.06。主要版本更新

........................

(2024.04-2024.04.02) 提供的 IAM 权限边界未附加到 VDI 实例的角色

这个问题

虚拟桌面会话无法正确继承其项目的权限边界配置。这是因为在项目创建过程中,未将 IAMPermissionBoundary 参数定义的权限边界正确分配给该项目。

受影响的版本

2024.04-2024.04.02

缓解方法

按照以下步骤允许 VDI 正确继承分配给项目的权限边界:

  1. 要下载补丁脚本和补丁文件(patch.pyvdi_host_role_permission_boundary.patch),请运行以下命令,替换<output-directory>为要存放文件的本地目录:

    1. 该补丁仅适用于 RES 2024.04.02。如果您使用的是版本 2024.04 或 2024.04.01,则可以按照公共文档中列出的次要版本更新的步骤将您的环境更新到 2024.04.02。

    2. 补丁脚本需要 AWS CLI v2)、Python 3.9.16 或更高版本以及 Boto3。

    3. 为部署 RES 的账户和区域配置 AWS CLI,并确保您拥有 S3 权限来写入 RES 创建的存储桶。

    OUTPUT_DIRECTORY=<output-directory> curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.04.02/patch_scripts/patch.py --output ${OUTPUT_DIRECTORY}/patch.py curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.04.02/patch_scripts/patches/vdi_host_role_permission_boundary.patch --output ${OUTPUT_DIRECTORY}/vdi_host_role_permission_boundary.patch
  2. 导航到下载补丁脚本和补丁文件的目录。运行以下补丁命令,<environment-name>替换为 RES 环境的名称:

    python3 patch.py --environment-name <environment-name> --res-version 2024.04.02 --module cluster-manager --patch vdi_host_role_permission_boundary.patch
  3. 通过运行此命令在您的环境中重启集群管理器实例,<environment-name>替换为 RES 环境的名称。您也可以通过 Amazon EC2 管理控制台终止该实例。

    ENVIRONMENT_NAME=<environment-name> INSTANCE_ID=$(aws ec2 describe-instances \ --filters \ Name=tag:Name,Values=${ENVIRONMENT_NAME}-cluster-manager \ Name=tag:res:EnvironmentName,Values=${ENVIRONMENT_NAME}\ --query "Reservations[0].Instances[0].InstanceId" \ --output text) aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}

........................

(2024.04.02 及更早版本)ap-southeast-2(悉尼)中的 Windows NVIDIA 实例无法启动

这个问题

Amazon 机器映像 (AMI) 用于在 RES 中启动具有特定配置的虚拟桌面 (VDI)。每个 AMI 都有一个关联 ID,该ID因地区而异。在 RES 中配置的用于在 ap-southeast-2(悉尼)中启动 Windows Nvidia 实例的 AMI ID 目前不正确。

AMI-ID ami-0e190f8939a996caf对于这种类型的实例,在 ap-southeast-2(悉尼)中列出的配置不正确。ami-027cf6e71e2e442f4应改用 AMI ID。

用户在尝试使用默认 ami-0e190f8939a996caf AMI 启动实例时会遇到以下错误。

An error occured (InvalidAMIID.NotFound) when calling the RunInstances operation: The image id ‘[ami-0e190f8939a996caf]’ does not exist

重现该错误的步骤,包括示例配置文件:

  • 在 ap-southeast-2 区域部署 RES。

  • 使用 Windows-NVIDIA 默认软件堆栈 (AMI IDami-0e190f8939a996caf) 启动实例。

受影响的版本

所有 RES 版本 2024.04.02 或更早版本都受到影响

缓解方法

以下缓解措施已在 RES 版本 2024.01.01 上进行了测试:

  • 使用以下设置注册新的软件堆栈

    • AMI ID:ami-027cf6e71e2e442f4

    • 操作系统:Windows

    • GPU 制造商:英伟达

    • 最小。存储空间大小 (GB):30

    • 最小。内存 (GB): 4

  • 使用此软件堆栈启动 Windows-NVIDIA 实例

........................

(2024.04 和 2024.04.01) RES 删除失败 GovCloud

这个问题

在 RES 删除工作流程中,UnprotectCognitoUserPoolLambda 会停用稍后将被删除的 Cognito 用户池的删除保护。Lambda 执行由启动。InstallerStateMachine

由于商业版和 GovCloud 区域之间的默认 AWS CLI 版本存在差异,因此 Lambda 中的update_user_pool调用在区域中 GovCloud 将失败。

客户在尝试删除 GovCloud 区域中的 RES 时会遇到以下错误:

Parameter validation failed: Unknown parameter in input: \"DeletionProtection\", must be one of: UserPoolId, Policies, LambdaConfig, AutoVerifiedAttributes, SmsVerificationMessage, EmailVerificationMessage, EmailVerificationSubject, VerificationMessageTemplate, SmsAuthenticationMessage, MfaConfiguration, DeviceConfiguration, EmailConfiguration, SmsConfiguration, UserPoolTags, AdminCreateUserConfig, UserPoolAddOns, AccountRecoverySetting

重现错误的步骤:

  • 在某个 GovCloud 区域部署 RES

  • 删除 RES 堆栈

受影响的版本

RES 版本 2024.04 和 2024.04.01

缓解方法

以下缓解措施已在 RES 版本 2024.04 上进行了测试:

  • 打开 UnprotectCognitoUserPool Lambda

    • 命名惯例:<env-name>-InstallerTasksUnprotectCognitoUserPool-...

  • 运行时设置-> 编辑-> 选择 “运行时Python 3.11-> “保存”。

  • 打开 CloudFormation。

  • 删除 RES 堆栈-> 取消选中 “保留安装程序资源”-> “删除”

........................

(2024.04-2024.04.02) Linux 虚拟桌面在重启时可能处于 “恢复” 状态

这个问题

在手动或计划停止后重新启动时,Linux 虚拟桌面可能会停留在 “恢复” 状态。

实例重启后,S AWS ystems Manager 不会运行任何远程命令来创建新的 DCV 会话,并且 vdc-controller CloudWatch 日志(在日志组下)中缺少以下日志消息:/<environment-name>/vdc/controller CloudWatch

Handling message of type DCV_HOST_REBOOT_COMPLETE_EVENT

受影响的版本

2024.04-2024.04.02

缓解方法

要恢复停留在 “正在恢复” 状态的虚拟桌面,请执行以下操作:

  1. 从 EC2 控制台通过 SSH 连接到问题实例。

  2. 在实例上运行以下命令:

    sudo su - /bin/bash /root/bootstrap/latest/virtual-desktop-host-linux/configure_post_reboot.sh sudo reboot
  3. 等待实例重启。

要防止新的虚拟桌面遇到同样的问题,请执行以下操作:

  1. 要下载补丁脚本和补丁文件(patch.pyvdi_stuck_in_resuming_status.patch),请运行以下命令,替换为要存放文件的目录:<output-directory>

    注意
    • 该补丁仅适用于 RES 2024.04.02。

    • 补丁脚本需要 AWS CLI v2、Python 3.9.16 或更高版本以及 Boto3。

    • 为部署 RES 的账户和区域配置 AWS CLI,并确保您拥有 S3 权限来写入 RES 创建的存储桶。

    OUTPUT_DIRECTORY=<output-directory> curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.04.02/patch_scripts/patch.py --output ${OUTPUT_DIRECTORY}/patch.py curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.04.02/patch_scripts/patches/vdi_stuck_in_resuming_status.patch --output ${OUTPUT_DIRECTORY}/vdi_stuck_in_resuming_status.patch
  2. 导航到下载补丁脚本和补丁文件的目录。运行以下补丁命令,<environment-name>替换为 RES 环境的<aws-region>名称和部署 RES 的区域:

    python3 patch.py --environment-name <environment-name> --res-version 2024.04.02 --module virtual-desktop-controller --patch vdi_stuck_in_resuming_status.patch --region <aws-region>
  3. 要重新启动您的环境的 VDC 控制器实例,请运行以下命令,<environment-name>替换为 RES 环境的名称:

    ENVIRONMENT_NAME=<environment-name> INSTANCE_ID=$(aws ec2 describe-instances \ --filters \ Name=tag:Name,Values=${ENVIRONMENT_NAME}-vdc-controller \ Name=tag:res:EnvironmentName,Values=${ENVIRONMENT_NAME}\ --query "Reservations[0].Instances[0].InstanceId" \ --output text) aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}

........................

(2024.04.02 及更早版本) 无法同步 SAMAccountName 属性包含大写字母或特殊字符的 AD 用户

这个问题

SSO 设置至少两个小时(两个 AD 同步周期)后,RES 无法同步 AD 用户。集群管理器 CloudWatch 日志(在/<environment-name>/cluster-manager日志组下)在 AD 同步期间包含以下错误:

Error: [INVALID_PARAMS] Invalid params: user.username must match regex: ^(?=.{3,20}$)(?![_.])(?!.*[_.]{2})[a-z0-9._]+(?<![_.])$

该错误是由于 RES 仅接受符合以下要求的 SamAccount 用户名:

  • 它只能包含小写的 ASCII 字母、数字、句点 (.)、下划线 (_)。

  • 不允许使用句点或下划线作为第一个或最后一个字符。

  • 它不能包含两个连续的句点或下划线(例如..、__、._、_。)。

受影响的版本

2024.04.02 及更早版本

缓解方法

  1. 要下载补丁脚本和补丁文件(patch.py 和 s amaccountname_regex.patch),请运行以下命令,<output-directory>替换为要存放文件的目录:

    注意
    • 该补丁仅适用于 RES 2024.04.02。

    • 补丁脚本需要 AWS CLI v2、Python 3.9.16 或更高版本以及 Boto3。

    • 为部署 RES 的账户和区域配置 AWS CLI,并确保您拥有 S3 权限来写入 RES 创建的存储桶。

    OUTPUT_DIRECTORY=<output-directory> curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.04.02/patch_scripts/patch.py --output ${OUTPUT_DIRECTORY}/patch.py curl https://research-engineering-studio-us-east-1.s3.amazonaws.com/releases/2024.04.02/patch_scripts/patches/samaccountname_regex.patch --output ${OUTPUT_DIRECTORY}/samaccountname_regex.patch
  2. 导航到下载补丁脚本和补丁文件的目录。运行以下补丁命令,<environment-name>替换为 RES 环境的名称:

    python3 patch.py --environment-name <environment-name> --res-version 2024.04.02 --module cluster-manager --patch samaccountname_regex.patch
  3. 要重新启动环境的集群管理器实例,请运行以下命令,<environment-name>替换为 RES 环境的名称。您也可以通过 Amazon EC2 管理控制台终止该实例。

    ENVIRONMENT_NAME=<environment-name> INSTANCE_ID=$(aws ec2 describe-instances \ --filters \ Name=tag:Name,Values=${ENVIRONMENT_NAME}-cluster-manager \ Name=tag:res:EnvironmentName,Values=${ENVIRONMENT_NAME}\ --query "Reservations[0].Instances[0].InstanceId" \ --output text) aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}

........................

(2024.04.02 及更早版本)用于访问堡垒主机的私钥无效

这个问题

当用户从 RES 门户网站下载私钥以访问堡垒主机时,密钥的格式不正确,多行被下载为一行,这使得密钥无效。当用户尝试使用下载的密钥访问堡垒主机时,他们将收到以下错误:

Load key "<downloaded-ssh-key-path>": error in libcrypto <user-name>@<bastion-host-public-ip>: Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

受影响的版本

2024.04.02 及更早版本

缓解方法

我们建议使用 Chrome 下载密钥,因为此浏览器不受影响。

或者,可以通过在密钥文件后面创建一个新行,在前面-----END PRIVATE KEY-----创建一个新行-----BEGIN PRIVATE KEY-----,来重新格式化密钥文件。

........................