Quero usar vários valores para parâmetros individuais para criar ou atualizar uma pilha a partir de um modelo do AWS CloudFormation.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para usar vários valores para parâmetros individuais em um modelo do CloudFormation, execute uma das seguintes ações:
Use tipos de parâmetros específicos da AWS
Observação: o CloudFormation valida o valor de entrada que você seleciona em relação aos valores existentes em sua conta.
Nos exemplos de modelo do AWS CloudFormation a seguir, o parâmetro com a chave SecurityGroups especifica um tipo de parâmetro específico para a AWS que pode aceitar vários valores de SecurityGroupIds.
Modelo JSON:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"SecurityGroups": {
"Type": "List<AWS::EC2::SecurityGroup::Id>",
"Description": "The list of SecurityGroupIds in your Virtual Private Cloud (VPC)"
}
},
"Resources": {
"MyEC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "ami-79fd7eee",
"KeyName": "testkey",
"SecurityGroupIds": {
"Ref": "SecurityGroups"
}
}
}
}
}
Modelo YAML:
AWSTemplateFormatVersion: 2010-09-09
Parameters:
SecurityGroups:
Type: 'List<AWS::EC2::SecurityGroup::Id>'
Description: The list of SecurityGroupIds in your Virtual Private Cloud (VPC)
Resources:
MyEC2Instance:
Type: 'AWS::EC2::Instance'
Properties:
ImageId: ami-79fd7eee
KeyName: testkey
SecurityGroupIds: !Ref SecurityGroups
Para implantar a pilha, execute o comando create-stack da AWS CLI:
aws cloudformation create-stack --stack-name StackName --template-body file://TemplateFileName
--parameters ParameterKey=SecurityGroups,ParameterValue="sg-0123456789\,sg-2345678901"
Observação: substitua StackName pelo nome da sua pilha e TemplateFileName pelo nome do seu arquivo. Em ParameterValue, insira seu ID de grupo de segurança.
Use os tipos de parâmetros CommaDelimitedList
Nos exemplos de modelo do CloudFormation a seguir, o parâmetro com a chave SecurityGroups especifica um tipo CommaDelimitedList que pode aceitar vários valores de SecurityGroupIds.
Modelo JSON:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"SecurityGroups": {
"Type": "CommaDelimitedList",
"Description": "The list of SecurityGroupIds in your Virtual Private Cloud (VPC)",
"Default": "sg-a123fd85, sg-b456ge94"
}
},
"Resources": {
"MyEC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "ami-79fd7eee",
"KeyName": "testkey",
"SecurityGroupIds": {
"Ref": "SecurityGroups"
}
}
}
}
}
Modelo YAML:
AWSTemplateFormatVersion: 2010-09-09
Parameters:
SecurityGroups:
Type: CommaDelimitedList
Description: The list of SecurityGroupIds in your Virtual Private Cloud (VPC)
Default: sg-a123fd85, sg-b456ge94
Resources:
MyEC2Instance:
Type: 'AWS::EC2::Instance'
Properties:
ImageId: ami-79fd7eee
KeyName: testkey
SecurityGroupIds: !Ref SecurityGroups