অটো বন্ধ এবং অ্যামাজন ইসি 2 ইনস্ট্যান্স শুরু করুন


90

আমি আমাজন এপিআই ব্যবহার করে আমার অ্যামাজন উদাহরণটি স্বয়ংক্রিয়ভাবে শুরু এবং শেষ করতে পারি? এটি কীভাবে করা যেতে পারে দয়া করে বর্ণনা করতে পারেন? আমার আদর্শভাবে উদাহরণটি শুরু করা এবং প্রতিদিন নির্দিষ্ট সময় বিরতিতে দৃষ্টান্তটি বন্ধ করা দরকার।


4
আপনার ইসি 2 উদাহরণটি ডেটা বন্ধ হয়ে গেলে কী হবে? এটি কি এখনও অবিরত আছে বা আপনাকে আবার এটি পুনর্নির্মাণ করতে হবে?
ম্যাথু লক

অ্যামাজন এপিআই ব্যবহার করে স্বয়ংক্রিয়ভাবে ইনস্ট্যান্সটি শুরু করুন এবং শেষ করুন সেই ইভেন্টের ডেটা লোকসানের কারণ হতে পারে। আমি এডাব্লুএস ক্লাউডওয়াচ অ্যালার্মগুলি
চিতাবহানা

অ্যামাজন এপিআইয়ের স্থিতিশীল, আমি এডাব্লুএস ল্যাম্বডা ব্যবহার করে ইসি 2 স্টার্ট / স্টপ শিডিয়ুল করার পরামর্শ দেব , আপনার ক্ষেত্রে এটির জন্য আপনার জন্য $ 0.0004 ইউএসডি / মাসে কম খরচ হবে।
চিতাবাহন

উত্তর:


102

কেবলমাত্র যদি আপনি এই পুরানো প্রশ্নটিতে হোঁচট খায় তবে আজকাল আপনি একটি অটো স্কেলিং গ্রুপে একটি সময়সূচী যুক্ত করে একই জিনিসটি অর্জন করতে পারেন: একটি নির্দিষ্ট সময়ে একটি অটো স্কেলিং গ্রুপে উদাহরণের পরিমাণ বাড়িয়ে এটি আবার 0 এ কমিয়ে দিন ।

এবং যেহেতু এই উত্তরটি প্রচুর মতামত পাচ্ছে, তাই আমি এই সম্পর্কে একটি খুব সহায়ক গাইডের সাথে লিঙ্ক করতে ভেবেছিলাম: অটো স্কেলিংয়ের সাথে একটি পুনরাবৃত্ত সময়সূচীতে ইসি 2 ইনস্ট্যান্স চালানো হচ্ছে


6
আমি লিঙ্কটিতে বর্ণিত পদ্ধতিটি চেষ্টা করেছি এবং টিউটোরিয়াল দ্বারা নির্দিষ্ট করা সময়ে এটি প্রকৃতপক্ষে শুরু / বন্ধ করে দেয়। যাইহোক, আমি এডাব্লুএস ওয়েব কনসোলে লক্ষ্য করেছি যে যখন কোনও পদ্ধতিটি এই পদ্ধতি দ্বারা শুরু করা হয়, তখন এটি কোনও কী (যেমন আপনি এটিতে ছাঁটাই করতে পারেন) দিয়ে শুরু করেন না এবং এটিতেও একই জিনিস রয়েছে বলে মনে হয় না I আমার মাইক্রো-উদাহরণটিতে ইনস্টল করা হয়েছে যা আমি পরীক্ষা হিসাবে ব্যবহার করি (আমি কোনও মেঘ বিশেষজ্ঞ নই, তবে আমি মনে করি এটির অর্থ এই যে এই নতুন উদাহরণটি কাটা হয়েছে এটি ইবিএসের সাথে সংযুক্ত নয়?) কী স্বয়ংক্রিয়ভাবে শুরু করার কোনও উপায় আছে এবং একটি সময়সূচীতে একই উদাহরণ বন্ধ ?
কিরণ কে।

