Aws-cli: السماح بنشر المعلومات السحابية لقبول ملف المعلمات

تم إنشاؤها على ١٣ سبتمبر ٢٠١٧  ·  55تعليقات  ·  مصدر: aws/aws-cli

عند تشغيل الأمر cloudformation deploy سيكون من المفيد أن تكون قادرًا على تمرير المعلمات كملف (إلى المعلمة --parameter-override ) ، كما يمكن القيام به مع create-stack و update-stack.

مطلوب هنا أيضًا: https://github.com/awslabs/serverless-application-model/issues/111

closed-for-staleness cloudformation packagdeploy customization feature-request

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

في حالة بحث أي شخص عن حل بديل ، يمكنك تجربة استخدام jq ، مثل:
aws cloudformation deploy --parameter-overrides $(jq -r '.[] | [.ParameterKey, .ParameterValue] | join("=")' param.json) ...
قد يكون المزيد من الهروب ضروريًا بناءً على قيم المعلمات الخاصة بك.

ال 55 كومينتر

بالنظر إلى الكود ، يبدو أننا نحتاج إلى شيء ما هنا

https://github.com/aws/aws-cli/blob/develop/awscli/customizations/cloudformation/deploy.py#L178

يقرأ في ملف JSON ، ربما تحقق سريعًا من سلامة العقل ، ثم يمرره إلى deploy() .

وضع علامة على أنه طلب ميزة لنشر المعلومات السحابية.

Sanathkr الخواطر؟

في انتظار هذه الميزة 👍

أرغب أيضًا في ميزة إجراءات package . شكرا! 👍

تمرير ملف المعلمات عبر شيء مثل --parameters كما في أوامر create-stack و update-stack CF (وبشكل مثالي استخدام نفس بنية محتويات الملف) سيجعل تطوير قوالب CF أسهل قليلاً بالنسبة أنا. أحب أن أرى هذه الميزة.

+1 لهذه الميزة. شكرا!

صباح الخير!

نحن نغلق هذه المشكلة هنا على GitHub ، كجزء من ترحيلنا إلى

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

ككتاب تمهيدي سريع لـ 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/33168409-allow-cloudformation-deploy-to-accept-a-paramater

+1 لهذه الميزة. شكرا!

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

في حالة بحث أي شخص عن حل بديل ، يمكنك تجربة استخدام jq ، مثل:
aws cloudformation deploy --parameter-overrides $(jq -r '.[] | [.ParameterKey, .ParameterValue] | join("=")' param.json) ...
قد يكون المزيد من الهروب ضروريًا بناءً على قيم المعلمات الخاصة بك.

سأقوم بإجراء +1 لهذه الميزة أيضًا.

أنا أستبدل jq بـ jp كلما أمكن ذلك. JMESPath يستحق التعلم.

$ jp \
  --unquoted \
  --filename example-app-params-staging.json  \
  "join(' ', @[].join('=', [ParameterKey, ParameterValue])[])"
HostedZone=example.com KeyName=example-ap-southeast-2 TargetPort=8080 VpcStackName=vpc-example

نظرًا لأن إجراء نشر AWS CodePipeline CloudFormation يتطلب تنسيق ملف تكوين قالب معين ، سيكون من الجيد إذا كان بإمكانك أيضًا دعم هذا التنسيق أيضًا.

+1 لهذا. أتفهم الرغبة في إبقاء "نشر المعلومات السحابية لـ aws" بسيطًا ، ولكن هذا الأمر يحتوي بالفعل على علامات سطر أوامر فردية للإمكانيات والعلامات والمعلمات (مثل جميع أوامر سحابة aws الأخرى) ، ولكنك جعلتها تعمل بشكل مختلف (قبول قائمة فقط من string = string في سطر الأوامر ، بدلاً من بنية JSON في ملف). يجب أن تجعل جميع أوامر "aws cloudformation" تعمل باستمرار (بما في ذلك استخدام cli-input-json مثل جميع أوامر aws CLI تقريبًا). إذا كنت ترغب في تبسيط بناء العلامات لـ "نشر المعلومات السحابية لـ aws" ، فيجب عليك تقديم علامة سطر أوامر مختلفة ، مثل --tags-overrides أو --parameters-overrides.

