用于 AWS Api 网关与 S3 即 AWS 服务集成的 SAM 模板

Dha*_*ana 2 amazon-web-services aws-api-gateway 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}

Sur*_*tia 6

您必须在定义 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"
              }
            }
          }
        }
      }
Run Code Online (Sandbox Code Playgroud)