@ কিরানক এর অর্থ কী যে বর্তমানে ব্যবহৃত ইবিএস ভলিউমের সাথে নতুন উদাহরণ সংযুক্ত নেই? আপনি কি ব্যবহার করেছেন?
স্ট্র হ্যাট

26

আপনি সরাসরি অ্যামাজন ইসি 2 এপিআই সরঞ্জামগুলি ব্যবহার করে দেখতে পারেন। আপনার প্রয়োজন মাত্র দুটি কমান্ড রয়েছে: ec2- সূচনা-দৃষ্টান্ত এবং ec2- স্টপ-দৃষ্টান্ত। EC2_Home, AWS_CREDENTIAL_FILE, EC2_CERT, EC2_PRIVATE_KEY, ইত্যাদির মতো পরিবেশের ভেরিয়েবলগুলি যথাযথভাবে কনফিগার করা আছে এবং সমস্ত AWS শংসাপত্র, শংসাপত্র এবং ব্যক্তিগত কী ফাইলগুলি যথাযথ স্থানে রয়েছে তা নিশ্চিত করুন - আপনি AWS EC2 API টি ডকুমেন্টেশনে আরও তথ্য পেতে পারেন।

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

/etc/crontab
0 8     * * *   your-account ec2-start-instances <your_instance_id>
0 16    * * *   your-account ec2-stop-instances <your_instance_id>
# Your instance will be started at 8am and shutdown at 4pm.

আমি বিটনামি ক্লাউড প্রকল্পের একজন বিকাশকারী, যেখানে আমরা AWS সরঞ্জামগুলি (আমি উল্লেখ করেছি এমনগুলি সহ) একটি নিখরচায়, সহজেই ব্যবহারযোগ্য ইনস্টলারে প্যাকেজ করি যা আপনি চেষ্টা করতে পারেন: বিটনামি ক্লাউডটুলস প্যাক স্ট্যাক


4
এর জন্য এখনও আপনার আরেকটি উদাহরণ থাকা দরকার। কারণ শাট ডাউন সমস্যা নয় বরং শুরু start ক্রোন বা কোনও কিছুই বন্ধ হয়ে যাওয়ার পরে কোনও মৃত কম্পিউটারে চলবে না।
উপুল ডলুওয়েরা

আমি আমার এমএজোন লিনাক্স ইনস্ট্যান্সে এডাব্লুএস সিএলআই সরঞ্জাম সেটআপ করতে এই পদক্ষেপগুলি অনুসরণ করেছি। থামানো উদাহরণ ভাল কাজ করে। তবে ইতিমধ্যে থামানো উদাহরণটি 400 ত্রুটি দেয়, উদাহরণ আইডির সন্ধান পাওয়া যায় নি। আমি ইতিমধ্যে বন্ধ হওয়া উদাহরণটি কীভাবে শুরু করতে পারি?
অমল চাকনে

17

আমি আপনাকে ইসি 2 প্রারম্ভিক নির্দেশিকাটি একবার দেখে নেওয়ার পরামর্শ দিচ্ছি , যা আপনাকে ইসি 2 কমান্ড লাইন সরঞ্জামগুলি ব্যবহার করে কীভাবে করতে হবে তা আপনাকে দেখায় shows আপনি এটিকে সহজেই ক্রোন জব (লিনাক্স / ইউএনআইএক্সে) বা উইন্ডোতে নির্ধারিত কাজের জন্য নির্দিষ্ট সময়ে স্টার্ট এবং স্টার্ট কমান্ড কল করতে স্ক্রিপ্ট করতে পারেন।

আপনি যদি নিজের কোড থেকে এটি করতে চান তবে আপনি এসওএপি বা আরএসটি এপিআই ব্যবহার করতে পারেন; দেখতে বিকাশকারী গাইড বিস্তারিত জানার জন্য।


