تحميل الملفات إلى S3 باستخدام واجهة سطر الأوامر AWS: دليل شامل

عند العمل مع Amazon S3 (خدمة التخزين البسيطة)، ربما تكون قد استخدمت واجهة تحكم الويب لـ S3 لتنزيل، نسخ، أو رفع ملف إلى حاويات S3. استخدام الواجهة التحكم عبر الويب يعتبر أمرًا مقبولًا تمامًا، وهذا ما صممت له في الأساس.

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

لتلبية متطلبات الأتمتة مع خدمات الويب Amazon، بما في ذلك Amazon S3، يوفر أداة AWS CLI للمسؤولين خيارات سطر الأوامر لإدارة حاويات Amazon S3 وكائناتها.

في هذا المقال، ستتعلم كيفية استخدام أداة AWS CLI سطر الأوامر لرفع، نسخ، تنزيل، ومزامنة الملفات مع Amazon S3. ستتعلم أيضًا أساسيات توفير الوصول إلى حاويتك S3 وتكوين ملف تعريف الوصول ذلك للعمل مع أداة AWS CLI.

المتطلبات الأولية

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

  • حساب AWS. إذا لم يكن لديك اشتراك حالي في AWS، يمكنك الاشتراك في فترة الاستخدام المجاني لخدمات AWS.
  • دلوًا AWS S3. يمكنك استخدام دلوًا موجودًا إذا كنت تفضل ذلك. ومع ذلك، يُنصح بإنشاء دلو فارغ بدلاً من ذلك. يرجى الرجوع إلى إنشاء دلو.
  • A Windows 10 computer with at least Windows PowerShell 5.1. In this article, PowerShell 7.0.2 will be used.
  • يجب تثبيت أداة AWS CLI الإصدار 2 على جهاز الكمبيوتر الخاص بك.
  • المجلدات والملفات المحلية التي ستقوم بتحميلها أو مزامنتها مع Amazon S3

تحضير وصولك إلى AWS S3

فلنفترض أن لديك بالفعل المتطلبات المطلوبة. ستعتقد أنه يمكنك الذهاب مباشرةً وبدء تشغيل AWS CLI مع دلو S3 الخاص بك. أعني، أليس من الجميل إذا كانت الأمور بهذه البساطة؟

لأولئك الذين يبدؤون فقط في العمل مع Amazon S3 أو AWS بشكل عام، تهدف هذه القسم لمساعدتك في إعداد الوصول إلى S3 وتكوين ملف تعريف AWS CLI.

يمكن العثور على التوثيق الكامل لإنشاء مستخدم IAM في AWS في الرابط أدناه. إنشاء مستخدم IAM في حسابك AWS الخاص

إنشاء مستخدم IAM مع إذن الوصول إلى S3

عند الوصول إلى AWS باستخدام CLI، ستحتاج إلى إنشاء مستخدم IAM واحد أو أكثر مع وصول كافٍ إلى الموارد التي تنوي العمل معها. في هذا القسم، ستقوم بإنشاء مستخدم IAM مع وصول إلى Amazon S3.

لإنشاء مستخدم IAM مع وصول إلى Amazon S3، تحتاج أولاً إلى تسجيل الدخول إلى وحدة تحكم IAM في AWS. تحت مجموعة إدارة الوصول، انقر فوق المستخدمون. بعد ذلك، انقر فوق إضافة مستخدم.

IAM Users Menu

اكتب اسم مستخدم IAM الذي تقوم بإنشائه داخل مربع اسم المستخدم مثل s3Admin. في اختيار نوع الوصول*، ضع علامة على الوصول البرمجي. ثم، انقر على زر التالي: الأذونات.

Set IAM user details

بعد ذلك، انقر فوق ربط السياسات الحالية مباشرةً. ثم، ابحث عن اسم السياسة AmazonS3FullAccess وضع علامة عليه. عند الانتهاء، انقر فوق التالي: العلامات.

Assign IAM user permissions

إنشاء العلامات اختياري في صفحة إضافة العلامات، ويمكنك تخطي هذا والنقر فوق زر التالي: مراجعة.

IAM user tags

في صفحة المراجعة، ستجد ملخصًا للحساب الجديد الذي تم إنشاؤه. انقر على إنشاء مستخدم.

IAM user summary

وأخيرًا، بمجرد إنشاء المستخدم، يجب عليك نسخ معرّف مفتاح الوصول وقيمة مفتاح الوصول السري وحفظهما للاستخدام لاحقًا. لاحظ أن هذه هي المرة الوحيدة التي يمكنك رؤية هذه القيم.

IAM user key credentials

إعداد ملف تعريف AWS على جهاز الكمبيوتر

الآن بعد أن قمت بإنشاء مستخدم IAM بالوصول المناسب إلى Amazon S3، الخطوة التالية هي إعداد ملف تعريف AWS CLI على جهاز الكمبيوتر الخاص بك.

هذا القسم يفترض أنك قد قمت بتثبيت أداة AWS CLI الإصدار 2 كما هو مطلوب. لإنشاء الملف الشخصي، ستحتاج إلى المعلومات التالية:

  • مفتاح الوصول الخاص بمستخدم IAM.
  • المفتاح السري المرتبط بمستخدم IAM.
  • اسم المنطقة الافتراضية المتوافق مع موقع دلو S3 الخاص بك في AWS. يمكنك التحقق من قائمة نقاط النهاية باستخدام هذا الرابط المرفق. في هذا المقال، يوجد دلو S3 لـ AWS في منطقة آسيا والمحيط الهادئ (سيدني)، ونقطة النهاية المقابلة هي ap-southeast-2.
  • تنسيق الإخراج الافتراضي. استخدم JSON لهذا.

لإنشاء الملف الشخصي، افتح PowerShell واكتب الأمر أدناه واتبع التعليمات.

aws configure

أدخل مفتاح الوصول، المفتاح السري، اسم المنطقة الافتراضي، واسم الإخراج الافتراضي. راجع العرض التوضيحي أدناه.

Configure an AWS CLI profile

اختبار وصول AWS CLI

بعد تكوين ملف تكوين AWS CLI، يمكنك التأكد من أن الملف الشخصي يعمل عن طريق تشغيل هذا الأمر في PowerShell.

aws s3 ls

يجب أن يقوم الأمر أعلاه بسرد دلاء Amazon S3 المتاحة في حسابك. يوضح العرض التوضيحي أدناه الأمر في العمل. يظهر النتيجة أن قائمة الدلاء المتاحة تشير إلى أن تكوين الملف الشخصي كان ناجحًا.

List S3 buckets

للتعرف على أوامر واجهة سطر الأوامر AWS الخاصة بـ Amazon S3، يمكنك زيارة صفحة مرجع أوامر واجهة سطر الأوامر AWS لـ S3.

إدارة الملفات في S3

مع واجهة سطر الأوامر AWS، يمكن القيام بعمليات إدارة الملفات النموذجية مثل تحميل الملفات إلى S3، وتنزيل الملفات من S3، وحذف الكائنات في S3، ونسخ كائنات S3 إلى موقع آخر في S3. كلها مسألة معرفة الأمر الصحيح والصيغة والمعلمات والخيارات.

في الأقسام التالية، يتكون البيئة المستخدمة من ما يلي.

List of available S3 bucket names in the Amazon S3 console
  • المجلد المحلي والملفات الموجودة تحت c:\sync.
Local Directory

تحميل الملفات الفردية إلى S3

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

لتحميل ملف إلى S3، ستحتاج إلى توفير حجمين (المصدر والوجهة) لأمر aws s3 cp.

على سبيل المثال، لتحميل الملف c:\sync\logs\log1.xml إلى الجذر في السلة atasync1، يمكنك استخدام الأمر التالي.

aws s3 cp c:\sync\logs\log1.xml s3://atasync1/

ملاحظة: تتم إضافة بادئة S3:// دائمًا لأسماء سلالات S3 عند استخدام واجهة سطر الأوامر AWS

تشغيل الأمر أعلاه في PowerShell ، ولكن قم بتغيير المصدر والوجهة التي تتناسب مع بيئتك أولاً. يجب أن يكون الإخراج مشابهًا للعرض أدناه.

Upload file to S3

