এডাব্লুএস সি এল এলির মাধ্যমে ইসি উদাহরণে স্ক্রিপ্ট বা কমান্ড কীভাবে চালানো যায়?


13

মতে নিউ EC2 রান কমান্ড সংবাদ নিবন্ধ, ডেস্কটপ AWS CLI একটি নতুন উপ-কমান্ডের সাহায্যে দূরবর্তী EC2 দৃষ্টান্ত উপর স্ক্রিপ্ট চালানো সমর্থন করা উচিত।

তবে আমি চেক ইন করেছি aws ec2 help, তবে প্রাসঙ্গিক কমান্ডটি খুঁজে পাচ্ছি না।

আমি এর awsমাধ্যমে ইনস্টল করেছি apt-get:

$ aws --version
aws-cli/1.14.32 Python/3.5.4 Linux/4.12.7-64 botocore/1.8.36

আমার কোন সাব-কমান্ডটি সন্ধান করা উচিত এবং সিনট্যাক্সটি কী চালাতে হবে তা দূরবর্তী ইসি 2 উদাহরণে পাওয়ারশেলেরipconfig মধ্যে বলা যাক ?


1
FYI নিবন্ধটি ২০১৫ সালের তাই আমি এটিকে "নতুন" সাব-কমান্ড বলব না। আমি অ্যাউস - ক্লাইমের জন্য সোর্স কোড সংগ্রহস্থল ( github.com/aws/aws-cli ) পরীক্ষা করে দেখেছি এবং ডকস, উদাহরণ, প্রকাশের নোটগুলিতে বা সংক্ষেপে কোডটি সন্ধান করার মাধ্যমে আমি এর কোনও উল্লেখ পাইনি । আমি একটি সমস্যা দায়ের করেছি ( github.com/aws/aws-cli/issues/3126 ) এবং আমি প্রতিক্রিয়া পেলে একটি উত্তর জমা দেব।
PrestonM

উত্তর:


11

এডাব্লুএস সিস্টেম ম্যানেজার রান কমান্ড থেকে আইপোনফিগ চালনা করতে:

$ aws ssm send-command --document-name "AWS-RunPowerShellScript" --instance-ids "<your instance id>" --parameters commands=ipconfig

দ্রষ্টব্য: আপনি যদি ত্রুটিটি পেয়ে থাকেন তবে সঠিকটি নির্দিষ্ট করে বিবেচনা করুন --region

এটি ধরে নিয়েছে যে আপনার AWS শংসাপত্রগুলি এবং CLI সঠিকভাবে কনফিগার করা আছে। দেখুন ডেস্কটপ AWS CLI ব্যবহারকারী সিস্টেমে ম্যানেজার চালান কমান্ড Walkthrough আরও তথ্যের জন্য।


কমান্ড আউটপুট প্রেরণ এবং পাওয়ার বাস্তব শেল কমান্ড উদাহরণ এখানে:

cmdid=$(aws ssm send-command --instance-ids "i-ch3ng3th1s" --document-name "AWS-RunPowerShellScript" --parameters commands=ipconfig --query "Command.CommandId" --output text)
aws ssm list-command-invocations --command-id "$cmdid" --details --query "CommandInvocations[*].CommandPlugins[*].Output[]" --output text

3

এখানে একটি সহায়ক বাশ স্ক্রিপ্ট যা aws ssm send-commandকমান্ডগুলি চালাতে ব্যবহার করে:

#/usr/bin/env bash -x
# Script to run PowerShell script on the Windows instance.
instanceId="$1"
cmdId=$(aws ssm send-command --instance-ids "$instanceId" --document-name "AWS-RunPowerShellScript" --query "Command.CommandId" --output text --parameters commands="'${@:2}'")
[ $? -ne 0 ] && { echo "Usage: $0 instance_id command"; exit 1; }
while [ "$(aws ssm list-command-invocations --command-id "$cmdId" --query "CommandInvocations[].Status" --output text)" == "InProgress" ]; do sleep 1; done
aws ssm list-command-invocations --command-id "$cmdId" --details --query "CommandInvocations[*].CommandPlugins[*].Output[]" --output text

ব্যবহার:

 ./run_ec2_ps_cmd.sh instance-id command

উদাহরণ:

$ ./run_ec2_ps_cmd.sh i-xyz hostname
ip-xyz

বৃহত্তর আউটপুটগুলি কার্যকর করতে, দেখুন: এডাব্লুএস এসএসএম কমান্ড চালানোর সময় আউটপুট কেটে যাওয়া কীভাবে এড়ানো যায়?


আসলে এখানে সেরা উদাহরণ। দয়া করে আরও বেশি কিছু
সান্টাকাস

3

হ্যাঁ, আপনি এডাব্লুএস সিস্টেম ম্যানেজারের সাথে এটি করতে পারেন। এডাব্লুএস সিস্টেম ম্যানেজার রান কমান্ড আপনাকে দূরবর্তী ও সুরক্ষিতভাবে ইসি 2-তে অন-প্রাইমিস সার্ভারে কমান্ডের সেট চালানোর অনুমতি দেয়। এটি অর্জনের জন্য নীচে উচ্চ-স্তরের পদক্ষেপ রয়েছে।

আইএএম ভূমিকা সংযুক্ত করুন: এক্স 2 উদাহরণের নীতি অ্যামাজনএসএমএম ফুলঅ্যাক্সেসের সাথে আইএএম ভূমিকা থাকতে হবে। এই ভূমিকাটি উদাহরণস্বরূপ সিস্টেম ম্যানেজার API এর সাথে যোগাযোগ করতে সক্ষম করে।

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