16

এটি করার জন্য আমি বাইট লাইব্রেরি ব্যবহার করে পাইথনে কোড লিখেছিলাম। আপনি আপনার নিজের ব্যবহারের জন্য এটি সামঞ্জস্য করতে পারেন। এটি ক্রোন কাজের অংশ হিসাবে চালানোর বিষয়ে নিশ্চিত হন এবং তারপরে ক্রোন জবস চলাকালীন আপনি যতগুলি দৃষ্টান্ত প্রয়োজন শুরু করতে বা শট ডাউন করতে সক্ষম হবেন।

#!/usr/bin/python
#
# Auto-start and stop EC2 instances
#
import boto, datetime, sys
from time import gmtime, strftime, sleep

# AWS credentials
aws_key = "AKIAxxx"
aws_secret = "abcd"

# The instances that we want to auto-start/stop
instances = [
    # You can have tuples in this format:
    # [instance-id, name/description, startHour, stopHour, ipAddress]
    ["i-12345678", "Description", "00", "12", "1.2.3.4"]
]

# --------------------------------------------

# If its the weekend, then quit
# If you don't care about the weekend, remove these three 
# lines of code below.
weekday = datetime.datetime.today().weekday()
if (weekday == 5) or (weekday == 6):
    sys.exit()

# Connect to EC2
conn = boto.connect_ec2(aws_key, aws_secret)

# Get current hour
hh = strftime("%H", gmtime())

# For each instance
for (instance, description, start, stop, ip) in instances:
    # If this is the hour of starting it...
    if (hh == start):
        # Start the instance
        conn.start_instances(instance_ids=[instance])
        # Sleep for a few seconds to ensure starting
        sleep(10)
        # Associate the Elastic IP with instance
        if ip:
            conn.associate_address(instance, ip)
    # If this is the hour of stopping it...
    if (hh == stop):
        # Stop the instance
        conn.stop_instances(instance_ids=[instance])

4
ইলাস্টিক বিয়ানস্টাল্ক পরিবেশের জন্যও কি এটি সম্ভব?
অমল চাকনে 11

5

যদি এটি মিশনটি সমালোচনা না করে - একটি সাধারণ কাজটি হ'ল প্রতিদিন শনিবার 3 টায় 'শাটডাউন' (উইন্ডোজ) চালানোর জন্য ব্যাচ ফাইলের সময়সূচী করা। তাহলে কমপক্ষে আপনি দুর্ঘটনাক্রমে কোনও অযাচিত ঘটনা অনির্দিষ্টকালের জন্য চলার ঝুঁকিটি চালাবেন না।

স্পষ্টতই এটি কেবল অর্ধেক গল্প!


5

আমি যে প্রতিষ্ঠানের জন্য কাজ করি গ্রাহকরা নিয়মিত এটি সম্পর্কে জিজ্ঞাসা করতেন তাই আমরা এখানে একটি ফ্রিওয়্যার ইসি 2 শিডিয়ুলিং অ্যাপটি উপলব্ধ লিখেছি:

http://blog.simple-help.com/2012/03/free-ec2-scheduler/

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


2

AWS ডেটা পাইপলাইন ঠিকঠাক কাজ করছে। https://aws.amazon.com/premiumsupport/ জ্ঞান- সেন্টার/stop-start-ec2-inferences/

আপনি যদি দিন শুরু না করে বাদ দিতে চান (যেমন উইকএন্ড) শেলকম্যান্ডপ্রিসন্ডেশন অবজেক্ট যুক্ত করুন।

