Я нашел ytt
, который является инструментом для шаблона YAML и, похоже, интенсивно используется в пространстве k8s, в котором есть гобы для конфигурации YAML.
Проблема, с которой я столкнулся, заключается в том, что я хотел бы:
a) организовать определение развертывания SAM в несколько файлов; и
b) параметризовать мой AWS SAM template.yml (описание того, как развертывать безсерверные приложения в AWS через CloudFormation) извне, без использования sed.
Is есть ли способ сохранить директивы с префиксом !
, такие как !Ref
, !Sub
, !Join
, et c в выходном YAML через ytt
? Я попытался использовать backsla sh безрезультатно.
У меня есть подкаталог с именем etc/
, в котором есть этот файл:
#@ load("@ytt:data", "data")
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: My REST API
#! Parameters
Parameters:
DeployEnv:
Type: String
Default: #@ data.values.deploy_env
UsagePlanType:
Type: String
Default: PER_API
#! Conditions
#! Globals
Globals:
HttpApi:
Auth:
ApiKeyRequired: true
UsagePlan:
CreateUsagePlan: !Ref UsagePlanType
#! Resources
Resources:
RestApi:
Type: AWS::Serverless::HttpApi
Properties:
StageName: !Ref DeployEnv
#! Outputs
Вот values.yml
:
#@data/values
---
deploy_env: dev
Вот что он производит:
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: My REST API
Parameters:
DeployEnv:
Type: String
Default: dev
UsagePlanType:
Type: String
Default: PER_API
Globals:
HttpApi:
Auth:
ApiKeyRequired: true
UsagePlan:
CreateUsagePlan: UsagePlanType
Resources:
RestApi:
Type: AWS::Serverless::HttpApi
Properties:
StageName: DeployEnv
Вы заметите, что все !Ref
s удалены с выхода. Как оставить эти директивы в выводе при использовании ytt
. Я рассмотрел примеры, но не смог найти сценарий, который я описываю, иллюстрированный.
Я использую команду:
ytt -f ./etc --data-value-yaml deploy_env=${DEPLOY_ENV:-dev} > dist/template.yml
Это позволяет мне переопределить параметр DeployEnv
в SAM template.yml
, но мне нужно иметь возможность сохранять ссылки с директивами !Ref
, чтобы получить все характеристики, которые мне нужны от этого подхода.
Мои вопросы:
- Как я могу получить
ytt
для сохранения директив, таких как !Ref
, !Sub
, !Join
, et c в выходном файле template.yml? - Как другие люди внедряют не - тривиальные безсерверные приложения в AWS генерируют свои template.yml, чтобы они могли организовать ресурсы, глобальные переменные, параметры и т. д. c в отдельные файлы и получить уровень параметризации самого шаблона?
FWIW Я уже прочитал предложенные вопросы и ответы, но это не решает мою проблему: как включить несколько файлов ресурсов в SAM template.yml