Aws-cli: Le fichier de paramètres externes Cloudformation ne prend pas en charge le fichier YAML

Créé le 3 nov. 2016  ·  143Commentaires  ·  Source: aws/aws-cli

J'ai utilisé aws-cli pour mettre à jour mes piles et je souhaite utiliser un fichier yaml externe (dev.yaml) comme fichier de paramètres comme ci-dessous :

aws cloudformation update-stack --stack-name test --template-body file://./api-test.yaml --parameters file://./dev.yaml

Dans dev.yaml , il n'a que :

---
- ParameterKey: APICacheClusterSize
  ParameterValue: '1.6'

Cependant, j'ai reçu ce message d'erreur lorsque j'exécute la commande de mise à jour ci-dessus :

Error parsing parameter '--parameters': Expected: '=', received: '-' for input:

---
- ParameterKey: APICacheClusterSize
^
  ParameterValue: '1.6'

Si j'utilise le fichier JSON avec le même contexte que ci-dessous et que je l'utilise à la place de dev.yaml , cela fonctionne bien :

[
  {
    "ParameterKey": "APICacheClusterSize",
    "ParameterValue": "1.6"
  }
]

Alors, le fichier de paramètres externes pour aws cloudformation peut-il être un fichier YAML ? ou va...?

feature-request

Commentaire le plus utile

Je vais appuyer cette demande de fonctionnalité.

Tous les 143 commentaires

Bonjour, nous n'avons actuellement aucun plan pour prendre en charge YAML dans le cadre des arguments de ligne de commande. Je marquerai cela comme une demande de fonctionnalité car je peux voir comment cela pourrait être utile pour certaines personnes.

Le contenu du fichier que vous fournissez à --parameters est chargé et vidé directement en tant qu'argument, vous ne pouvez donc avoir que le contenu du fichier dans l'un des deux formats suivants :
Syntaxe abrégée :
ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean
ou syntaxe JSON :

[
    {
         "ParameterKey": "string",
         "ParameterValue": "string",
         "UsePreviousValue": true|false
     }
]

Je vais appuyer cette demande de fonctionnalité.

je vais le seconder aussi

+1

S'il te plaît. C'est essentiel pour nous.

+1

absolument +1

+1 autoriser les données au format YAML pour --template-body mais pas pour --parameters est gênant

👍

+1

+1

+1

puisque vous pouvez fournir un modèle dans yaml, vous devriez également pouvoir fournir les paramètres dans yaml
Je pense que cette fonctionnalité est indispensable

+1

+100

+1

+100

+1

" https://gist.github.com/mbailey/2f7c878eed123cab6fb125117f35aecc
"
" yamlise - voir YAML lors de la modification de fichiers JSON dans vim.
"
" Créé pour les personnes souffrant de phobie JSON, cela devrait
" uniquement utilisé lorsque toutes les tentatives de maîtrise de JSON
" ont échoué. http://www.json.org/
"
" J'espère qu'il n'est pas trop tard pour ces gens !
« 'S'il vous plaît. C'est essentiel pour nous.'
" https://github.com/aws/aws-cli/issues/2275#issuecomment -277829948
"
" Mise en place
" ============
" 1. Installez cfn-flip https://github.com/awslabs/aws-cfn-template-flip
" 2. Incluez ce fichier dans votre ~/.vimrc
" 3. vim cloudformation-params.json
" VOUS DEVRIEZ MAINTENANT VOIR LE YAML DONT VOUS AVEZ RÊVÉ
" 4. :wq
" Le fichier doit maintenant contenir le JSON Amazon CLI attendu
"
:augroup yamlise
: autocmd !
: autocmd BufReadPost,FileReadPost *.json '[,']!cfn-flip
: autocmd BufWritePre,FileWritePre *.json '[,']!cfn-flip
: autocmd FileAppendPre *.json '[,']!cfn-flip
:augroupe FIN

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+999

+1

+1

+1

+1

