Aws-cli: Die externe Parameterdatei von Cloudformation unterstützt keine YAML-Datei

Erstellt am 3. Nov. 2016  ·  143Kommentare  ·  Quelle: aws/aws-cli

Ich habe aws-cli verwendet, um meine Stacks zu aktualisieren, und möchte eine externe YAML-Datei (dev.yaml) als Parameterdatei wie unten verwenden:

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

In dev.yaml hat es nur:

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

Ich habe jedoch diese Fehlermeldung erhalten, wenn ich den obigen Update-Befehl ausführe:

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

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

Wenn ich eine JSON-Datei mit demselben Kontext wie unten verwende und sie anstelle von dev.yaml verwende, funktioniert sie einwandfrei:

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

Kann die externe Parameterdatei für aws cloudformation also eine YAML-Datei sein? oder wird...?

feature-request

Hilfreichster Kommentar

Ich werde diese Feature-Anfrage unterstützen.

Alle 143 Kommentare

Hallo, wir haben derzeit keine Pläne, YAML als Teil der Befehlszeilenargumente zu unterstützen. Ich werde dies als Funktionsanfrage markieren, da ich sehen kann, wie es für einige Leute nützlich sein könnte.

Der Inhalt der Datei, die Sie für --parameters angeben, wird geladen und direkt als Argument ausgegeben, sodass Sie den Dateiinhalt nur in einem von zwei Formaten haben können:
Kurzsyntax:
ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean
oder JSON-Syntax:

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

Ich werde diese Feature-Anfrage unterstützen.

Ich werde es auch befürworten

+1

Bitte. Das ist für uns entscheidend.

+1

absolut +1

+1, das YAML-formatierte Daten für --template-body , aber nicht für --parameters , ist umständlich

👍

+1

+1

+1

Da Sie eine Vorlage in Yaml bereitstellen können, sollten Sie auch die Parameter in Yaml bereitstellen können
Ich denke, diese Funktion ist ein Muss

+1

+100

+1

+100

+1

" https://gist.github.com/mbailey/2f7c878eed123cab6fb125117f35aecc
"
" yamlise - siehe YAML beim Bearbeiten von JSON-Dateien in vim.
"
" Für Menschen mit JSON-Phobie geschaffen, sollte dies sein
" nur verwendet werden, wenn alle Versuche, JSON zu beherrschen
" sind fehlgeschlagen. http://www.json.org/
"
„Ich hoffe, es ist noch nicht zu spät für diese Leute!
„‚Bitte. Das ist entscheidend für uns.'
" https://github.com/aws/aws-cli/issues/2275#issuecomment -277829948
"
„Montage
" ============
" 1. Installieren Sie cfn-flip https://github.com/awslabs/aws-cfn-template-flip
" 2. Fügen Sie diese Datei in Ihre ~/.vimrc ein
" 3. vim cloudformation-params.json
" SIE SOLLTEN JETZT DAS YAML SEHEN, NACH DEM SIE SICH SEHEN
" 4. :wq
" Die Datei sollte jetzt die von Amazon erwartete JSON-Befehlszeile enthalten
"
:augroup yamlise
: autocmd!
: autocmd BufReadPost,FileReadPost *.json '[,']!cfn-flip
: autocmd BufWritePre,FileWritePre *.json '[,']!cfn-flip
: autocmd FileAppendPre *.json '[,']!cfn-flip
:augroup ENDE

+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

Hier ist eine einfache Problemumgehung mit Bash-Prozessersetzung und cfn-flip :
aws cloudformation ... --parameters file://<(cfn-flip parameters.yml)

+1

+1

++

+0,5

+1

++

+1!

Verstehe nicht, warum Sie die Vorlage in YAML haben würden, aber dann die Parameter in JSON. Scheint eine seltsame Auslassung zu sein, und würde ich hoffen, dass AWS daran arbeitet ... bitte?

+1

+1

Guten Morgen!

Wir schließen dieses Problem hier auf GitHub als Teil unserer Migration zu UserVoice für Funktionsanfragen, die die AWS CLI betreffen.

Auf diese Weise können wir Ihnen die wichtigsten Funktionen zur Verfügung stellen, indem wir es einfacher machen, nach den Funktionen zu suchen und Unterstützung für die Funktionen anzuzeigen, die Ihnen am wichtigsten sind, ohne das Gespräch mit Fehlerberichten zu verwässern.

