मुख्य सामग्री पर जाएँ

AWS CLI का उपयोग कैसे करें: इंस्टॉलेशन, सेटअप, और कमांड्स

AWS CLI को अपने सिस्टम पर सेटअप करें, उसे अपने AWS खाते के साथ काम करने के लिए कॉन्फ़िगर करें, और विभिन्न AWS सेवाओं के साथ इंटरैक्ट करने के लिए कमांड्स चलाएँ!
· 15 मि॰ पढ़ें

AI के साथ खोजें

AWS एक क्लाउड सेवा प्रदाता है जो दुनिया भर के अपने डेटा सेंटरों से संगणन शक्ति, स्टोरेज, डेटाबेस, मशीन लर्निंग, नेटवर्किंग, एनालिटिक्स और बहुत कुछ जैसी स्केलेबल और ऑन-डिमांड सेवाओं की विस्तृत रेंज प्रदान करता है। अधिक जानने के लिए Introduction to AWS और AWS Cloud Technology and Services कोर्स देखें!

AWS पर संसाधनों के साथ इंटरैक्ट करने और उन्हें कॉन्फ़िगर करने के लिए, हम या तो AWS Management Console या AWS CLI का उपयोग कर सकते हैं।

इस ट्यूटोरियल में, हम आपको शुरू से AWS CLI इंस्टॉल करना, उसे आपके AWS खाते से संचार करने के लिए कॉन्फ़िगर करना, और CLI का उपयोग करके कुछ बुनियादी संसाधन कैसे बनाएं, यह दिखाएंगे।

AWS CLI क्या है?

AWS CLI एक शक्तिशाली टूल है जो उपयोगकर्ताओं को अपने कंप्यूटर के कमांड लाइन से सीधे AWS सेवाओं के साथ इंटरैक्ट करने देता है। AWS CLI कमांड्स, AWS Management Console में टास्क करने के समकक्ष फ़ंक्शन प्रदान करते हैं।

उदाहरण के लिए, किसी विशेष AWS रीजन में सभी Security Groups की सूची देखने के लिए, आप कंसोल के माध्यम से EC2 सेवा में "Security Groups" सेक्शन पर जाएंगे।

AWS कंसोल से Security Groups देखें

AWS कंसोल से Security Groups देखें।

इसी तरह, आप AWS CLI में aws ec2 describe-security-groups कमांड का उपयोग करके वही परिणाम प्राप्त कर सकते हैं।

Security Groups का विवरण और जानकारी प्राप्त करने के लिए AWS CLI कमांड

लोकल टर्मिनल से AWS CLI के माध्यम से Security Groups देखें।

AWS CLI इंस्टॉल करना

हम Windows, Mac, और Linux पर AWS CLI इंस्टॉल करने की प्रक्रिया से गुजरेंगे। 

AWS CLI के दो प्रमुख वर्ज़न हैं, संस्करण 1 और 2। हम केवल संस्करण 2 पर चर्चा करेंगे क्योंकि यह नवीनतम और अधिक क्षमताओं वाला संस्करण है। AWS CLI के नवीनतम संस्करण को इंस्टॉल या अपडेट करने की ताज़ा जानकारी के लिए AWS दस्तावेज़ देखें।

Windows पर इंस्टॉल करना

इंस्टॉलर को आधिकारिक AWS वेबसाइट से डाउनलोड करें। “AWSCLIV2” Windows इंस्टॉलर पैकेज खोलें, और आपको नीचे दिखाए अनुसार विंडो दिखाई देगी।

AWS CLI सेटअप विज़ार्ड

AWS CLI सेटअप विज़ार्ड।

“Next” चुनें और लाइसेंस एग्रीमेंट स्वीकार करें। 

AWS CLI लाइसेंस एग्रीमेंट

AWS CLI लाइसेंस एग्रीमेंट।

इंस्टॉलेशन लोकेशन की पुष्टि करें और आगे बढ़ें। इंस्टॉलेशन में 5 मिनट से अधिक समय नहीं लगना चाहिए।

AWS CLI के लिए इंस्टॉलेशन लोकेशन की पुष्टि करें

इंस्टॉलेशन लोकेशन की पुष्टि करें।

AWS CLI इंस्टॉलेशन प्रगति पर

इंस्टॉलेशन जारी है।

AWS CLI इंस्टॉलेशन पूर्ण हुआ

इंस्टॉलेशन पूर्ण हुआ।

यह सत्यापित करने के लिए कि इंस्टॉलेशन सफल रहा है, टर्मिनल खोलें और aws --version कमांड चलाएं। आउटपुट नीचे दिए गए जैसा दिखना चाहिए।

Windows पर AWS CLI इंस्टॉलेशन सत्यापित करें

Windows पर AWS CLI इंस्टॉलेशन सत्यापित करें।

macOS पर इंस्टॉल करना

हम MacOS पर AWS CLI को Homebrew या पैकेज इंस्टॉलर के माध्यम से इंस्टॉल कर सकते हैं। मैं दोनों तरीकों को कवर करूंगा।

पैकेज इंस्टॉलेशन

आधिकारिक AWS वेबसाइट से .pkg इंस्टॉलर डाउनलोड करें। AWSCLIV2.pkg फ़ाइल खोलें, और आपको नीचे दिखाई गई विंडो दिखेगी।

MacOS पर AWS CLI पैकेज इंस्टॉलेशन

AWS CLI इंस्टॉलेशन।

लाइसेंस स्वीकार करें, इंस्टॉलेशन लोकेशन की पुष्टि करें, और इंस्टॉलेशन जारी रखें।

AWS CLI सफल इंस्टॉलेशन संदेश

सफल इंस्टॉलेशन संदेश।

इंस्टॉलेशन सफल रहा है, यह सत्यापित करने के लिए, टर्मिनल खोलें और aws --version कमांड चलाएं। आउटपुट नीचे दिए गए जैसा दिखना चाहिए।

MacOS पर AWS CLI इंस्टॉलेशन सत्यापित करें

MacOS पर AWS CLI इंस्टॉलेशन सत्यापित करें।

Homebrew

