Chuyển đến nội dung chính

Cách sử dụng AWS CLI: Cài đặt, Thiết lập và Lệnh cơ bản

Học cách thiết lập AWS CLI trên hệ thống của bạn, cấu hình để hoạt động với tài khoản AWS và thực thi lệnh để tương tác với nhiều dịch vụ AWS!
Đã cập nhật 5 thg 10, 2026  · 15 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

AWS là nhà cung cấp dịch vụ đám mây cung cấp nhiều dịch vụ linh hoạt và theo nhu cầu, bao gồm năng lực tính toán, lưu trữ, cơ sở dữ liệu, machine learning, mạng, phân tích và hơn thế nữa từ các trung tâm dữ liệu trên toàn thế giới. Hãy xem các khóa học Giới thiệu về AWS và Công nghệ và Dịch vụ Đám mây AWS để tìm hiểu thêm!

Để tương tác và cấu hình tài nguyên trên AWS, chúng ta có thể dùng AWS Management Console hoặc AWS CLI.

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn cài đặt AWS CLI từ đầu, cấu hình để kết nối với tài khoản AWS của bạn và minh họa cách tạo một số tài nguyên cơ bản bằng CLI.

AWS CLI là gì?

AWS CLI là công cụ mạnh mẽ cho phép người dùng tương tác với các dịch vụ AWS trực tiếp từ dòng lệnh trên máy tính. Các lệnh AWS CLI cung cấp chức năng tương đương với việc thao tác trên AWS Management Console.

Ví dụ, để liệt kê tất cả Security Group trong một vùng AWS cụ thể, bạn sẽ điều hướng đến mục "Security Groups" trong dịch vụ EC2 qua console.

Xem Security Groups từ AWS console

Xem Security Groups từ AWS console.

Tương tự, bạn có thể đạt cùng kết quả bằng lệnh aws ec2 describe-security-groups trong AWS CLI.

Lệnh AWS CLI để mô tả và lấy thông tin về security groups

Xem Security Groups qua AWS CLI từ terminal cục bộ.

Cài đặt AWS CLI

Chúng ta sẽ thực hiện cài đặt AWS CLI trên Windows, Mac và Linux. 

AWS CLI có hai phiên bản chính, phiên bản 1 và 2. Chúng tôi chỉ đề cập phiên bản 2 vì đây là phiên bản mới hơn với nhiều chức năng hơn. Để biết thông tin mới nhất về cài đặt hoặc cập nhật lên phiên bản AWS CLI mới nhất, truy cập tài liệu AWS.

Cài đặt trên Windows

Tải trình cài đặt từ trang AWS chính thức. Mở gói cài đặt Windows “AWSCLIV2”, và bạn sẽ thấy cửa sổ như dưới đây.

Trình hướng dẫn cài đặt AWS CLI

Trình hướng dẫn cài đặt AWS CLI.

Chọn “Next” và chấp nhận thỏa thuận cấp phép. 

Thỏa thuận cấp phép AWS CLI

Thỏa thuận cấp phép AWS CLI.

Xác nhận vị trí cài đặt và tiến hành cài đặt. Quá trình cài đặt thường không quá 5 phút.

Xác nhận vị trí cài đặt cho AWS CLI

Xác nhận vị trí cài đặt.

Quá trình cài đặt AWS CLI đang diễn ra

Đang cài đặt.

Hoàn tất cài đặt AWS CLI

Cài đặt hoàn tất.

Để xác minh cài đặt thành công, mở terminal và chạy lệnh aws --version. Kết quả sẽ tương tự như đầu ra dưới đây.

Xác minh cài đặt AWS CLI trên Windows

Xác minh cài đặt AWS CLI trên Windows.

Cài đặt trên macOS

Chúng ta có thể cài đặt AWS CLI trên MacOS qua Homebrew hoặc gói cài đặt. Tôi sẽ trình bày cả hai cách.

Cài bằng gói

