我一直在尝试跨多个 SAM 模板使用单个 APIGateway。为此,我尝试从其他 SAM 模板上的基本模板导入 RestApiId,并在 lambda 的事件部分下使用它。但是SAM有限制说
RestApiId 必须是对同一模板中“AWS::Serverless::Api”资源的有效引用。
经过 3 小时的研究,我知道我们可以通过在基本模板中定义 API 网关并创建角色/策略/定义来实现它,以便允许调用所需的功能。将 Lambda 拆分为多个仅限 Lambda 的 SAM 文件,但没有在其下定义任何 Api 类型事件。通过这种方式,可以创建彼此独立的 Lambda 和 API Gateway,并使用 Swagger/OpenAPI 集成并分别安排权限。
以下是推荐上述方法的有用链接。
我觉得这种方法有点复杂,如果 API 在 swagger 文件上越来越多,这可能会超过基本模板的 CFN 200 限制。如果有人建议一种更简单的方法来跨不同模板导入 apiGateway,我将不胜感激。