У меня есть AWS CodePipeline для развертывания стека в CloudFormation с использованием шаблона YAML, а также JSON-файла конфигурации шаблона.
Соответствующий фрагмент шаблона:
AWSTemplateFormatVersion: '2010-09-09'
...
Parameters:
subnetIds:
Type: List<AWS::EC2::Subnet::Id>
...
Соответствующий фрагмент файла конфигурации:
{
"Parameters": {
...
"subnetIds": [
"subnet-a",
"subnet-b",
"subnet-c"
]
},
...
}
По какой-то причине этап развертывания (CloudFormation) продолжает давать сбой с Parameter [subnetIds] is invalid
, поэтому мой вопрос заключается в том, как передать список идентификаторов подсетей в шаблон из файла конфигурации?
Возможно, вы захотите изменить свой вопрос, чтобы четко указать, что вы используете AWS CodePipeline. Я сделал вывод об этом из формата шаблона, который вы упомянули.
Это объясняется здесь в документах о типах данных списка, таких как:
List<AWS::EC2::Subnet::Id>
An array of subnet IDs, such as
subnet-123a351e, subnet-456b351e
.
То есть все типы List
в CloudFormation также являются строками, разделенными запятыми.
Поскольку вы используете CodePipeline Файл конфигурации шаблона, у вас будет что-то вроде:
{
"Parameters": {
"subnetIds": "subnet-a,subnet-b,subnet-c"
}
}
Шаблон указывает, что значение записи в массиве должно быть таким: AWS::EC2::Subnet::I'd (:: является разделителем), но вы предоставляете только 1 строковое значение