Tải trình cài đặt .pkg từ trang AWS chính thức. Mở tệp AWSCLIV2.pkg, và bạn sẽ thấy cửa sổ như bên dưới.

Cài đặt gói AWS CLI trên MacOS

Cài đặt AWS CLI.

Chấp nhận điều khoản, xác nhận vị trí cài đặt và tiếp tục cài.

Thông báo cài đặt AWS CLI thành công

Thông báo cài đặt thành công.

Để xác minh cài đặt thành công, mở terminal và chạy lệnh aws --version. Kết quả sẽ tương tự như hình bên dưới.

Xác minh cài đặt AWS CLI trên MacOS

Xác minh cài đặt AWS CLI trên MacOS.

Homebrew

Đảm bảo bạn đã cài Homebrew cục bộ. Để kiểm tra, chạy brew --version. Nếu chưa, bạn có thể tham khảo trang Homebrew chính thức để xem hướng dẫn cài đặt.

Sau đó, chạy các lệnh sau để cài CLI:

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

# Install AWS CLI
brew install awscli

# Verify the installation
aws --version

Ảnh chụp terminal các lệnh brew

brew update và install

Xác minh cài đặt AWS CLI qua brew

Xác minh cài đặt qua brew.

Cài đặt trên Linux

Để minh họa cài đặt trên Linux, tôi đã khởi tạo một Amazon Linux EC2 với AMI ami-0bd55ebedabddc3c0. Dù máy đã có sẵn AWS CLI phiên bản 2 theo mặc định, nhưng không phải bản minor mới nhất. Các bước cập nhật và cài đặt tương tự nhau.

# 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

Tải và giải nén trình cài trên Linux

Tải và giải nén trình cài.

Chạy trình cài và xác minh cài đặt trên Linux

Chạy trình cài và xác minh cài đặt.

Cấu hình AWS CLI

Sau khi cài đặt AWS CLI, chúng ta cần cấu hình trước khi dùng để tương tác với tài nguyên AWS. Việc cấu hình bao gồm thiết lập thông tin xác thực AWS và một số tùy chọn mặc định không bắt buộc.

Khi đăng nhập AWS console, chúng ta hoặc đăng nhập bằng user hoặc đảm nhận (assume) một role. Tương tự, khi dùng AWS CLI để tương tác với tài nguyên, chúng ta phải thực hiện với tư cách user hoặc đảm nhận role.

Thiết lập thông tin xác thực AWS

Có hai cách đăng nhập AWS console. Cách đầu là dùng user được tạo qua dịch vụ Identity and Access Management (IAM).

Giao diện đăng nhập người dùng IAM

Trang đăng nhập người dùng IAM.

Cách thứ hai là dùng người dùng được tạo qua dịch vụ IAM Identity Center.

Giao diện đăng nhập người dùng IAM Identity Center

Trang đăng nhập AWS Access Portal.

Thiết lập AWS CLI yêu cầu cài đặt aws_access_key_id và aws_secret_access_key trên máy cục bộ. Cặp khóa này xác định tài khoản của bạn và cấp quyền truy cập AWS. Tùy theo cách đăng nhập, cách lấy chúng sẽ hơi khác nhau. 

Người dùng IAM

Để dùng AWS CLI với user từ IAM, điều hướng đến dịch vụ IAM qua AWS console, chọn một user hiện có hoặc tạo mới. Tôi sẽ dùng một user sẵn có.

Danh sách Users trong dịch vụ IAM

Người dùng IAM.

Chọn user và chuyển đến tab “Security Credentials”. Cuộn xuống để thấy “Access keys”. Trong hướng dẫn này, tôi sẽ tạo thêm một access key. Chọn “Create access key”.

Tab thông tin bảo mật của một người dùng IAM

Tab thông tin bảo mật của người dùng IAM.

Chọn “Command Line Interface (CLI)”. 

Tạo access key cho người dùng IAM

Tạo access key.

