本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用自动创建 Amazon WorkSpaces 应用程序资源 AWS CloudFormation
Ram Kandaswamy,Amazon Web Services
Summary
此模式提供了使用AWS CloudFormation模板在中自动创建 Amazon A WorkSpaces pp
先决条件和限制
先决条件
活跃的 AWS 账户
接受 WorkSpaces 应用程序条款和条件
WorkSpaces 应用程序资源的基础知识,例如队列和堆栈以及映像生成器
限制
创建 WorkSpaces 应用程序实例后,您无法修改与该实例关联的 AWS Identity and Access Management(IAM) 角色。
架构
下图向您展示了如何使用 CloudFormation 模板自动创建 WorkSpaces 应用程序资源。

下图显示了如下工作流:
您可以根据此模式的 “其他信息” 部分中的 YAML 代码创建 CloudFormation 模板。
该 CloudFormation 模板创建了一个 CloudFormation 测试堆栈。
(可选)您可以使用 WorkSpaces 应用程序创建映像生成器实例。
(可选)您可以使用自定义软件创建 Windows 映像。
CloudFormation 堆栈创建 WorkSpaces 应用程序队列实例和堆栈。
您可以在 HTML5兼容的浏览器上将 WorkSpaces 应用程序资源部署给最终用户。
工具
Amazon A WorkSpaces pplications 是一项完全托管的应用程序流服务,可让您随时随地即时访问您的桌面应用程序。 WorkSpaces 应用程序管理托管和运行应用程序所需的 AWS 资源,自动扩展,并按需向用户提供访问权限。
AWS CloudFormation帮助您对资源进行建模和设置,快速一致地配置 AWS 资源,并在资源的整个生命周期中对其进行管理。您可以使用模板来描述资源及其依赖关系,然后将它们作为堆栈一起启动和配置,而不必单独管理资源。您可以跨多个 AWS 账户 和 AWS 区域管理和配置堆栈。
最佳实践
正确配置映像生成器的网络访问权限 — 使用 NAT 网关进行仅限出站互联网访问,在具有适当互联网访问权限的虚拟私有云 (VPC) 子网中启动映像生成器。
在创建映像之前,测试与所需资源(例如应用程序服务器、数据库和许可服务器)的网络连接。验证 VPC 路由表是否允许连接到所有必需的网络资源。有关更多信息,请参阅 WorkSpaces 应用程序文档中的互联网接入。
根据服务配额主动监控队列容量 — WorkSpaces 应用程序实例类型和大小配额按每个 AWS 账户、每个 AWS 区域。如果您在同一区域有多个实例集使用相同的实例类型和大小,则该区域所有实例集中的实例总数必须小于或等于适用的配额。有关更多信息,请参阅 WorkSpaces 应用程序文档中的队列故障排除。
部署队列之前,在 Image Builder 测试模式下测试应用程序 — 在创建映像并部署到队列之前,请务必在 Image Builder 测试模式下验证应用程序。测试模式模拟最终用户对舰队实例的有限权限。有关更多信息,请参阅 WorkSpaces 应用程序文档中的映像生成器故障排除。
操作说明
| Task | 说明 | 所需技能 |
|---|---|---|
更新 CloudFormation 模板。 |
| AWS 系统管理员、云管理员、云架构师、常规 AWS、AWS 系统管理员 |
使用模板创建 CloudFormation 堆栈。 |
| 应用程序所有者、AWS 系统管理员、Windows 工程师 |
问题排查
| 问题 | 解决方案 |
|---|---|
各种问题 | 有关更多信息,请参阅 WorkSpaces 应用程序文档中的故障排除。 |
相关资源
参考
教程和视频
附加信息
以下代码是一个模板示例,您可以使用该 CloudFormation 模板自动创建 WorkSpaces 应用程序资源。
AWSTemplateFormatVersion: 2010-09-09 Parameters: SubnetIds: Type: 'List<AWS::EC2::Subnet::Id>' testSecurityGroup: Type: 'AWS::EC2::SecurityGroup::Id' ImageName: Type: String Resources: AppStreamFleet: Type: 'AWS::AppStream::Fleet' Properties: ComputeCapacity: DesiredInstances: 5 InstanceType: stream.standard.medium Name: appstream-test-fleet DisconnectTimeoutInSeconds: 1200 FleetType: ON_DEMAND IdleDisconnectTimeoutInSeconds: 1200 ImageName: !Ref ImageName MaxUserDurationInSeconds: 345600 VpcConfig: SecurityGroupIds: - !Ref testSecurityGroup SubnetIds: !Ref SubnetIds AppStreamStack: Type: 'AWS::AppStream::Stack' Properties: Description: AppStream stack for test DisplayName: AppStream test Stack Name: appstream-test-stack StorageConnectors: - ConnectorType: HOMEFOLDERS UserSettings: - Action: CLIPBOARD_COPY_FROM_LOCAL_DEVICE Permission: ENABLED - Action: CLIPBOARD_COPY_TO_LOCAL_DEVICE Permission: ENABLED - Action: FILE_DOWNLOAD Permission: ENABLED - Action: PRINTING_TO_LOCAL_DEVICE Permission: ENABLED AppStreamFleetAssociation: Type: 'AWS::AppStream::StackFleetAssociation' Properties: FleetName: appstream-test-fleet StackName: appstream-test-stack DependsOn: - AppStreamFleet - AppStreamStack