Как добавить дополнительные сведения о шаблоне AWS SAM для моего API

Я новичок в бессерверном мире AWS, а также в SAM. Я только что создал небольшого бота, который на самом деле полностью функциональный, но когда я начинаю создавать шаблон SAM, чтобы определить его, у меня возникли сомнения, что я не смог понять. У меня есть шлюз API и специальный шаблон сопоставления. Мне нужно, чтобы шаблон sam включал это, а его нет, проверьте шаблон:

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An AWS Serverless Specification template describing your function.
Resources:
  certainty:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: ./certainty-function
      Description: >-
        This lambda monitors the ssl certificates expirations
        and communite with slack.
      MemorySize: 128
      Timeout: 20
      Role: 'arn:aws:iam::116738426468:role/ssl_cert_alerter'
      Events:
        Schedule1:
          Type: Schedule
          Properties:
            Schedule: rate(1 day)
        Api1:
          Type: Api
          Properties:
            Path: /
            Method: POST
  certaintyassistant:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: ./certainty-assistant-function
      Description: >-
        This lambda invoke Certainty and answer to the slack
        user.
      MemorySize: 1152
      Timeout: 300
      Role: 'arn:aws:iam::116738426468:role/ssl_cert_alerter'
      Events:
        Api1:
          Type: Api
          Properties:
            Path: /show-all
            Method: POST
      Environment:
        Variables:
          SLACK_TOKEN: oGprdUe0br93yH62fuezDHQh

Сказав это, я хочу показать, как я управляю отображением в api:

## designed just for post format.
{
    #foreach( $token in $input.path('$').split('&') )
        #set( $keyVal = $token.split('=') )
        #set( $keyValSize = $keyVal.size() )
        #if( $keyValSize >= 1 )
            #set( $key = $util.urlDecode($keyVal[0]) )
            #if( $keyValSize >= 2 )
                #set( $val = $util.urlDecode($keyVal[1]) )
            #else
                #set( $val = '' )
            #end
            "$key": "$val"#if($foreach.hasNext),#end
        #end
    #end
}

И мне нужно выяснить, как детализировать это сопоставление для моего шаблона, чтобы создать его при обновлении стека в CloudFormation.

Может быть, если у меня плохой подход, пожалуйста, покажите мне, как это должно быть сделано.


person Daniel Vega    schedule 21.12.2018    source источник
comment
Это отличный код и очень полезный вопрос. Спасибо!   -  person polka    schedule 19.09.2019


Ответы (1)


Для этого вам нужно добавить _ 1_ в свой шаблон SAM и используйте его Definition-свойство, чтобы определить свой API как шаблон OpenAPI, куда вы можете включить сопоставления запросов и ответов.

Git-репозиторий AWS SAM содержит пример включения встроенного swagger в ваш шаблон и документацию по API Gateway содержит информацию о наборе расширений OpenAPI, используемых для определите такие детали, как requestTemplates.

person Dunedan    schedule 22.12.2018