使用AWS SAM模板配置API Gateway | 作者:Charles Yang - Medium
由于我们使用的是 AWS SAM(Serverless Application Model)模板,因此可以轻松部署到 CloudFormation,并在 AWS 控制台中无需额外设置即可正常运行。本文将详细介绍如何通过 SAM 模板配置 API Gateway,并解决常见问题。
使用 Swagger 定义 API Gateway
在 AWS API Gateway 中定义接口时,我们需要创建一个 Swagger 定义文件(例如 swagger.[yaml](https://www.explinks.com/wiki/ymal/)),并将其包含在 SAM 模板中。以下是实现的关键步骤和注意事项。
修改 SAM 模板中的资源属性
在原始的 AWS::Serverless::Api 资源中,我们需要添加以下两个新属性:
-
Cors:为了简化设置,可以使用通配符
*,允许任何网站访问该端点。如果需要限制访问,请确保正确指定允许访问的域名,例如"www.example.com"。注意,域名必须用双引号括起来。 -
DefinitionBody:通过
Fn::Transform和AWS::Include来引用 Swagger 定义文件。这种方式允许我们在需要时使用模板中定义的资源。
以下是一个示例代码片段,展示了如何在 Swagger 定义中使用这些属性:
x-amazon-apigateway-integration:
uri: !GetAtt HelloWorldFunction.Arn
httpMethod: POST
在上述代码中,uri 使用了 Lambda 函数的 ARN(Amazon Resource Name)。通过在 SAM 模板中指定 ARN,我们可以确保资源的正确引用。
配置 CORS 和安全性
在配置 CORS 时,我们需要注意以下几点:
- 默认情况下,SAM 模板无法正确处理 CORS,因此需要在 Swagger 文件中显式定义。
- 对于
OPTIONS方法,可以通过在 Swagger 定义中添加security: NONE来排除安全性检查。
以下是一个示例配置:
options:
security: NONE
通过这种方式,我们可以确保 OPTIONS 方法不会受到授权限制。
部署和调试
部署 Swagger 文件
由于 SAM 模板对 CORS 的支持有限,我们可以将 Swagger 文件上传到 S3 存储桶,并在 CI/CD 管道中引用。例如:
aws s3 cp swagger.yaml s3://my-deploy-bucket
将文件上传到 S3 后,可以通过 SAM 模板中的 DefinitionBody 属性引用该文件,从而简化部署流程。
调试常见问题
在部署完成后,如果发现 API 无法正常工作,可以通过以下步骤进行调试:
-
检查 Lambda 函数的响应头:确保响应中包含必要的 CORS 头信息。如果缺失,可以在 Lambda 函数中添加相关头信息。
-
重新部署:修改 Lambda 函数后,重新部署应用程序,确保更改生效。
总结
通过本文的介绍,我们学习了如何使用 AWS SAM 模板配置 API 的稳定性和安全性。
原文链接: https://medium.com/carsales-dev/api-gateway-with-aws-sam-template-c05afdd9cafe
最新文章
- 使用Spring框架轻松构建REST API | Analytics Vidhya
- 2026大学生寒假兼职新风口:从送外卖到做AI副业,你还在靠体力赚零花钱吗?
- 如何获取Microsoft API Key 密钥实现bing搜索分步指南
- Google Pay UPI 注册与集成指南
- 香港支付宝可以绑定大陆银行卡吗?详解使用方法与步骤
- New API架构:探索现代软件开发的新趋势
- 什么是 Wandb
- 在 Golang 中实现 JWT 令牌认证
- 如何使用 Google News API 获取实时新闻数据
- 理解API网关在微服务架构中的作用
- 交叉熵的Numpy实现:从理论到实践
- Google DeepMind发布 Genie 3与Shopify:2小时上线电商3D样板间实战