+2

+1

+1

+1

+1

+1

+1

+1

+10000000

+1

+Inf

+1

+1

+1

+1

+1

Voici une solution de contournement simple utilisant la substitution de processus Bash et cfn-flip :
aws cloudformation ... --parameters file://<(cfn-flip parameters.yml)

+1

+1

++

+0,5

+1

++

+1 !

Je ne comprends pas pourquoi vous auriez le modèle en YAML mais ensuite les paramètres en JSON. Cela semble une omission étrange et espérerais-je qu'AWS travaille sur ... s'il vous plaît?

+1

+1

Bonjour!

Nous fermons ce problème ici sur GitHub, dans le cadre de notre migration vers UserVoice pour les demandes de fonctionnalités impliquant l'AWS CLI.

Cela nous permettra de vous fournir les fonctionnalités les plus importantes, en facilitant la recherche et l'affichage de la prise en charge des fonctionnalités qui vous intéressent le plus, sans diluer la conversation avec des rapports de bogues.

En tant qu'introduction rapide à UserVoice (si elle n'est pas déjà familière) : après la publication d'une idée, les utilisateurs peuvent voter pour les idées et l'équipe produit répondra directement aux suggestions les plus populaires.

Nous avons importé des demandes de fonctionnalités existantes à partir de GitHub - Recherchez ce problème ici !

Et ne vous inquiétez pas, ce problème existera toujours sur GitHub pour la postérité. Comme il s'agit d'une importation textuelle du message d'origine dans UserVoice, nous garderons toujours à l'esprit les commentaires et les discussions qui existent déjà ici sur le problème GitHub.

GitHub restera le canal de signalement des bogues.

Encore une fois, ce problème peut maintenant être trouvé en recherchant le titre sur : https://aws.uservoice.com/forums/598381-aws-command-line-interface

-L'équipe AWS SDK & Tools

Cette entrée se trouve spécifiquement sur UserVoice à l'adresse : https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168310-cloudformation-external-parameter-file-do-not-supp

+1

Sur la base des commentaires de la communauté, nous avons décidé de renvoyer les demandes de fonctionnalités aux problèmes GitHub.

+1

+1

+1

+100

+1

+1

+1

+1
et +1000 pour plus de cohérence globale s'il vous plait ;)

+1

Ce problème date de 2 ans ;_;

@matthewflannery non , ce n'est que 587 jours en fait.

+1

@Yaowenjie 587/365 = 1,608 ~ 2 ans

+1

plus 11!1!1one!!1!11

:+1:

:signe_plus_lourd: :100:

👍

+1

il reste deux mois pour la célébration du deuxième anniversaire de ce numéro, les amis ! 👨‍👩‍👧‍👦🎉🎉🎊🎊👨‍👨‍👧‍👦

Parce que mon équipe est habituée à YAML (tous nos modèles sont en YAML), j'ai une automatisation du shell qui transforme un fichier YAML en un fichier json, puis le transmet à CF. Cela montre (pour moi du moins) à quel point cette fonctionnalité est recherchée - le fait que les clients construisent leur propre automatisation autour de fonctionnalités de base comme celle-ci n'est pas une réponse.

De plus, nous devons noter que toute la façon de travailler parametersKey/ParamaterValue pour CloudFormation est stupide.

Pourrions-nous avoir le modèle CloudFormation en YAML et fournir un fichier de paramètres en JSON ?

@Yashswarnkar Oui - vous pouvez avoir le modèle en YAML et les paramètres en JSON. Ce problème est dû au fait que les paramètres ne peuvent être qu'au format JSON - les fichiers YAML ne sont pas pris en charge même si le modèle est au format YAML.

+1 J'aimerais vraiment pouvoir ajouter des commentaires à mes fichiers de paramètres et les exécuter à partir de la CLI. Avez-vous déjà prévu d'ajouter la prise en charge de .yaml pour la commande CLI create-stack avec --parameters pour prendre en charge yaml ?