Als kurze UserVoice-Einführung (falls noch nicht bekannt): Nachdem eine Idee gepostet wurde, können die Leute über die Ideen abstimmen, und das Produktteam antwortet direkt auf die beliebtesten Vorschläge.

Wir haben vorhandene Funktionsanfragen von GitHub importiert - Suchen Sie dort nach diesem Problem!

Und keine Sorge, dieses Problem wird für die Nachwelt weiterhin auf GitHub existieren. Da es sich um einen Nur-Text-Import des ursprünglichen Beitrags in UserVoice handelt, werden wir die Kommentare und Diskussionen, die hier bereits zum GitHub-Problem vorhanden sind, weiterhin berücksichtigen.

GitHub bleibt der Kanal zum Melden von Fehlern.

Auch dieses Problem kann jetzt gefunden werden, indem Sie nach dem Titel suchen auf: https://aws.uservoice.com/forums/598381-aws-command-line-interface

-Das AWS SDKs & Tools-Team

Dieser Eintrag ist speziell auf UserVoice zu finden unter: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168310-cloudformation-external-parameter-file-do-not-supp

+1

Basierend auf dem Feedback der Community haben wir uns entschieden, Funktionsanfragen an GitHub-Issues zurückzugeben.

+1

+1

+1

+100

+1

+1

+1

+1
und +1000 für insgesamt mehr Konsistenz bitte ;)

+1

Diese Ausgabe ist 2 Jahre alt ;_;

@matthewflannery nein, eigentlich sind es nur 587 Tage.

+1

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

+1

mehr 11!1!1eins!!1!11

:+1:

:heavy_plus_sign: :100:

👍

+1

es bleiben noch zwei Monate bis zum zweiten Jubiläum dieser Ausgabe, Leute! 👨‍👩‍👧‍👦🎉🎉🎊🎊👨‍👨‍👧‍👦

Da mein Team an YAML gewöhnt ist (alle unsere Vorlagen sind in YAML), habe ich eine Shell-Automatisierung, die eine YAML-Datei in eine JSON-Datei umwandelt und diese dann an CF weiterleitet. Das zeigt (zumindest für mich), wie begehrt diese Funktion ist – Kunden ihre eigene Automatisierung um solche Basisfunktionen herum aufbauen zu lassen, ist keine Antwort.

Außerdem sollten wir beachten, dass die gesamte ParameterKey/ParamaterValue-Arbeitsweise für CloudFormation dumm ist.

Könnten wir die CloudFormation-Vorlage in YAML haben und die Parameterdatei in JSON bereitstellen?

@Yashswarnkar Ja - Sie können die Vorlage in YAML und die Parameter in JSON haben. Dieses Problem liegt daran, dass die Parameter nur in JSON vorliegen können – YAML-Dateien werden nicht unterstützt, obwohl die Vorlage in YAML vorliegt.

+1 Ich würde wirklich gerne Kommentare zu meinen Parameterdateien hinzufügen und sie über die CLI ausführen können. Gibt es noch Pläne, .yaml-Unterstützung für den CLI-Befehl create-stack mit --parameters hinzuzufügen, um yaml zu unterstützen?

Irgendeine ETA für diese Funktion?

+1

