لیست بدونترتیب (unordered)
سرویس آبجکتاستوریج ستون از لیست بدون ترتیب در عملیات ListObjectsV2 و ListObjects پشتیبانی میکند.
این عملیات مانند لیست مرتبشده، همه یا تعدادی از آبجکتهای داخل باکت (تا سقف ۱۰۰۰تا) را در هر درخواست کاربر برمیگرداند. اما در این روش لزوماً ترتیب آبجکتها رعایت نمیشود.
عملیات لیست بدون ترتیب هزینهی کمتری برای سرویس آبجکتاستوریج دارد. همچنین در این روش ratelimitهای سادهتری وجود دارند.
توجه کنید که در زمان آخرین ویرایش این مستند، کلاینتها (مانند aws cli و s3cmd) و sdkها (مانند boto3 و aws-sdk-go) از لیست بدون ترتیب پشتیبانی نمیکنند. پیادهسازی ماژولها باید توسط کاربر و یا از طریق اکستنشنهای خارجی مانند این مثال انجام گیرد که در مثالهای زیر توضیح داده شده است.
با افزودن پارامتر کوئری allow-unordered به انتهای ریکوئست ListObjectsV2 و ListObjects میتوانید ترتیب داشتن یا نداشتن آن را کنترل کنید. این پارامتر یک boolean با مقادیر مجاز true و false است.
نمونه ریکوئست curl روی دیتاسنتر ندا:
در مثالهای زیر سعی بر این است که با تغییر در نحوهی استفاده از sdkهای رسمی سرویس s3، عملیات ListObjectsV2 و ListObjects را به حالت allow-unordered اجرا کنیم.
کد زیر یک نمونه از اجرای عملیات لیست بدون ترتیب با استفاده از ماژول رسمی aws-sdk-go است:
لیست بدون ترتیب به طور پیشفرض توسط boto3 پشتیبانی نمیشود، ولی میتوان آن را با استفاده از مدلهای افزوده s3 aws اضافه کرد.
برای این کار ابتدا این فایل را دانلود کرده و آن را در مسیر زیر قرار دهید:
.aws/models/s3/2006-03-01/
سپس میتوانید هنگام استفاده از متد list_objects با استفاده از آرگومان کلیدی AllowUnordered، مرتب بودن یا نبودن عملیات لیست را کنترل کنید، برای مثال:
توجه کنید که در این فایل کانفیگ، در آخرین ویرایش این مستند، این آرگومان هنوز برای متد list_objects_v2 پیادهسازی نشده است.
همچنین توجه داشته باشید که این تغییر ممکن است علاوه بر boto3 بر روی کلاینتهایی که به شکل مستقیم و یا غیر مستقیم از boto3 استفاده میکنند نیز اعمال شود.
برای مثالهای بیشتر به این لینک مراجعه کنید.
در کلاینت s3cmd به تازگی پشتیبانی از لیست بدون ترتیب پیادهسازی شده است که در زمان ویرایش این مستند هنوز در یک release موجود نیست، اما میتوانید به شکل مستقیم از برنچ master پروژه s3cmd در این لینک به آن دسترسی پیدا کنید.
برای استفاده از لیست بدون ترتیب در s3cmd دو روش موجود است:
1 - افزودن سوییچ --list-allow-unordered به انتهای هر کامندی که عملیات لیست در آن وجود دارد مانند:
2 - استفاده از کانفیگ list_allow_unordered با مقدار True در کانفیگ s3cmd