Une ETA pour cette fonctionnalité ?

+1

Presque 2 ans et toujours pas de yaml pour les paramètres... :(

+1

+1

+1

Avec SSM maintenant disponible avec des chaînes sécurisées et des moyens de les décoder, j'ai l'idée d'exécuter un script pour placer les variables dans le compte AWS, puis de les référencer à partir du modèle cloudformation... Quelqu'un a d'autres idées comme celle-ci ?

Selon les commentaires ci-dessus, vous pouvez utiliser cfn-flip
https://github.com/awslabs/aws-cfn-template-flip

Dans bash - Afficher parameters.yaml sous forme de fichier json avec l'opérateur <( )

pip install cfn_flip

cat <(cfn-flip parameters.yaml)

Utilisez, avec <( ) dans la commande cli

aws cloudformation update-stack --stack-name test --template-body file://./api-test.yaml --parameters file://<(cfn-flip parameters.yaml)

+100

Il s'agit évidemment d'une fonctionnalité très demandée - pourquoi n'y a-t-il eu aucun mouvement à ce sujet malgré ce qui semble être des centaines de personnes qui le demandent ?

+1
VRAI cas d'utilisation, c'est là où il faut spécifier JSON dans un paramètre, auquel cas JSON est un cauchemar avec des guillemets d'échappement...

[
    {
        "ParameterKey": "DistributionJSON",
        "ParameterValue": "{\"Account_ID_1\":\"region_1,region_2\",\"Account_ID_2\":\"region_1\"}"
    }
]

Par rapport à:

- ParameterKey: DistributionJSON
  ParameterValue: '{"Account_ID_1":"region_1,region_2","Account_ID_2":"region_1"}'

Bien? Plus de mises à jour ?

Bien? Plus de mises à jour ?

Calmez-vous, nous ne sommes qu'en janvier 2019

Hé, comment vont ces gars avec la fusion des relations publiques ?

J'envisagerais d'écrire ceci si je savais que l'équipe fusionnait régulièrement avec les relations publiques de ceux qui ne faisaient pas partie de leur organisation.

Aucune idée. Je pense qu'il y a suffisamment de demande pour cela, ils finiront par le mettre en œuvre.

cela devrait peut-être rester ouvert pour toujours et tous ceux qui y participent peuvent tous être amis et avoir une conférence chaque année appelée 'Payameter Fam' (comme dans yaml parameter fam) où nous nous réunissons tous et discutons de notre traumatisme anti-yaml.

+1

👍

+1

+1

3 ans, 90% des API utilisent YAML, beaucoup de +1 ennuyeux et AWS se gratte les couilles...

J'aimerais vraiment que yaml utilise simplement des commentaires pour les fichiers de configuration / décommentez les éléments / etc.

+1

Nous sommes en juin 2019, je ne comprends pas pourquoi AWS ne résout toujours pas ce problème. Ils embauchent tellement de gens chaque année

Allez Vraiment ? Faisons bouger ça

+1

+1

+1

+1

+1

+1

+1

En attente en attente...

toujours en attente!

Les paramètres sont toujours Json uniquement ?

Ce problème est assez ancien pour commencer le préscolaire.

Je serai à re: Invent 2019 si quelqu'un veut se lier à ce problème et parler de merde à Jeff Barr, et. al sur twitter.

Ce serait charmant

+1

+1

+1

+1
juste frapper dans ce rocher, puis-je obtenir le support des paramètres YAML s'il vous plaît?
Mon projet actuel aime YAML (je ne suis pas :) )

Pouvez-vous également ajouter le support XML ? Je ne peux pas soumettre cela via SOAP. Le support AWS est essentiel dans Windows Forms.

+1

+1

+1

Les mises à jour :/ ?

+1

