আপনি অ্যামাজন ইলাস্টিক বিয়ানস্টালকের (এডাব্লুএস ইবিএস) কাস্টম এনভায়রনমেন্ট ভেরিয়েবল কীভাবে পাস করবেন?


121

অ্যামাজন ইলাস্টিক বিয়ানস্টাল্ক ব্লার্ব বলেছেন:

ইলাস্টিক বিয়ানস্টালক আপনাকে "হুড খুলুন" এবং পুরো নিয়ন্ত্রণ বজায় রাখতে দেয় ... এমনকি ইলাস্টিক বিয়ানস্টালক কনসোলের মাধ্যমে পরিবেশের ভেরিয়েবলগুলিও পাস করতে পারে।

http://aws.amazon.com/elasticbeanstalk/

ইলাস্টিক বিয়ানস্টালক কনফিগারেশনের একটি ছাড়াও অন্যান্য পরিবেশের পরিবর্তনগুলি কীভাবে পাস করবেন?


4
আপনি এতে স্বীকৃত উত্তরটি পরিবর্তন করতে বিবেচনা করতে পারেন
ফিলিপ

উত্তর:


136

যে কেউ এই .ebextensions/*.configউপায়টি ব্যবহার করে তাদের শীর্ষস্থানীয় হিসাবে: আজকাল আপনি ইলাস্টিক বিয়ানস্টালক ওয়েব ইন্টারফেসে পরিবেশের ভেরিয়েবলগুলি যুক্ত করতে , সম্পাদনা করতে এবং মুছে ফেলতে পারেন

ভেরিয়েবলগুলি কনফিগারেশন → সফ্টওয়্যার কনফিগারেশনের অধীনে রয়েছে:

পরিবেশগত বৈশিষ্ট্য

ওয়ানমার উত্তরের.ebextensions মতো ভার্স তৈরি করা এখনও কার্যকর।

এটি এমনকি পছন্দনীয় হতে পারে, উদাহরণস্বরূপ যদি আপনি পরে অন্য কোনও পরিবেশে স্থাপন করেন এবং ম্যানুয়ালি সেট করতে ভুলে যাওয়ার ভয় পান বা আপনি যদি উত্স নিয়ন্ত্রণে মানগুলি প্রতিশ্রুতি দিয়ে ঠিক থাকেন তবে। আমি উভয়ের মিশ্রণ ব্যবহার করি।


2
বিকল্পভাবে, আপনি কনফিগারেশন সংরক্ষণ করতে পারেন, এবং কনফিগারেশন ব্যবহার করে নতুন পরিবেশ চালু করতে পারেন।
মাইকেল গাল্লেগো

1
হ্যাঁ, আমি বলব যে এটি সর্বোত্তম বিকল্প। আমি কেবল এটি ভুলে যেতে থাকি এবং নতুন পরিবেশ উইলি-নিলি চালু করি। :)
চুন

1
@ এডডং: হ্যাঁ, এবং বিশেষত আপনি নিজের অ্যাপ্লিকেশনটিতে সেগুলি অ্যাক্সেস করতে পারেন। যেমন রেলগুলিতে ENV["CUSTOM_ENV"]ফিরে আসত "something-something"
চুন

3
আমি যদি নতুন বৈশিষ্ট্য যুক্ত করি, বা কোনও সম্পত্তির মান পরিবর্তন করি তবে সেগুলি কি তাৎক্ষণিকভাবে পাওয়া যায়, তাদের কি পুনরায় আরম্ভ করার জন্য কিছু প্রয়োজন? আমি সম্প্রতি একটি অটোস্কালিং গোষ্ঠীর আকার পরিবর্তন করেছি এবং এডাব্লুএস আমাদের প্রায় 40 টি দৃষ্টান্ত বন্ধ করে দিয়ে 45 টি নতুন সন্ধান করেছে। আমি চাই না যে আমি যদি বিদ্যমান পরিবেশে একটি নতুন সম্পত্তি যুক্ত করি তবে তা ঘটবে। কোন ধারনা?
ইঞ্জিনিয়ার

4
সাম্প্রতিক পরিবর্তনগুলি থেকে সাবধান থাকুন। এই উত্তর হিসাবে , তারা পরিবেশ পরিবর্তনশীল হিসাবে পাস হয় না। এগুলি কেবলমাত্র সিস্টেমের বৈশিষ্ট্য হিসাবে পাস হয়েছে
জেমস

107

কেবল 5 টি মান সীমাবদ্ধ করছে বা আপনি একটি কাস্টম এনভায়রনমেন্ট ভেরিয়েবলের নাম রাখতে চাইতে পারেন। আপনি কনফিগারেশন ফাইলগুলি ব্যবহার করে এটি করতে পারেন। আপনার প্রকল্পের মূলে একটি ডিরেক্টরি তৈরি করুন

.ebextensions /

তারপরে এনভায়রনমেন্ট কনফাইগ নামে একটি ফাইল তৈরি করুন (এই ফাইলটিকে কিছু বলা যেতে পারে তবে এর অবশ্যই .config এক্সটেনশন থাকতে হবে) এবং নিম্নলিখিত মানগুলি যুক্ত করুন

option_settings:
  - option_name: CUSTOM_ENV
    value: staging

আপনি আপনার অ্যাপ্লিকেশন মোতায়েন করার পরে আপনি পরিবেশগত বিবরণ -> কনফিগারেশন সম্পাদনা -> ধারক এর অধীনে এই নতুন মানটি দেখতে পাবেন

: আরও তথ্যের জন্য এখানে ডকুমেন্টেশন চেক http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-options

হালনাগাদ

আপনার সংগ্রহস্থল মানগুলি যেমন API কী, গোপনীয়তা ইত্যাদির প্রতি প্রতিশ্রুতি রোধ করতে, আপনি একটি স্থানধারক মান রাখতে পারেন।

option_settings:
  - option_name: SOME_API_KEY
    value: placeholder-value-change-me

পরে আপনি এডাব্লুএস অ্যাডমিন প্যানেলে যেতে পারেন (পরিবেশের বিবরণ -> সম্পাদনা কনফিগারেশন -> ধারক) এবং সেখানে মানগুলি আপডেট করতে পারেন। আমার অভিজ্ঞতায় পরবর্তী মোতায়েনের পরে এই মানগুলি পরিবর্তন হয় না।

আপডেট 2 যেমন @ বেঞ্জামিন তার মন্তব্যে বলেছিলেন, যেহেতু নতুন চেহারা ও অনুভূতিটি 18 জুলাই, 2013 থেকে প্রবর্তিত হয়েছে, সরাসরি কনসোল থেকে যে কোনও পরিবেশের ভেরিয়েবল সংজ্ঞা দেওয়া সম্ভব:

Configuration > Software Configuration > Environment Properties


2
@ ওনিমা - আপনি কীভাবে কনফিগার ফাইলটিতে নতুন কী যুক্ত করতে পরিচালনা করবেন? পূর্ববর্তী সমস্ত সেট কীগুলি স্থানধারক মান সহ আপডেট করা ফাইল আপডেটটি চাপ দিবে?
তাবরেজ

1
@ ট্যাব্রেজ, পূর্বের যে কোনও সেট কীগুলি তাদের মান ধরে রাখবে।
আনারচটিকা

2
দুঃখিত @ ট্যাব্রেজ, এর আগে আমার এটি দেখার সুযোগ হয়নি। আনার্টটিকার উত্তরে যুক্ত করতে আমি কিছু পরীক্ষা চালিয়ে গিয়ে জানতে পেরেছিলাম যে আপনি যদি কোনও স্থানধারক ব্যবহার করেন, এবং তারপরে সত্যিকারের কীগুলি ব্যবহার করে এডাব্লুএস কনসোলের মানগুলি আপডেট করেন এবং তারপরে আপনি কনফিগার ফাইলে আপনার স্থানধারক মানগুলি আপডেট করেন এবং চাপ দিন, কীগুলি হবে না নতুন স্থানধারকের সাথে প্রতিস্থাপন করা হয়েছে। আমি এটি কিছুটা অদ্ভুত বলে মনে করি তবে আমি মনে করি এটি একটি স্বাগত আচরণ কারণ আপনি কনসোলে সমস্ত env মানগুলি পরিচালনা করতে বাধ্য হবেন।
ওয়ানমা

7
@ আর্চটিকা, আমি এইডাব্লুএস সমর্থন সম্পর্কে এই আচরণ সম্পর্কে জিজ্ঞাসা করেছি। তারা বলেছিল যে আপনি একবার কনসোলে মানগুলি আপডেট করলে তারা অগ্রাধিকার গ্রহণ করবে এবং কনফিগার ফাইল ব্যবহার করে আপনি এগুলি সংশোধন করতে পারবেন না। আপনি যদি কনসোলে কোনও মান পরিবর্তন না করেন তবে কনফিগ ফাইলে যে কোনও পরিবর্তন করা হবে তা আপডেট করা হবে।
ওনমা

1
কেউ কীভাবে কনটেইনার_কম্যান্ডের জন্য আপনার কনফিগার ফাইলের মধ্যে পরিবেশের ভেরিয়েবলগুলি ব্যবহার করতে জানেন? আমি চেষ্টা করেছিcommand: "nrsysmond-config --set license_key={$NR_INSTALL_KEY}"
কল্যানিন

29

2016 জাভা 8 টমক্যাট 8 এএমআই-তে, ইলাস্টিকবিয়ানস্টক ওয়েব কনফিগারেশন থেকে পরিবেশের ভেরিয়েবল সেট করতে ব্যর্থ। তার পরিবর্তে তারা সত্যিই jvm -D বৈশিষ্ট্য নির্ধারণ করছে।

- "নিম্নলিখিত বৈশিষ্ট্যগুলি পরিবেশের ভেরিয়েবল হিসাবে অ্যাপ্লিকেশনটিতে পাঠানো হয়েছে more আরও জানুন" "

জাভা টমক্যাট অ্যামির জন্য এই বিবৃতিটি ভুল। আমাজন না এগুলি পরিবেশের ভেরিয়েবল হিসাবে সেট । এগুলি jvm এর জন্য -D সম্পত্তি হিসাবে কমান্ড লাইনে টমক্যাটকে প্রস্থান করা সিস্টেম বৈশিষ্ট্য হিসাবে সেট করা হয়। জাভাতে পরিবেশের ভেরিয়েবলগুলি পাওয়ার পদ্ধতিটি সম্পত্তি পাওয়ার জন্য এক নয়। System.getenv বনাম System.getProperty

আমি বাক্সে প্রবেশ করলাম এবং যাচাই করেছিলাম যে পরিবেশের পরিবর্তনশীলটি কখনও সেট করা হয়নি। যাইহোক, টমক্যাট লগগুলিতে আমি দেখতে পাচ্ছি -D সম্পত্তি সেট করা আছে।

আমি এখন উভয় অবস্থানের জন্য ওয়ার্কআরউন্ড হিসাবে যাচাই করার জন্য আমার কোড পরিবর্তন করেছি।


এবং নেট জন্য, স্ট্যাকওভারফ্লো . com / a / 33465765 / 1991614 অনুযায়ী সেগুলি আপনার পরিবেশের ভারে রাখার পরিবর্তে আপনার ওয়েব কোডফাইগ ফাইলে .োকানো হয় । সমস্যাটিকে আরও বিভ্রান্ত করার বিষয়টি হ'ল এটি যে কীটি ইতিমধ্যে
ওয়েবকন্টে

আপনি আমার নায়ক! টমক্যাট ৮

1
আমার মতো তাদের জন্য যা প্রকৃতপক্ষে সিস্টেমের পরিবেশের ভেরিয়েবলগুলি সেট করা দরকার, আপনি বিল্ট-ইন বিনস্টাল স্ক্রিপ্ট ব্যবহার করে সেই পরিবেশের বৈশিষ্ট্যগুলি পুনরুদ্ধার করতে পারেন। আরও তথ্যের জন্য এই উত্তরটি দেখুন: serverfault.com/a/770736/292741
BoomShadow

1
Amazon Linux 2017.03 v2.5.4 with Java8এছাড়াও setর্ষা সেট করে না।
সানুব

2
আপনি বাক্সে এসএসএইচ করতে পারবেন না এবং ভেরিয়েবলগুলি দেখতে পাবে। এগুলি কেবল আপনার অ্যাপ্লিকেশন চালিত শেলের মধ্যে সেট করা আছে। docs.aws.amazon.com/elasticbeanstalk/latest/dg/... In general, however, environment properties are passed only to the application and can't be viewed by connecting an instance in your environment and running env. আপনার ভেরিয়েবল মত একটি লগইন লিপিতে সেট নেই .bashrc। তবে আপনি সঠিক হ'ল টমকেট ভেরিয়েবলগুলি সম্পত্তি হিসাবে পাস করা হয়েছে। (লিঙ্কযুক্ত পৃষ্ঠার শীর্ষস্থানীয় দেখুন))
ক্লো

18

AWS আপনার পরিবেশের ভেরিয়েবলগুলিতে ক্লাউডফর্মেশন টেম্পলেট স্ট্রিংয়ের ব্যাখ্যা করবে interpret আপনি আপনার অ্যাপ্লিকেশনটির ভিতরে আপনার EB পরিবেশ সম্পর্কে তথ্য অ্যাক্সেস করতে এটি ব্যবহার করতে পারেন:

এডাব্লুএস ওয়েব ইন্টারফেসে আপনার পরিবেশের নাম হিসাবে নিম্নলিখিতটি মূল্যায়ন করা হবে (পিছনের টিকগুলি নোট করুন):

`{ "Ref" : "AWSEBEnvironmentName" }`

বা, আপনি একটি ব্যবহার করতে পারেন .ebextensions/*.configএবং পিছনে টিকগুলিতে ক্লাউডফর্মেশন টেম্পলেট মোড়ানো করতে পারেন (`):

{
  "option_settings": [
    {
      "namespace": "aws:elasticbeanstalk:application:environment",
      "option_name": "ENVIRONMENT_NAME",
      "value": "`{ \"Ref\" : \"AWSEBEnvironmentName\" }`"
    }
  ]
}

3
অস্পষ্ট, তবে ঠিক আমি যা খুঁজছিলাম।
এরিক ওয়াকার

1
এর জন্য কি কোন দলিল আছে? আমি এটি খুঁজে পেতে পারে না।
ইয়াংমিলস্টেওরি


12

বিকল্পভাবে, আপনি পরিবেশের ভেরিয়েবল সেট করতে ইলাস্টিক বিয়ানস্টালক সিএলআই ব্যবহার করতে পারেন।

পরিবেশের পরিবর্তনশীল সেট করতে: eb setenv FOO=bar

পরিবেশের ভেরিয়েবলগুলি দেখতে: eb printenv


9

পরিবেশের বিবরণ -> কনফিগারেশন সম্পাদনা করুন -> ধারক

এখানে চিত্র বর্ণনা লিখুন


5

বিনস্টালকের গতিশীল মানগুলির সাথে এটিএনভি সেট করার একমাত্র উপায় বলে মনে হয়। আমি এমন এক প্রতিবন্ধ নিয়ে এসেছি যা আমার মাল্টি-ডকার সেটআপের জন্য কাজ করে:

1) আপনার ইসিএস সংগ্রহস্থলে + আপলোড করার আগে এটি আপনার ডকফায়লে যুক্ত করুন:

CMD eval `cat /tmp/envs/env_file$`; <base image CMD goes here>;

2) আপনার ডকাররন.ওএস.জেসন ফাইলটিতে একটি ভলিউম তৈরি করুন:

{
    "name": "env-file",
    "host": {
        "sourcePath": "/var/app/current/envs"
    }
}

3) আপনার ধারক মাউন্ট ভলিউম

{
  "sourceVolume": "env-file",
  "containerPath": "/tmp/envs",
  "readOnly": true
}

4) আপনার .ebextensions / অপশনস কনফিগ ফাইলে একটি ধারক_কম্যান্ড ব্লক যুক্ত করুন:

container_commands:
  01_create_mount:
    command: "mkdir -p envs/"
  02_create_env_file:
    command: { "Fn::Join" : [ "", [ 'echo "', "export ENVIRONMENT_NAME=" , { "Ref", "RESOURCE" }, ';" > envs/env_file;' ] ] }

5) eb স্থাপন এবং আপনার ENVS আপনার ডকার পাত্রে পাওয়া উচিত

আপনি আরও ধারক_কম্যান্ড যুক্ত করে আরও ENV যুক্ত করতে পারেন:

  02_create_env_file_2:
    command: { "Fn::Join" : [ "", [ 'echo "', "export ENVIRONMENT_NAME_2=" , { "Ref", "RESOURCE2" }, ';" >> envs/env_file;' \] \] }

আশাকরি এটা সাহায্য করবে!


Lifesaver হয়। আপনার যদি ডায়নামিক এনভায়রনমেন্ট ভেরিয়েবল থাকে যেমন eg X: '"রেফ": "মাই ক্যাশে"} 'মান {"Ref": "MyCache"}ডিফল্টরূপে পার্স করা হয় না (মানটি কেবলমাত্র ' ') যখন ধারক এটি অ্যাক্সেস করার চেষ্টা করে। এটির সাথে আপনার মতো ডায়নামিক ভেরিয়েবল থাকতে পারে।
পিটার কেজলকনেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.