এডাব্লুএস কনসোল / ডেটা পাইপলাইনে একটি নতুন পাইপলাইন তৈরি করুন। সংজ্ঞা (JSON) সম্পাদনা / আমদানি করা সহজ

    {
"objects": [
{
  "failureAndRerunMode": "CASCADE",
  "schedule": {
    "ref": "DefaultSchedule"
  },
  "resourceRole": "DataPipelineDefaultResourceRole",
  "role": "DataPipelineDefaultRole",
  "pipelineLogUri": "s3://MY_BUCKET/log/",
  "scheduleType": "cron",
  "name": "Default",
  "id": "Default"
},
{
  "name": "CliActivity",
  "id": "CliActivity",
  "runsOn": {
    "ref": "Ec2Instance"
  },
  "precondition": {
    "ref": "PreconditionDow"
  },
  "type": "ShellCommandActivity",
  "command": "(sudo yum -y update aws-cli) && (#{myAWSCLICmd})"
},
{
  "period": "1 days",
  "startDateTime": "2015-10-27T13:00:00",
  "name": "Every 1 day",
  "id": "DefaultSchedule",
  "type": "Schedule"
},
{
  "scriptUri": "s3://MY_BUCKET/script/dow.sh",
  "name": "DayOfWeekPrecondition",
  "id": "PreconditionDow",
  "type": "ShellCommandPrecondition"
},
{
  "instanceType": "t1.micro",
  "name": "Ec2Instance",
  "id": "Ec2Instance",
  "type": "Ec2Resource",
  "terminateAfter": "50 Minutes"
}
],
"parameters": [
{
  "watermark": "aws [options] <command> <subcommand> [parameters]",
  "description": "AWS CLI command",
  "id": "myAWSCLICmd",
  "type": "String"
}
 ],
"values": {
"myAWSCLICmd": "aws ec2 start-instances --instance-ids i-12345678 --region eu-west-1"
}
}

বাশ স্ক্রিপ্টটি আপনার এস 3 বালতিতে পূর্বশর্ত হিসাবে ডাউডলোড এবং কার্যকর করতে হবে

#!/bin/sh
if [ "$(date +%u)" -lt 6 ]
then exit 0
else exit 1
fi

উইকএন্ডের দিনগুলিতে পাইপলাইনটি সক্রিয় ও পরিচালনা করার সময়, এডাব্লুএস কনসোল পাইপলাইন স্বাস্থ্য স্থিতি একটি বিভ্রান্তকারী "ERROR" পড়ে reads ব্যাশ স্ক্রিপ্ট একটি ত্রুটি প্রদান করে (প্রস্থান 1) এবং ইসি 2 শুরু হয় না। 1 থেকে 5 দিনগুলিতে, স্থিতিটি "স্বাস্থ্যকর" হয়।

অফিসের সময় বন্ধ হওয়ার সময় স্বয়ংক্রিয়ভাবে ইসি 2 বন্ধ করতে, ডাব্লুডাব্লুএস সিএলআই কমান্ডটি দৈনিক পূর্ববর্তী শর্তটি ব্যবহার করুন।


1

এটি করার জন্য আপনি ইলাস্টিকের দিকে নজর দিতে পারেন। বিকল্পটিতে মনে হচ্ছে এমন একটি মেশিন চলছে যা ক্রোন জব বা নির্ধারিত টাস্ক ব্যবহার করে অন্যান্য দৃষ্টিকোণ বন্ধ করে দেয় / শুরু করে।

স্পষ্টতই যদি আপনি কেবল একটি উদাহরণ চান তবে এটি একটি ব্যয়বহুল সমাধান, কারণ একটি মেশিন সর্বদা চলতে হবে এবং ক্রোন জবগুলি চালানোর জন্য একটি মেশিনের জন্য মাসে ~ 80 ডলার প্রদান করা কার্যকর নয়।


1

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

আপনি 24/7 চলমান অন্য একটি দৃষ্টান্তে একটি কাজ চালিয়ে এটি করতে পারেন বা আপনি তৃতীয় পক্ষের পরিষেবা যেমন ইলেস্টিক (উপরে উল্লিখিত) বা রকেট পিক ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ সি # তে একটি সার্ভার থামানোর কোডটি বেশ সহজ ward