Xác nhận và tạo.

Access key đã được tạo

Access key đã tạo.

Tải tệp .csv để lưu trữ an toàn. Sau đó, chạy lệnh aws configure trên máy và nhập giá trị cho access key và secret access key. Chúng ta đang ghi bộ thông tin xác thực này vào profile “default”, vì không chỉ định profile với cờ --profile. Chúng ta sẽ bàn về profile ở phần sau.

Lệnh CLI

Lệnh aws configure.

Một thư mục ẩn tên “.aws” sẽ được tạo trong thư mục home (~) của bạn. 

Thư mục

Thư mục .aws.

Trong đó có hai tệp, config và credentials. 

Nội dung trong thư mục .aws

Nội dung trong thư mục .aws.

Tệp config lưu vùng mặc định và tùy chọn định dạng đầu ra bạn đã nhập ở trên. Còn tệp credentials lưu aws_access_key_id và aws_secret_access_key. Để xem nội dung, bạn có thể chạy các lệnh cat config và cat credentials.

Chạy lệnh aws sts get-caller-identity để xác thực thông tin xác thực hoạt động và IAM identity đúng được trả về.

Lệnh AWS CLI để xác thực credential

Xác thực thông tin xác thực.

Người dùng IAM Identity Center

Sau khi đăng nhập, bạn sẽ được chuyển đến AWS Access Portal để chọn tài khoản AWS và role sẽ đảm nhận khi vào console. Chọn “Access keys” cho tài khoản và role bạn muốn dùng với AWS CLI.

AWS Access Portal

AWS Access Portal.

Một cửa sổ giống như ảnh chụp dưới đây sẽ xuất hiện. Chọn tùy chọn 2, sao chép và dán đoạn văn bản được cung cấp vào tệp AWS credentials của bạn.

Lấy thông tin xác thực cho người dùng qua AWS Access Portal

Thông tin xác thực từ AWS Access Portal.

Lưu ý rằng ngoài aws_access_key_id và aws_secret_access_key, còn có aws_session_token so với thông tin xác thực cho người dùng IAM đã đề cập ở phần trước. Điều này bổ sung một lớp bảo mật cho thông tin xác thực của người dùng được tạo qua IAM Identity Center, vì session token sẽ hết hạn và người dùng phải xác thực lại để làm mới token.

Sau khi dán văn bản từ tùy chọn 2 vào tệp AWS credentials của bạn:

# 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

Xác thực thông tin xác thực từ AWS Access Portal

Xác thực thông tin xác thực.

Session token sẽ hết hạn theo thời gian và chúng ta phải tạo mới. 

Thông báo lỗi do token hết hạn

Token đã hết hạn.

Thay vì lại sao chép từ Access Portal như trên, chúng ta có thể chạy aws sso login từ máy cục bộ. Làm theo các lệnh dưới đây để cấu hình cài đặt Single Sign-On (SSO) trên máy của bạn.

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

Đầu ra của lệnh

Lệnh AWS configure SSO.

Bạn sẽ được nhắc đăng nhập.

Cho phép AWS CLI truy cập

Cấp quyền truy cập cho AWS CLI.

Đã cấp quyền cho AWS CLI

Yêu cầu của AWS CLI đã được chấp thuận.

Khi session token hết hạn lần nữa, chỉ cần chạy aws sso login.

Đầu ra của lệnh

Đầu ra đăng nhập AWS SSO.

Tùy chọn cấu hình

Chúng ta có thể tùy chỉnh một số cấu hình làm tùy chọn mặc định theo sở thích. Nếu không chỉ định rõ, các cấu hình mặc định này sẽ được áp dụng cho lệnh AWS CLI.

Để cập nhật hoặc thêm giá trị cấu hình trong tệp config, bạn có thể chạy lệnh dưới đây hoặc chỉnh sửa thủ công bằng vim hoặc nano.

aws configure set <setting> <value>

region

