এডাব্লুএস ক্লাউডফর্মেশনে শর্তসাপেক্ষ সম্পত্তি


10

কিছু ইসি 2 উদাহরণ তৈরি করার জন্য আমাদের কাছে একটি ডাব্লুএস ক্লাউডফর্মেশন টেম্পলেট রয়েছে। এর মধ্যে কিছুগুলির একটি নির্দিষ্ট প্রয়োজন PrivateIpAddressএবং আমি কীভাবে এটি টেমপ্লেটে অন্তর্ভুক্ত করব তা নির্ধারণের জন্য সংগ্রাম করছি।

আপাতত আমি একটি টেমপ্লেট প্যারামিটার পেয়েছি PrivateIPএবং একটি শর্ত তৈরি করছি RequestedPrivateIP। এ পর্যন্ত সব ঠিকই. তবে কীভাবে এটি AWS::EC2::Instanceউত্সের নির্দিষ্টকরণের সাথে যুক্ত করা যায় তা আমি বুঝতে পারি না can't আমি এটি চেষ্টা করেছি:

    "PrivateIpAddress": {
        "Fn::If": [ "RequestedPrivateIP",
            { "Ref": "PrivateIP" },
            ""                            <-- This doesn't work
        ]
    },

যখন RequestedPrivateIPএটি মিথ্যা হয় তখন ব্যর্থ হয়

CREATE_FAILED    AWS::EC2::Instance    NodeInstance    Invalid addresses: []

কোনও ধারণা কীভাবে allyচ্ছিকভাবে একটি স্ট্যাটিক প্রাইভেট আইপি বরাদ্দ করা যায় এবং যদি নির্দিষ্ট না হয় তবে এটি ডাব্লামিক সেট সেট করার জন্য এডাব্লুএসে রেখে দেয়?

উত্তর:


22

আমি কাঠামোটি এতে পরিবর্তন করব:

"PrivateIpAddress": {
    "Fn::If": [ "RequestedPrivateIP",
        { "Ref": "PrivateIP" },
        {"Ref" : "AWS::NoValue" }
    ]
}

অ্যাডাব্লুএস :: নোভ্যালু আপনার যদি আপনার স্টেট স্টেটমেন্টের অন্য বিকল্প দেয় give http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html


0

যেহেতু দেখে মনে হচ্ছে PrivateIpAddressসম্পত্তিটি খালি স্ট্রিংটিকে এটির মান হিসাবে সমর্থন করে না, তাই আমি আপনার দুটি পৃথক সংস্থান তৈরি করার পরামর্শ দেব AWS::EC2::Instance। এর মধ্যে একটিতে আপনার অবস্থা থাকবে RequestedPrivateIPঅন্য একজনের একই অবস্থা হওয়া উচিত তবে উপেক্ষিত হবে, যেমন DidNotRequestPrivateIP

"InstanceWithPrivateIp": {
    "Type": "AWS::EC2::Instance",
    "Condition": "RequestedPrivateIP",
    "Properties": {
        [...]
    }
},

"InstanceWithoutPrivateIp": {
    "Type": "AWS::EC2::Instance",
    "Condition": "DidNotRequestPrivateIP",
    "Properties": {
        [...]
    }
}

1
এটি প্রকৃতপক্ষে একটি বিকল্প তবে DRY (নিজেকে পুনরাবৃত্তি করবেন না) নীতিটি গুরুতরভাবে ভেঙে দেয় যা আমি করতে আগ্রহী নই। এছাড়াও - প্রায়শই অন্যান্য বৈশিষ্ট্য রয়েছে যা সেট করা হতে পারে বা নাও থাকতে পারে, উদাহরণস্বরূপ, কোনও এসএসএল শংসাপত্র সেট করা হয়েছে কিনা তার উপর ভিত্তি করে ELB এইচটিটিপিএসে শুনবে কিনা। সামান্য পরিবর্তন সহ সমস্ত ঘোষণাপত্র পুনরাবৃত্তি করে এই সমস্ত সামান্য প্রকরণটি ধরার চেষ্টা করার ফলে দ্রুত একটি বিশাল অবিস্মরণীয় টেমপ্লেট বাড়ে। তবে যাইহোক পরামর্শের জন্য ধন্যবাদ।
এমএলইউ

1
আমি আপনার সাথে এমএমএল সম্পূর্ণরূপে একমত, পুনরাবৃত্তি কখনও মজা হয় না। তবে ক্লাউডফর্মেশনের সাথে আমার অভিজ্ঞতা থেকে আপনি কিছুটা সময় নিজেকে পুনরাবৃত্তি করতে বাধ্য হন। অন্য সমাধানটি আমি দেখতে পাচ্ছি তার পরিবর্তে সাবস্ট্যাকগুলি তৈরি করা যা আপনি উপরে উল্লিখিত শর্তগুলির সাথে অন্তর্ভুক্ত করেন এবং তারপরে সেই সাবস্তাকগুলিতে আপনি সেই শর্তের জন্য নির্দিষ্ট স্টাফ করেন।
বাজে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.