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}即可