Các tài nguyên AWS thuộc một vùng sẽ yêu cầu chỉ định region khi thực thi lệnh AWS CLI. 

Nếu không chỉ định cờ “--region <region name>” trong lệnh, vùng mặc định trong tệp config sẽ được dùng. Nếu không có vùng mặc định, bạn sẽ gặp lỗi sau.

Thông báo lỗi khi không chỉ định vùng mặc định

Lỗi khi không chỉ định vùng.

output

Thiết lập output cấu hình định dạng đầu ra trả về bởi lệnh AWS CLI. 

Ví dụ, định dạng đầu ra mặc định ta cấu hình ở trên là “JSON”, và lệnh aws sts get-caller-identity trả về kết quả ở dạng JSON. Các tùy chọn hợp lệ khác là “table” và “text”. 

Đây là giao diện đầu ra dạng bảng. Tôi đã thêm cờ --output table để ghi đè giá trị mặc định “JSON”.

Định dạng đầu ra dạng bảng

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

role_arn & source_profile

Nếu bạn không muốn dùng trực tiếp người dùng IAM mà muốn user đó đảm nhận một role, hãy chỉ định cấu hình role_arn và 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>

Sau khi chỉ định, hãy xác minh rằng IAM role thực sự đã được assume.

Xác thực thông tin xác thực cho người dùng IAM khi assume role

Xác thực thông tin xác thực.

cli_pager

Mặc định, AWS CLI chuyển đầu ra qua một pager như less, yêu cầu nhấn q để thoát. Chúng ta có thể thay đổi hành vi này bằng cách vô hiệu hóa pager để hiển thị trực tiếp kết quả trong terminal bằng lệnh:

aws configure set cli_pager ""

Đầu ra khi tắt cli_pager

Đầu ra khi tắt cli_pager.

cli_history

Để lưu lịch sử các lệnh AWS CLI đã thực thi, bật cli_history bằng cách chạy:

aws configure set cli_history enabled

Lịch sử sẽ được lưu trong cơ sở dữ liệu SQLite tại ~/.aws/cli/history. 

# View your AWS CLI history
aws history list

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

Tóm tắt cấu hình

Tóm tắt các tùy chọn cấu hình tiêu chuẩn:

Khóa cấu hình

Mô tả

region

Vùng AWS mặc định (ví dụ: us-east-1, ap-southeast-1).

output

Định dạng đầu ra: json, text hoặc table.

role_arn

ARN của IAM role sẽ assume.

source_profile

Profile dùng làm nguồn khi assume role.

cli_pager

Pager cho đầu ra lệnh (ví dụ: less, hoặc đặt "" để tắt).

cli_history

Bật hoặc tắt tệp lịch sử CLI (enabled hoặc disabled).

cli_timestamp_format

Tùy chỉnh định dạng timestamp (none, iso8601, iso8601_ms).

Nếu bạn làm theo các ví dụ ở trên, tệp ~/.aws/config của bạn sẽ trông như thế này.

Nội dung trong tệp ~/.aws/config

Nội dung trong tệp config.

Tìm hiểu cú pháp lệnh AWS CLI

Tất cả lệnh AWS CLI có một định dạng chuẩn:

Phân tách trực quan một lệnh AWS CLI

Định dạng lệnh AWS CLI—hình do Tác giả.

Mỗi thao tác cụ thể của dịch vụ sẽ có các tùy chọn/cờ tùy chọn hoặc bắt buộc cần thêm.

Các lệnh cơ bản

Giờ đây AWS CLI của chúng ta có thể truy cập lập trình vào tài khoản AWS để tương tác với các dịch vụ. Hãy thử một số lệnh cơ bản trên các dịch vụ AWS thường dùng!

EC2

Mô tả

Lệnh

Mô tả các instance chỉ định hoặc tất cả instance.

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

Mô tả các security group chỉ định hoặc tất cả security group của bạn

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

Tạo snapshot của ổ EBS và lưu vào Amazon S3

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

Tạo một VPC

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

Đầu ra lệnh AWS CLI mô tả tất cả instance

Đầu ra khi mô tả tất cả instance.

Tham khảo tài liệu chính thức cho EC2 để biết thêm thông tin.

S3

Mô tả

Lệnh

Liệt kê tất cả S3 bucket

aws s3 ls 

Liệt kê đối tượng trong một S3 bucket

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

Di chuyển tệp cục bộ hoặc đối tượng S3 đến vị trí khác (cục bộ hoặc trên S3)

aws s3 mv <LocalPath> <S3Uri> hoặc <S3Uri> <LocalPath> hoặc <S3Uri> <S3Uri>

Xóa một đối tượng trong S3 bucket

aws s3 rm <S3Uri>

Ví dụ các lệnh

Các lệnh S3.

Tham khảo tài liệu chính thức cho S3 để biết thêm thông tin.

Lưu ý với dịch vụ AWS S3, ngoài lệnh aws s3 đã bàn ở trên, còn có lệnh aws s3api. Các lệnh aws s3 tương đối tổng quát, trong khi aws s3api chi tiết và cấp thấp hơn.

Tham khảo tài liệu chính thức cho s3api để biết thêm thông tin.

Lambda

Mô tả

Lệnh

Liệt kê tất cả hàm Lambda

aws lambda list-functions

Lấy thông tin về một hàm Lambda

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

Gọi thực thi một hàm Lambda

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

Đầu ra lệnh AWS CLI lấy thông tin hàm Lambda

Trả về thông tin về hàm.

Tham khảo tài liệu chính thức cho Lambda để biết thêm thông tin.

Ví dụ: Dùng AWS CLI để quản lý EC2

Hãy xem lại blog Hướng dẫn AWS EC2 cho Người mới bắt đầu để ôn lại kiến thức cơ bản về EC2! Điều này sẽ giúp bạn hiểu rõ hơn các lệnh sau.

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

Đầu ra AWS CLI khi tạo instance

Đầu ra khi tạo instance.

Chạy aws ec2 describe-instances để xem chi tiết tất cả EC2 instance, như đã trình bày ở phần lệnh cơ bản.

Nếu bạn muốn chạy lệnh để truy vấn một hoặc một số instance cụ thể, thêm cờ --instance-ids với ID instance. Ví dụ: aws ec2 describe-instances --instance-ids i-00836ea7575852f10.

Đầu ra AWS CLI khi mô tả một instance

Đầu ra khi mô tả một instance.

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

Đầu ra AWS CLI khi dừng một instance

Đầu ra khi dừng instance.

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

Đầu ra AWS CLI khi khởi động một instance

Đầu ra khi khởi động instance.

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

Đầu ra AWS CLI khi chấm dứt một instance

Đầu ra khi chấm dứt instance.

Ví dụ: Làm việc với S3 bucket

Dưới đây là một số lệnh hữu ích để thực hiện các thao tác thường gặp với S3 bucket, một nền tảng cơ bản trong 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

Ví dụ các lệnh

Đầu ra các lệnh AWS S3.

Tính năng nâng cao của AWS CLI

Sau khi đã thực hành một số lệnh CLI cơ bản, chúng ta có thể xem thêm một vài tính năng giao diện nâng cao và các trường hợp sử dụng.

Tự động hóa tác vụ với AWS CLI

Các ví dụ AWS CLI đến giờ đều là lệnh đơn để lấy thông tin hoặc thao tác trên dịch vụ. Hãy xem ví dụ kết hợp nhiều lệnh CLI trong một script để tự động hóa tác vụ.

Ví dụ: Script tự động khởi chạy EC2 instance

Tạo tệp launch_ec2.sh với nội dung sau. 

#!/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."

Bạn có thể tùy chỉnh script để bao gồm nhiều tham số hơn như tên khóa (--key-name), ID security group (--security-group-ids), ID subnet (--subnet-id), v.v.

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