👍 عند طلب الميزة ، سيكون رائعًا إذا تم دعم ذلك.

ستكون هذه ميزة رائعة! من شأنه أن يبسط Idempotency إلى حد كبير عند إنشاء حزم cf باستخدام cli 👍

+1

+1

+1

@ ColdFire87 @ dan- lindmnwk هل يمكنك من فضلك فقط 👍 الإصدار الأول ، ووقف البريد العشوائي أيا كان المشترك في هذه المشكلة؟ كل تعليق مع 👍 يتم اختبار اتصال 20 شخصًا ...
(آسف للآخرين ، لكن علينا محاربة ذلك ...)

pierreozoux آسف لذلك ، لم أقصد إزعاج الناس :)

ماذا قال cervantek . أريد فقط أن أضيف أنني أتمنى أن تتعقب هذه التذكرة تنفيذ كل هذه الخيارات للتوافق مع create-stack :

          [--template-body <value>]
          [--template-url <value>]
          [--parameters <value>]
          [--capabilities <value>]
          [--tags <value>]

سيكون لدى العديد من الأشخاص مثلي رمز قديم تمت كتابته باستخدام create-stack و update-stack وسيرغبون في إعادة كتابته لاستخدام deploy . لا ينبغي أن يكون الأمر بهذه الصعوبة.

+1 إلى --parameters يدعم ملف JSON.

بدأ فريقنا مؤخرًا في إنشاء قوالب المعلومات السحابية التي كانت كبيرة بما يكفي لتتطلب تحميلًا إلى حاوية S3 ، لذلك نقوم الآن بالانتقال من إنشاء مكدس وتحديث مكدس للنشر ... ونواجه نفس مشكلة ترحيل بياناتنا ملف المعلمات للعمل مع هذا الأمر الجديد. +1 لهذه الميزة

+1 لهذه الميزة

+1

+1

+1

+1

@ أوليفييه-شميت-sonarsource @ anshul0915lmunro @ MiMo42markusbecker @ benjammin12 وغيرها في المستقبل، يرجى فقط 👍 القضية الأم بدلا من إغراق أولئك منا مشترك في موضوع مع تعليقات إذا كنت ترغب فقط في +1 القضية. شكرا.

👍

حل آخر لهذا هو استخدام ملف .ini مع قائمة من أزواج المعلمات key=value ، ونشرها باستخدام:
aws cloudformation deploy --parameter-overrides $(cat parameters.ini)
يمكن القيام بالشيء نفسه بالنسبة للعلامات.

حل آخر لهذا هو استخدام ملف .ini مع قائمة من أزواج المعلمات key=value ، ونشرها باستخدام:
aws cloudformation deploy --parameter-overrides $(cat parameters.ini)
يمكن القيام بالشيء نفسه بالنسبة للعلامات.

هذا النهج لطيف ويعمل! ومع ذلك ، من أجل الحفاظ على التناسق مع جميع الأوامر الأخرى (التي تدعم إدخال "json") ، فإن النصيحة هي الاحتفاظ بالمعلمات في تنسيق ملف "json" ومعالجة الملف على وجه التحديد قبل استخدامه كمدخل لـ "النشر" أمر. يمكن تحقيق ذلك باستخدام الأمر "jq" المتاح لجميع الأنظمة الأساسية الأكثر شيوعًا .

يمكن تحقيق التحويل بسهولة من خلال:

cat parameters.json | jq -r '.[] | .ParameterKey + "=" + .ParameterValue'

علاوة على ذلك ، يمكن تحويله سريعًا واستخدامه مباشرةً كمدخل لأمر النشر :

aws cloudformation deploy --template-file ./sample-template.yaml --stack-name sample-stack --parameter-overrides $(cat parameters.json | jq -r '.[] | .ParameterKey + "=" + .ParameterValue')

أتمنى أن يساعد!

لحسن الحظ تم تجاوز هذه المشكلة بالكامل بواسطة CDK. لقد انتقلت.

