【发布时间】:2021-09-04 04:24:00
【问题描述】:
说明
我正在使用 AWS 开发一个 Web 应用程序,为了将我的端点和 lambda 函数部署到我的沙箱中,我使用 cloudformation 来帮助管理资源。但是随着项目的发展,我发现我的template.yaml文件中有太多重复的资源比如:
CreateUserFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/function-user/
Handler: app.create
Environment:
Variables:
...
Policies:
...
Events:
xxxApi:
Type: Api
Properties:
Path: /users
Method: post
基本上我为每个端点创建了这种资源,template.yaml 的大小超过 2000 行。我认为应该有一些方法可以将模板文件切成小块以便于维护。
我尝试过的方法
- 我根据不同的端点将模板文件切成小块
- 我编写了一个包含以下操作的脚本:
- 端点资源合二为一,上传到S3存储桶
- 压缩每个 lambda 函数并上传 zip 文件
- 在每个模板文件(例如 UserResource.yaml 中定义了用户 CRUD 端点)中,我使用 S3 存储桶中的 zip 文件指定了 CodeUri
- 在主模板文件中,我使用 AWS::Include 从 S3 存储桶中导入合并的资源文件
结果
我尝试过的方法效果很好。它可以像以前一样成功部署资源,我最终得到一个不到 300 行的 template.yaml 和一堆切碎的 yaml 文件。
问题
即使我的解决方案有效,我认为这不是最佳实践,因为每次我想在更改后部署时,我都必须运行脚本来上传资源。我想知道管理资源的最佳做法。
我是 AWS 新手,非母语人士,如果我没有说清楚或犯了一些愚蠢的错误,请多多包涵,谢谢!
【问题讨论】:
标签: amazon-web-services amazon-cloudformation