Estaba tratando de actualizar la pila de CloudFormation existente con el siguiente comando.
aws cloudformation deployno hay opción para pasar el archivo de parámetros con la opción de implementación . intentamos pasar el archivo de parámetros con --parameter-overrides pero está dando el siguiente error.
el valor pasado a --parameter-overrides debe tener el formato Clave=Valor
el comando que tratamos de ejecutar es
aws cloudformation deploy --template-file sg.yml --stack-name Common-SG --parameter-overrides ip.json --no-execute-changeset¿Hay alguna forma de pasar los parámetros en el archivo con aws cloudformation deployment?
Pasar parámetros almacenados como JSON en un archivo local se ve así:
aws cloudformation deploy \ --stack-name demo \ --template-file test.yml --parameter-overrides file://test.json \y el test.json así.
{ "Parameters": { "BucketName": "myawesometestdemo" } }prueba.yml
--- AWSTemplateFormatVersion: '2010-09-09' Description: Simple S3 Bucket test Parameters: BucketName: Type: String Description: The name of the S3 Bucket to create Metadata: AWS::CloudFormation::Interface: ParameterLabels: BucketName: default: S3 Bucket Name Resources: S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Ref BucketNameversión awscli:
aws --version aws-cli/2.2.35 Python/3. XXXesto podría ser demasiado tarde ya, pero por el bien de un problema similar en el futuro, encontré esta respuesta en ( https://github.com/aws/serverless-application-model/issues/111 )
El comando debería verse así:
aws cloudformation deploy --template-file sg.yml --stack-name Common-SG --parameter-overrides $(cat params.properties) --no-execute-changesetAhora bien, esto no va a ser un archivo json, ya que "parámetros superados" espera un par clave = valor.
La solución para este problema es pasar parámetros con el comando jq .
yum install jqA continuación se muestra la sintaxis para el mismo.
aws cloudformation deploy --template-file sg.yml --stack-name Common-SG --parameter-overrides $(jq -r '.[] | [.ParameterKey, .ParameterValue] | "\(.[0])=\(.[1])"' ip.json) --no-execute-changeset