amazon-web-services - AWS Api Gateway 与 S3 作为 AWS 服务集成的 SAM 模板
问题描述
我正在编写 SAM 模板,我想创建一个 API 网关,其路径如下:-
http:///userFlights/airlines/static/images/{airlineName}。
这应该能够从 S3 存储桶下载文件。{airlineName} 可能具有类似IndiGo.jpg的值。
我可以手动创建它。然而,问题是我无法为 SAM 模板找到合适的文档。我需要使用 SAM 自动化我的 API 网关。
值如下:- 集成类型 - AWS 服务
AWS 区域-eu-west-3
AWS 服务 - 简单存储服务 (S3
Http 方法 - GET
路径覆盖-airlines/static/images/{airlineName}
解决方案
您必须在定义 API 配置的 SAM 模板中使用使用DefinitionBody的 OpenAPI 定义。在此处查看 S3 代理示例。我用最简单和最小的 Swagger 定义构建了一个 API,并通过 SAM 部署。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: AWS SAM template with a S3 integration
Resources:
ApiGatewayApi:
Type: AWS::Serverless::Api
Properties:
StageName: prod
DefinitionBody: {
"swagger": "2.0",
"info": {
"version": "1.0"
},
"paths": {
"/airlines/static/images/{airlineName}": {
"get": {
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "200 response"
}
},
"x-amazon-apigateway-integration": {
"responses": {
"default": {
"statusCode": "200"
}
},
"credentials": "arn:aws:iam::{account-id}:role/{role-name}",
"uri": "arn:aws:apigateway:{aws-region}:s3:path/{bucket-name}",
"passthroughBehavior": "when_no_match",
"httpMethod": "GET",
"type": "aws"
}
}
}
}
}
推荐阅读
- sql - 如何查找记录上次更新的时间?
- javascript - 在新选项卡中打开 PDF,保存文件给出错误的文件名
- system-verilog - 有没有办法修复与工厂支持基于字符串的查找相关的警告?
- c - C中的printf如何对浮点数进行舍入?
- java - 如何使一个流文件成为单独的预先存在的流文件的子级?
- sapui5 - UI5 - VBox 对 ObjectPageLayout 的聚合页脚无效
- spotfire - 如何在 Analysis DXP 文件中嵌入数据?
- javascript - 打字稿:将 HTMLElement 转换为节点
- xcode - .framework 包的 Cocoapods 架构
- angular - 如何以正确的方式将 1 个 css 文件用于 n .ts 文件?