简介
这是我使用Chatgpt作为我的代码审查助手建造的第二个开源项目,并进行了许多调试和故障排除。
在这个简单的应用程序后面,使用AWS Lambda,API Gateway和OpenWeatherMap进行了繁重。
问题语句
我想看看构建一个非常简单的无服务器天气应用程序,以检查下雨,下雪,多云等。我想打电话给受保护的公共API,运行lambda功能,并在天气条件下获得简单的简短结果在我本地的邮政编码中。
解决方案概述
您可能知道AWS Lambda是一款无服务器计算服务,它允许您在不配置或管理服务器,存储等无需配件。AWSAPI网关是一项全面管理的服务,用于创建,部署和管理API。通过利用AWS Lambda和API网关,您可以从无服务器体系结构中受益,这消除了管理基础架构的需求并启用自动缩放和高可用性。这种方法使我可以专注于应用程序的逻辑及其功能,而不必担心服务器设置,维护或可扩展性。
我将利用OpenWeatherMap API来检索给定位置的天气数据。为了实现这一目标,我将使用node.js和express.js来开发应用程序的逻辑。如上所述,该应用程序的核心将作为AWS lambda函数完成,该功能将在提出API请求时触发。 AWS API网关充当我的简单应用程序的前端,提供了用户可以访问的API端点。
设置开发环境
选择您对此感到满意的代码编辑器。一些流行的选项包括Visual Studio代码,原子或崇高文本。安装您选择的代码编辑器,并在其中打开项目目录。我倾向于使用Sublime或Visual Studio(VS)代码,VS代码很不错,因为您可以轻松提交,然后将代码推向GitHub。
部署到AWS Lambda和API网关
由于没有服务器,因此没有任何安装或更新,我们只需要使用AWS lambda和AWS API网关设置并配置一些东西。我不会介绍创建node.js应用程序的部署软件包,以及所有其他必要的文件,您可以简单地克隆我在github https://github.com/mwahl217/weather-app-aws上的存储库。您可以在编辑代码并输入OpenWeathMap的API密钥和特定位置信息时只需将ZIP文件上传到lambda。
创建一个AWS lambda函数:
•转到AWS管理控制台并导航到AWS Lambda服务。
单击创建函数并从头开始选择作者。
`提供功能的名称,选择node.js作为运行时,不必担心版本,然后选择适当的执行角色。注意,我确实使用了node.js 18.x,并将处理程序设置为index.handler。
在“功能代码”部分中,选择上传.zip文件并上传您从上下载的zip文件。
将处理程序设置为适当的值,例如app.handler或index.handler。
配置必要的环境变量,例如OpenWeatherMap API键,以及任何其他必需的配置值,例如您的邮政编码和国家 /地区。
`保存lambda功能。
设置API网关:
•转到AWS管理控制台并导航到API网关服务。
单击创建API并选择“ rest api”。
通过指定名称并选择适当的安全设置来配置API。
创建一个新的资源,例如/天气或对您有意义的一切。
在资源中添加一种方法,例如获取。
将集成类型配置为lambda函数,然后选择您上面创建的lambda函数。如果您还记得,只需返回您的lambda函数,然后在函数概述下,您将找到一个函数的行,您可以将其复制并粘贴到lambda函数字段中。
`保存API配置。
部署API:
在API网关控制台中,选择您创建的API。
``转到动作下拉列表,然后选择部署api。
选择一个舞台名称(例如,prod)并部署API。
注意将朝向屏幕顶部的生成的API端点URL。
测试已部署的应用程序:
``使用生成的API端点URL通过使HTTP获取请求到适当的资源路径(例如https://your-api-endpoint/prod
)来测试您已部署的应用程序。从终端中,您也可以使用简单的卷曲https://your-api-endpoint/prod
验证响应表明是否下雨,阴天,下雪。
最终想法和总结
记住根据您的特定要求来审查和配置必要的安全设置,例如身份验证和授权。
我确实决定使用一个简单的WAF Web ACL来限制可以从API访问的内容,以及我指定的一组特定的IP集。 AWS API网关还允许自定义域来帮助简化API URL,而不是随机的默认值,并遵循Execute-api.us-east-1.amazonaws.com,您的特定URL可能会有所不同,取决于AWS您正在用于部署的区域。