EduFlow
أساسيات AWS السحابية
⁦0%⁩

الوحدة 1 · أساسيات السحابة

الـ Console وAWS CLI v2

17 دقراءة 4 داملأ الفراغات

الدرس في لمحة

ثبّت AWS CLI v2، وسجّل الدخول ببيانات اعتماد قصيرة الأمد عبر aws login، وتحقّق من هويتك بالأمر aws sts get-caller-identity، وشكّل المخرجات باستخدام --query و–output.

  1. 1الـ console أم الـ CLI؟
  2. 2التثبيت والتحقّق من الإصدار
  3. 3سجّل الدخول دون مفاتيح وصول
  4. 4من أنا؟
  5. 5تشكيل المخرجات

لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.

لديك حساب آمن وهوية مدير. النقر في أرجاء الـ console يكفي لنظرة أولى، لكن القائمين على Lantern يريدون شيئًا يستطيعون تكراره، ولصقه في دليل تشغيل (runbook)، ومراجعته في pull request. كل زر في الـ console يستدعي API من AWS، وAWS CLI v2 يتيح لك استدعاء الـ APIs نفسها من الطرفية.

الـ console أم الـ CLI؟

استخدم الـ console للاستكشاف، وقراءة لوحات المعلومات، والمهام التي تنفّذها مرة واحدة وتريد رؤيتها بصريًا، مثل النظرة الأولى على فاتورة. واستخدم الـ CLI لكل ما ستفعله مرتين، ولكل ما يجب أن يراجعه زميل، ولكل ما تريد التراجع عنه بدقّة. الأمر في سكربت توثيق؛ أما سلسلة النقرات فمجرد ذكرى.

إذا لم تستطع تثبيت أي شيء، فإن AWS CloudShell يمنحك طرفية في المتصفّح داخل الـ console، فيها الـ CLI مثبّتًا ومسجّل الدخول بهوية الـ console الخاصة بك.

التثبيت والتحقّق من الإصدار

ثبّت من الحزمة الرسمية لنظامك. على Linux x86-64:

Terminal
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

على macOS تنشر AWS مُثبِّتًا بصيغة .pkg، وعلى Windows بصيغة .msi. أيًّا كان ما تستخدمه، يجب أن يطبع aws --version العبارة aws-cli/2. متبوعة برقم الإصدار. تحتاج إلى الإصدار 2.32.0 أو أحدث لأمر تسجيل الدخول أدناه؛ وإذا كان لديك تثبيت قديم من الإصدار 1، فأزله أولًا، لأن الإصدارين يتصرّفان بشكل مختلف.

سجّل الدخول دون مفاتيح وصول

كانت الطريقة القديمة هي aws configure، حيث تلصق معرّف مفتاح وصول طويل الأمد وسرّه في ~/.aws/credentials. هذه المفاتيح لا تنتهي صلاحيتها أبدًا، وتتسرّب عبر النسخ الاحتياطية ولقطات الشاشة والـ commits في Git. أما اليوم فتسجّل الدخول بهوية الـ console الخاصة بك بدلًا من ذلك:

Terminal
aws login --profile lantern-admin

يسألك الـ CLI عن Region افتراضية في المرة الأولى (أدخل الـ Region الخاصة بـ Lantern)، ثم يفتح متصفّحك، وبعد أن تسجّل الدخول بكلمة المرور والـ MFA، يخزّن بيانات اعتماد قصيرة الأمد تتجدّد تلقائيًا لمدة تصل إلى 12 ساعة. يُضاف إلى ملف ~/.aws/config لديك profile كهذا، ولاحظ أنه لا يحتوي على أي سرّ:

~/.aws/config
[profile lantern-admin]
login_session = arn:aws:iam::111122223333:user/amara
region = eu-west-1

يحتاج مستخدم IAM إلى صلاحية لاستخدام هذه الطريقة؛ والسياسة AdministratorAccess من الدرس السابق تتضمّنها بالفعل، أما للمستخدمين ذوي الصلاحيات الأضيق فتوفّر AWS السياسة المُدارة SignInLocalDevelopmentAccess. والفرق التي تستخدم IAM Identity Center تسجّل الدخول بدلًا من ذلك عبر aws configure sso وaws sso login، وستتعرّف إليهما في القسم الثاني. وعندما تنتهي، يحذف aws logout --profile lantern-admin بيانات الاعتماد المخزّنة.

من أنا؟

أكثر الأوامر فائدةً في AWS هو أيضًا أكثرها مللًا:

Terminal
aws sts get-caller-identity --profile lantern-admin
JSON
{
  "UserId": "AIDAEXAMPLEUSERID1234",
  "Account": "111122223333",
  "Arn": "arn:aws:iam::111122223333:user/amara"
}

لا يحتاج إلى أي صلاحيات ولا يغيّر شيئًا، لذا تستطيع حتى هوية جديدة تمامًا بلا سياسات مرفقة أن تشغّله. إذا فشل، فالمشكلة في بيانات اعتمادك لا في صلاحياتك: جلسة منتهية، أو اسم profile خاطئ، أو لا اتصال بالشبكة. إنه يخبرك بـ الحساب والهوية اللذين سيستخدمهما كل أمر لاحق. شغّله قبل أي شيء مدمّر، وفي السكربتات تحقّق من أن Account هو الحساب الذي تتوقّعه قبل المتابعة.

تشكيل المخرجات

الاستجابات بصيغة JSON افتراضيًا، وكثيرًا ما تكون طويلة. يساعدك خياران عامّان:

  • --output يختار التنسيق: json أو text أو table أو yaml.
  • --query يرشّح الاستجابة بتعبير JMESPath على جهازك قبل الطباعة.
Terminal
aws s3api list-buckets --profile lantern-admin \
  --query "Buckets[].Name" --output text

يطبع هذا أسماء الـ buckets فقط، مفصولة بمسافات جدولة، وجاهزة لحلقة تكرار في الـ shell. ولأن --query يُنفَّذ محليًا، فهو لا يقلّل ما تعيده AWS ولا تكلفة الاستدعاء؛ بل يقلّل فقط ما عليك قراءته.

بهذا يكتمل القسم الأول: تعرف أين تشغّل AWS مواردك، ومن يؤمّن ماذا، وكيف تدير الحساب بأمان. يدخل القسم الثاني إلى أعماق IAM، النظام الذي يقرّر هل يُسمح بكل استدعاء من تلك الاستدعاءات الأخرى. (get-caller-identity هو الاستثناء الوحيد: يعمل حتى لو منعته سياسة.)

أهم النقاط

  • الـ console والـ CLI يستدعيان الـ APIs نفسها؛ استخدم الـ console للاستكشاف، والـ CLI لكل ما ستكرّره أو تراجعه.
  • يحوّل aws login تسجيل دخولك في الـ console إلى بيانات اعتماد قصيرة الأمد للـ CLI تتجدّد تلقائيًا، فلا تبقى مفاتيح وصول طويلة الأمد على حاسوبك.
  • يعرض aws sts get-caller-identity الحساب والهوية اللذين تعمل بهما أوامرك؛ شغّله قبل أي شيء مدمّر.
  • الـ profiles المسمّاة مع --profile أو AWS_PROFILE تُبقي العمل في الحسابات المختلفة منفصلًا.
  • يرشّح --query استجابة JSON على جهازك، ويغيّر --output تنسيقها؛ ولا يغيّر أيٌّ منهما ما تفعله AWS.

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

تحقّق من فهمك

3 أسئلة

السؤال 1 من 3

أنت على وشك حذف bucket في S3 من الطرفية، ولديك profiles لحساب اختبار ولحساب الإنتاج الخاص بـ Lantern. ما الذي يجب أن تشغّله أولًا؟

السؤال 2 من 3

ما الميزة الأمنية الرئيسية لـ aws login مقارنةً بلصق مفتاح وصول في aws configure؟

السؤال 3 من 3

ماذا يطبع هذا الأمر؟

Terminal
aws ec2 describe-availability-zones --region eu-west-1 \
  --query "AvailabilityZones[].ZoneName" --output text

تدريب

املأ الفراغات

أول ثلاثة أوامر لك في الـ CLI

أكمل روتين بداية اليوم الخاص بـ Lantern باستخدام AWS CLI v2. الخطوة 1 تسجّل الدخول دون مفاتيح وصول، والخطوة 2 تثبت في أيّ حساب أنت، والخطوة 3 تسرد أسماء الـ buckets كنص عادي مفصول بمسافات جدولة في الـ Region الخاصة بـ Lantern (eu-west-1).

# 1. Sign in with your console identity (short-term credentials) aws --profile lantern-admin # 2. Confirm which account and identity you are using aws get-caller-identity --profile lantern-admin # 3. List bucket names only, as plain text, in Lantern's Region aws s3api list-buckets --profile lantern-admin \ -- eu-west-1 \ --query "Buckets[].Name" --output