public void stopInstance(string instance_id, string AWSRegion)
        {
            RegionEndpoint myAWSRegion = RegionEndpoint.GetBySystemName(AWSRegion);
            AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client(AWSAccessKey, AWSSecretKey, myAWSRegion);
            ec2.StopInstances(new StopInstancesRequest().WithInstanceId(instance_id));
        }

1

আইএমএইচও একটি অটো স্কেলিং গ্রুপে একটি সময়সূচী যুক্ত হ'ল আগে উল্লিখিত হিসাবে সেরা "ক্লাউড লাইক" পদ্ধতির is

তবে আপনি যদি আপনার দৃষ্টান্তগুলি বন্ধ করতে পারেন এবং নতুন ব্যবহার করতে পারবেন না, উদাহরণস্বরূপ যদি আপনার সাথে ইলাস্টিক আইপি সম্পর্কিত হয় etc.

আপনি একটি তারিখের সময়সীমার উপর ভিত্তি করে আপনার দৃষ্টান্ত শুরু করতে এবং থামাতে একটি রুবি স্ক্রিপ্ট তৈরি করতে পারেন।

#!/usr/bin/env ruby

# based on https://github.com/phstc/amazon_start_stop

require 'fog'
require 'tzinfo'

START_HOUR = 6 # Start 6AM
STOP_HOUR  = 0 # Stop  0AM (midnight)