يظهر العرض أعلاه أن الملف بالاسم c:\sync\logs\log1.xml تم تحميله بدون أخطاء إلى وجهة S3 s3://atasync1/.

استخدم الأمر أدناه لعرض الكائنات في جذر دلو S3.

aws s3 ls s3://atasync1/

تشغيل الأمر أعلاه في PowerShell سيؤدي إلى نفس الإخراج ، كما هو موضح في العرض أدناه. كما يمكن رؤية في الإخراج أدناه أن الملف log1.xml موجود في جذر الموقع S3.

List the uploaded file in S3

تحميل ملفات ومجلدات متعددة إلى S3 بشكل تكراري

عرض القسم السابق كيفية نسخ ملف واحد إلى موقع S3. ماذا لو كنت بحاجة إلى تحميل ملفات متعددة من مجلد ومجلدات فرعية؟ بالتأكيد لا تريد تشغيل نفس الأمر مرارًا وتكرارًا لأسماء ملفات مختلفة، صحيح؟

الأمر aws s3 cp يحتوي على خيار لمعالجة الملفات والمجلدات بشكل تكراري ، وهذا هو الخيار --recursive.

على سبيل المثال ، يحتوي الدليل c:\sync على 166 كائنًا (ملفات ومجلدات فرعية).

The folder containing multiple files and sub-folders

باستخدام الخيار --recursive ، ستتم تحميل جميع محتويات المجلد c:\sync إلى S3 مع الاحتفاظ بالهيكل الشجري. للاختبار ، استخدم الشيفرة المثالية أدناه ، ولكن تأكد من تغيير المصدر والوجهة بما يتناسب مع بيئتك.

ستلاحظ من الشيفرة أدناه أن المصدر هو c:\sync، والوجهة هي s3://atasync1/sync. يشير المفتاح /sync الذي يتبع اسم دلو S3 إلى AWS CLI لتحميل الملفات في المجلد /sync في S3. إذا كان المجلد /sync غير موجود في S3، سيتم إنشاؤه تلقائيًا.

aws s3 cp c:\sync s3://atasync1/sync --recursive

سيؤدي الشيفرة أعلاه إلى الناتج كما هو موضح في العرض أدناه.

Upload multiple files and folders to S3

تحميل ملفات ومجلدات متعددة إلى S3 انتقائيًا

في بعض الحالات، ليس خيارًا جيدًا تحميل جميع أنواع الملفات. مثل عندما تحتاج فقط إلى تحميل الملفات ذات الامتدادات المعينة (على سبيل المثال، *.ps1). خياران آخران متاحان لأمر cp هما --include و --exclude.

في حين استخدام الأمر في القسم السابق يتضمن جميع الملفات في التحميل التكراري، سيتضمن الأمر أدناه فقط الملفات التي تطابق *.ps1 ويستبعد كل ملف آخر من التحميل.

aws s3 cp c:\sync s3://atasync1/sync --recursive --exclude * --include *.ps1

العرض أدناه يوضح كيفية عمل الشيفرة أعلاه عند تنفيذها.

Upload files that matched a specific file extension

مثال آخر هو إذا كنت ترغب في تضمين متغيرات متعددة لأمتدادات الملفات المختلفة، ستحتاج إلى تحديد الخيار --include مرات عديدة.

سيتضمن الأمر في المثال أدناه فقط ملفات *.csv و *.png إلى أمر النسخ.

aws s3 cp c:\sync s3://atasync1/sync --recursive --exclude * --include *.csv --include *.png

تشغيل الشيفرة أعلاه في PowerShell سيقدم لك نتيجة مماثلة، كما هو موضح أدناه.

Upload files with multiple include options

تنزيل الكائنات من S3

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

سيتطلب نسخ من S3 إلى المحلي منك تبديل مواقع المصدر والوجهة. حيث يكون المصدر موقع S3، والوجهة هي المسار المحلي، مثل الذي يُظهر أدناه.

aws s3 cp s3://atasync1/sync c:\sync

لاحظ أن نفس الخيارات المستخدمة عند تحميل الملفات إلى S3 قابلة أيضًا عند تنزيل الكائنات من S3 إلى المحلي. على سبيل المثال، تنزيل جميع الكائنات باستخدام الأمر أدناه مع الخيار --recursive.

