Aws-cli: قم بتمرير وحدات بايت الصورة إلى Rekognition بدون عدم عمل S3

تم إنشاؤها على ٣٠ أكتوبر ٢٠١٧  ·  3تعليقات  ·  مصدر: aws/aws-cli

وفقًا للوثائق ، يمكن للمرء تمرير وحدات بايت الصورة إلى عملية Rekognition API باستخدام الخاصية Bytes في الخيار --image :

aws rekognition detect-labels --image "Bytes=blob"

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

An error occurred (InvalidImageFormatException) when calling the DetectLabels
operation: Invalid image encoding

يبدو أن aws-cli يأخذ الإدخال "blob" الذي قدمته له ، ويقوم بترميز base64 مرة أخرى. المشكلة هي أنها في الواقع لا تتعامل مع المدخلات على أنها blob. يعاملها كسلسلة وتحاول تفسيرها على أنها utf8 ، لذلك لا يمكنك في الواقع تمرير النقطة إلا إذا صادفت أنك تمتلك blob تصادف أنها تتكون من أحرف utf8 صالحة تمامًا. حتى إذا قمت بتمرير JSON ، فإنه لا يزال يقوم بترميز قيمة Bytes إلى base64.

نتيجة لذلك ، فإن الخيار الوحيد هو تحميل الصورة إلى S3 أولاً ، ثم الرجوع إليها باستخدام خاصية S3Object . ومع ذلك ، هذا ليس مرغوبًا دائمًا ويبدو أن نقص الدعم "Bytes=blob" يتناقض مع الوثائق ونصوص المساعدة المضمنة.

النظام / البرنامج المستخدم:
aws-cli / 1.11.175 Python / 2.7.13 Linux / 4.8.0-2-amd64 botocore / 1.7.33

enhancement

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

dstufft أي أخبار بخصوص هذا؟

ال 3 كومينتر

هذا غير ممكن حاليًا بسبب الطريقة التي يعرض بها CLI هذه المدخلات. سأقوم بتقديم هذا كتعزيز لواجهة برمجة التطبيقات هذه للسماح بتمرير دليل بايت إلى الأمر. في هذه الأثناء ، ستحتاج إلى استخدام حل S3.

dstufft أي أخبار بخصوص هذا؟

مرة أخرى أي أخبار عن هذا؟ لا يمكنني العثور على أمثلة لتحميل الصور على هيئة بايت.

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