কমান্ড এক্সিকিউট করুন: এডাব্লুএস সিএলআই এর মাধ্যমে ব্যবহারের উদাহরণ দিন:

উদাহরণস্বরূপ চলমান পরিষেবাগুলি পুনরুদ্ধার করতে নিম্নলিখিত কমান্ডটি কার্যকর করুন। ইন্সিস্ট্যান্স-আইডি প্রতিস্থাপন করুন ec2 উদাহরণ আইডি দিয়ে।

aws ssm send-command --document-name "AWS-RunShellScript" --comment "listing services" --instance-ids "Instance-ID" --parameters commands="service --status-all" --region us-west-2 --output text

আরও বিস্তারিত তথ্য: এখানে


3

এডাব্লুএস এসএসএম প্রেরণ-কমান্ডের সাথে এখানে সুপার কুল কিছু করছি!

অ্যাপাচি এয়ারফ্লো ব্যবহার করে আমি ক্লাউড ফর্মেশন টেম্পলেট (বা সংক্ষেপে সিএফটি) ব্যবহার করে একেবারে নতুন ইসি 2-ইনস্ট্যান্স তৈরি করি যা আমার ইসি 2-ইনস্ট্যান্সের জন্য সমস্ত কনফিগারেশন মানগুলির সাথে একটি জেএসওএন ফাইল যা আমি চাই; আরও মনে রাখবেন যে এই সিএফটি-তে আমার একটি বুটস্ট্র্যাপ কমান্ডও রয়েছে যেটি একটি এস 3 অবস্থান থেকে পাইথন স্ক্রিপ্টটিকে নতুন ইসি 2-ইনস্ট্যান্সে অনুলিপি করে যাতে আমি এসএসএম প্রেরণ-আদেশ ব্যবহার করে পরে এটি সম্পাদন করতে পারি! আমি পাইথন 3 ব্যবহার করে এটি করি এবং পাইথন 3 এর জন্য এডাব্লুএস এসডিকে বোটো 3 লাইব্রেরি বলে। নতুন সিএফটি স্ট্যাক তৈরি করার কমান্ডের অংশটি যা আমার নতুন ইসি 2-ইনস্ট্যান্স তৈরি করে:

import boto3

cft = boto3.client("cloudformation", "us-east-1")

response = cft.create_stack(
    StackName='foobarStackName',
    TemplateBody=json.dumps(json_data))

তারপরে আমি এই জাতীয় কিছু ব্যবহার করে নতুন ইসি 2-ইনস্ট্যান্সের (এসএসএম প্রেরণ-কমান্ড ব্যবহার করা প্রয়োজন) এর ইনস্ট্যান্স-আইডি পেতে পারি:

response = cft.describe_stacks(
    StackName='foobarStackName',
)

তারপরে wget -q -O - http://169.254.169.254/latest/meta-data/instance-idপাইথনের মাধ্যমে এই কমান্ডটি চালিয়ে আমি বর্তমান এয়ারফ্লো কর্মীর সার্ভারের ইসি 2-ইনস্ট্যান্সের ইনস্ট্যান্স-আইডি পেতে পারি :

output = subprocess.Popen(['wget', '-q', '-O', '-', 'http://169.254.169.254/latest/meta-data/instance-id'],
                          stdout=subprocess.PIPE)

# Do some weird stuff to get the value (I'm a Java developer so excuse my bad Python skilz)
instanceId = output.communicate()    
instanceId = str(instanceId).split("'")[1]

এখন !!!! গ্র্যান্ড ফাইনালের জন্য

তারপরে আমি যে নতুন ইসি 2-ইনস্ট্যান্স তৈরি করেছি তার উপর একটি স্ক্রিপ্ট কার্যকর করতে পারি এবং সেই স্ক্রিপ্টটি আমি যে প্যারামিটার / যুক্তিগুলি চাই তা পাঠাতে পারি ... এসএসএম প্রেরণ-কমান্ড প্রেরিত সার্ভারের ইনস্ট্যান্স-আইডি সহ যাতে আমার স্ক্রিপ্টটি সম্পন্ন হয় নতুন ইসি 2-ইনস্ট্যান্সে চলছে এটি স্ক্রিপ্টটি সমাপ্ত হয়েছে তা জানাতে এটি আমার এয়ারফ্লো সার্ভারে আবার একটি এসএসএম প্রেরণ-কমান্ড প্রেরণ করতে পারে। এটি বিশদ ছাড়াই খুব উচ্চ স্তরে তবে এটি কেবল একটি ধারণা প্রদর্শন করার জন্য :)

subprocess.run(shlex.split('sudo aws ssm send-command --document-name "AWS-RunShellScript" --parameters commands=["sudo python3 /home/ec2-user/ec2_file_sensor.py ' + filepath + ' ' + batchIdValue + ' ' + source + ' ' + fileType + ' ' + airflowWorkerInstanceId + '"] --instance-ids ' + ec2ResourceInstanceId + ' --region us-east-1'))

নিশ্চিত নয় যে এটি কাউকে সহায়তা করেছে তবে এটি এডাব্লুএস এসএসএম প্রেরণ-কমান্ড দিয়ে কিছু করার একটি দুর্দান্ত এবং মজাদার উদাহরণ! তবে, সম্ভবত একটি কোড গন্ধ এক্সডি D

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