Aws-cli: aws ec2 وصف حالات - علامة الفلاتر: يبدو أنه لا يعمل (أو أن المستندات مفقودة / مضللة)

تم إنشاؤها على ٢٠ سبتمبر ٢٠١٣  ·  46تعليقات  ·  مصدر: aws/aws-cli

محاولة استخدام مثال وصف aws ec2 (الإصدار 1.1.0) مع العلامة: المرشح المذكور في المستندات على http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html ولكن لا يبدو أنه يعمل.

اقتباس من الوثائق: "العلامة: - لتصفية الاستجابة بناءً على مجموعة علامة / قيمة محددة."

جربت عدة تنسيقات (مجرد التخمين ، جرب التنسيق المستخدم بواسطة http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-DescribeInstances.html) ولكن لم يحالفك الحظ.

هذا لا يشتكي ولكنه لا يُرجع أي حالات:

aws ec2 وصف حالات - اسم عوامل التصفية = العلامة: ، القيم = الاسم = ADS-prod-ads

هذا فشل:

aws ec2 وصف الحالات - علامة الفلاتر: الاسم = ADS-prod-ads
مفتاح غير معروف ' علامة: اسم ' للمعامل - فلاتر ، الاختيارات الصالحة هي: القيم ، الاسم

للإشارة فقط ، باستخدام أعمال قيمة العلامة (فقط لإظهار تلك العلامة Name = ADS-prod-ads موجودة):

aws ec2 وصف الحالات - اسم الفلاتر = قيمة العلامة ، القيم = ADS-prod-ads | jq '.Reservations []. مثيلات []. العلامات []'
{
"المفتاح": "الاسم" ،
"القيمة": "ADS-prod-ads"
}

documentation

التعليق الأكثر فائدة

لتصفية جميع المثيلات التي تحتوي على علامة باسم أو مفتاح Name وقيمة ADS-prod-ads ، يمكنك القيام بما يلي:

aws ec2 describe-instances --filter Name=tag:Name,Values=ADS-prod-ads

ال 46 كومينتر

لتصفية جميع المثيلات التي تحتوي على علامة باسم أو مفتاح Name وقيمة ADS-prod-ads ، يمكنك القيام بما يلي:

aws ec2 describe-instances --filter Name=tag:Name,Values=ADS-prod-ads

شكرا ، هذا يعمل. سيكون رائعًا لو كان المثال في التوثيق (أعتقد أنه ليس واضحًا ، فهو مختلف قليلاً عن المرشحات الأخرى).

كما أن التوثيق الخاص بمفتاح العلامة يقول: "إذا كنت ترغب في سرد ​​الموارد فقط حيث يكون الغرض هو X ، فراجع مرشح المفتاح لاحقًا في هذا الجدول." بقدر ما أستطيع أن أقول أنه ينبغي أن أقول "انظر العلامة: مرشح".

تشير الوثائق الواردة أعلاه إلى "تعليمات أمثلة وصف aws ec2" و http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html التي تبدو متطابقة (أي تم إنشاؤها من نفس المصدر).

أوافق على أن المثال سيكون مفيدًا جدًا. سوف أقوم بوضع علامة على هذا كقضية وثائق. شكرا.

استغرق الأمر بعض الوقت لإيجاد هذا مع الأخذ في الاعتبار مدى فائدة ، نعم ، سيكون من الجيد أن يكون لديك مثال واحد في وثيقة وصف حالات aws ec2 (http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances .لغة البرمجة)

نعم ، هذا يعمل الآن. المثال الذي قدمته AWS Docs محير بعض الشيء لكن للتوضيح. لدي علامة تسمى "Resource" ويتم تعيين قيمة لكل مثيل إما "اختبار" أو "مرحلة" أو "مباشر". للعثور على جميع المثيلات (قيد التشغيل أو المتوقفة) مع علامة المورد لـ "test" ، هذا هو بناء الجملة:

aws ec2 وصف الحالات - اسم الفلاتر = العلامة: المورد ، القيم = اختبار - اختبار الملف الشخصي

لدي نفس المشكلة مع --query. أريد فقط اسم المثيل في التقرير وظهوره باللون الأسود. أنا أستخدم الاستعلام التالي

وصف المثيلات - الاستعلام "الحجوزات [_]. المثيلات [_]. [Placement.AvailabilityZone، State.Name، InstanceId، InstanceType، Platform، Tags.Value، State.Code، Tags.Values] '- جدول الإخراج