सुनिश्चित करें कि आपके सिस्टम पर Homebrew इंस्टॉल है। सत्यापित करने के लिए brew --version चलाएं। अन्यथा, इंस्टॉलेशन निर्देशों के लिए आधिकारिक Homebrew पेज देखें।

इसके बाद, CLI इंस्टॉल करने के लिए निम्न कमांड्स चलाएं:

# With brew installed, update Homebrew's formulae and cask definitions
brew update

# Install AWS CLI
brew install awscli

# Verify the installation
aws --version

brew कमांड्स का टर्मिनल स्क्रीनशॉट

brew update और install

brew के माध्यम से AWS CLI इंस्टॉलेशन सत्यापित करें

brew इंस्टॉलेशन सत्यापित करें।

Linux पर इंस्टॉल करना

Linux पर इंस्टॉलेशन दिखाने के लिए, मैंने ami-0bd55ebedabddc3c0 AMI के साथ Amazon Linux EC2 चालू किया। हालांकि इसमें डिफ़ॉल्ट रूप से AWS CLI संस्करण 2 इंस्टॉल होता है, पर यह नवीनतम माइनर संस्करण नहीं था। अपडेट और इंस्टॉल करने के चरण समान हैं।

# Switch to superuser
sudo su -
# If you’re on Amazon Linux, to install the latest version of the AWS CLI, you must first uninstall the pre-installed yum version
yum remove awscli

# Download the AWS CLI zip file
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

# Unzip the file
unzip awscliv2.zip

# Run the installer
./aws/install

# Verify AWS CLI 
aws --version

Linux पर इंस्टॉलर डाउनलोड करें और अनज़िप करें

इंस्टॉलर डाउनलोड करें और अनज़िप करें।

Linux पर इंस्टॉलर चलाएं और इंस्टॉलेशन सत्यापित करें

इंस्टॉलर चलाएं और इंस्टॉलेशन सत्यापित करें।

AWS CLI कॉन्फ़िगर करना

AWS CLI इंस्टॉल करने के बाद, हमारे AWS संसाधनों के साथ इंटरैक्ट करने से पहले हमें इसे कॉन्फ़िगर करना होगा। कॉन्फ़िगरेशन में AWS क्रेडेंशियल्स और कुछ वैकल्पिक डिफ़ॉल्ट सेटिंग्स सेट करना शामिल है।

जब हम AWS कंसोल में लॉगिन करते हैं, तो हम या तो एक यूज़र के रूप में लॉगिन करते हैं या एक भूमिका (role) ग्रहण करते हैं। इसी तरह, जब हम AWS CLI का उपयोग करते हैं, तो हमें एक यूज़र के रूप में या कोई भूमिका ग्रहण करके ऐसा करना होता है।

AWS क्रेडेंशियल्स सेट करना

AWS कंसोल में लॉगिन करने के दो तरीके हैं। पहला, Identity and Access Management (IAM) सेवा के माध्यम से बनाए गए यूज़र का उपयोग करना।

IAM यूज़र लॉगिन का यूज़र इंटरफ़ेस

IAM यूज़र लॉगिन पेज।

दूसरा, IAM Identity Center सेवा के माध्यम से बनाए गए यूज़र का उपयोग करना।

IAM Identity Center यूज़र लॉगिन का यूज़र इंटरफ़ेस

AWS Access Portal लॉगिन पेज।

AWS CLI सेट करने के लिए, आपको अपने लोकल पर aws_access_key_id और aws_secret_access_key सेट करने होंगे। यह की-पेयर आपके खाते की पहचान करता है और AWS तक पहुँच देता है। आप किस तरीके से लॉगिन कर रहे हैं, उसके अनुसार इन्हें प्राप्त करने की प्रक्रिया थोड़ी अलग होती है। 

IAM यूज़र

AWS CLI को IAM के यूज़र के रूप में उपयोग करने के लिए, AWS कंसोल के माध्यम से IAM सेवा पर जाएं, किसी मौजूदा यूज़र का चयन करें या नया बनाएं। मैं एक मौजूदा यूज़र का उपयोग करूंगा।

IAM सेवा में यूज़र्स

IAM यूज़र।

यूज़र चुनें और “Security Credentials” टैब पर जाएं। नीचे स्क्रॉल करके “Access keys” देखें। इस ट्यूटोरियल के लिए, मैं एक और access key बनाऊंगा। “Create access key” चुनें।

IAM यूज़र के Security credentials टैब

IAM यूज़र का Security credentials टैब।

“Command Line Interface (CLI)” चुनें। 

IAM यूज़र के लिए access key बनाना

Access key बनाएं।

कन्फर्म करें और बनाएं।

Access key बनाई गई

Access key बनाई गई।

सुरक्षा के लिए .csv फ़ाइल डाउनलोड करें। फिर, लोकल पर aws configure कमांड चलाएं और access तथा secret access key के मान दर्ज करें। हम इस क्रेडेंशियल सेट को “default” प्रोफ़ाइल में लिख रहे हैं, क्योंकि हमने --profile फ़्लैग के साथ कोई प्रोफ़ाइल निर्दिष्ट नहीं की। प्रोफ़ाइल के बारे में हम आगे बात करेंगे।

"aws configure" CLI कमांड

AWS configure कमांड।

आपके होम (~) डायरेक्टरी में “.aws” नाम का एक छिपा हुआ फ़ोल्डर बनाया जाएगा। 

होम डायरेक्टरी में ".aws" फ़ोल्डर

.aws फ़ोल्डर।

इसमें दो फ़ाइलें होती हैं, config और credentials. 

.aws फ़ोल्डर की सामग्री

.aws फ़ोल्डर की सामग्री।

config फ़ाइल में ऊपर दर्ज किया गया डिफ़ॉल्ट रीजन और आउटपुट विकल्प स्टोर होता है। जबकि credentials फ़ाइल में aws_access_key_id और aws_secret_access_key स्टोर होते हैं। उनकी सामग्री देखने के लिए आप cat config और cat credentials कमांड चला सकते हैं।

यह सत्यापित करने के लिए कि क्रेडेंशियल्स काम कर रहे हैं और सही IAM पहचान लौट रही है, aws sts get-caller-identity कमांड चलाएं।

क्रेडेंशियल सत्यापित करने के लिए AWS CLI कमांड

क्रेडेंशियल सत्यापित करें।

IAM identity center यूज़र

लॉगिन करने के बाद, आपको AWS Access Portal पर रीडायरेक्ट किया जाएगा ताकि कंसोल में लॉगिन करते समय कौन सा AWS अकाउंट और भूमिका ग्रहण करनी है, उसे चुन सकें। जिस अकाउंट और भूमिका का आप AWS CLI के लिए उपयोग करना चाहते हैं, उसके लिए “Access keys” चुनें।

AWS Access Portal

AWS Access Portal।

नीचे दिए गए स्क्रीनशॉट जैसी विंडो दिखाई देगी। विकल्प 2 चुनें, और दिए गए टेक्स्ट को कॉपी करके अपने AWS credentials फ़ाइल में पेस्ट करें।

AWS Access Portal के माध्यम से यूज़र के लिए क्रेडेंशियल प्राप्त करें

AWS Access Portal से क्रेडेंशियल।

ध्यान दें कि aws_access_key_id और aws_secret_access_key के अलावा, यहाँ एक aws_session_token भी होता है, जो पिछले सेक्शन में कवर किए गए IAM यूज़र के क्रेडेंशियल्स से अतिरिक्त है। यह IAM Identity Center के माध्यम से बनाए गए यूज़र के क्रेडेंशियल्स में एक अतिरिक्त सुरक्षा परत जोड़ता है, क्योंकि सेशन टोकन एक्सपायर हो जाता है और यूज़र को टोकन रिफ्रेश करने के लिए पुन: प्रमाणीकरण करना पड़ता है।

विकल्प 2 से टेक्स्ट को अपने AWS credentials फ़ाइल में पेस्ट करने के बाद:

# Use the AWS profile that you have just added
export AWS_PROFILE=<<Account Number>_<Role Name>>

# Valid that the credentials work
aws sts get-caller-identity

AWS Access Portal से वैध क्रेडेंशियल

क्रेडेंशियल सत्यापित करें।

सेशन टोकन अंततः एक्सपायर हो जाएगा, और हमें नया टोकन जनरेट करना होगा। 

टोकन एक्सपायर होने के कारण त्रुटि संदेश

Expired टोकन।

ऊपर की तरह Access Portal से फिर से कॉपी करने के बजाय, हम लोकल से aws sso login चला सकते हैं। अपने लोकल पर Single Sign-On (SSO) सेटिंग्स कॉन्फ़िगर करने के लिए नीचे दिए गए कमांड्स का पालन करें।

# Configure SSO to refresh your session token. The ~/.aws/sso folder will be created.
aws configure sso

"aws configure sso" कमांड का आउटपुट

AWS configure SSO कमांड।

आपसे लॉगिन करने के लिए कहा जाएगा।

AWS CLI द्वारा एक्सेस की अनुमति दें

AWS CLI एक्सेस प्रदान करें।

AWS CLI को अनुमति प्रदान की गई

AWS CLI अनुरोध स्वीकृत।

जब आपका सेशन टोकन फिर से एक्सपायर हो जाए, तो बस aws sso login चलाएं।

"aws sso login" कमांड का आउटपुट

AWS SSO लॉगिन आउटपुट।

कॉन्फ़िगरेशन विकल्प

हम अपनी प्राथमिकताओं के अनुसार कई कॉन्फ़िगरेशन को डिफ़ॉल्ट विकल्पों के रूप में कस्टमाइज़ कर सकते हैं। यदि स्पष्ट रूप से निर्दिष्ट नहीं किया गया है, तो ये डिफ़ॉल्ट कॉन्फ़िगरेशन AWS CLI कमांड पर लागू होंगे।

config फ़ाइल में कॉन्फ़िगरेशन मानों को अपडेट या जोड़ने के लिए, आप नीचे दिया कमांड चला सकते हैं या vim या nano के माध्यम से मैन्युअल रूप से संशोधित कर सकते हैं।

aws configure set <setting> <value>

region

किसी रीजन में स्थित AWS संसाधनों के लिए AWS CLI कमांड चलाते समय region निर्दिष्ट करना आवश्यक होगा। 

यदि कमांड में “--region <region name>” फ़्लैग निर्दिष्ट नहीं किया गया है, तो config फ़ाइल में बताए गए डिफ़ॉल्ट रीजन का उपयोग किया जाएगा। यदि कोई डिफ़ॉल्ट रीजन परिभाषित नहीं है, तो आपको निम्न त्रुटि मिलेगी।

जब कोई डिफ़ॉल्ट रीजन निर्दिष्ट नहीं हो तो त्रुटि संदेश

रीजन निर्दिष्ट न होने पर त्रुटि।

output

output सेटिंग, AWS CLI कमांड द्वारा लौटाए गए आउटपुट फ़ॉर्मेट को कॉन्फ़िगर करती है। 

उदाहरण के लिए, ऊपर हमने डिफ़ॉल्ट आउटपुट फ़ॉर्मेट “JSON” कॉन्फ़िगर किया है, और aws sts get-caller-identity कमांड ने आउटपुट JSON फ़ॉर्मेट में लौटाया। अन्य वैध विकल्प “table” और “text” हैं। 

टेबल आउटपुट ऐसे दिखता है। मैंने डिफ़ॉल्ट “JSON” आउटपुट वैल्यू को ओवरराइड करने के लिए --output table फ़्लैग जोड़ा।

टेबल आउटपुट फ़ॉर्मेट

aws sts get-caller-identity --output table.

role_arn & source_profile

यदि आप अपने IAM यूज़र का सीधे उपयोग नहीं करना चाहते और उसकी बजाय किसी भूमिका को ग्रहण कराना चाहते हैं, तो role_arn और source_profile कॉन्फ़िगरेशन निर्दिष्ट करें। 

aws configure set role_arn arn:aws:iam::<Account ID>:role/<Role name>

# Put “default” as the profile name if you do not know what to put
aws configure set source_profile <profile name>

उन्हें निर्दिष्ट करने के बाद, सत्यापित करें कि वास्तव में IAM भूमिका ग्रहण की जा रही है।

भूमिका ग्रहण करते IAM यूज़र के क्रेडेंशियल सत्यापित करें

क्रेडेंशियल सत्यापित करें।

cli_pager

डिफ़ॉल्ट रूप से, AWS CLI अपने आउटपुट को less जैसे पेजर के माध्यम से पाइप करता है, जिससे बाहर निकलने के लिए q दबाना पड़ता है। हम इस व्यवहार को पेजर अक्षम करके बदल सकते हैं ताकि आउटपुट सीधे टर्मिनल में दिखे, इसके लिए चलाएं:

aws configure set cli_pager ""

cli_pager अक्षम होने पर आउटपुट

cli_pager अक्षम होने पर आउटपुट।

cli_history

चालित AWS CLI कमांड्स का रिकॉर्ड रखने के लिए, cli_history सक्षम करें, चलाकर:

aws configure set cli_history enabled

हिस्ट्री एक SQLite डेटाबेस में रखी जाएगी, जो ~/.aws/cli/history पर स्थित है। 

# View your AWS CLI history
aws history list

# Show details of a specific command
aws history show <command-id>

कॉन्फ़िगरेशन सारांश

मानक कॉन्फ़िगरेशन विकल्पों का सारांश:

कॉन्फ़िगरेशन कुंजी

विवरण

region

डिफ़ॉल्ट AWS रीजन (उदा., us-east-1, ap-southeast-1)।

output

आउटपुट फ़ॉर्मेट: json, text, या table।

role_arn

ग्रहण की जाने वाली IAM भूमिका का ARN।

source_profile

भूमिका ग्रहण करते समय स्रोत के रूप में उपयोग की जाने वाली प्रोफ़ाइल।

cli_pager

कमांड आउटपुट पेजर (उदा., less, या अक्षम करने हेतु "" सेट करें)।

cli_history

CLI हिस्ट्री फ़ाइल को सक्षम या अक्षम करें (enabled या disabled)।

cli_timestamp_format

टाइमस्टैम्प फ़ॉर्मेट कस्टमाइज़ करें (none, iso8601, iso8601_ms)।

यदि आपने ऊपर दिए गए उदाहरणों का पालन किया है, तो आपका ~/.aws/config फ़ाइल कुछ ऐसा दिखना चाहिए।

~/.aws/config फ़ाइल की सामग्री

config फ़ाइल की सामग्री।

AWS CLI कमांड्स को समझना

सभी AWS CLI कमांड्स का एक मानक फ़ॉर्मेट होता है:

AWS CLI कमांड का दृश्य ब्रेकडाउन

AWS CLI कमांड्स का फ़ॉर्मेट—लेखक द्वारा चित्र।

प्रत्येक सेवा-विशिष्ट ऑपरेशन में जोड़ने के लिए वैकल्पिक या अनिवार्य विकल्प/फ़्लैग होंगे।

बुनियादी कमांड्स

अब हमारा AWS CLI प्रोग्रामेटिक तरीके से हमारे AWS खाते तक पहुँच कर सेवाओं के साथ इंटरैक्ट कर सकता है। आइए कुछ सामान्य AWS सेवाओं पर कुछ बुनियादी कमांड्स आजमाते हैं!

EC2

विवरण

कमांड

निर्दिष्ट इंस्टेंसेज़ या सभी इंस्टेंसेज़ का विवरण देता है।

aws ec2 describe-instances [--instance-ids <value>]

निर्दिष्ट सिक्योरिटी ग्रुप्स या आपके सभी सिक्योरिटी ग्रुप्स का विवरण

aws ec2 describe-security-groups [--group-ids <value>]

एक EBS वॉल्यूम का स्नैपशॉट बनाता है और उसे Amazon S3 में स्टोर करता है

aws ec2 create-snapshot --volume-id <value>

एक VPC बनाएँ

aws ec2 create-vpc [--cidr-block <value>]

सभी इंस्टेंसेज़ का विवरण देने वाले AWS CLI कमांड का आउटपुट

सभी इंस्टेंसेज़ का विवरण देने का आउटपुट।

अधिक जानकारी के लिए EC2 के आधिकारिक दस्तावेज़ देखें।

S3

विवरण

कमांड

सभी S3 बकेट्स की सूची

aws s3 ls 

किसी S3 बकेट में ऑब्जेक्ट्स की सूची

aws s3 ls s3://<bucket-name> --recursive

किसी लोकल फ़ाइल या S3 ऑब्जेक्ट को लोकल या S3 में किसी अन्य लोकेशन पर ले जाए

aws s3 mv <LocalPath> <S3Uri> या <S3Uri> <LocalPath> या <S3Uri> <S3Uri>

S3 बकेट में किसी ऑब्जेक्ट को हटाता है

aws s3 rm <S3Uri>

"aws s3" कमांड्स के उदाहरण

S3 कमांड्स।

अधिक जानकारी के लिए S3 के आधिकारिक दस्तावेज़ देखें।

ध्यान दें कि AWS S3 सेवा के लिए, ऊपर चर्चा किए गए aws s3 CLI कमांड के अतिरिक्त, aws s3api CLI कमांड भी है। aws s3 कमांड काफ़ी जेनेरिक हैं, जबकि aws s3api कमांड अधिक सूक्ष्म और लो-लेवल हैं।

अधिक जानकारी के लिए s3api के आधिकारिक दस्तावेज़ देखें।

Lambda

विवरण

कमांड

सभी Lambda फ़ंक्शन्स की सूची

aws lambda list-functions

किसी Lambda फ़ंक्शन की जानकारी प्राप्त करना

aws lambda get-function --function-name <function name>

किसी Lambda फ़ंक्शन को इनवोक करना

aws lambda invoke --function-name <function name>

किसी Lambda फ़ंक्शन की जानकारी प्राप्त करने वाले AWS CLI कमांड का आउटपुट

फ़ंक्शन के बारे में जानकारी लौटाता है।

अधिक जानकारी के लिए Lambda के आधिकारिक दस्तावेज़ देखें।

उदाहरण: EC2 प्रबंधन के लिए AWS CLI का उपयोग

EC2 की बुनियाद को ताज़ा करने के लिए AWS EC2 Tutorial For Beginners ब्लॉग ज़रूर देखें! यह आपको निम्न कमांड्स को बेहतर समझने में मदद करेगा।

# To create an EC2 instance
aws ec2 run-instances \
    --image-id ami-0bd55ebedabddc3c0 \
    --count 1 \
    --instance-type t2.micro

इंस्टेंस बनाने का AWS CLI आउटपुट

इंस्टेंस बनाने का आउटपुट।

aws ec2 describe-instances चलाकर सभी EC2 इंस्टेंसेज़ का विवरण देखें, जैसा कि बुनियादी कमांड्स में कवर किया गया है।

यदि आप किसी विशेष इंस्टेंस या इंस्टेंसेज़ के लिए कमांड चलाना चाहते हैं, तो --instance-ids फ़्लैग के साथ इंस्टेंस ID जोड़ें। जैसे, aws ec2 describe-instances --instance-ids i-00836ea7575852f10।

किसी इंस्टेंस का विवरण देने वाले AWS CLI आउटपुट

किसी इंस्टेंस का विवरण देने का आउटपुट।

# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10

इंस्टेंस रोकने का AWS CLI आउटपुट

इंस्टेंस रोकने का आउटपुट।

# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10

इंस्टेंस शुरू करने का AWS CLI आउटपुट

इंस्टेंस शुरू करने का आउटपुट।

# To terminate the instance
aws ec2 terminate-instances --instance-ids i-00836ea7575852f10

इंस्टेंस टर्मिनेट करने का AWS CLI आउटपुट

इंस्टेंस टर्मिनेट करने का आउटपुट।

उदाहरण: S3 बकेट्स के साथ कार्य करना

यहाँ S3 बकेट्स के साथ सामान्य ऑपरेशंस को चलाने के लिए कुछ उपयोगी कमांड्स दिए गए हैं, जो AWS की बुनियाद हैं!

# To create an S3 bucket. “mb” is short for “make bucket”
aws s3 mb s3://<bucket name> --region <region name>

# To list out all buckets
aws s3 ls

# To copy an object from your local or S3 object to another location locally or in S3. In the screenshot below, I used aws s3 cp <LocalPath> <S3Uri>
aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>

# To delete an object from the S3 bucket
aws s3 rm <S3Uri>

# To sync the source directory to the destination. In the screenshot below, I used aws s3 sync <LocalPath> <S3Uri>
aws s3 sync <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>

# To list the objects in the bucket
aws s3 ls <S3Uri>

# To delete an S3 bucket, it has to be empty of objects and versioned objects before it can be deleted. “rb” is short for “remove bucket”
aws s3 rb s3://my-unique-bucket-name-gfht68

# The “aws s3 rb” command comes with the --force parameter to first remove all of the objects in the bucket and then remove the bucket itself.
aws s3 rb s3://mybucket --force

"aws s3" कमांड्स के उदाहरण

AWS S3 कमांड्स आउटपुट।

उन्नत AWS CLI विशेषताएँ

अब जब हमने कुछ बुनियादी CLI कमांड्स का अभ्यास कर लिया है, तो हम कुछ और उन्नत इंटरफ़ेस फीचर्स और उपयोग मामलों की समीक्षा कर सकते हैं।

AWS CLI के साथ कार्यों का स्वचालन

अब तक के AWS CLI उदाहरण एकल कमांड से जानकारी प्राप्त करने या सेवा पर कोई कार्रवाई करने से जुड़े थे। आइए टास्क को ऑटोमेट करने के लिए कई CLI कमांड्स को एक स्क्रिप्ट में जोड़ने के उदाहरण देखें।

उदाहरण: स्वचालित EC2 इंस्टेंस लॉन्च स्क्रिप्ट

launch_ec2.sh नाम की फ़ाइल निम्न सामग्री के साथ बनाएं। 

#!/bin/bash

# Set variables
INSTANCE_NAME="My_Demo_Instance"
AMI_ID="ami-0bd55ebedabddc3c0" # Replace with your preferred AMI ID
INSTANCE_TYPE="t2.micro"       # Replace with the desired instance type
REGION="ap-southeast-1"

# Launch the EC2 instance
INSTANCE_ID=$(aws ec2 run-instances \
  --image-id "$AMI_ID" \
  --instance-type "$INSTANCE_TYPE" \
  --region "$REGION" \
  --query "Instances[0].InstanceId" \
  --output text)

echo "Instance launched with ID: $INSTANCE_ID"

# Add a Name tag to the instance
aws ec2 create-tags \
  --resources "$INSTANCE_ID" \
  --tags Key=Name,Value="$INSTANCE_NAME" \
  --region "$REGION"

echo "Tag added: Name=$INSTANCE_NAME"

# Wait for the instance to reach a running state
aws ec2 wait instance-running --instance-ids "$INSTANCE_ID" --region "$REGION"
echo "Instance is now running."

आप स्क्रिप्ट को और पैरामीटर्स जैसे की-नेम (--key-name), सिक्योरिटी ग्रुप ID (--security-group-ids), सबनेट ID (--subnet-id) आदि शामिल करने के लिए कस्टमाइज़ कर सकते हैं।

# Grant the user permission to execute the shell script
chmod u+x ./launch_ec2.sh

# Run the script
./launch_ec2.sh

launch_ec2.sh स्क्रिप्ट चलाएं

EC2 लॉन्च स्क्रिप्ट।

उदाहरण: सभी चल रहे EC2 इंस्टेंसेज़ को स्वचालित रूप से रोकना

stop_ec2.sh  नाम की फ़ाइल निम्न सामग्री के साथ बनाएं:

#!/bin/bash

# Check if a region is provided as an argument
if [ -n "$1" ]; then
  REGION="$1"
else
  # Get the default region from AWS CLI configuration
  REGION=$(aws configure get region)

  if [ -z "$REGION" ]; then
    echo "No region provided, and no default region found in AWS CLI configuration."
    echo "Please provide a region as an argument: ./stop-all-ec2.sh <region>"
    exit 1
  fi
fi

echo "Using region: $REGION"

# Get a list of all running EC2 instance IDs
RUNNING_INSTANCES=$(aws ec2 describe-instances \
  --filters Name=instance-state-name,Values=running \
  --query "Reservations[*].Instances[*].InstanceId" \
  --output text \
  --region "$REGION")

if [ -z "$RUNNING_INSTANCES" ]; then
  echo "No running EC2 instances found in region $REGION."
else
  echo "Stopping the following EC2 instances in region $REGION:"
  echo "$RUNNING_INSTANCES"
  echo "Give it around 1 minute for the instances to be stopped."
  
  # Stop the instances
  aws ec2 stop-instances --instance-ids $RUNNING_INSTANCES --region "$REGION"
  
  # Wait for the instances to stop
  aws ec2 wait instance-stopped --instance-ids $RUNNING_INSTANCES --region "$REGION"
  
  echo "All instances have been stopped successfully."
fi
# Grant the user permission to execute the shell script
chmod u+x ./stop_all_ec2.sh

# Run the script with the default region
./stop_all_ec2.sh

# Run the script overwriting the default region
./stop_all_ec2.sh us-west-1

stop_all_ec2.sh स्क्रिप्ट चलाएं

EC2 रोकने की स्क्रिप्ट।

JSON और JQ के साथ AWS CLI का उपयोग

AWS CLI कमांड आउटपुट में काफ़ी जानकारी होती है। कई मामलों में, हमें लौटाई गई सारी जानकारी की आवश्यकता नहीं होती और हम केवल आउटपुट का एक सबसेट चाहते हैं। 

उदाहरण के लिए, ऊपर “Basic commands” के “EC2” सेक्शन में हमने देखा कि aws ec2 describe-instances कमांड एक लंबा JSON आउटपुट लौटाती है। इस आउटपुट को पार्स करके केवल आवश्यक जानकारी प्राप्त करने के लिए, हम --query फ़्लैग या jq कमांड का उपयोग कर सकते हैं।

--query फ़्लैग के उदाहरणों के लिए ऊपर “Automating tasks with AWS CLI” सेक्शन की ऑटोमेशन स्क्रिप्ट्स देखें। 

ध्यान दें कि jq कमांड केवल JSON आउटपुट पर काम करती है। इसलिए, डिफ़ॉल्ट आउटपुट “JSON” कॉन्फ़िगर करें या हर कमांड के साथ --output json फ़्लैग पास करें।

सत्यापित करें कि jq इंस्टॉल है:

इंस्टॉल किए गए jq का संस्करण प्राप्त करें

jq का संस्करण जाँचें।

# Get a list of all EC2 instances and filter only the instance ID and state
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId: .InstanceId, State: .State.Name}'

# Count the number of EC2 instances in the "running" state.
aws ec2 describe-instances --output json | jq '[.Reservations[].Instances[] | select(.State.Name == "running")] | length'

# Extract Lambda Function Names and their runtimes
aws lambda list-functions --output json | jq '.Functions[] | {FunctionName: .FunctionName, Runtime: .Runtime}'

jq के साथ AWS CLI कमांड्स के उदाहरण

jq के साथ AWS CLI कमांड्स।

CI/CD पाइपलाइन में AWS CLI का उपयोग

हम अपनी पाइपलाइन कॉन्फ़िगरेशन में AWS CLI का उपयोग करके AWS सेवाओं के साथ इंटरैक्शन को ऑटोमेट कर सकते हैं, जैसे कि जब भी हमारी CI/CD पाइपलाइन चलती है तब AWS संसाधनों को डिप्लॉय और अपडेट करना। 

नीचे दिए उदाहरण के लिए, मैं GitLab पाइपलाइन का उपयोग करके एक Lambda फ़ंक्शन डिप्लॉय करना प्रदर्शित करूंगा।

# .gitlab-ci.yml file configuration
stages:
  - demo-cicd

datacamp_job:
  image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
  stage: demo-cicd
  id_tokens:
    GITLAB_OIDC_TOKEN:
      aud: https://gitlab.com
  variables:
    ROLE_ARN: "arn:aws:iam::<AWS Account ID>:role/<Name of IAM Role that pipeline will use>"
    AWS_DEFAULT_REGION: "ap-southeast-1"
  script:
    - aws --version
    - >
      export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s"
      $(aws sts assume-role-with-web-identity
      --role-arn ${ROLE_ARN}
      --role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}"
      --web-identity-token ${GITLAB_OIDC_TOKEN}
      --duration-seconds 3600
      --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]'
      --output text))

    - aws sts get-caller-identity
    - ls -l
    - aws lambda create-function --function-name <function name> --runtime python3.13 --role <ARN of IAM role that Lambda function will use> --handler index.lambda_handler --zip-file fileb://lambda.zip

    - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

AWS CLI कमांड का उपयोग करते हुए Gitlab पाइपलाइन जॉब लॉग्स

GitLab पाइपलाइन जॉब लॉग्स।

आप पाइपलाइन कॉन्फ़िग को संशोधित करके पैरामीटर्स को AWS CLI कमांड के साथ जॉब में वेरिएबल्स के रूप में पास कर सकते हैं, बजाय उन्हें हार्ड-कोड करने के, जैसा कि मैंने ऊपर के स्क्रीनशॉट में किया।

इस प्रकार, जब भी आप कोई Lambda फ़ंक्शन बनाना चाहें, आप अपनी पाइपलाइन कॉन्फ़िग के साथ वेरिएबल्स इनपुट करके उन्हें Git रिपोजिटरी में कमिट कर सकते हैं।

AWS CLI उपयोग के लिए सर्वोत्तम प्रथाएँ

सभी सर्वोत्तम प्रथाओं की तरह, चाहे आप यूज़र या भूमिका का उपयोग करें, टास्क को पूरा करने के लिए आवश्यक न्यूनतम अनुमतियाँ ही दें। 

आइए AWS CLI-विशेष अन्य सर्वोत्तम प्रथाओं की जाँच करें!

सुरक्षा के लिए AWS IAM भूमिकाओं का उपयोग

AWS IAM भूमिकाएँ AWS संसाधनों तक पहुँचने के लिए अस्थायी सुरक्षा क्रेडेंशियल्स प्रदान करती हैं। ये क्रेडेंशियल्स स्वचालित रूप से रोटेट होते हैं और किसी विशिष्ट भूमिका की अनुमतियों तक सीमित होते हैं, जिससे दीर्घकालिक access keys से जुड़े जोखिम कम होते हैं।

भूमिका का उपयोग करने का अनुशंसित तरीका IAM Identity Center के माध्यम से बनाई गई भूमिका का उपयोग करना है, जैसा कि ऊपर “Setting up AWS credentials” के अंतर्गत “IAM Identity Center” सेक्शन में दिखाया गया है। यह AWS का भी अनुशंसित दृष्टिकोण है।

प्रोग्रामेटिक एक्सेस के लिए AWS की अनुशंसित पद्धति का स्क्रीनशॉट

AWS द्वारा अनुशंसित तरीका। इमेज स्रोत: AWS।

जब क्लाउड एडमिनिस्ट्रेटर आपके यूज़र को IAM Identity Center के माध्यम से बनाते हैं, तो उन्हें एक permission set असाइन करना होता है। 

IAM Identity Center में यूज़र्स

IAM Identity Center में यूज़र्स।

प्रत्येक permission set के लिए, AWS एक IAM भूमिका बनाएगा।

IAM Identity Center में Permission sets

IAM Identity Center में Permission sets।

एकाधिक प्रोफ़ाइल्स प्रबंधित करना

आप अपने कार्य वातावरण में संभवतः एक से अधिक AWS खातों को संभालेंगे। हम ~/.aws/credentials और ~/.aws/config फ़ाइल में कई क्रेडेंशियल सेट कॉन्फ़िगर करने के लिए प्रोफ़ाइल्स का उपयोग करते हैं।

ऊपर “Setting Up AWS credentials” सेक्शन में, हमने aws configure कमांड प्रोफ़ाइल को --profile फ़्लैग या AWS_PROFILE एनवायरनमेंट वेरिएबल से निर्दिष्ट किए बिना चलाया। इसलिए, क्रेडेंशियल्स और कॉन्फ़िग की जानकारी डिफ़ॉल्ट प्रोफ़ाइल में जोड़ी गई। नई प्रोफ़ाइल जोड़ने के लिए, आप aws configure --profile <profile name> चला सकते हैं ताकि नई प्रोफ़ाइल के तहत अलग क्रेडेंशियल सेट हो।

# Create a new profile called “dev”
aws configure --profile dev

# To run AWS CLI commands using the dev profile instead of the default profile, set the AWS_PROFILE environment variable to “dev”. Alternatively, add the “--profile dev” for every AWS CLI command.
export AWS_PROFILE=dev

# Validate that the IAM identity under the new profile is returned
aws sts get-caller-identity

नई प्रोफ़ाइल के अंतर्गत नए क्रेडेंशियल्स

नई प्रोफ़ाइल के अंतर्गत नए क्रेडेंशियल्स।

अपने AWS CLI को अपडेटेड रखें

हमारे AWS सेवाओं के साथ प्रभावी इंटरैक्शन और नवीनतम फीचर्स व सुधारों का लाभ उठाने के लिए AWS CLI को अपडेट रखना महत्वपूर्ण है।

यदि आपने Windows और Mac के लिए इंस्टॉलर पैकेज का उपयोग करके AWS CLI इंस्टॉल किया है, तो आपको अपने लोकल कंप्यूटर पर फ़ाइल डाउनलोड करके उसे चलाना पड़ा होगा। उसे अपडेट करना भी वही चरण होंगे: नवीनतम इंस्टॉलर पैकेज डाउनलोड करें और चलाएं। 

यदि आपने Mac पर brew के माध्यम से AWS CLI इंस्टॉल किया है, तो अपडेट करना उतना ही सरल है जितना brew upgrade awscli चलाना। मेरे यहाँ पहले से नवीनतम संस्करण इंस्टॉल है।

brew upgrade awscli

brew upgrade awscli कमांड आउटपुट।

Linux के लिए, चरण इंस्टॉल करने जैसे ही हैं। “Linux पर इंस्टॉल करना” सेक्शन में दिए गए कोड स्निपेट देखें। ज़िप फ़ाइल डाउनलोड करें, अनज़िप करें, और इंस्टॉलर चलाएँ—इन कमांड्स का पालन करें।

लॉगिंग और ट्रबलशूटिंग

AWS CLI एक अद्भुत टूल है, लेकिन हम इसके साथ काम करते समय चुनौतियों का सामना भी कर सकते हैं। आइए देखें कि उन्हें कैसे दूर करें। 

CLI हिस्ट्री लॉग

कभी-कभी, हम पहले चलाए गए किसी कमांड और उसके पैरामीटर्स को भूल सकते हैं या किसी चलाए गए कमांड का आउटपुट देखना चाह सकते हैं। cli_history सक्षम करने से इन समस्याओं का समाधान हो सकता है। अधिक जानकारी के लिए ऊपर “कॉन्फ़िगरेशन विकल्प” सेक्शन देखें।

CLI कॉन्फ़िगरेशन त्रुटियाँ

जब आप AWS CLI कॉन्फ़िगरेशन त्रुटियों का सामना करें, तो aws configure कमांड चलाने से यह निर्धारित करने में मदद मिलेगी कि CLI आपके credentials और config फ़ाइल से जानकारी ठीक से पढ़ रहा है या नहीं।

AWS CLI कॉन्फ़िग त्रुटि

“Unable to parse config file” त्रुटि।

# View configuration for the existing profile
aws configure list

# Verify credentials
aws sts get-caller-identity

# Verify configuration values
aws configure get region
aws configure get role_arn

# Review Environment Variables. Variables like AWS_PROFILE, AWS_ACCESS_KEY_ID, and AWS_REGION can override configuration
env | grep AWS

अन्य त्रुटियाँ

दुर्लभ अवसरों पर, हम AWS CLI कमांड्स चलाते समय किसी अज्ञात त्रुटि का सामना कर सकते हैं। API कॉल के साथ समस्या को डिबग करने या त्रुटि को समझने के लिए अधिक जानकारी एकत्र करने हेतु, कमांड में --debug फ़्लैग जोड़ना सहायक हो सकता है।

# Add the “--debug” flag
aws ec2 describe-instances --debug

debug फ़्लैग के साथ AWS CLI कमांड

debug फ़्लैग के साथ AWS CLI कमांड।

अतिरिक्त जानकारी आपको समस्या समझने और उसका निवारण करने में मदद करनी चाहिए।

निष्कर्ष

AWS CLI एक शक्तिशाली टूल है जो आपको AWS सेवाओं के साथ कुशलतापूर्वक इंटरैक्ट करने, नियमित कार्यों को स्वचालित करने, और क्लाउड संसाधनों का आसानी से प्रबंधन करने में सक्षम बनाता है। इस ट्यूटोरियल में, मैंने आपको AWS CLI को इंस्टॉल, कॉन्फ़िगर और उपयोग करके कई सामान्य AWS सेवाओं पर आवश्यक ऑपरेशंस करने का तरीका सिखाया।

चाहे आप क्लाउड के शुरुआती हों या अनुभवी DevOps प्रोफेशनल, AWS CLI में महारत उत्पादकता को काफी बढ़ा सकती है। संसाधन बनाने और प्रबंधित करने से लेकर डिप्लॉयमेंट्स को ऑटोमेट करने तक—आपके टूलकिट में AWS CLI के साथ संभावनाएँ लगभग अनंत हैं।

कमांड्स के साथ प्रयोग करने, अपनी पाइपलाइन में उन्नत स्क्रिप्टिंग क्षमताओं का पता लगाने, और AWS CLI को अपने रोज़मर्रा के कार्यों में एकीकृत करने के लिए समय निकालें। क्लाउड कम्प्यूटिंग की शुभकामनाएँ!

AWS विशेषज्ञ बनने के लिए मैं DataCamp पर AWS Cloud Practitioner स्किल ट्रैक देखने की सलाह देता/देती हूँ।

FAQs

मुझे AWS Management Console की बजाय AWS CLI का उपयोग क्यों करना चाहिए?

AWS CLI आपको सीधे अपने टर्मिनल से AWS सेवाओं के साथ इंटरैक्ट करने देता है, जिससे ऑटोमेशन क्षमताएँ और तेज़ वर्कफ़्लोज़ मिलते हैं, जो AWS Console से उतने आसानी से संभव नहीं हैं।

क्या AWS से इंस्टॉलर पैकेज डाउनलोड करने के बाद मुझे फ़ाइल का checksum सत्यापित करना चाहिए?

हालाँकि आवश्यक नहीं है, पर इंस्टॉलर पैकेज के checksum को सत्यापित करना एक अच्छी प्रथा है।

मैं कैसे जाँच सकता/सकती हूँ कि मेरे लोकल पर पहले से AWS CLI इंस्टॉल है या नहीं?

अपना टर्मिनल खोलें, और “aws --version” चलाएँ। यदि यह “aws-cli/x.x.x…” लौटाता है, तो AWS CLI इंस्टॉल है। फिर भी, इसे नवीनतम संस्करण में अपग्रेड करना सर्वोत्तम प्रथा है।

यदि मुझे AWS CLI उपयोग करते समय प्रमाणीकरण या अनुमति संबंधित त्रुटियाँ मिलें तो मुझे क्या करना चाहिए?

ये त्रुटियाँ गलत क्रेडेंशियल्स या अपर्याप्त अनुमतियों के कारण होती हैं। अपनी AWS access keys दोबारा जाँचें, सुनिश्चित करें कि वे सही IAM यूज़र या भूमिका से जुड़ी हैं, और सत्यापित करें कि आपकी IAM नीतियाँ आवश्यक कार्रवाइयों की अनुमति देती हैं। यदि आप भूमिका का उपयोग कर रहे हैं और सेशन टोकन एक्सपायर हो गया है, तो “aws sso login” कमांड चलाएँ। विस्तृत चरणों के लिए “IAM Identity Center User” सेक्शन देखें।

मैं AWS CLI का उपयोग करके कई रीजन में संसाधनों का प्रबंधन कैसे कर सकता/सकती हूँ?

आप अपनी कमांड्स में “--region” फ़्लैग का उपयोग करके AWS रीजन निर्दिष्ट कर सकते हैं, या “aws configure” कमांड का उपयोग करके डिफ़ॉल्ट रीजन सेट कर सकते हैं। अधिक जानकारी के लिए “कॉन्फ़िगरेशन विकल्प” सेक्शन देखें।

Kenny Ang

लेखक

Kenny Ang

Terraform, GitLab CI/CD पाइपलाइनों और AWS सेवाओं की व्यापक रेंज में विशेषज्ञता रखने वाले अनुभवी क्लाउड इंफ्रास्ट्रक्चर और डेवऑप्स इंजीनियर के रूप में, केनी स्केलेबल, सुरक्षित और लागत-इष्टतम क्लाउड समाधानों के डिज़ाइन में माहिर हैं। वे पुन: प्रयोज्य इंफ्रास्ट्रक्चर बनाने, Python और Bash से वर्कफ़्लो स्वचालित करने, और CI/CD पाइपलाइनों में सुरक्षा की सर्वोत्तम प्रथाओं को सम्मिलित करने में उत्कृष्ट हैं। Kubernetes और विभिन्न ऑब्ज़र्वेबिलिटी टूल्स के व्यापक व्यावहारिक अनुभव के साथ, केनी माइक्रोसर्विसेज़ का प्रबंधन और ऑर्केस्ट्रेशन करने में सक्षम हैं, साथ ही सुदृढ़ ऑब्ज़र्वेबिलिटी और प्रदर्शन मॉनिटरिंग सुनिश्चित करते हैं। नेतृत्व, मेंटरिंग और नवाचार के प्रति प्रतिबद्धता के लिए पहचाने जाने वाले केनी आधुनिक क्लाउड-नेटिव अनुप्रयोगों के लिए लगातार विश्वसनीय और स्केलेबल समाधान प्रदान करते हैं। वे उद्योग प्रवृत्तियों और उभरती प्रौद्योगिकियों के अग्रणी मोर्चे पर बने रहने के लिए समर्पित हैं, और अपने कौशल सेट का निरंतर विस्तार और परिष्कार करते रहते हैं।

विषय