সময় ভিত্তিক তফসিলের ভিত্তিতে এডাব্লুএস ইসি 2 উদাহরণটি কীভাবে শুরু এবং বন্ধ করা যায়


17

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

উত্তর:


16

হালনাগাদ

AWS " ইনস্ট্যান্স শিডিউলার " নামে একটি সরঞ্জাম প্রকাশ করেছে , সেই পৃষ্ঠা থেকে সংযুক্ত একটি সম্পূর্ণ কনফিগারেশন গাইড সহ । এটি আরও কয়েকটি বৈশিষ্ট্য সহ আমি নীচে বর্ণনা করা ইসি 2 সিডিউলারের বর্ধনকারী বলে মনে হচ্ছে, তবে এটি মূলত একই জিনিস।

নীচের নির্দেশিকাটি এখনও কাজ করবে তবে নতুন ইনস্টলেশনগুলির জন্য উদাহরণের সময়সূচীর দিকে নজর দেওয়া ভাল।

আসল পোস্ট

এডব্লিউএসের ইসি 2 সিডিউলার নামে একটি সরঞ্জাম রয়েছে যা আপনাকে ইসি 2 ইনস্ট্যান্স শুরু এবং বন্ধ করার উপর খুব নমনীয় নিয়ন্ত্রণ দেয়।

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

যদিও এটি দুর্দান্ত সরঞ্জাম, ডকুমেন্টেশনটি কিছুটা অস্পষ্ট এবং বিভ্রান্তিকর। এটি ডকুমেন্টেশন যেমন কোনও ইঞ্জিনিয়ার লিখেছেন যা কোনও প্রযুক্তিগত লেখকের চেয়ে সরঞ্জামটি লিখেছেন এবং এটি সম্পর্কে সমস্ত কিছু জানেন।

দ্রষ্টব্য : আপনার মতামত বা সংশোধন মন্তব্য থাকলে প্রশংসা করা হয়। যদি এর উপর ভিত্তি করে আপনার কোন প্রশ্ন থাকে তবে আপনার নিজের প্রশ্ন শুরু করুন।

ইসি 2 সিডিউলার কি

এই সরঞ্জামটি একটি ল্যাম্বডা ফাংশন যা ক্লাউডওয়াচ ইভেন্টস এবং ডায়নামোডিবিতে কাজ করে। এটি ক্লাউডফর্মেশন টেম্পলেট ব্যবহার করে মোতায়েন করা হয়েছে, যা প্রয়োজনীয় আইএএম ভূমিকা এবং নীতিগুলি সেট আপ করে। আপনি এখানে স্থাপত্য সম্পর্কে পড়তে পারেন ।

এডাব্লুএস ইসি 2 সিডিউল আর্কিটেকচার

বিস্তৃতি

গিয়ে শুরু এই পৃষ্ঠার এবং "লঞ্চ সমাধান" ক্লিক। এখনই সরাসরি লিঙ্কটি এখানে রয়েছে তবে এটি পরিবর্তন হতে পারে।

কনসোলের উপরের অংশে আপনি যে সংস্থানগুলি স্থাপন করেছেন তা নির্বাচন করুন। স্ক্রিপ্টটি যে কোনও অঞ্চলে ইসি 2 দৃষ্টান্ত নিয়ন্ত্রণ করে, তবে এটি একটি অঞ্চলে চলে।

ইসি 2 উদাহরণ ট্যাগ করা

এটি এখানে ডকুমেন্টেশনে আচ্ছাদিত রয়েছে তবে এটি যতটা সহজ হতে পারে তত সহজ নয়।

আপনার দৃষ্টান্তগুলি ট্যাগ করে কোন দৃষ্টান্ত শুরু এবং বন্ধ করা হয়েছে তা আপনি নিয়ন্ত্রণ করেন।

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

সময়সূচীর জন্য ইসি 2 ইনস্ট্যান্স ট্যাগিং

অনুলিপি এবং পেস্ট সক্ষম করতে:

  • কী: সিডিউলার: ইক 2-স্টার্টটপ
  • মান: সত্য

আপনি যদি নির্দিষ্ট উদাহরণটি শুরু করতে এবং অন্য একটি শিডিয়োলে থামতে চান তবে আপনি ট্যাগ কী এবং মানের জন্য অতিরিক্ত তথ্য যুক্ত করেন। উদাহরণস্বরূপ, যদি আপনি কোনও উদাহরণ 1500 ইউটিসি থেকে শুরু করতে চান এবং মঙ্গলবার, বৃহস্পতিবার এবং শুক্রবার 2400 ইউটিসি-তে থামতে চান তবে আপনি নিম্নলিখিতটি প্রবেশ করান।

কী: সিডিউলার: ইক 2-স্টার্টটপ: দেরী মূল্য: 1500; 2400; ইউটিসি, মঙ্গল, থ্রি, শুক্র

নোট করুন যে "দেরী" শব্দের যে কোনও স্ট্রিং হতে পারে, "দেরী" এর কোনও বিশেষ অর্থ নেই।