هل تستخدم أحدث إصدار من was cli؟

إنه يعمل بالنسبة لي

aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.AvailabilityZone, State.Name, InstanceId,InstanceType,Platform,Tags.Value,State.Code,Tags.Values]' --output table
---------------------------------------------------------------------------------------
|                                  DescribeInstances                                  |
+------------+----------+-------------+------------+----------+-------+------+--------+
|  eu-west-1c|  stopped |  i-60xxxx2a |  t1.micro  |  None    |  None |  80  |  None  |
|  eu-west-1a|  stopped |  i-6fxxxx720 |  m1.medium |  windows |  None |  80  |  None  |
|  eu-west-1c|  running |  i-1axxxx56 |  t1.micro  |  None    |  None |  16  |  None  |
+------------+----------+-------------+------------+----------+-------+------+————+

- سب

في 27 فبراير 2014 ، الساعة 15:16 ، كتب derrickfn [email protected] :

لدي نفس المشكلة مع --query. أريد فقط اسم المثيل في التقرير وظهوره باللون الأسود. أنا أستخدم الاستعلام التالي

وصف المثيلات - الاستعلام "الحجوزات []. المثيلات []. [Placement.AvailabilityZone، State.Name، InstanceId، InstanceType، Platform، Tags.Value، State.Code، Tags.Values] '- جدول الإخراج

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub.

تحياتي سيبستو ،

يعمل الأمر ، لكنه لا يُرجع قيم العلامات الفعلية. إنه يعطيني لا شيء (NULL) ، تمامًا كما فعلت أنت. بالنسبة لعنصر الاسم ، نقوم بتوصيل أسماء لجميع الخوادم الخاصة بك لتسهيل التعرف عليها. نحن أيضًا نضع علامة على البيئة التي هم جزء منها.

شكرا مقدما للمساعدة!
ديريك

آسف - أجبت بسرعة كبيرة

بالنسبة للنظام الأساسي: هذا متوقع لأن مثيلات Windows فقط لها سمة النظام الأساسي في وصف JSON
بالنسبة للباقي ، يبدو أن هناك مشكلة بالفعل

نعم:
aws ec2 وصف الحالات - حجوزات الاستعلام []. المثيلات []. العلامات. المفتاح

ليس جيدا:
aws ec2 وصف الحالات - حجوزات الاستعلام []. المثيلات []. [العلامات.المفتاح]

- سب

في 27 فبراير 2014 ، الساعة 15:38 ، كتب derrickfn [email protected] :

تحياتي سيبستو ،

يعمل الأمر ، لكنه لا يُرجع قيم العلامات الفعلية. إنه يعطيني لا شيء (NULL) ، تمامًا كما فعلت أنت. بالنسبة لعنصر الاسم ، نقوم بتوصيل أسماء لجميع الخوادم الخاصة بك لتسهيل التعرف عليها. نحن أيضًا نضع علامة على البيئة التي هم جزء منها.

شكرا مقدما للمساعدة!
ديريك

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub.

sebasto المشكلة في الاستعلام أعلاه هي أن Tags عبارة عن قائمة ، لذا فإن التعبير Tags.Key سيعيد null . إذا كنت تريد جميع أسماء المفاتيح ، فستقول Tags[].Key .

ومع ذلك ، في أحدث إصدار CLI (1.3.0) الذي تم إصداره للتو ، هناك طريقة أكثر مباشرة للتصفية حسب أسماء محددة. على سبيل المثال ، إذا أردت اسم كل مثيلاتك في قائمة ، يمكنك الآن قول:

aws ec2 describe-instances --query 'Reservations[].Instances[].Tags[?Key==`Name`].Value[]'

[
  "name1",
  "myinstance2",
  ...
  "devinstance"
]

jamesls كيف سيبدأ المرء في توسيع هذا الاستعلام ليشمل المزيد من النتائج في المخرجات؟ على سبيل المثال ، أستخدم ما يلي لسرد أشياء مثل InstanceID و AZ وما إلى ذلك
وصف المثيلات aws ec2 - الاستعلام "الحجوزات []. المثيلات []. [InstanceId، Placement.AvailabilityZone، InstanceType، Platform، State.Name، PublicDnsName] '- إخراج النص | تشغيل grep
ولكن عندما أقوم بإضافة "العلامات [؟ Key == Name ] .Value []" إلى استفساري ، لا يمكنني إرجاع علامة الاسم. أنا فقط أحصل على "لا شيء" لهذا المجال. هذا مثال على أمر aws الخاص بي:
aws ec2 وصف الحالات - الاستعلام 'الحجوزات [_]. المثيلات [_]. ["العلامات [؟ Key == Name ] .Value []" ، InstanceId ، Placement.AvailabilityZone ، InstanceType ، Platform ، State.Name، PublicDnsName] '- نص الإخراج | تشغيل grep

