У меня есть следующий шаблон облачной информации. Цель состоит в том, чтобы создать группу параметров только в том случае, если пользователь хочет, а затем заполнить параметры RDS в группе параметров содержимым параметров шаблона облачной информации.
Parameters:
UseCustomParameterGroup:
Description: Toggle to 'Yes' to create a new parameter group.
Type: String
AllowedValues: ['Yes', 'No']
Default: 'No'
CustomParameters:
Description: Add custom parameters to your custom parameter group. Creating a custom parameter group without parameters creates a mirror of the default group.
Type: String
Conditions:
UseCustomParameterGroup: !Equals [!Ref 'UseCustomParameterGroup', 'Yes']
Resources:
CustomParameterGroup:
Type: AWS::RDS::DBParameterGroup
Condition: 'UseCustomParameterGroup'
Properties:
Family: "postgres10"
Parameters: !Ref "CustomParameters"
Если я вызову этот шаблон из другого шаблона, то произойдет сбой с ошибкой Value of property Parameters must be an object
Parameters:
USECUSTOMPARAMETERGROUP: 'Yes'
CUSTOMPARAMETERS: '{
"shared_preload_libraries": "pg_stat_statements",
"pg_stat_statements.track": "all"
}'
Resources:
Postgres:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://..../rds-postgres-instance.yaml
TimeoutInMinutes: '60'
Parameters:
UseCustomParameterGroup: !Ref USECUSTOMPARAMETERGROUP
CustomParameters: !Ref CUSTOMPARAMETERS
Документация для AWS::RDS::DBParameterGroup
гласит следующее для параметра Parameters
:
Тип: объект JSON, состоящий из пар ключ-значение строки, как показано в следующем примере
«Параметры»: {«Ключ1»: «Значение1», «Ключ2»: «Значение2», «Ключ3»: «Значение3»}
Я думаю, что это может быть устаревшим для YAML-версии Cloudformation, но нет документации о том, как передать это значение нескольким параметрам.
Я хочу, чтобы пользователь мог задавать столько параметров RDS, сколько ему угодно, без учета каких-либо тысяч возможных параметров, доступных для RDS.