لقد كنت أحاول الانتقال إلى طريقة النشر من إنشاء مكدس / مكدس التحديث وكنت أحصل على هذا بالإضافة إلى مشكلات أخرى - لقد فوجئت بعد 3 سنوات من عدم وجود تكافؤ مع تلك الأساليب القديمة.

أواجه مشكلات في استخدام الحل البديل أعلاه لملفات العلامات حيث تحتوي بعض العلامات على مسافات في قيمها. أنا متأكد من أن هذا قابل للحل ، لكن مشكلتي الأخرى أكثر جوهرية - إخراج هذا الأمر غير منظم ، لذلك من أجل الحصول على معرف مجموعة التغييرات ، يجب أن أقوم بتحليل سلسلة نصية غير منظمة. أنا أعتبر أن هذا مراوغ جدًا (!) خاصة وأن طريقة create-change-set ترجع المعرف في json.

ارتباط المشكلة على uservoice في رسالة سابقة في هذا الموضوع ميت - هل يعرف أي شخص مكان تعقب هذه المشكلة حاليًا أو ما إذا كان لا يزال قيد العمل؟

يا رفاق ، يرجى التفكير في تنفيذ هذه الميزة. استخدام الحيل مع cat أو تمرير المعلمات عبر SSM كحل بديل - إنه تعقيد غير ضروري على وظيفة أساسية للغاية ، ويتم دعم هذه الوظيفة تقريبًا من قبل كل بديل آخر لـ CFN .

لقد صادفت هذا الموضوع أثناء البحث عن حل لتمرير المعلمات إلى create-stack و update-stack ، لكنني سأقدم 👍 هنا أيضًا ، ولكن مع إضافة إلى الطلب لدينا خيار لتمرير ملف يتبع تنسيق JSON الذي يقبله CodePipeline لـ CloudFormation.

إذا كنت مستخدمًا كثيفًا لـ CodePipeline لنشر CloudFormation ، فمن المعتاد بالفعل أن يكون لديك ملفات CloudFormation بتنسيق CodePipeline ملتزمة داخل مستودعاتك.

يعمل هذا بشكل رائع عند تشغيل CI / CD كامل عبر خط الأنابيب ، ولكنه يجعل التنمية المحلية مملة للغاية. لدي بعض البرامج النصية التي يمكنها ترجمة CodePipeline JSON إلى JSON التي تقبلها aws cloudformation create-stack و update-stack عبر --parameters file://params.json ، ومع بعض العمل الإضافي ربما يمكن أن تعمل في بعض الاختراقات ذكر الأشخاص أعلاه بـ jq وما شابه ، لكن هذا يبدو وكأنه اختراق.

الرجاء تنفيذ هذا!

الرجاء تنفيذ هذا! تعال إلى AWS ، لقد كان هذا مفتوحًا منذ ما يقرب من 3 سنوات.

شيء آخر مزعج للغاية ومرتبط إلى حد ما بالموضوع هو عدم الاتساق بين التنسيقات لتزويد معلمات CFN عبر CLI .

أنا مستخدم deploy في الوقت الحالي ، وقد تمكنت حتى الآن من التخلص منه باستخدام المعلمات المضمنة عبر الحيل باستخدام cat - أي --parameter-overrides $(shell cat configs/${LNMS_ENV}.properties) .

نشأت المشكلة عندما قررت تنفيذ شيء مشابه لـ Terraform's plan باستخدام مجموعات تغيير CFN. تبين أن aws cloudformation create-change-set قادر على تجاوز المعلمات ، لكنه يتوقع أن يتم شحنها بتنسيق مختلف عن deploy !

لكل مستند CLI مقابل deploy هو:

ParameterKey1=ParameterValue1

وثائق CLI لـ create-stack و update-stack و create-change-set هي:

ParameterKey=string,ParameterValue=string

مع خيار توفير JSON.

في الحقيقة أنا لا أحصل على ماذا هم مختلفون، لماذا deploy لن تدعم تنسيق JSON نفسه، وما أنا من المفترض أن تفعل - حفاظ على اثنين أساسا الملفات المعلمة نفسها لكل بيئة؟

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

لم يلاحظ PS أن @ pablods90 يتعامل مع هذا ، ولكنه يثبت فقط أن الناس

