Как добавить больше деталей в шаблон AWS SAM для моего API
Я новичок в мире без сервера, а также в 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
}
и мне нужно выяснить, как детализировать это отображение для моего шаблона, чтобы создать его при обновлении стека на облачной информации.
возможно, если у меня плохой подход, пожалуйста, покажи мне, как это должно быть сделано.
спасибо Даниэль
1 ответ
Для этого вам нужно добавить AWS::Serverless::Api
ресурс для вашего шаблона SAM и использовать его Definition
-возможность определить ваш API как OpenAPI-шаблон, куда вы можете включить ваши запросы и отображения ответов.
Git-репозиторий AWS SAM содержит пример того, как включить встроенный сваггер в ваш шаблон, а документация по API Gateway содержит информацию о наборе расширений OpenAPI, используемых для определения таких деталей, как requestTemplates
,