conn = Fog::Compute::AWS.new(aws_access_key_id:     ENV['AWS_ACCESS_KEY_ID'],
                             aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'])

server = conn.servers.get('instance-id')

tz = TZInfo::Timezone.get('America/Sao_Paulo')

now = tz.now

stopped_range = (now.hour >= STOP_HOUR && now.hour < START_HOUR)
running_range = !stopped_range

if stopped_range && server.state != 'stopped'
  server.stop
end

if running_range && server.state != 'running'
  server.start

  # if you need an Elastic IP
  # (everytime you stop an instance Amazon dissociates Elastic IPs)
  #
  # server.wait_for { state == 'running' }
  # conn.associate_address server.id, 127.0.0.0
end

কটাক্ষপাত আছে amazon_start_stop ব্যবহার বিনামূল্যে জন্য একটি নির্ধারণকারী তৈরি করতে Heroku নির্ধারণকারী


1

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


1

হ্যাঁ, আপনি এডাব্লুএস ল্যাম্বদা ব্যবহার করে এটি করতে পারেন। আপনি ক্লাউডওয়াচে ট্রিগারটি নির্বাচন করতে পারেন যা ইউটিসিতে ক্রোন এক্সপ্রেশনগুলিতে চলে।

এখানে সম্পর্কিত লিঙ্কটি https://aws.amazon.com/premiumsupport/ জ্ঞান- center/ start- stop- lambda- cloudwatch/

আরেকটি বিকল্প ব্যবহার করা awscliহয় যা থেকে পাওয়া যায় pip, apt-get, yumবা brew, এবং তারপর চলমান aws configureআপনার শংসাপত্রগুলি IAM থেকে রপ্তানি এবং নিম্নলিখিত ব্যাশ স্ক্রিপ্ট চালাতে, একটি EC2 যে সঙ্গে ট্যাগ করা হয়েছে থামাতে Name: Appnameএবং Value: Appname Prod। আপনি awscliআপনার দৃষ্টান্তগুলি ট্যাগ করতে বা এডাব্লুএস কনসোল থেকে ম্যানুয়ালি ট্যাগ করতে ব্যবহার করতে পারেন । aws ec2 stop-instancesউদাহরণটি বন্ধ করে দেবে এবং jqজসন কোয়েরি ফিল্টার করতে এবং ট্যাগগুলি ব্যবহার করে সঠিক উদাহরণ আইডি আনতে ব্যবহৃত হবে aws ec2 describe-instances

aws configureএটি সফল হয়েছিল এবং যাচোন আউটপুট রানটি যাচাই করে aws ec2 describe-instancesএবং আপনার চলমান ইনস্ট্যান্স আইডি আউটপুটে থাকা উচিত। এখানে একটি নমুনা আউটপুট

{
    "Reservations": [
        {
            "Instances": [
                {
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "PublicDnsName": "ec2-xxx.ap-south-1.compute.amazonaws.com",
                    "State": {
                        "Code": xx,
                        "Name": "running"
                    },
                    "EbsOptimized": false,
                    "LaunchTime": "20xx-xx-xxTxx:16:xx.000Z",
                    "PublicIpAddress": "xx.127.24.xxx",
                    "PrivateIpAddress": "xxx.31.3.xxx",
                    "ProductCodes": [],
                    "VpcId": "vpc-aaxxxxx",
                    "StateTransitionReason": "",
                    "InstanceId": "i-xxxxxxxx",
                    "ImageId": "ami-xxxxxxx",
                    "PrivateDnsName": "ip-xxxx.ap-south-1.compute.internal",
                    "KeyName": "node",
                    "SecurityGroups": [
                        {
                            "GroupName": "xxxxxx",
                            "GroupId": "sg-xxxx"
                        }
                    ],
                    "ClientToken": "",
                    "SubnetId": "subnet-xxxx",
                    "InstanceType": "t2.xxxxx",
                    "NetworkInterfaces": [
                        {
                            "Status": "in-use",
                            "MacAddress": "0x:xx:xx:xx:xx:xx",
                            "SourceDestCheck": true,
                            "VpcId": "vpc-xxxxxx",
                            "Description": "",
                            "NetworkInterfaceId": "eni-xxxx",
                            "PrivateIpAddresses": [
                                {
                                    "PrivateDnsName": "ip-xx.ap-south-1.compute.internal",
                                    "PrivateIpAddress": "xx.31.3.xxx",
                                    "Primary": true,
                                    "Association": {
                                        "PublicIp": "xx.127.24.xxx",
                                        "PublicDnsName": "ec2-xx.ap-south-1.compute.amazonaws.com",
                                        "IpOwnerId": "xxxxx"
                                    }
                                }
                            ],
                            "PrivateDnsName": "ip-xxx-31-3-xxx.ap-south-1.compute.internal",
                            "Attachment": {
                                "Status": "attached",
                                "DeviceIndex": 0,
                                "DeleteOnTermination": true,
                                "AttachmentId": "xxx",
                                "AttachTime": "20xx-xx-30Txx:16:xx.000Z"
                            },
                            "Groups": [
                                {
                                    "GroupName": "xxxx",
                                    "GroupId": "sg-xxxxx"
                                }
                            ],
                            "Ipv6Addresses": [],
                            "OwnerId": "xxxx",
                            "PrivateIpAddress": "xx.xx.xx.xxx",
                            "SubnetId": "subnet-xx",
                            "Association": {
                                "PublicIp": "xx.xx.xx.xxx",
                                "PublicDnsName": "ec2-xx.ap-south-1.compute.amazonaws.com",
                                "IpOwnerId": "xxxx"
                            }
                        }
                    ],
                    "SourceDestCheck": true,
                    "Placement": {
                        "Tenancy": "default",
                        "GroupName": "",
                        "AvailabilityZone": "xx"
                    },
                    "Hypervisor": "xxx",
                    "BlockDeviceMappings": [
                        {
                            "DeviceName": "/dev/xxx",
                            "Ebs": {
                                "Status": "attached",
                                "DeleteOnTermination": true,
                                "VolumeId": "vol-xxx",
                                "AttachTime": "20xxx-xx-xxTxx:16:xx.000Z"
                            }
                        }
                    ],
                    "Architecture": "x86_64",
                    "RootDeviceType": "ebs",
                    "RootDeviceName": "/dev/xxx",
                    "VirtualizationType": "xxx",
                    "Tags": [
                        {
                            "Value": "xxxx centxx",
                            "Key": "Name"
                        }
                    ],
                    "AmiLaunchIndex": 0
                }
            ],
            "ReservationId": "r-xxxx",
            "Groups": [],
            "OwnerId": "xxxxx"
        }
    ]
}

নিম্নলিখিত ব্যাশ স্ক্রিপ্ট হয় stop-ec2.shমধ্যে /home/centos/cron-scripts/যা থেকে অনুপ্রাণিত হয় এই তাই পোস্ট

(instance=$(aws ec2 describe-instances | jq '.Reservations[].Instances | select(.[].Tags[].Value | startswith("Appname Prod") ) |  select(.[].Tags[].Key == "Appname") |  {InstanceId: .[].InstanceId, PublicDnsName: .[].PublicDnsName, State: .[].State, LaunchTime: .[].LaunchTime, Tags: .[].Tags}  | [.]' | jq -r .[].InstanceId) && aws ec2 stop-instances --instance-ids ${instance} )

ফাইলটি ব্যবহার করে চালান sh /home/centos/cron-scripts/stop-ec2.shএবং যাচাই করুন যে ইসি 2 দৃষ্টান্ত বন্ধ হয়ে গেছে। রানটি ডিবাগ করতে aws ec2 describe-instances | jq '.Reservations[].Instances | select(.[].Tags[].Value | startswith("Appname Prod") ) | select(.[].Tags[].Key == "Appname") | {InstanceId: .[].InstanceId, PublicDnsName: .[].PublicDnsName, State: .[].State, LaunchTime: .[].LaunchTime, Tags: .[].Tags} | [.]' | jq -r .[].InstanceIdএবং এটি ট্যাগ করা হয়েছে এমন সঠিক উদাহরণ আইডি ফিরিয়ে দেয় তা দেখতে।

তারপরে crontab -eনিম্নলিখিত লাইনে যুক্ত করা যেতে পারে

30 14 * * * sh /home/centos/cron-scripts/stop-ec2.sh >> /tmp/stop

যা আউটপুট লগ হবে /tmp/stop30 14 * * *ইউটিসি ক্রন অভিব্যক্তি যে আপনার চেক করতে পারেন https://crontab.guru/। একইভাবে প্রতিস্থাপন aws ec2 start-instancesএকটি উদাহরণ শুরু করতে পারে।


0

আমি বিশ্বাস করি যে প্রাথমিক প্রশ্নটি কিছুটা বিভ্রান্ত হয়েছিল। এটি পাস্তার যা প্রয়োজন তার উপর নির্ভর করে: 1.লঞ্চ / সমাপ্তি (উদাহরণস্বরূপ স্টোর) - অটো স্কেলিংই সঠিক সমাধান (নেকেডিবল এর উত্তর) 2. ইবিএস বুট দৃষ্টান্ত স্টার্ট / বন্ধ করুন - অটো স্কেলিং সাহায্য করবে না, আমি দূরবর্তী নির্ধারিত স্ক্রিপ্টগুলি ব্যবহার করি (যেমন, , ec2 CLI)।


-8

আপনি এটি স্বয়ংক্রিয়ভাবে করতে পারবেন না, বা স্ক্রিপ্ট ফাইলগুলিতে কিছু প্রোগ্রামিং এবং এপিআই ম্যানিপুলেশন ছাড়াই না। আপনি যদি নিজের চিত্রগুলি থামাতে, পুনরায় চালু করতে এবং পরিচালনা করার জন্য একটি নির্ভরযোগ্য সমাধান করতে চান (সম্ভবত আপনার পরিবেশে ব্যয় নিয়ন্ত্রণ করতে) তবে আপনি ল্যাবস্প্লাইসটি দেখতে চাইতে পারেন । দাবি অস্বীকার: আমি এই সংস্থার পক্ষে কাজ করি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.