+1

تستمر مغامرات Captain Consistency.

بينما يمكننا الابتعاد عن استخدام cat لتخزين التكوينات لـ deploy بتنسيق متوافق أيضًا مع update-stack :

[
    {
        "ParameterKey": "ParamEnv",
        "ParameterValue": "prod"
    }
]

يستخدم نوع الإجراء CodePipeline مع Deploy:CloudFormation تنسيق ملف آخر لتمريره إلى CFN:

{ 
  "Parameters": {
     "ParamEnv": "prod"
  }
}

لا مزيد من التعليقات ... تعبت حقًا من حل المشكلة نفسها مرارًا وتكرارًا. هذا سيء.

انتهى بنا الأمر فقط إلى وجود نصوص برمجية من سطر واحد لاستدعاء aws cloudformation deploy محفوظة بجانب ملفات CodePipeline ، بدلاً من cat أو jq shenanigans.

أعتقد أن هذه واحدة من تلك المشكلات التي لن يقوموا بإصلاحها ، ربما لأن تركيزهم الآن هو cdk؟

على أي حال ، تخليت عن الانتظار ومحاولة نشر الحذاء للقيام بما اعتقدت أنه يجب أن يفعله وانتهى بي الأمر بفعل ما أعتقد أن معظم الآخرين قد فعلوه - اكتب نصي "upert" bash الخاص بي باستخدام أوامر إنشاء المكدس وتحديثها. 100 سطر طويلة لكنها على الأقل تقوم بالمهمة الآن!

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

مرحبًا ، نأسف حقًا لأن الأمر استغرق وقتًا طويلاً للوصول إلى هذه المشكلة.

هل يمكنك إلقاء نظرة على وصف العلاقات العامة وإعلامنا برأيك في هذا الحل.

أيضًا ، يبدو أنه لا توجد طريقة سهلة (على الأقل في Windows Command Prompt CLI) لتوفير معلمة متعددة الأسطر.

آمل أن يؤدي تنفيذ ميزة ملف المعلمات هذه إلى حفظ مشكلة المعلمات متعددة الأسطر.

شكرا جزيلا لكم يا رفاق العمل الرائع!

مرحبًا ، تم دمج هذا العلاقات العامة وإصداره في إصدار AWS CLI v.2.0.39.

@ vz10 شكرا على التحديث.

راجع للشغل ، هل تعرف ما إذا كان هذا التنفيذ (عبر ملف معلمات) يسمح بمعلمات متعددة الأسطر؟ كان هذا أحد الأشياء التي لم أتمكن من الوصول إليها في بيئة Windows المجمعة التي تعمل على AWS CLI.

شكرا لمساعدتك مقدما!

@ bs-thomas لم أختبرها باستخدام معلمات متعددة الأسطر. لكنني أعتقد أنه إذا كان تنسيق JSON يدعمه ، فسوف يعمل بشكل جيد.

سيكون أمرًا رائعًا إذا كان بإمكانك تجربته وإعطائنا ملاحظات.

شكرا لك.

@ vz10 متعدد الخطوط يعمل بالفعل. ومع ذلك ، يبدو قبيحًا جدًا مع \ n

في الواقع ، سيكون من الرائع أن تتمكن CLI من دعم تنسيق YAML لمعلمات CLI-overrides ؛-)

@ bs-thomas يبدو وكأنه طلب ميزة آخر.

فقط قم بإنشائه وستكون نصف معركة جعل تجاوز المعلمات يفهم YAML ؛)

@ vz10 بالتأكيد ، سأفعل ذلك على الفور.

بالمناسبة ، لاحظت شيئًا غير سار حول مدقق JSON. لا يقبل القيم الصحيحة ولا القيم المنطقية. لذا إذا كان لديهما ، فيجب تحديده كسلسلة ، وإلا سأحصل على هذا الرد:

image

ثم!

@ bs-thomas نعم ، إنه غريب بعض الشيء ولكنه نفس السلوك الذي يتوقعه cloudformation create-stack - جميع القيم عبارة عن سلاسل ويتم تحليلها بعد ذلك وليس لها نوع معامل منطقي

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