هل حاولت:

Reservations[].Instances[].["Tags[*][?Key==Name].Value[]

آسف ، هذا ليس كل شيء. وماذا عن هذا؟

aws ec2 describe-instances --query 'Reservations[].Instances[].Tags[*][?Key==`Name`].Value'

نعم ، هذا يعمل ولكنه يعطيني فقط بطاقة الاسم. أحاول الحصول على ذلك ومعلومات أخرى مثل InstanceID و AZ وما إلى ذلك.

حسنًا ، هذا يناسبني:

aws ec2 describe-instances --query 'Reservations[].Instances[].{id: InstanceId, tagvalue: Tags[*][?Key==`Name`].Value}'

يمكنك توسيع هذا للحصول على عناصر أخرى بجانب InstanceId فقط.

آسف لصدمة مثل هذا ، ولكن لدي مشكلة في الاستعلام:

aws ec2 يصف الحالات - حجوزات الاستعلام []. المثيلات []. SecurityGroups [؟ GroupName == افتراضي] .GroupId

أستخدم ما ورد أعلاه لمحاولة استخراج معرف المجموعة لمجموعة معينة (الاسم = الافتراضي في هذه الحالة). لكن لا شيء عاد. أيه أفكار؟

أعتقد أنني عالق في مكان ما ، عندما أجري هذا أحصل على لا شيء في كل مكان

aws --region us-east-1 ec2 وصف الحالات - الاستعلام 'الحجوزات []. المثيلات []. العلامات [؟ Key == Name ] .Value []. [Placement.AvailabilityZone، State. Name، InstanceId، LaunchTime، ImageId] '- جدول الإخراج

هذا لأن .Value [] تقوم فقط بإرجاع قيمة البطاقات التعريفية الخاصة بك. جميع السمات الأخرى المطلوبة بعد ذلك غير موجودة في هذا الإخراج

المرشحات لها تركيب فظيع. يمكنني جوجل معك ، حاول معرفة.

في 12/03/2014 06:14 م كتب أسفارشن:

أعتقد أنني عالق في مكان ما ، عندما أجري هذا أحصل على لا شيء في كل مكان

aws - منطقة الولايات المتحدة - الشرق - 1 ec2 - حالات وصف - الاستعلام
'الحجوزات []. المثيلات []. العلامات [؟ Key == | الاسم |]. القيمة []. [Placement.AvailabilityZone،
State.Name ، InstanceId ، LaunchTime ، ImageId] '

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/aws/aws-cli/issues/368#issuecomment -65527379.

لقد حصلت على هذا العمل بالنسبة لي ..

aws --region eu-west-1 ec2 وصف الحالات - الاستعلام عن الحجوزات []. المثيلات []. [العلامات [؟ Key == Name ] .Value | [0] ، InstanceId ، Placement.AvailabilityZone ، InstanceType ، LaunchTime ، State.Name ، PublicDnsName] '- جدول الإخراج

حسنًا ، لم يكن هذا واضحًا مما سبق ، لذا آمل أن يساعد شخصًا ما. يسرد هذا بتنسيق جدول لطيف بعض الحقول المفيدة بما في ذلك علامة الاسم (إذا كنت تستخدم ذلك).

aws ec2 describe-instances --query 'Reservations[].Instances[].[ InstanceId,[Tags[?Key== Name ].Value][0][0],State.Name,InstanceType,Placement.AvailabilityZone ]' --output table

$ aws ec2 describe-instances --filter Name=tag:Role,Values=cache لمن يتعثر هنا

المساعدة لا تزال مربكة للغاية حول مرشح العلامات. انها تقول:

o tag :key =*value* - The key/value combination of a tag assigned to the resource.

والذي يبدو أنه يوحي بأنه يمكنك القيام بما يلي:

--filters Name=tag:SomeKey=SomeValue

وهو بالطبع غير صحيح.