# Run the script
./launch_ec2.sh

Thực thi script launch_ec2.sh

Script khởi chạy EC2.

Ví dụ: Tự động dừng tất cả EC2 instance đang chạy

Tạo tệp stop_ec2.sh  với nội dung sau:

#!/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

Thực thi script stop_all_ec2.sh

Script dừng EC2.

Sử dụng AWS CLI với JSON và JQ

Đầu ra lệnh AWS CLI chứa khá nhiều thông tin. Trong một số trường hợp, chúng ta không cần tất cả mà chỉ muốn một phần kết quả. 

Ví dụ, trong phần “EC2” thuộc “Các lệnh cơ bản” ở trên, chúng ta thấy lệnh aws ec2 describe-instances trả về JSON rất dài. Để phân tích và chỉ lấy phần cần thiết, ta có thể dùng cờ --query hoặc lệnh jq.

Tham khảo các script tự động trong phần “Tự động hóa tác vụ với AWS CLI” phía trên để xem ví dụ về cờ --query. 

Lưu ý lệnh jq chỉ hoạt động với đầu ra JSON. Do đó, hãy cấu hình đầu ra mặc định là “JSON” hoặc truyền cờ --output json cho mỗi lệnh.

Kiểm tra jq đã được cài chưa:

Lấy phiên bản jq đã cài

Kiểm tra phiên bản 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}'

Ví dụ lệnh AWS CLI với jq

Các lệnh AWS CLI với jq.

Sử dụng AWS CLI trong pipeline CI/CD

Chúng ta có thể dùng AWS CLI trong cấu hình pipeline để tự động hóa tương tác với các dịch vụ AWS, như triển khai và cập nhật tài nguyên AWS mỗi khi pipeline CI/CD chạy. 

Trong ví dụ dưới đây, tôi sẽ dùng pipeline GitLab để minh họa triển khai một hàm 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

Nhật ký job pipeline Gitlab sử dụng lệnh AWS CLI

Nhật ký job pipeline GitLab.

Bạn có thể chỉnh sửa cấu hình pipeline để truyền tham số kèm lệnh AWS CLI dưới dạng biến trong job thay vì hard-code như trong ảnh chụp trên.

Bằng cách này, bất cứ khi nào bạn muốn tạo một hàm Lambda, bạn có thể nhập và commit các biến cùng cấu hình pipeline vào kho Git.

Thực hành tốt nhất khi sử dụng AWS CLI

Như mọi thực hành tốt nhất, hãy cấp tối thiểu quyền cần thiết để thực hiện tác vụ, dù bạn dùng user hay role. 

Hãy xem các thực hành tốt khác dành riêng cho AWS CLI!

Sử dụng AWS IAM role để tăng cường bảo mật

AWS IAM role cung cấp thông tin xác thực tạm thời để truy cập tài nguyên AWS. Các thông tin này được tự động luân phiên và bị giới hạn trong phạm vi quyền của role cụ thể, giảm rủi ro liên quan đến access key dài hạn.

Cách được khuyến nghị là dùng role được tạo từ IAM Identity Center, như trình bày trong phần “IAM Identity Center” thuộc “Thiết lập thông tin xác thực AWS” ở trên. Đây cũng là cách tiếp cận được AWS khuyến nghị.

Ảnh chụp từ AWS về cách tiếp cận được khuyến nghị cho truy cập lập trình

Cách tiếp cận được AWS khuyến nghị. Nguồn ảnh: AWS.

Khi quản trị viên Cloud tạo người dùng của bạn qua IAM Identity Center, họ phải gán một permission set. 

Người dùng trong IAM Identity Center

Người dùng trong IAM Identity Center.

Với mỗi permission set, AWS sẽ tạo một IAM role.

Permission sets trong IAM Identity Center

Permission sets trong IAM Identity Center.

Quản lý nhiều profile

Nhiều khả năng bạn sẽ xử lý hơn một tài khoản AWS trong môi trường làm việc. Chúng ta dùng profile để cấu hình nhiều bộ thông tin xác thực trong các tệp ~/.aws/credentials và ~/.aws/config.

Trong phần “Thiết lập thông tin xác thực AWS” ở trên, chúng ta chạy lệnh aws configure mà không chỉ định profile qua cờ --profile hoặc biến môi trường AWS_PROFILE. Do đó, thông tin credentials và config được thêm vào profile mặc định (default). Để thêm profile mới, bạn có thể chạy aws configure --profile <profile name> để có một bộ thông tin xác thực riêng dưới profile mới.

# 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

Thông tin xác thực mới dưới một profile mới

Thông tin xác thực mới dưới profile mới.

Giữ AWS CLI luôn cập nhật

Việc cập nhật AWS CLI là quan trọng để tương tác hiệu quả với các dịch vụ AWS và tận dụng tính năng, cải tiến mới nhất.

Nếu bạn cài AWS CLI bằng gói cài đặt cho Windows và Mac, bạn đã tải một tệp về máy và chạy nó. Việc cập nhật cũng tương tự: Tải và chạy gói cài đặt mới nhất. 

Nếu bạn cài AWS CLI qua brew trên Mac, cập nhật đơn giản bằng lệnh brew upgrade awscli. Tôi đã có phiên bản mới nhất ở đây.

brew upgrade awscli

Đầu ra lệnh brew upgrade awscli.

Với Linux, các bước giống như cài đặt. Tham khảo đoạn mã trong phần “Cài đặt trên Linux”. Thực hiện các lệnh để tải tệp zip, giải nén và chạy trình cài.

Ghi log và Khắc phục sự cố

AWS CLI là công cụ tuyệt vời, nhưng đôi khi chúng ta cũng có thể gặp thách thức khi làm việc với nó. Hãy cùng xem cách vượt qua chúng. 

Nhật ký lịch sử CLI

Đôi khi, chúng ta có thể quên một lệnh và các tham số đã chạy trước đó hoặc muốn xem đầu ra của một lệnh đã chạy. Bật cli_history có thể giải quyết nhu cầu này. Để biết thêm thông tin, tham khảo phần “Tùy chọn cấu hình” ở trên.

Lỗi cấu hình CLI

Khi gặp lỗi cấu hình AWS CLI, chạy lệnh aws configure sẽ giúp bạn xác định liệu CLI có đang đọc đúng thông tin từ tệp credentials và config hay không.

Lỗi cấu hình AWS CLI

Lỗi “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

Các lỗi khác

Trong một số ít trường hợp, chúng ta có thể gặp lỗi không xác định khi chạy lệnh AWS CLI. Để gỡ lỗi vấn đề với lời gọi API hoặc thu thập thêm thông tin nhằm hiểu lỗi, có thể thêm cờ --debug vào lệnh sẽ hữu ích.

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

Lệnh AWS CLI với cờ debug

Lệnh AWS CLI với cờ debug.

Thông tin bổ sung sẽ giúp bạn hiểu và khắc phục sự cố.

Kết luận

AWS CLI là công cụ mạnh mẽ giúp bạn tương tác hiệu quả với các dịch vụ AWS, tự động hóa tác vụ thường nhật và quản lý tài nguyên đám mây dễ dàng. Trong hướng dẫn này, tôi đã chỉ cho bạn cách cài đặt, cấu hình và sử dụng AWS CLI để thực hiện các thao tác thiết yếu trên nhiều dịch vụ AWS phổ biến.

Dù bạn là người mới với đám mây hay chuyên gia DevOps giàu kinh nghiệm, việc thành thạo AWS CLI có thể nâng cao đáng kể năng suất. Từ tạo và quản lý tài nguyên đến tự động hóa triển khai, khả năng gần như vô tận khi AWS CLI nằm trong bộ công cụ của bạn.

Hãy dành thời gian thử nghiệm các lệnh, khám phá khả năng scripting nâng cao trong pipeline của bạn và tích hợp AWS CLI vào công việc hằng ngày. Chúc bạn điện toán đám mây vui vẻ!

Tôi khuyến nghị bạn xem lộ trình kỹ năng AWS Cloud Practitioner trên DataCamp để trở thành chuyên gia AWS.

FAQs

Tại sao tôi nên dùng AWS CLI thay vì AWS Management Console?

AWS CLI cho phép bạn tương tác với các dịch vụ AWS trực tiếp từ terminal, từ đó cung cấp khả năng tự động hóa và quy trình làm việc nhanh hơn, điều khó đạt được như vậy với AWS Console.

Tôi có cần xác minh checksum của tệp sau khi tải gói cài đặt từ AWS không?

Dù không bắt buộc, việc xác minh checksum của gói cài đặt là một thực hành tốt.

Làm sao kiểm tra AWS CLI đã được cài trên máy của tôi chưa?

Mở terminal và chạy “aws --version”. Nếu trả về “aws-cli/x.x.x…”, AWS CLI đã được cài. Dẫu vậy, cập nhật lên phiên bản mới nhất vẫn là thực hành tốt.

Tôi nên làm gì nếu gặp lỗi xác thực hoặc phân quyền khi dùng AWS CLI?

Các lỗi này xảy ra do thông tin xác thực sai hoặc thiếu quyền. Hãy kiểm tra lại AWS access key của bạn, đảm bảo chúng gắn với đúng người dùng hoặc role trong IAM, và xác minh chính sách IAM cho phép các hành động cần thiết. Nếu bạn dùng role và session token đã hết hạn, hãy chạy lệnh “aws sso login”. Tham khảo phần “Người dùng IAM Identity Center” để xem hướng dẫn chi tiết.

Làm sao tôi có thể dùng AWS CLI để quản lý tài nguyên trên nhiều vùng?

Bạn có thể chỉ định vùng AWS trong các lệnh bằng cờ “--region”, hoặc đặt vùng mặc định bằng lệnh “aws configure”. Tham khảo phần “Tùy chọn cấu hình” để biết thêm thông tin.


Kenny Ang's photo
Author
Kenny Ang
LinkedIn

Là một Kỹ sư Hạ tầng Đám mây và DevOps dày dạn kinh nghiệm với chuyên môn về Terraform, pipeline GitLab CI/CD và nhiều dịch vụ AWS, Kenny có khả năng thiết kế các giải pháp đám mây có khả năng mở rộng, an toàn và tối ưu chi phí. Anh xuất sắc trong việc xây dựng hạ tầng có thể tái sử dụng, tự động hóa quy trình bằng Python và Bash, và tích hợp các phương pháp bảo mật tốt nhất vào pipeline CI/CD. Với kinh nghiệm thực tiễn sâu rộng về Kubernetes và nhiều công cụ quan sát hệ thống, Kenny thuần thục trong quản lý và điều phối microservices đồng thời đảm bảo năng lực quan sát và giám sát hiệu năng vững chắc. Được ghi nhận về khả năng lãnh đạo, cố vấn và cam kết đổi mới, Kenny luôn mang đến những giải pháp đáng tin cậy và có khả năng mở rộng cho các ứng dụng hiện đại theo hướng cloud-native. Anh luôn tận tâm đón đầu các xu hướng ngành và công nghệ mới nổi, không ngừng mở rộng và nâng cao bộ kỹ năng của mình.

Chủ đề
Cloud
AWS

Tìm hiểu thêm về AWS với những khóa học này!

Khóa học

Các khái niệm về Công nghệ và Dịch vụ Đám mây AWS

3 giờ
22.3K
Làm chủ công nghệ đám mây AWS với phương pháp học thực hành và ứng dụng thực tiễn trong hệ sinh thái AWS.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm