BlueGreen Deployments of Serverless Applications

背景

您的组织最近决定采用无服务器架构来构建下一代服务API。开发团队已经使用AWS API Gateway和AWS Lambda为客户提供强大的API。然而,开发者一直在使用单一环境来构建和测试API,并且现在需要您的帮助来为测试(预生产)和生产目的构建完全隔离的环境。他们知道分离这些环境的重要性,以便在不影响使用稳定版本API的客户的情况下继续改进API。

任务

您被指派创建一个蓝/绿部署模型,作为组织内当前正在开发的各种服务API的基础。蓝/绿模型必须确保“预生产”(绿色)和“生产”(蓝色)环境的完全隔离。

创建Greeting API

  • 您首先创建了一个非常简单的API称为Greeting API。

  • 然后,创建了两个API Gateway阶段(staging 和 prod),一个实现API逻辑的Lambda函数(GreetingLambda),以及两个Lambda别名(staging 和 prod)。

  • 计划是让“staging” API端点解析到“staging” Lambda别名,“prod” API阶段解析到“prod” Lambda别名。

遇到的问题

当您从浏览器访问生产和预生产的API端点时,总是得到相同的结果,即使只向预生产环境部署了新更改。

重要参数

  • APIStagingStageGreetingURL: 预生产(Green) API环境的URL

  • APIProdStageGreetingURL: 生产(Blue) API环境的URL

  • CheckChallengeAnswerURL: 解决挑战后可以查看答案的URL

解决方案步骤

步骤1: 修改Lambda函数代码

  • 打开AWS Lambda控制台并选择GreetingLambda。

  • 使用编辑器将问候字符串从"Hello"更改为"Hi"。

  • 点击“部署”,然后点击“测试”以测试Lambda更改。

  • 创建测试事件,输入{"name": "awsstudent"}作为事件数据。

  • 测试完成后检查输出是否为{"greeting": "Hi, awsstudent!"}

步骤2: 发布新的Lambda函数版本并部署到预生产环境

  • 在Lambda控制台上发布一个新的版本。

  • 更新“staging”别名指向新发布的版本。

  • 测试“staging”别名确认输出正确。

步骤3: 排查API Gateway配置问题

  • 重新访问预生产和生产API端点。

  • 如果两个端点都返回{"greeting": "Hi, awsstudent!"},则说明API Gateway配置有误。

修复问题

  • 进入API Gateway控制台,检查每个阶段的集成请求设置。

  • 确保“staging”阶段的集成请求指向“staging” Lambda别名,而“prod”阶段的集成请求指向“prod” Lambda别名。

  • 保存更改后重新测试API端点。

完成挑战

  • 当您解决了这个问题,访问CheckChallengeAnswerURL以验证解决方案是否正确。

当我们按照步骤之后,问题出现在API上,这是我们只需要检查API即可

只需要将API中Lamdba函数添加${stageVariables.environment}即可

photo photo