+1
J'aimerais pouvoir commenter dans mon fichier de paramètres en divisant les paramètres cloudformation évolutifs et non évolutifs.
par exemple. J'ai essayé de mettre à niveau mon identifiant d'instantané d'un volume.
-> Les propriétés de volume autres que AutoEnableIO, type, taille et IOPS ne peuvent pas être mises à jour. Remettez les propriétés aux valeurs précédentes et mettez à nouveau à jour la pile.

J'essayais de créer une pile avec la commande suivante : aws cloudformation create-stack --stack-name myfirsttest --region us-west-2 --template-body file://testcfn.yml
Mais j'ai le message d'erreur suivant :
Erreur lors de l'analyse du paramètre '--template-body' : impossible de charger le fichier paramfile://testcfn.yml : [Errno 2] Aucun fichier ou répertoire de ce type : 'testcfn.yml'

Mon fichier testcfn.yml est le suivant :
Description: > Vritika / Udacity project This template deploys a VPC Resources: UdacityVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 EnableDnsHostnames: true

› aws ssm get-parameters-by-path help                                                                               

# ...

SYNOPSIS
            get-parameters-by-path
          --path <value>
          [--recursive | --no-recursive]
          [--parameter-filters <value>]
          [--with-decryption | --no-with-decryption]
          [--cli-input-json | --cli-input-yaml]
          [--starting-token <value>]
          [--page-size <value>]
          [--max-items <value>]
          [--generate-cli-skeleton <value>]
          [--cli-auto-prompt <value>]

# ...

       --generate-cli-skeleton  (string)  Prints  a  JSON skeleton to standard
       output without sending an API request. If provided with no value or the
       value input, prints a sample input JSON that can be used as an argument
       for --cli-input-json. Similarly, if provided yaml-input it will print a
       sample  input  YAML that can be used with --cli-input-yaml. If provided
       with the value output, it validates the command inputs  and  returns  a
       sample output JSON for that command.

Yay, support yaml !!!

› aws ssm get-parameters-by-path --path "/foo/bar/" --recursive --generate-cli-skeleton yaml-input
Path: ''  # [REQUIRED] The hierarchy for the parameter.
Recursive: true # Retrieve all parameters within a hierarchy.
ParameterFilters: # Filters to limit the request results.
- Key: ''  # [REQUIRED] The name of the filter.
  Option: '' # For all filters used with DescribeParameters, valid options include Equals and BeginsWith.
  Values: # The value you want to search for.
  - ''
WithDecryption: true # Retrieve all parameters in a hierarchy with their value decrypted.
MaxResults: 0 # The maximum number of items to return for this call.
NextToken: '' # A token to start the list.

Ce n'est toujours pas une chose ?? Ou Ai-je raté qu'il est quelque part?

Pour toute personne intéressée par l'utilisation de .yaml dans ses paramètres, veuillez vous référer à ceci
https://github.com/realestate-com-au/stackup

Je pense qu'AWS devrait frapper à la porte de l'immobilier pour acheter ce code et le transférer dans leur IP .....

+1

Pas un grand fan des façons hacky de résoudre les problèmes, car hacky devient désordonné assez rapidement.
Mais pour toute personne intéressée à le faire avec le fichier params dans son environnement de test.

s3template.yml

AWSTemplateFormatVersion: '2010-09-09'
Description: create a single S3 bucket
Parameters: 
  BucketName:
    Description: Unique name for bucket.
    Type: String
  AccessControl:
    Description: Access Control of the bucket
    Type: String
    AllowedValues:
      - Private
      - PublicRead

Resources:
  SampleBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Ref BucketName
      AccessControl: !Ref AccessControl

s3template.params

BucketName=sample-unique-bucket-123456
AccessControl=Private

Cours :
aws cloudformation deploy --template-file ./s3template.yml --stack-name sample-testbucket --region us-east-1 --parameter-overrides $(cat s3template.params)

+1 pour les fichiers de paramètres au format YAML. Pourquoi forcer quelqu'un à mélanger les majorations ?

Cette page vous a été utile?
0 / 5 - 0 notes