Aws-cli: ملف المعلمة الخارجية Cloudformation لا يدعم ملف YAML

تم إنشاؤها على ٣ نوفمبر ٢٠١٦  ·  143تعليقات  ·  مصدر: aws/aws-cli

لقد استخدمت aws-cli لتحديث مكدساتي ، وأريد استخدام ملف yaml خارجي (dev.yaml) كملف معلمات مثل أدناه:

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

في dev.yaml ، يحتوي فقط على:

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

ومع ذلك ، تلقيت رسالة الخطأ هذه عندما أقوم بتشغيل أمر التحديث أعلاه:

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

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

إذا استخدمت ملف JSON بنفس السياق كما هو موضح أدناه ، واستخدمته بدلاً من dev.yaml ، فإنه يعمل بشكل جيد:

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

لذا ، هل يمكن أن يكون ملف المعلمات الخارجية لمعلومات سحابة aws هو ملف YAML؟ أم سوف ...؟

feature-request

التعليق الأكثر فائدة

سأثني على طلب الميزة هذا.

ال 143 كومينتر

مرحبًا ، ليس لدينا حاليًا أي خطط لدعم YAML كجزء من وسيطات سطر الأوامر. سأضع علامة على هذا كطلب ميزة حيث يمكنني أن أرى كيف يمكن أن يكون مفيدًا لبعض الأشخاص.

يتم تحميل محتويات الملف الذي توفره لـ --parameters وإفراغها مباشرةً كوسيطة بحيث يمكنك فقط جعل محتويات الملف بأحد التنسيقين:
بناء جملة الاختزال:
ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean
أو بناء جملة JSON:

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

سأثني على طلب الميزة هذا.

سوف أؤيده أيضًا

+1

لو سمحت. هذا أمر بالغ الأهمية بالنسبة لنا.

+1

على الاطلاق +1

إجراء +1 الذي يسمح ببيانات بتنسيق YAML لـ --template-body ولكن ليس لـ --parameters أمر محرج

👍

+1

+1

+1

نظرًا لأنه يمكنك توفير نموذج في yaml ، يجب أن تكون قادرًا على توفير المعلمات في yaml أيضًا
أعتقد أن هذه الميزة ضرورية

+1

+100

+1

+100

+1

" https://gist.github.com/mbailey/2f7c878eed123cab6fb125117f35aecc
"
"yamlise - راجع YAML عند تحرير ملفات JSON في vim.
"
"تم إنشاؤه للأشخاص الذين يعانون من رهاب JSON ، يجب أن يتم ذلك
"يتم استخدامه فقط عند كل محاولات إتقان JSON
"فشل. http://www.json.org/
"
"آمل ألا يكون الوقت قد فات على هؤلاء الناس!
"من فضلك. هذا أمر بالغ الأهمية بالنسبة لنا."
" https://github.com/aws/aws-cli/issues/2275#issuecomment -277829948
"
" تثبيت
"============
"1. تثبيت cfn-flip https://github.com/awslabs/aws-cfn-template-flip
"2. ضمّن هذا الملف في ملف ~ / .vimrc
"3. vim cloudformation-params.json
"يجب أن ترى الآن اليامل الذي تحبه
"4: wq
"يجب أن يحتوي الملف الآن على JSON Amazon CLI الذي تتوقعه
"
: augroup yamlise
: autocmd!
: autocmd BufReadPost، FileReadPost * .json '[،']! cfn-flip
: autocmd BufWritePre، FileWritePre * .json '[،']! cfn-flip
: autocmd FileAppendPre * .json '[،']! cfn-flip
: augroup END

+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

+ المشاة

+1

+1

+1

+1

+1

إليك حل بسيط باستخدام عملية استبدال Bash و cfn-flip :
aws cloudformation ... --parameters file://<(cfn-flip parameters.yml)

+1

+1

++

+0.5

+1

++

+1!

لا تفهم سبب حصولك على النموذج في YAML ولكن بعد ذلك في JSON. يبدو إغفالًا غريبًا ، وهل آمل أن تعمل AWS على .... من فضلك؟

+1

+1

صباح الخير!

نحن نغلق هذه المشكلة هنا على GitHub ، كجزء من ترحيلنا إلى UserVoice لطلبات الميزات التي تتضمن AWS CLI.

سيتيح لنا ذلك الحصول على أهم الميزات لك ، من خلال تسهيل البحث عن الميزات التي تهتم بها وإظهار الدعم لها ، دون إضعاف المحادثة مع تقارير الأخطاء.

