Я пишу AWS шаблон CloudFormation (с использованием yaml), который создает AWS Service Catalog Product. Я получаю шаблон для продукта, используя параметр S3FilePath, который имеет значение, подобное указанному выше пути: https://bucket.s3-eu-west-1.amazonaws.com/template.yml. URL-адрес файла необходимо отправить в формате JSON, как показано здесь (этот пример работает):
Resources:
Type: AWS::ServiceCatalog::CloudFormationProduct
Properties:
Description: Example Product
Distributor: xyz
Name: ExampleProduct
Owner: xyz
ProvisioningArtifactParameters:
- Description: Example Product
Info: { "LoadTemplateFromURL": "https://bucket.s3-eu-west-1.amazonaws.com/template.yml" }
Name: Version1
Я попытался заменить URL-адрес с помощью! Sub и! Ref, как показано ниже:
Parameters:
S3FilePath:
Type: String
Description: file name
Resources:
Type: AWS::ServiceCatalog::CloudFormationProduct
Properties:
Description: Example Product
Distributor: xyz
Name: ExampleProduct
Owner: xyz
ProvisioningArtifactParameters:
- Description: Example Product
Info: !Sub
- '{ "LoadTemplateFromURL": "${FILEPATH}" }'
- {FILEPATH: !Ref S3FilePath}
Name: Version1
Но стек CloudFormation не работает с ошибкой: «недопустимый ввод». Думаю, я неправильно строю JSON, я пытался использовать \ перед каждым '"', но это тоже не помогло, и я не смог найти пример, объясняющий, как это правильно построить. Нет проблема с параметром S3FilePath.
Не могли бы вы посоветовать, как правильно использовать! Sub и! Ref для сборки JSON? Спасибо.