আপনি কীভাবে নির্দিষ্ট ভিপিসিতে ট্যাগ নাম, উদাহরণের আইপি ঠিকানা এবং উদাহরণ আইডি দিয়ে আউস ক্লিপ ব্যবহার করে উদাহরণগুলি তালিকাভুক্ত করবেন?


19

নিকটতম আমার কাছে প্রাপ্ত হ'ল নিম্নলিখিত কমান্ডগুলি ব্যবহার করা।

এই কমান্ডটি সমস্ত দৃষ্টান্তের নাম তালিকাভুক্ত করে।

aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-e2f17e8b --query 'Reservations[].Instances[].Tags[?Key==`Name`].Value[]'

এই কমান্ডটি সমস্ত প্রাইভেট আইপি ঠিকানা, উদাহরণ আইডি এবং সমস্ত ট্যাগগুলির প্রয়োজন নেই যা আমার প্রয়োজন নেই don't আমার শুধু নাম দরকার

aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-e2f17e8b | jq '.Reservations[].Instances[] | {PrivateIpAddress, InstanceId, Tags}'

আমি নিশ্চিত না যে আমি কেন এভাবে কমান্ড চালাতে পারি না:

aws ec2 describe-instances | jq '.["Reservations"]|.[]|.Instances|.[]|.PrivateIpAddress + " " + .InstanceId + " " + .Tags[?Key==`Name`].Value[]'

এই কমান্ডটি কাজ করে তবে এটি সমস্ত ট্যাগ কী নাম দেখায়।

aws ec2 describe-instances | jq '.["Reservations"]|.[]|.Instances|.[]|.PrivateIpAddress + " " + .InstanceId + " " + .Tags'

1
তারা কি করে বোঝার চেষ্টা না করে আপনি কোথাও এই আদেশগুলি অনুলিপি করছেন?
মাইকেল হ্যাম্পটন

আসলেই নয়, আমি কীভাবে জেকিউ ব্যবহার করব এবং কীভাবে বেসিক জেএসন আউটপুটটি চাই তা কীভাবে বোঝার চেষ্টা করেছি। তবে, আমি কী অর্জন করতে চাইছি তার কোনও উদাহরণ পাইনি। "ট্যাগস [? কী == Name]। মান []" কী নাম মান আউটপুট জন্য ফিল্টার হিসাবে ব্যবহার করা কেবলমাত্র aws-cli v1.3.0 এর পরে সম্ভব। আমি চাইলে আউটপুট পেতে - ফিল্টার এবং জিকিউ এর সংমিশ্রণটি ব্যবহার করছি। নিকটতম কমান্ডটি হল aws ec2 বর্ণনা-দৃষ্টান্তসমূহ - ফিল্টার নাম = vpc-id, মানগুলি = vpc-e2f17e8b | জকিউ '.যুগল []। উদাহরণ [] | {প্রাইভেটআইপিএড্রেস, ইনস্ট্যান্সআইডি, ট্যাগস I 'আমি কীভাবে জেকিউ ব্যবহার করে ট্যাগ কী = নাম উল্লেখ করতে হবে তা জানতে হবে।
কল্পনাবিদ

উত্তর:


24

উত্তরটি সঠিকভাবে ফর্ম্যাট করতে আপনার ব্যাকস্ল্যাশগুলি থেকে বাঁচতে হবে।

aws ec2 describe-instances --query 'Reservations[].Instances[].[PrivateIpAddress,Tags[?Key==`Name`].Value[]]' --output text | sed '$!N;s/\n/ /'

সুতরাং এটি হ'ল আসল আদেশ আপনি চান:

$ aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-ac973bc9 --query 'Reservations[].Instances[].[PrivateIpAddress,InstanceId,Tags[?Key==`Name`].Value[]]' --output text | sed '$!N;s/\n/ /'
10.101.255.10   i-91efd39b Server1
10.101.255.9    i-f1e8d4fb Server2

এবং আপনার দরকার নেই .Value[]। আপনি কেবল ব্যবহার করতে পারেন .Value, এবং এটি একই আউটপুট দেবে।

এটি দুর্দান্ত, বিটিডব্লিউ। আমি নিজেই এটিকে বাস্তবায়ন করব!

সংশোধন: উপরের মান .Value"কিছুই না" হলে কাজ করবে না । এটি আরও ভাল কাজ করে:

$ aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-ac973bc9 --query 'Reservations[].Instances[].[PrivateIpAddress,InstanceId,Tags[?Key==`Name`].Value[]]' --output text | sed 's/None$/None\n/' | sed '$!N;s/\n/ /'
10.101.255.10   i-91efd39b Server1
10.101.255.9    i-f1e8d4fb Server2
10.101.255.8    i-f6c2450a      None
10.101.255.7    i-34a6afce Server3

আপনি দয়া করে আপনার সেড কমান্ড ব্যাখ্যা করতে পারেন? আমি উদাহরণস্বরূপ আইডি / নামগুলি একটি করে বন্ধ করে দিচ্ছি যা হতে পারে কারণ আমি সেডে অপ্রত্যক্ষ শেল প্রসারণটি বুঝতে পারি না।
জর্ফাস

3
যদি কোনও উদাহরণটির নাম না দেওয়া হয় (ট্যাগ নেই: কী = নাম সেট থাকে না), তবে পরবর্তী উদাহরণটি একই লাইনে মুদ্রিত হবে। প্রথম সেড কমান্ডটি সমস্যাটি প্রশমিত করতে "কিছুই নয়" n "স্ট্রিংটি মুদ্রণ করে। দ্বিতীয় সেড কমান্ডটি ইনস্ট্যান্স-আইডি থেকে লাইনফিডটি সরিয়ে দেয়, যাতে ট্যাগ: কী = নামের স্ট্রিং একই লাইনে মুদ্রিত হয়।
DrStrangepork

8

এটা চেষ্টা কর

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value|[0],State.Name,PrivateIpAddress,PublicIpAddress]' --output text | column -t

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

এটি কাজ করে, তবে প্রকৃতপক্ষে, কেন এটি কাজ করে? |কোন রকম ফিল্টার?
aairey

7

উপরের উত্তরগুলি ঠিক আছে, তবে আমার একইগুলির প্রিয়;

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType,PrivateIpAddress,PublicIpAddress,Tags[?Key==`Name`].Value[]]' --output json | tr -d '\n[] "' | perl -pe 's/i-/\ni-/g' | tr ',' '\t' | sed -e 's/null/None/g' | grep '^i-' | column -t

প্রকৃতপক্ষে, কেউ এটিকে একটি BASH ফাংশন তালিকার তালিকায় রাখতে পারে;

awsls () { aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType,PrivateIpAddress,PublicIpAddress,Tags[?Key==`Name`].Value[]]' --output json | tr -d '\n[] "' | perl -pe 's/i-/\ni-/g' | tr ',' '\t' | sed -e 's/null/None/g' | grep '^i-' | column -t }

তারপরে প্রম্পট থেকে কেবল 'আউসস' হিসাবে কল করুন


আপনি কীভাবে একটি ফাইলে একাধিক ফাংশন যুক্ত করবেন এবং কেবল আপনার পছন্দসই ফাংশনটি কল করবেন?
স্ট্রাইকার

2

এটার মতো কিছু?

aws ec2 describe-instances --query 'Reservations[].Instances[].[PrivateIpAddress,Tags[?Key==`Name`].Value[]]' --output text | sed '$!N;s/\n/ /'

1

উদাহরণস্বরূপ "চলমান" স্টেটের জন্য আমি একটি ফিল্টার যুক্ত করেছি। এটি কারও পক্ষে সহায়ক হলে এখানে এটি পোস্ট করা।

আমার ব্যবহারের কেসটি কিছুটা পৃথক, আমি জবাবদিহি হোস্ট ফাইলগুলি উত্পন্ন করছি যাতে আমি সমস্ত চলমান হোস্টের জন্য ব্যক্তিগত আইপি # নাম চাই।

aws ec2 describe-instances --profile=$PROFILE --filters Name=vpc-id,Values=$VPCID Name=instance-state-name,Values=running --query 'Reservations[].Instances[].[PrivateIpAddress,Tags[?Key==`Name`].Value[]]' --output text | sed 's/None$/None\n/' | sed '$!N;s/\n/ /' | awk '{print $1 " #" $2 }'

0

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

পাওয়ারশেলে আপনি এটি ব্যবহার করতে পারেন:

(Get-EC2Instance -ProfileName Profile).Instances | select InstanceId,PrivateIPAddress,PublicIpAddress @{Name="Servername";Expression={$_.tags | where key -eq "Name" | select Value -expand Value}} | Format-Table.

এডাব্লুএস সিএলআই এর সাহায্যে আপনি ব্যবহার করতে পারেন:

aws ec2 describe-instances --region=us-east-1 --query 'Reservations[].Instances[].[InstanceId,Tags[?Key==Name].Value|[0],PrivateIpAddress,PublicIpAddress]' --output text --profile ProfileName

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