إذا واجه أي شخص صعوبة في معرفة كيفية فرز العلامات ، فإن الأمر التالي يعمل بالنسبة لي:
aws ec2 describe-instances --output json --query "Reservations[*].Instances[*].{ID:InstanceId,Type:InstanceType,Name:Tags[?Key=='Name'].Value}"

إذا كنت بحاجة إلى تضمين العلامات مع: فيها ، فأنت بحاجة إلى الاقتباس ، على سبيل المثال
aws ec2 describe-instances --region us-west-2 --filters Name=tag:"aws:autoscaling:groupName",Values=yourautoscalegroupname

أنا أيضًا شعرت بالحرج بسبب الوثائق غير القابلة للاختراق والمضللة حول هذا الموضوع.

كنت أحاول معرفة كيفية الحصول على عنوان IP لمثيل بناءً على علامة (في هذه الحالة ، "الاسم"). لقد جربت بعض الأشياء المختلفة باستخدام - الاستعلام و - عوامل التصفية ، ولكن يبدو أن الانتقال من معلمة متداخلة إلى أخرى أمر معقد ، أو ربما لا يكون ممكنًا بمجرد استخدام أسلوب أو آخر. أدى الجمع بين - طلب البحث و - عوامل التصفية إلى تحقيق الحيلة:

aws ec2 describe-instances --filters Name=tag:Name,Values="Instance Name" --query 'Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress' --output text

يظهر هذا في الجزء العلوي عندما أبحث عن ec2.instances.filter() لتصفية المثيلات برمجيًا.


إليك كيف يمكنك تحقيق ذلك:
(ابحث عن جميع المثيلات التي تحتوي على علامة Name وتبدأ قيمة العلامة بـ api- )

import boto3

ec2 = boto3.resource('ec2')

for instance in ec2.instances.filter(Filters=[{'Name': 'tag:Name', 'Values': ['api-*']}]):
    print instance

adeelx for Python بالتأكيد لكن المشكلة تتعلق باستخدام bash awscli

الأمر أدناه يعمل بالنسبة لي

aws --version
aws-cli/1.11.81 Python/3.4.3 Linux/3.13.0-74-generic botocore/1.5.44
aws ec2 describe-instances --filters Name=tag:App,Values="value" --query 'Reservations[].Instances[].[Placement.AvailabilityZone, State.Name, InstanceId,InstanceType,Platform,Tags.Value,State.Code,Tags.Values]' --output table

أردت تصفية المثيلات الخاصة بي إلى تلك التي تحتوي على بادئة محددة في علامة الاسم ، ثم التأكد من إدراج الاسم الكامل في جدول الإخراج ، ويبدو أن الطريقة الوحيدة لتحقيق ذلك هي استخدام join() لتسطيح القائمة في سلسلة:

aws ec2 describe-instances --filters "Name=tag:Name,Values=talis*" --query 'Reservations[].Instances[].[InstanceId,PublicDnsName,State.Name,InstanceType,join(`,`,Tags[?Key==`Name`].Value)]' --output table

كانت لدي مشكلات مماثلة وكان الأمر صعبًا للغاية للوصول إلى هذا:
aws ec2 describe-tags --region ${region} --filter "Name=tag:Name,Values=*Rally" "Name=resource-id,Values=$instanceID"

بعد 5 سنوات ، ولا يزال هذا المثال الرهيب نفسه موجودًا في الوثائق ، ولا يزال هناك مثال أفضل غير موجود.

لقد قادني بحثي في ​​Google عن كيفية استخدام عوامل التصفية مع استدعاءات واجهة برمجة التطبيقات description_ * ، ​​ولا يسعني سوى هز رأسي بعد قراءة تعليقtolidano الأخير.

في حالة احتياجك إلى التصفية باستخدام مفتاح العلامة فقط ، يمكنك القيام بشيء مثل

ec2-describe-tags --filter "resource-type=instance" --filter "key=hostname" --filter "resource-id=$(ec2metadata --instance-id)" | awk '{print $5}'

أو ببساطة استخدم --filter "key=<KEY>"

أتطلع للحصول على نوع النظام الأساسي ec2 ، أي (Windows أو Linux) باستخدام مرشحات وظيفة lambda. في حالة ما إذا كان أي شخص قد فعل ذلك ، يمكنك مشاركة نفس الشيء

يتم إرجاع "Windows" من خلال حقل "النظام الأساسي" لمثيلات Windows. لا يتم إرجاع أي منها لمثيلات Linux. الاستعلام الموجود في الجزء العلوي من هذا الموضوع لا يزال يعمل اليوم.

aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.AvailabilityZone, State.Name, InstanceId,InstanceType,Platform,Tags.Value,State.Code,Tags.Values]' --output table

لتصفية جميع المثيلات التي تحتوي على علامة باسم أو مفتاح Name وقيمة ADS-prod-ads ، يمكنك القيام بما يلي:

aws ec2 describe-instances --filter Name=tag:Name,Values=ADS-prod-ads

إذا دعت الحاجة بالضبط اسم المثيل
aws ec2 وصف الحالات - اسم الفلتر = العلامة: الاسم ، القيم = devschemareg01 - إخراج النص | فرز | اسم grep | awk "{print $ 3}"

مشاركة ما استخدمته:
"" معرف المثيل = curl - صامت http://169.254.169.254/latest/meta-data/instance-id 2> & 1
aws ec2 description-tags --region us-west-1 --filters Name = Resource-id، Values ​​= [example-id] Name = tag: aws : cloud تشكيل: stack-name ، Values ​​= [“my_stack_name"]

أو

aws ec2 description-tags - منطقة us-west-1 - اسم عوامل التصفية

aws ec2 describe-instances --filters Name=tag:<YOUR_TAG>,Values="<YOUR_VALUE>" --query 'Reservations[].Instances[].[Placement.AvailabilityZone, State.Name, InstanceId,InstanceType,InstanceLifecycle,Tags[?Key==`<YOUR_TAG`]|[0].Value]'  --output table

لقد استخدمت المرشحات أدناه للحصول على قائمة المثيلات مع IP العام وخيارات التصفية الخاصة بالاسم الخاص بها وهي تعمل بشكل جيد.

وصف aws ec2 -ثيلات - فيلتر "الاسم = اسم المثيل ، القيم = تشغيل" "الاسم = العلامة: نظام التشغيل ، القيم = AMAZON / LINUX2" - الاستعلام "الحجوزات []. المثيلات []. [PublicIpAddress ، العلامات [؟ Key == 'Name']. القيمة | [0]] "- جدول الإخراج

لقد استخدمت الاستعلام أدناه للحصول على AZ و InstanceType و Name و PrivateIpAddress و PublicIpAddress وحالة مثيلات ec2 قيد التشغيل:

aws ec2 وصف الحالات - الاستعلام عن الحجوزات [ ] .Instances [ ]. { State: State.Name ، Public IpAddress: PublicIpAddress ، Ins tanceType: InstanceType ، PrivateIP: PrivateIpAddress ، AZ: Placement.AvailabilityZone، Name: Tags [؟ Key == Name ] | [0] .Value} '- جدول الإخراج |

لتصفية التفاصيل حسب الاسم ، أستخدم خيار grep مع -i لإجراء بحث غير حساس لحالة الأحرف بدلاً من عوامل التصفية حسب الاسم ..

ملاحظة: أثناء كتابة الأمر ، كنت أعاني في الغالب مع عامل تشغيل الأنبوب الذي تم تمييزه من قبل [0]. القيمة في مرشح علامة الاسم. (قد يكون مفيدًا لشخص يعاني من الأمر)

@ vaibhavg2510 بينما يعمل هذا النهج ، والشهرة ، فإنه "يضيع" أوامر API. في الحساب المزدحم ، يجعلك هذا أكثر عرضة للاختناق ، وعمليات التشغيل الطويلة بسبب التراجع / إعادة المحاولة الأسي ، وما إلى ذلك.

صدم. لا يزال بناء الجملة --filters "Name = tag:Name, Values = ..." غير واضح من الوثائق. لقد بحثت حرفيًا على Google لمدة 15 دقيقة حتى وجدت هذه المشكلة التي أظهرت أخيرًا كيفية القيام بذلك.

لقد تحدثت مع كتاب EC2 حول هذا الموضوع. أخبروني أنهم سيعملون على مثال لتوضيح ذلك. في غضون ذلك ، تم توثيق بناء الجملة في دليل مستخدم EC2 هنا: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_CLI

آمل أن يساعد هذا!

أنا آخر ضحية أعتقد أنه كان يجب أن يأتي إلى هنا للحصول على إجابتي. هل ما زالت خطط دمج المستندات قائمة؟

حتى الارتباط من صفحة API إلى رابط التعليقات أعلاه (أو ربما في هذه المرحلة هذا الريبو) سيكون مفيدًا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات