这个项目能做什么

AWS 无服务器应用程序模型 (SAM) 转换是一个开源的 CloudFormation 宏,可将简化的 SAM 模板转换为标准的 CloudFormation 模板。它通过更高级别的资源类型(如 AWS::Serverless::Function、AWS::Serverless::Api 和 AWS::Serverless::SimpleTable)扩展了 CloudFormation 的原生语法,使开发人员能够以更少的样板代码定义无服务器应用程序。 主要功能包括: - **模板转换**:向 CloudFormation 模板添加 `Transform: AWS::Serverless-2016-10-31` 以启用 SAM 资源类型。转换将简写定义扩展为其完整的 CloudFormation 等效项,包括 IAM 角色、权限和事件源映射。 - **内置最佳实践**:自动预配具有最小权限策略的 IAM 角色,附加托管策略(如 AWSLambdaBasicExecutionRole),并为运行时、处理程序和超时设置应用合理的默认值。 - **本地测试和调试**:与 AWS SAM CLI(sam sync、sam local invoke、sam local start-api)集成,以便在部署到 AWS 之前在本地运行和测试无服务器应用程序。 - **策略模板和连接器**:支持可重用的 IAM 策略模板和资源连接器,以简化跨多个资源的权限管理。 - **多运行时支持**:支持包括 Node.js、Python、Java、Go、.NET 和 Ruby 在内的 Lambda 运行时,以及容器镜像部署。 该项目使用 Python (3.8+) 编写,并作为 `aws-sam-translator` 包发布在 PyPI 上。开发采用基于 Makefile 的工作流,使用 `make init` 进行依赖设置,使用 `make pr` 运行测试套件。代码库包含用于构建测试和架构更新的 CI 工作流,并支持通过 Gitpod 进行贡献。 典型用法包括编写 YAML 或 JSON 格式的 SAM 模板,使用 SAM CLI 或直接通过 CloudFormation 进行部署,并利用转换生成底层基础设施。该项目还提供广泛的文档,包括开发者指南、模板规范和研讨会教程,用于学习 AWS 上的无服务器开发。