第005题 - sap
多洛米蒂山上的紫金山-阿特拉斯彗星
题目翻译 (Question Translation)
English: A company uses a service to collect metadata from applications that the company hosts on premises. Consumer devices such as TVs and internet radios access the applications. Many older devices do not support certain HTTP headers and exhibit errors when these headers are present in responses. The company has configured an on-premises load balancer to remove the unsupported headers from responses sent to older devices, which the company identified by the User-Agent headers. The company wants to migrate the service to AWS, adopt serverless technologies, and retain the ability to support the older devices. The company has already migrated the applications into a set of AWS Lambda functions.
Which solution will meet these requirements?
中文翻译: 某公司使用一个服务来收集其本地托管应用程序的元数据。消费者设备(如电视和互联网收音机)通过该服务访问这些应用程序。许多旧设备不支持某些HTTP头信息,当这些头信息出现在响应中时会出现错误。公司已经在本地负载均衡器上配置了功能,可以根据User-Agent头信息识别旧设备,并从响应中移除不支持的头信息。 公司希望将服务迁移到AWS,采用无服务器技术,并保留对旧设备的支持能力。公司已经将应用程序迁移到一组AWS Lambda函数中。
以下哪种解决方案能够满足这些需求?
答案分析和选项对照
A. 创建一个Amazon CloudFront分配(distribution)用于元数据服务。创建一个应用负载均衡器(ALB)。配置CloudFront将请求转发到ALB。配置ALB调用正确的Lambda函数处理请求。创建一个CloudFront函数,根据User-Agent头信息移除不支持的HTTP头信息。
B. 为元数据服务创建一个Amazon API Gateway REST API。配置API Gateway调用正确的Lambda函数处理请求。修改默认的网关响应,根据User-Agent头信息移除不支持的HTTP头信息。
C. 为元数据服务创建一个Amazon API Gateway HTTP API。配置API Gateway调用正确的Lambda函数处理请求。创建一个响应映射模板,根据User-Agent移除不支持的HTTP头信息,并将该模板关联到HTTP API。
D. 创建一个Amazon CloudFront分配用于元数据服务。创建一个应用负载均衡器(ALB)。配置CloudFront将请求转发到ALB。配置ALB调用正确的Lambda函数处理请求。创建一个Lambda@Edge函数,根据User-Agent头信息在响应中移除不支持的HTTP头信息。
答案:D
解析 (Explanation)
选项D 是最佳答案,因为它结合了CloudFront和Lambda@Edge的强大功能,在请求到达客户端前动态修改响应,以移除不支持的HTTP头信息。以下是详细分析:
关键需求分析
- 无服务器架构
- 公司要求迁移到AWS并采用无服务器技术。AWS Lambda和Lambda@Edge完全符合无服务器需求,减少了管理负担。
- 支持旧设备
- 解决方案必须根据User-Agent头信息动态识别旧设备,并从响应中移除不支持的HTTP头信息,以确保兼容性和一致性。
- 动态修改响应
- 必须在HTTP响应中动态删除特定的头信息,这需要在流量返回到客户端前进行处理。
- 扩展能力和性能优化
- 必须支持高扩展性,同时减少延迟,提供最佳的用户体验。
选项D 的优势
- 使用Lambda@Edge实现动态修改响应
- Lambda@Edge允许在CloudFront的各个阶段(如请求或响应)执行代码。在响应阶段,它可以根据User-Agent头信息动态移除不支持的HTTP头信息,并将优化后的响应返回给客户端。
- CloudFront分配带来的性能优化
- CloudFront将请求分配到全球边缘位置,为用户提供低延迟的访问体验。它还可以缓存优化后的响应,进一步提高性能。
- 灵活路由和负载分配
- CloudFront将请求转发到ALB,ALB根据规则将请求分配给相应的Lambda函数,以处理具体的元数据请求。
- 完全无服务器架构
- 解决方案无需管理底层基础设施,完全基于AWS无服务器技术,降低运维成本。
其他选项的分析
- A. 使用CloudFront函数移除HTTP头信息
- 问题: CloudFront函数(CloudFront Functions)只能在请求阶段操作,无法修改返回给客户端的响应。因此不能满足需求。
- B. 使用API Gateway REST API
- 问题:
- REST API的默认网关响应机制仅支持有限的自定义,不能根据User-Agent动态移除HTTP头信息。
- REST API比HTTP API成本更高,且延迟更大,不适合简单的流量管理。
- 问题:
- C. 使用API Gateway HTTP API和响应映射模板
- 问题: 响应映射模板无法动态修改HTTP头信息,也不支持基于User-Agent的逻辑,因此不能满足动态响应修改的需求。
总结 (Summary)
选项D是最佳选择:
- 使用CloudFront和Lambda@Edge动态处理响应,确保兼容性和性能优化。
- 结合无服务器架构和边缘计算,满足公司对旧设备支持的需求,同时提供低延迟、高扩展性的解决方案。