OOAAOWOOAAOW
LinuxNetworkingGitPythonDockerKubernetesHelmAWS
YouTube
কোর্সসমূহ
আমার লাইব্রেরি
LinuxNetworkingGitPythonDockerKubernetesHelmAWS
YouTube
OOAAOW YouTube Channel
Sponsor OOAAOW

DevOps Lab — Bangladeshi learner-দের জন্য তৈরি

সাবস্ক্রিপশনসাবস্ক্রিপশন নীতি

হোম/aws/মডিউল ১৩
১৩

AWS CLI — কনসোল থেকে টার্মিনালে

CLI কেন কনসোলের চেয়ে আলাদা, একটা কমান্ডের পাঁচটা অংশ, `aws configure` আসলে কোথায় কী লেখে, profile দিয়ে একাধিক অ্যাকাউন্ট, output ফরম্যাট চারটে, `--filters` আর `--query`-র আসল পার্থক্য, আর দলিল মুখস্থ না করে কমান্ড খুঁজে বের করার পদ্ধতি।

cliconfigureprofilequeryfiltersjmespathoutputautomation⏱ ~৩৬ মিনিট
💡 ধারণা

কনসোল আর CLI — দুটোর আলাদা কাজ

এই কোর্সে আমরা শুরু থেকেই CLI ব্যবহার করেছি, কিন্তু কখনো থেমে প্রশ্নটা করিনি: কনসোল যখন আছে, তখন টার্মিনালে কমান্ড লেখার দরকার কী?

উত্তরটা "CLI দ্রুত" নয় — অনেক কাজে কনসোল দ্রুত। আসল পার্থক্যটা অন্য জায়গায়, আর তিনটে জিনিসে:

১. CLI পুনরাবৃত্তিযোগ্য।

কনসোলে একটা কাজ করা মানে কয়েকটা ক্লিক, যেগুলোর কোনো রেকর্ড থাকে না। একটা CLI কমান্ড একটা লেখা — কপি করা যায়, একটা ফাইলে রাখা যায়, একটা pull request-এ পাঠানো যায়, আর ছ-মাস পরে আবার চালানো যায়।

পর্ব ৮-এর launch template-এর যুক্তিটাই, কিন্তু আরো সাধারণ রূপে: ক্লিক একটা ঘটনা, কমান্ড একটা নথি।

২. CLI-তে প্রশ্ন করা যায়।

এটা কম আলোচিত কিন্তু রোজকার কাজে সবচেয়ে কাজের। কনসোল তোমাকে যা দেখায়, সেটাই দেখায় — একটা তালিকা, কয়েকটা কলাম, কিছু ফিল্টার। কিন্তু "কোন instance-গুলোতে Environment tag নেই?" বা "কোন ডিস্কগুলো কোথাও লাগানো নেই আর ২০ GiB-র বেশি?" — এই প্রশ্নগুলোর জন্য কনসোলে কোনো ঘর নেই।

CLI-তে আছে, আর এটাই এই পর্বের দ্বিতীয়ার্ধের বিষয়।

৩. CLI স্ক্রিপ্ট করা যায়।

একটা কমান্ড একটা লুপে বসানো যায়, একটা শর্তে বসানো যায়, আর তার আউটপুট আরেকটা কমান্ডে পাঠানো যায়। কনসোলে এর কোনো সমতুল্য নেই।

তাহলে কখন কোনটা? একটা সৎ ভাগ:

কাজভালো পছন্দকেন
প্রথমবার কিছু শেখাকনসোলঘরগুলো দেখা যায়, আর কী কী বিকল্প আছে তা বোঝা যায়
একটা জিনিস একবার তৈরি করাকনসোলফর্মটা সাহায্য করে
একই জিনিস তিনবার তৈরি করাCLIএকই কমান্ড, তিনবার
কিছু খোঁজা বা গুনতেCLIপ্রশ্ন করা যায়
একটা অডিট চালানোCLIআউটপুট প্রক্রিয়া করা যায়
একটা সমস্যা তদন্ত করাদুটোইকনসোল সম্পর্ক দেখায়, CLI বিস্তারিত দেয়
আর একটা পরামর্শ যেটা অনেক সময় বাঁচায়: নতুন কোনো সেবা শেখার সময় কনসোলে একবার করো, তারপর CLI-তে একবার করো। কনসোল তোমাকে শেখায় কী কী সিদ্ধান্ত আছে; CLI তোমাকে দেয় সেটা আবার করার উপায়। উল্টো ক্রমে শুরু করলে কমান্ডের flag-গুলো অর্থহীন মনে হয়, কারণ তুমি জানো না ওগুলো কোন ঘরের প্রতিরূপ।
💡 ধারণা

একটা কমান্ডের পাঁচটা অংশ

AWS CLI-র প্রতিটা কমান্ড একই আকৃতির, আর সেটা জানা থাকলে অপরিচিত একটা কমান্ডও পড়া যায়। ছবিতে ভাগটা আছে:

aws  ec2  describe-instances  --filters ...  --output table
 │    │          │                 │              │
 १    २          ३                 ४              ५
#অংশউদাহরণ
১binaryaws
২serviceec2, s3, iam, lambda
৩operationdescribe-instances, run-instances
৪ওই operation-এর parameter--instance-ids, --filters
৫global option — প্রতিটা কমান্ডে চলে--profile, --region, --output, --query

২ আর ৩ নম্বরের নামকরণে একটা নিয়ম আছে, আর সেটা জানলে অনেক কমান্ড আন্দাজ করা যায়:

উপসর্গকী করেউদাহরণ
describe-তালিকা বা বিস্তারিত দেখায়describe-instances, describe-volumes
list-তালিকা দেখায় (সাধারণত ছোট আউটপুট)list-users, list-buckets
get-একটা জিনিস আনেget-caller-identity, get-parameter
create-তৈরি করেcreate-user, create-launch-template
delete-মুছে দেয়delete-stack
put-বসায় বা প্রতিস্থাপন করেput-role-policy, put-item
update- / modify-বদলায়update-function-configuration

describe- আর list--এর পার্থক্যটা ঐতিহাসিক, যুক্তিসঙ্গত নয় — EC2 describe- ব্যবহার করে, IAM list-। মনে রাখার কিছু নেই; দরকার হলে পরের সেকশনের পদ্ধতি দিয়ে খুঁজে নাও।

আর ৫ নম্বর অংশটা — global option — আলাদা করে জানা দরকার, কারণ এগুলো সব কমান্ডে কাজ করে:

Optionকী করে
--profileকোন অ্যাকাউন্ট বা পরিচয়
--regionকোন region, config-এ যা আছে তা উপেক্ষা করে
--outputআউটপুট কোন ফরম্যাটে
--queryআউটপুটের কোন অংশটা দেখতে চাও
--no-cli-pagerআউটপুট pager-এ না দিয়ে সরাসরি ছাপে
--dry-run(কিছু EC2 কমান্ডে) শুধু অনুমতি পরীক্ষা করে, কিছু করে না

শেষ দুটো আলাদা করে বলার মতো।

--no-cli-pager — CLI v2-তে লম্বা আউটপুট ডিফল্টে একটা pager-এ খোলে, আর স্ক্রিপ্টে সেটা আটকে যায়। স্ক্রিপ্টে এটা সবসময় দেওয়া উচিত (বা AWS_PAGER="" বসানো)।

🔒

বাকি অংশটা সাবস্ক্রাইবারদের জন্য

১২৫টি অংশের ২৫টি দেখানো হয়েছে, ১০০টি বাকি

←

আগের module

IAM ৪ — Federation, SSO আর অস্থায়ী token

পরের module

S3 — অবজেক্ট স্টোরেজ, আর যা ফাইলসিস্টেম নয়

→