Fast 2 Jahre und immer noch kein Yaml für Parameter ... :(

+1

+1

+1

Da SSM jetzt mit sicheren Zeichenfolgen und Möglichkeiten zu deren Decodierung verfügbar ist, erwäge ich die Idee, ein Skript auszuführen, um die Variablen in das AWS-Konto einzufügen und sie dann aus der Cloudformationsvorlage zu referenzieren ... Jeder hat andere Ideen wie diese ?

Gemäß den obigen Kommentaren könnten Sie cfn-flip verwenden
https://github.com/awslabs/aws-cfn-template-flip

In Bash – Parameter.yaml als JSON-Datei mit <( )-Operator anzeigen

pip install cfn_flip

cat <(cfn-flip parameters.yaml)

Verwenden Sie, mit <( ) im cli-Befehl

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

+100

Dies ist offensichtlich ein stark nachgefragtes Feature - warum hat sich diesbezüglich nichts getan, obwohl anscheinend Hunderte von Menschen darum gebeten haben?

+1
ECHTER Anwendungsfall, wenn JSON in einem Parameter angegeben werden muss, in diesem Fall ist JSON ein Albtraum, da Anführungszeichen maskiert werden müssen ...

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

Verglichen mit:

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

Brunnen? Keine Updates mehr?

Brunnen? Keine Updates mehr?

Beruhige dich, es ist erst Januar 2019

Hey, wie geht es diesen Jungs mit dem Zusammenführen von PRs?

Ich würde in Betracht ziehen, dies zu schreiben, wenn ich wüsste, dass das Team regelmäßig PRs von Personen außerhalb seiner Organisation zusammenführt.

Keine Ahnung. Ich denke, es gibt genug Nachfrage dafür, sie werden es irgendwann implementieren.

dies sollte vielleicht einfach für immer offen bleiben und alle, die daran teilnehmen, können alle Freunde sein und jedes Jahr eine Konferenz namens „Payameter Fam“ (wie in yaml parameter fam) veranstalten, wo wir alle zusammenkommen und unser Anti-Yaml-Trauma diskutieren.

+1

👍

+1

+1

3 Jahre, 90% der APIs nutzen YAML, viele nervige +1 und AWS kratzt sich an den Eiern...

Ich möchte wirklich, dass Yaml einfach Kommentare für die Konfigurationsdateien / Uncomment-Elemente / etc. verwendet

+1

Es ist Juni 2019, ich verstehe nicht, warum AWS dieses Problem immer noch nicht löst. Sie stellen jedes Jahr so ​​viele Leute ein

Komm schon Wirklich? Bringen wir das in Bewegung

+1

+1

+1

+1

+1

+1

+1

warten warten...

warte noch!

Immer noch Parameter sind nur Json?

Dieses Problem ist alt genug, um mit der Vorschule zu beginnen.

Ich werde auf der re:Invent 2019 sein, wenn sich jemand über dieses Problem austauschen und mit Jeff Barr und Co. Scheiße reden möchte. Al auf Twitter.

Das wäre schön

+1

+1

+1

+1
Schlagen Sie einfach in diesen Felsen, kann ich bitte Unterstützung für YAML-Parameter erhalten?
Mein aktuelles Projekt liebt YAML (bin ich nicht:) )

Können Sie bitte auch XML-Unterstützung hinzufügen? Ich kann dies nicht über SOAP einreichen. AWS-Unterstützung ist in Windows Forms unerlässlich.

+1

+1

+1

Irgendwelche Updates :/ ?

+1

+1
Ich möchte meine Parameterdatei kommentieren können, indem ich aktualisierbare und nicht aktualisierbare Parameter von Cloudformation aufteile.
z.B. Ich habe versucht, meine Snapshot-ID eines Volumes zu aktualisieren.
-> Andere Volume-Eigenschaften als AutoEnableIO, Typ, Größe und IOPS können nicht aktualisiert werden. Ändern Sie die Eigenschaften auf die vorherigen Werte zurück und aktualisieren Sie den Stack erneut.

Habe versucht, mit dem folgenden Befehl einen Stack zu erstellen: aws cloudformation create-stack --stack-name myfirsttest --region us-west-2 --template-body file://testcfn.yml
Habe aber folgende Fehlermeldung bekommen:
Fehler beim Analysieren des Parameters „--template-body“: Paramfile file://testcfn.yml konnte nicht geladen werden: [Errno 2] Datei oder Verzeichnis nicht vorhanden: „testcfn.yml“

Meine testcfn.yml-Datei lautet wie folgt:
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, Yaml-Unterstützung!!!

› 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.

Ist das immer noch nichts?? Oder habe ich übersehen, dass es irgendwo ist?

Für alle, die an der Verwendung von .yaml in ihren Parametern interessiert sind, lesen Sie bitte diese
https://github.com/realestate-com-au/stackup

Ich denke, AWS sollte an die Tür von Immobilien klopfen, um diesen Code zu kaufen und ihn in ihre IP zu verschieben ...

+1

Kein großer Fan von hacky Methoden zur Lösung von Problemen, da hacky ziemlich schnell chaotisch wird.
Aber für alle, die daran interessiert sind, dies mit der Params-Datei in ihrer Testumgebung zu tun.

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

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

+1 für Parameterdateien als YAML. Warum jemanden zwingen, Markups zu mischen?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen