Проблема в том, что вы дублировали ключ Resources
в шаблоне.
Я рекомендую всегда использовать утилиту yamllint в шаблонах SAM, поскольку она обнаруживает проблемы форматирования YAML, которые sam validate
не всегда может обнаружить.Вот что я получил:
▶ yamllint sam-app/template.yaml
sam-app/template.yaml
...
18:1 error duplication of key "Resources" in mapping (key-duplicates)
Если вы посмотрите в файл packaged.yml
, созданный шагом sam build
, вы заметите, что определенный вами API будет отсутствовать.Это потому, что для dict в Python невозможно содержать дубликаты ключей.Второй указанный вами блок Resources
просто перезаписывает первый, когда библиотека YAML Python считывает файл.
SAM затем генерирует неявный API SAMnfeedS3API
на основе API, указанного в Events
, используя егособственный сгенерированный Swagger, а не тот, который вы (как вы думали) предоставили.
Обратите также внимание, что после устранения проблемы с дублированием ключа вам также нужно будет ссылаться на свой API из Events
с помощью строки вроде:
Events:
SAMnfeedS3API:
Type: Api
Properties:
Path: /vdp_clusters
Method: GET
RestApiId: !Ref SAMnfeedS3API ## ADD THIS LINE
См. Также мой предыдущий ответ здесь .