আপনি এই সরঞ্জামটি ব্যবহার করে আপনার স্থানীয় সময়কে ইউটিসি রূপান্তর করতে পারেন ।

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

ক্লাউডফর্মেশন পরামিতি

আপনি যখন ক্লাউডফর্মেশন টেম্পলেটটি চালাবেন তখন আপনাকে অনেকগুলি পরামিতি প্রবেশ করতে হবে। বেশিরভাগ আপনি ডিফল্ট রেখে যেতে পারেন। এখানে কয়েকটি গুরুত্বপূর্ণ পরামিতি রয়েছে

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

অনুমতি, নীতি এবং ভূমিকা

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

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

আমি নীতির নীতির নীতিগুলি কারওর জন্য সহায়ক হলে আমি অন্তর্ভুক্ত করেছি।

ক্লাউডওয়াচ ইভেন্ট এবং মেট্রিক্স

আপনি যদি নিজের ল্যাম্বদা ফাংশন থেকে লগগুলি দেখতে চান তবে ক্লাউডওয়াচ ইভেন্টগুলিতে যান। লগিং বেশ ভাল। পাশাপাশি মেট্রিক রয়েছে, তাই আপনি কখন এটি চালাবেন, কখন এটি চালিত হবে ইত্যাদি can

অতিরিক্ত

ল্যাম্বদা ফাংশনের কোডটি গিথুবে পাওয়া যায় ।

নীতিসমূহ

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

আইএএম ভূমিকা জন্য নীতি

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeTags",
                "iam:CreateRole",
                "iam:GetRole",
                "iam:PassRole",
                "iam:PutRolePolicy",
                "iam:DeleteRolePolicy",
                "iam:DeleteRole",
                "dynamodb:*",
                "lambda:*",
                "SNS:Publish",
                "events:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "S3:GetObject",
            "Resource": [
                "arn:aws:s3:::solutions-us-west-2",
                "arn:aws:s3:::solutions-us-west-2/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StopInstances",
                "ec2:StartInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-west-2:123456789012:instance/i-0d112345Ab6789012"
            ]
        }
    ]
}

আইএএম ভূমিকা জন্য বিশ্বাস নীতি

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "lambda.amazonaws.com",
          "cloudformation.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

অ্যামাজন তখন থেকে জিনিসগুলি পরিবর্তন করেছে - "ইসি 2 সিডিউলারকে এডাব্লুএস ইনস্ট্যান্স শিডিউলার দ্বারা বরখাস্ত করা হয়েছে"
ম্যাক্স ব্যারাকলফ

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

1
তারা কীভাবে বিষয়গুলিকে জটিল করতে পছন্দ করে তা অবিশ্বাস্য ...
মেহেদি

10

আপনি যদি কেবল উদাহরণগুলি শুরু করতে এবং বন্ধ করতে চান তবে এখানে আরও একটি ব্যবহার করা হবে যা ল্যাম্বদা পরিষেবাটিও ব্যবহার করে। এটি ধরে নিয়েছে যে আপনি একটি নির্দিষ্ট উদাহরণ আইডি নিয়ন্ত্রণ করতে চান। আপনি কমা দ্বারা আলাদা আরও আইডি যোগ করে একাধিক উদাহরণ নিয়ন্ত্রণ করতে পারেন। (উদা: 'i-3453453', 'i-45656745')। আপনি এডব্লিউএস কনসোল উদাহরণ বিভাগে আপনার উদাহরণটির আইডি খুঁজে পেতে পারেন।

ল্যাম্বদা কনসোলে

  1. এডাব্লুএস ল্যাম্বদা কনসোলটি খুলুন এবং তৈরি করুন ফাংশনটি নির্বাচন করুন।
  2. স্ক্র্যাচ থেকে লেখক চয়ন করুন।
  3. আপনার ফাংশনটির জন্য একটি নাম লিখুন, যেমন "স্টপসিপ 2 উপাদানসমূহ"।
  4. রানটাইমের জন্য পাইথন ২.7 নির্বাচন করুন
  5. রোল ড্রপ-ডাউন মেনু প্রসারিত করুন এবং একটি কাস্টম ভূমিকা তৈরি করুন চয়ন করুন। এটি আপনার ব্রাউজারে একটি নতুন ট্যাব বা উইন্ডো খুলবে।
  6. আইএএম রোল ড্রপ-ডাউন মেনুতে, একটি নতুন আইএএম ভূমিকা তৈরি করুন নির্বাচন করুন এবং একটি ভূমিকার নাম লিখুন, যেমন "ল্যাম্বদা_স্টার্ট_স্টপ_সি 2"।
  7. নীতি দস্তাবেজ দেখুন, সম্পাদনা করুন এবং তারপরে ডকুমেন্টেশন পড়ার অনুরোধ জানালে ওকে চয়ন করুন। নীতিটির সমস্ত পাঠ্য এটি দিয়ে প্রতিস্থাপন করুন:

নীচে কোড

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Start*",
        "ec2:Stop*"
      ],
      "Resource": "*"
    }
  ]
}
  1. ভূমিকাটি তৈরি করা শেষ করতে অনুমতি দিন এবং এডাব্লুএস ল্যাম্বদা কনসোলে ফিরে আসুন।
  2. আপনার দৃষ্টান্ত বন্ধ করতে, ফাংশন কোড সম্পাদকের সমস্ত পাঠ্য নীচের সাথে প্রতিস্থাপন করুন:

নীচে কোড

import boto3
region = ' eu-west-1'
instances = ['i-0dd344443184503fa']

def lambda_handler(event, context):
    ec2 = boto3.client('ec2', region_name=region)
    ec2.stop_instances(InstanceIds=instances)
    print 'stopped your instances: ' + str(instances)

অঞ্চল এবং উদাহরণ মানগুলি আপনার নিজের সাথে প্রতিস্থাপন মনে রাখবেন।

  1. রানটাইম ড্রপ-ডাউন মেনু থেকে পাইথন 2.7 বেছে নিন।
  2. বেসিক সেটিংগুলিতে টাইমআউট ফাংশনের জন্য 10 সেকেন্ড প্রবেশ করান।
  3. সংরক্ষণ করুন চয়ন করুন।
  4. অন্য ফাংশন তৈরির জন্য সমস্ত পদক্ষেপ পুনরাবৃত্তি করুন যা আপনার দৃষ্টান্তগুলি শুরু করবে, তবে তারপরে এটি শুরু করার জন্য এই অজগর স্ক্রিপ্টটি ব্যবহার করুন:

নীচে কোড

import boto3
region = 'eu-west-1'
instances = [' i-0dd344443184503fa']

def lambda_handler(event, context):
    ec2 = boto3.client('ec2', region_name=region)
    ec2.start_instances(InstanceIds=instances)
    print 'started your instances: ' + str(instances)

কার্যাদি নির্ধারণ করুন

এখানে আপনি একটি ক্লাউডওয়াচ ইভেন্ট তৈরি করবেন যা রাতে আপনার ল্যাম্বদা ফাংশনটিকে ট্রিগার করবে

  1. অ্যামাজন ক্লাউডওয়াচ কনসোলটি খুলুন।
  2. ইভেন্টগুলি চয়ন করুন এবং তারপরে নিয়ম তৈরি করুন।
  3. ইভেন্ট উত্স অধীনে সময়সূচী চয়ন করুন।
  4. সময় বা ক্রোন এক্সপ্রেশনের একটি বিরতি লিখুন যা ল্যাম্বডাকে বলে যে আপনার দৃষ্টান্তগুলি কখন বন্ধ করতে হবে। সঠিক বাক্য গঠন সম্পর্কে আরও তথ্যের জন্য, বিধিগুলির জন্য শিডিউল এক্সপ্রেশন সিনট্যাক্স।

দ্রষ্টব্য: ক্রোন এক্সপ্রেশনগুলি ইউটিসিতে মূল্যায়ন করা হয়। আপনার পছন্দসই সময় অঞ্চলের জন্য অভিব্যক্তিটি সামঞ্জস্য করতে ভুলবেন না। এখানে একটি উদাহরণ যা 08:00 GMT / UTC এ প্রতিদিন ফাংশনটি পরিচালনা করবে:

0 08 * * ? *
  1. লক্ষ্য যুক্ত করুন এবং তারপরে ল্যাম্বদা ফাংশনটি চয়ন করুন।
  2. ফাংশনের জন্য, লাম্বদা ফাংশনটি চয়ন করুন যা আপনার দৃষ্টান্তগুলিকে থামিয়ে দেয়।
  3. কনফিগার বিশদটি চয়ন করুন।
  4. প্রদত্ত ক্ষেত্রগুলিতে নিম্নলিখিত তথ্য সন্নিবেশ করান: নামের জন্য একটি অর্থবহ নাম লিখুন, যেমন "স্টপসি 2 ইনটেন্টস"। বিবরণের জন্য, একটি অর্থবহ বিবরণ যুক্ত করুন, যেমন "প্রতি রাতে ইসি 2 উদাহরণ বন্ধ করে দেয়” "স্টেটের জন্য, সক্ষমকে নির্বাচন করুন।
  5. নিয়ম তৈরি করুন চয়ন করুন।

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

এগুলির উত্সটি এখানে পাওয়া যাবে: AWS ডকুমেন্টেশন


পৃথিবীতে কীভাবে আপনি পাইথন কোডটি সম্পাদকটিতে ঠিক দেখতে পেতে পারেন, ঠিক যেমন এটি এখন দেখা গেছে?

সাহায্যে ক্লিক করুন '?' এবং আপনি মার্কডাউন ফর্ম্যাটিং ব্যবহার করার বিষয়ে আরও খুঁজে পাবেন। serverfault.com/editing-help
jscott

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

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