aws s3 cp s3://atasync1/sync c:\sync --recursive

نسخ الكائنات بين مواقع S3

بالإضافة إلى تحميل وتنزيل الملفات والمجلدات، باستخدام AWS CLI، يمكنك أيضًا نسخ أو نقل الملفات بين مواقع دلوين S3.

ستلاحظ الأمر أدناه باستخدام موقع S3 واحد كمصدر، وموقع S3 آخر كوجهة.

aws s3 cp s3://atasync1/Log1.xml s3://atasync2/

توضح العرض أدناه نسخ الملف المصدر إلى موقع S3 آخر باستخدام الأمر أعلاه.

Copy objects from one S3 location to another S3 location

مزامنة الملفات والمجلدات مع S3

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

هناك بعض الحالات التي قد تحتاج فيها إلى الاحتفاظ بمحتويات سلة S3 محدّثة ومتزامنة مع دليل محلي على خادم. على سبيل المثال، قد يكون لديك متطلبات للحفاظ على سجلات المعاملات على خادم متزامنة مع S3 بفاصل زمني.

باستخدام الأمر أدناه، ستتم مزامنة ملفات تسجيل *.XML الموجودة في مجلد c:\sync على الخادم المحلي مع الموقع S3 في s3://atasync1.

aws s3 sync C:\sync\ s3://atasync1/ --exclude * --include *.xml

تظهر الديمونستريشن أدناه أنه بعد تشغيل الأمر أعلاه في PowerShell، تم تحميل جميع ملفات *.XML إلى وجهة S3 s3://atasync1/.

Synchronizing local files to S3

مزامنة الملفات الجديدة والمحدّثة مع S3

في هذا المثال التالي، يُفترض أن محتويات ملف السجل Log1.xml قد تم تعديلها. يجب على أمر sync اكتشاف هذا التعديل وتحميل التغييرات التي تمت على الملف المحلي إلى S3، كما هو موضح في الديمونستريشن أدناه.

الأمر المستخدم هو لا يزال نفسه كما في المثال السابق.

Synchronizing changes to S3

كما يمكنك رؤية من الناتج أعلاه، نظرًا لأن الملف Log1.xml تم تغييره محليًا فقط، كان أيضًا الملف الوحيد الذي تمت مزامنته إلى S3.

مزامنة الحذف مع S3

بشكل افتراضي، لا يعالج أمر sync عمليات الحذف. لا يتم إزالة أي ملف تم حذفه من موقع المصدر في الموقع الوجهة. حسنًا، ليس إلا إذا استخدمت الخيار --delete.

في هذا المثال التالي، تم حذف الملف المسمى Log5.xml من المصدر. سيتم إضافة الخيار --delete إلى الأمر الذي يتم بموجبه مزامنة الملفات، كما هو موضح في الشيفرة أدناه.

aws s3 sync C:\sync\ s3://atasync1/ --exclude * --include *.xml --delete

عند تشغيل الأمر أعلاه في PowerShell، يجب أن يتم حذف الملف المسمى بـ \texttt{Log5.xml} أيضًا في موقع وجهة S3. يتم عرض النتيجة العينية أدناه.

\texttt{

Synchronize file deletions to S3

الملخص

}Amazon S3 هو مورد ممتاز لتخزين الملفات في السحابة. باستخدام أداة AWS CLI، يتم توسيع طريقة استخدامك لـ Amazon S3 وفتح الفرصة لتأتي بعمليات الأتمتة.

\texttt{

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

\texttt{

}يمكن أن يكون هناك العديد من السيناريوهات لاستخدام أداة AWS CLI لأتمتة إدارة الملفات مع Amazon S3. يمكنك حتى محاولة دمجها مع نصوص PowerShell و\texttt{بناء أدوات خاصة بك} أو \texttt{وحدات} يمكن إعادة استخدامها. من المتروك لك البحث عن تلك الفرص وإظهار مهاراتك.

\texttt{

}قراءة إضافية

\texttt{

Source:
https://adamtheautomator.com/upload-file-to-s3/