как включить несколько файлов ресурсов в SAM template.yml

Я хочу записать свой yml-файл формирования облака в другой файл и загрузить их отдельно. Это легко сделать в бессерверной среде, но я не мог понять, как это сделать с SAM. Не могли бы вы помочь мне, как это сделать?

Я предоставил копию проекта ниже:

https://github.com/day2daychallenge/nest_application.git

мой файл template.yml:

AWSTemplateFormatVersion: ‘2010-09-09’ Transform: AWS::Serverless-2016-10-31 Description: > Sample SAM Template # Create our resources with separate CloudFormation templates resources: Resources: # Lambda function — ${file(resources/lambda-functions.yml)}

Мой файл ресурсов (lambda-functions.yml) выглядит следующим образом:

HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.lambdaHandler Runtime: nodejs12.x Events: HelloWorld: Type: Api Properties: Path: /helloworld Method: get

моя структура папок.

Edit4:

AWSTemplateFormatVersion: ‘2010-09-09’ Transform: AWS::Serverless-2016-10-31 Description: > Sample SAM Template # Create our resources with separate CloudFormation templates resources: Resources: yourApplicationAliasName: Type: AWS::Serverless::Application Properties: # Lambda function Location: ./resources/lambda-functions.yml

lambda-functions.yml содержимое:

AWSTemplateFormatVersion: ‘2010-09-09’ Transform: ‘AWS::Serverless-2016-10-31’ Description: AWS Lambda function. Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: ../hello-world/ Handler: app.lambdaHandler Runtime: nodejs12.x Events: HelloWorld: Type: Api Properties: Path: /helloworld Method: get

мой файл buildspec.yml:

version: 0.2 phases: install: runtime-versions: nodejs: 12 pre_build: commands: — echo Install source NPM dependencies… — npm install build: commands: — echo packaging files by using cloudformation… — export BUCKET=sls-simple — aws cloudformation package —template-file template.yml —s3-bucket $BUCKET —output-template-file outputtemplate.yml finally: — echo This always runs even if the install command fails artifacts: type: zip files: — template.yml — outputtemplate.yml

Ошибка 1 в сборке (решена):

Ошибка преобразования AWS :: Serverless-2016-10-31: Недействительный документ спецификации бессерверного приложения. Количество обнаруженных ошибок: 1. Неверная структура шаблона SAM. Требуется раздел «Ресурсы» Время создания

Ошибка 2 при развертывании (выполнить набор изменений)

Не удалось создать следующие ресурсы: [yourApplicationAliasName]. . Откат запрошен пользователем. 2020-03-06 13:37:38 UTC + 0800 yourApplicationAliasName CREATE_FAILED Ошибка формата шаблона: должен быть определен хотя бы один элемент ресурсов.

Ошибка 3 в разделе сборки

[Контейнер] 2020/03/07 15:24:43 Запуск команды aws cloudformation package —template-file template.yml —s3-bucket $ BUCKET —output-template-file outputtemplate.yml

Невозможно загрузить артефакт ./resources/lambda-functions.yml, на который ссылается параметр Location вашего ресурсаApplicationAliasName. Невозможно загрузить артефакт hello-world / на который ссылается параметр CodeUri ресурса HelloWorldFunction. Параметр CodeUri ресурса HelloWorldFunction относится к несуществующему файлу или папке / codebuild / output / src606023065 / src / resources / hello-world

Ошибка 4: сборка кода выполнена успешно, и при развертывании появляется сообщение об ошибке ниже.

Ошибка формата шаблона: должен быть определен хотя бы один элемент ресурсов.

Не удалось создать следующие ресурсы: [yourApplicationAliasName]. . Откат запрошен пользователем.

использовать вложенные стеки. используйте Type: AWS :: CloudFormation :: Stack в качестве ресурса с TemplateURL в качестве свойства, указывающего на расположение. SAM помогает здесь docs.aws.amazon.com/AWSCloudFormation / latest / UserGuide /   —  person Amir    schedule 05.03.2020

Источник: ledsshop.ru

Стиль жизни - Здоровье!