Я хочу записать свой yml-файл формирования облака в другой файл и загрузить их отдельно. Это легко сделать в безсерверной среде, но я не мог понять, как это сделать с SAM. Не могли бы вы помочь мне, как это сделать?
Я предоставил копию проекта ниже:
https://github.com/day2daychallenge/nest_application.git
my template.yml file:
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
my buildspe c .yml file :
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 Ошибка формата шаблона: необходимо указать хотя бы один элемент Resources.
Ошибка3 в разделе сборки
[Контейнер] 2020/03/07 15:24:43 Выполнение команды aws пакет облачной информации - файл-шаблона template.yml --s3-bucket $ BUCKET --output-template-file outputtemplate.yml
Невозможно загрузить артефакт ./resources/lambda-functions.yml, на который ссылается параметр Location ресурса yourApplicationAliasName. Невозможно загрузить артефакт hello-world / на него ссылается параметр CodeUri ресурса HelloWorldFunction. Параметр CodeUri ресурса HelloWorldFunction относится к несуществующему файлу или папке / codebuild / output / src606023065 / src / resources / hello-world
Error4: сборка кода теперь выполнена успешно, и я получаю ниже ошибка во время развертывания.
Ошибка формата шаблона: должен быть определен хотя бы один член ресурсов.
Не удалось создать следующие ресурсы: [yourApplicationAliasName]. , Откат по запросу пользователя.