ككتاب تمهيدي سريع لبرنامج UserVoice (إن لم يكن مألوفًا بالفعل): بعد نشر الفكرة ، يمكن للأشخاص التصويت على الأفكار ، وسيستجيب فريق المنتج مباشرةً للاقتراحات الأكثر شيوعًا.

لقد قمنا باستيراد طلبات الميزات الحالية من GitHub - ابحث عن هذه المشكلة هناك!

ولا تقلق ، ستظل هذه المشكلة موجودة على GitHub من أجل الأجيال القادمة. نظرًا لأنه استيراد نصي فقط للمنشور الأصلي في UserVoice ، سنظل نضع في اعتبارنا التعليقات والمناقشات الموجودة بالفعل هنا حول مشكلة GitHub.

سيظل GitHub هو القناة للإبلاغ عن الأخطاء.

مرة أخرى ، يمكن الآن العثور على هذه المشكلة من خلال البحث عن العنوان على: https://aws.uservoice.com/forums/598381-aws-command-line-interface

- فريق أدوات وأدوات AWS SDK

يمكن العثور على هذا الإدخال على وجه التحديد في UserVoice على: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168310-cloudformation-external-parameter-file-do-not-supp

+1

بناءً على تعليقات المجتمع ، قررنا إعادة طلبات الميزات إلى مشكلات GitHub.

+1

+1

+1

+100

+1

+1

+1

+1
و +1000 لمزيد من الاتساق بشكل عام من فضلك ؛)

+1

هذه القضية عمرها سنتان ؛ _ ؛

matthewflannery كلا ، إنها 587 يومًا فقط في الواقع.

+1

Yaowenjie 587/365 = 1.608 ~ سنتان

+1

أكثر 11! 1! 1 واحد !! 1! 11

: +1:

: heavy_plus_sign:: 100:

👍

+1

بقي شهران على الاحتفال بالذكرى الثانية لهذه القضية ، أيها الناس! 👨‍👩‍👧‍👦🎉🎉🎊🎊👨‍👨‍👧‍👦

نظرًا لأن فريقي معتاد على YAML (جميع قوالبنا في YAML) لدي بعض أتمتة shell التي تحول ملف YAML إلى ملف json ، ثم يمرر ذلك إلى CF. يوضح ذلك (على الأقل) مدى الرغبة في هذه الميزة - فوجود العملاء يبنون أتمتة خاصة بهم حول الوظائف الأساسية مثل هذه ليست إجابة.

أيضًا ، يجب أن نلاحظ أن طريقة عمل parametersKey / ParamaterValue بأكملها لـ CloudFormation غبية.

هل يمكننا الحصول على نموذج CloudFormation في YAML وتقديم ملف المعلمات في JSON؟

Yashswarnkar نعم - يمكنك الحصول على القالب في YAML والمعلمات في JSON. هذه المشكلة لأن المعلمات يمكن أن تكون فقط في JSON - ملفات YAML غير مدعومة على الرغم من أن القالب في YAML.

+1 أود حقًا أن أتمكن من إضافة تعليقات إلى ملفات المعلمات الخاصة بي وتشغيلها من CLI. هل توجد أي خطط بعد لإضافة دعم .yaml لأمر create-stack CLI مع - معلمات لدعم yaml؟

أي ETA لهذه الميزة؟

+1

ما يقرب من عامين ولا يزال لا يوجد yaml للمعلمات ... :(

+1

+1

+1

مع توفر SSM الآن بسلاسل آمنة وطرق لفك تشفيرها ، فإنني أستمتع بفكرة تشغيل برنامج نصي لوضع المتغيرات في حساب AWS ، ثم الرجوع إليها من قالب المعلومات السحابية ... أي شخص لديه أفكار أخرى مثل هذه ؟

حسب التعليقات أعلاه ، يمكنك استخدام cfn-flip
https://github.com/awslabs/aws-cfn-template-flip

في bash - عرض parameters.yaml كملف json مع عامل التشغيل <()

pip install cfn_flip

cat <(cfn-flip parameters.yaml)

استخدم ، مع <() في الأمر cli

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

+100

من الواضح أن هذه ميزة في ارتفاع الطلب - لماذا لم يكن هناك تحرك في هذا على الرغم مما يبدو أنه مئات الأشخاص يطلبونه؟

+1
حالة الاستخدام الحقيقية ، حيث يتعين عليك تحديد JSON ضمن معلمة ، وفي هذه الحالة يكون JSON كابوسًا مع الاضطرار إلى الهروب من الاقتباسات ...

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

مقارنة ب:

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

نحن سوف؟ لا مزيد من التحديثات؟

نحن سوف؟ لا مزيد من التحديثات؟

اهدأ ، إنه يناير 2019 فقط

مرحبًا ، كيف حال هؤلاء الأشخاص مع الاندماج في العلاقات العامة؟

سأفكر في كتابة هذا إذا كنت أعرف أن الفريق يندمج بانتظام في العلاقات العامة من خارج مؤسسته.

لا يوجد فكرة. أعتقد أن هناك طلبًا كافيًا على هذا ، وسوف يقومون بتنفيذه في النهاية.

ربما يجب أن يظل هذا مفتوحًا إلى الأبد ، ويمكن للجميع أن يكونوا أصدقاء وأن يعقدوا مؤتمرًا كل عام يسمى "Payameter Fam" (كما في yaml parameter fam) حيث نجتمع جميعًا ونناقش الصدمة المضادة لـ yaml.

+1

👍

+1

+1

3 سنوات ، 90٪ من واجهات برمجة التطبيقات تستخدم YAML ، والكثير من +1 المزعجة و AWS تخدش كراتها ...

أود حقًا أن يستخدم yaml التعليقات لملفات التكوين / عناصر uncomment / إلخ

+1

إنه يونيو 2019 ، ولا أفهم سبب عدم قيام AWS بحل هذه المشكلة. إنهم يوظفون الكثير من الناس كل عام

تعال حقا؟ دعونا نحرك هذا

+1

+1

+1

+1

+1

+1

+1

انتظار انتظار...

مازلت منتظرا!

لا تزال المعلمات هي Json فقط؟

هذه المشكلة قديمة بما يكفي لبدء مرحلة ما قبل المدرسة.

سأكون في إعادة: Invent 2019 إذا كان أي شخص يريد الارتباط بهذه المشكلة والتحدث الهراء إلى Jeff Barr ، وآخرون. آل على تويتر.

سيكون هذا جميل

+1

+1

+1

+1
فقط اضغط على هذه الصخرة ، هل يمكنني الحصول على دعم معلمات YAML من فضلك؟
مشروعي الحالي يحب YAML (لست :))

هل يمكنك إضافة دعم XML أيضًا؟ لا يمكنني إرسال هذا عبر SOAP. يعد دعم AWS ضروريًا في نماذج Windows.

+1

+1

يوم الخميس ، 31 أكتوبر 2019 ، الساعة 4:04 مساءً ، Bernie Durfee [email protected]
كتب:

+1

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/aws/aws-cli/issues/2275؟email_source=notifications&email_token=AHCULG57Z7SJHTRO43JC6LLQRL6ZPA5CNFSM4CVAW4OKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW48
أو إلغاء الاشتراك
https://github.com/notifications/unsubscribe-auth/AHCULG3TRJ5FGXG3NOVORBTQRL6ZPANCNFSM4CVAW4OA
.

+1

+1

أي تحديثات: /؟

+1

+1
أود أن أكون قادرًا على التعليق في ملف المعلمة الخاص بي عن طريق تقسيم المعلمات القابلة للترقية في السحاب وغير القابلة للترقية.
على سبيل المثال حاولت ترقية معرّف اللقطة الخاص بي لوحدة تخزين.
-> لا يمكن تحديث خصائص وحدة التخزين بخلاف AutoEnableIO والنوع والحجم و IOPS. قم بتغيير الخصائص مرة أخرى إلى القيم السابقة وقم بتحديث المكدس مرة أخرى.

كان يحاول إنشاء مكدس باستخدام الأمر التالي: aws cloudformation create-stack --stack-name myfirsttest --region us-west-2 --template-body file: //testcfn.yml
لكن تلقيت رسالة الخطأ التالية:
خطأ في تحليل المعلمة '--template-body': تعذر تحميل ملف paramfile: //testcfn.yml : [Errno 2] لا يوجد مثل هذا الملف أو الدليل: 'testcfn.yml'

ملف testcfn.yml الخاص بي هو كما يلي:
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.

دعم 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.

ألا يزال هذا ليس شيئًا ؟؟ أو هل فاتني وجوده في مكان ما؟

لأي شخص مهتم باستخدام .yaml في معاملاتهم ، يرجى الرجوع إلى هذا
https://github.com/realestate-com-au/stackup

أعتقد أن AWS يجب أن تطرق باب العقارات لشراء هذا الرمز ونقله إلى عنوان IP الخاص بهم .....

+1

لست معجبًا كبيرًا بالطرق المبتكرة لحل المشكلات ، حيث يصبح الاختراق سريعًا جدًا.
ولكن لأي شخص مهتم بالقيام بذلك باستخدام ملف المعلمات في بيئة الاختبار الخاصة به.

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

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

+1 لملفات البارامترات مثل YAML. لماذا تجبر شخص ما على خلط هوامش الربح؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات