Récupérez la liste des paramètres d’un template avec aws cloudformation validate-template,
puis utilisez jq pour remplacer les valeurs par défaut par des variables d’environnement et écrire le résultat dans parameters.json.
aws cloudformation validate-template \ --template-body "file://path/to/template" \ --query "Parameters[].{ParameterKey:ParameterKey,ParameterValue:DefaultValue}" \ | jq 'sort_by(.ParameterKey)' \ | jq 'map( .ParameterValue = (env[.ParameterKey] // .ParameterValue) )' > "parameters.json"Étapes jq
| Étape | Description |
|---|---|
sort_by(.ParameterKey) | Trie par nom de clé dans l’ordre alphabétique (pour stabiliser les diffs) |
env[.ParameterKey] | Récupère la variable d’environnement du même nom. null si elle n’est pas définie |
// .ParameterValue | Si null, repli sur la valeur par défaut |
Récupérer les valeurs d’un stack déployé
Pour générer le fichier à partir des valeurs actuellement configurées dans le stack plutôt qu’à partir des valeurs par défaut du template, utilisez describe-stacks.
aws cloudformation describe-stacks \ --stack-name "your-stack-name" \ --query "Stacks[0].Parameters[].{ParameterKey:ParameterKey,ParameterValue:ParameterValue}" \ | jq 'sort_by(.ParameterKey)' \ | jq 'map( .ParameterValue = (env[.ParameterKey] // .ParameterValue) )' > "parameters.json"Exclure les paramètres sans valeur par défaut
Pour exclure les paramètres dont la valeur par défaut n’est pas définie dans le template.
aws cloudformation validate-template \ --template-body "file://path/to/template" \ --query "Parameters[].{ParameterKey:ParameterKey,ParameterValue:DefaultValue}" \ | jq '[.[] | select(.ParameterValue != null)]' \ | jq 'sort_by(.ParameterKey)' \ | jq 'map( .ParameterValue = (env[.ParameterKey] // .ParameterValue) )' > "parameters.json"Version script shell
#!/usr/bin/env bashset -euo pipefail
TEMPLATE="${1:?Usage: $0 <template-path> [output-path]}"OUTPUT="${2:-parameters.json}"
aws cloudformation validate-template \ --template-body "file://${TEMPLATE}" \ --query "Parameters[].{ParameterKey:ParameterKey,ParameterValue:DefaultValue}" \ | jq 'sort_by(.ParameterKey)' \ | jq 'map( .ParameterValue = (env[.ParameterKey] // .ParameterValue) )' > "${OUTPUT}"
echo "Generated: ${OUTPUT}"# Exemple d'utilisationEnv1=value1 Env2=value2 ./generate-params.sh path/to/template.yaml
hsb.horse