M02.03 - How to Provision AWS Resources
Trong AWS, các tác vụ như launch một EC2 instance, stop một instance, hoặc modify instance settings được thực hiện thông qua API requests. APIs cung cấp các phương thức được xác định trước để tương tác, quản lý và cấu hình tài nguyên AWS một cách hiệu quả.
Trong bài học này, bạn sẽ tìm hiểu về ba cách chính để gọi AWS APIs.
Mục tiêu học tập
Sau khi hoàn thành bài học này, bạn sẽ có thể:
- ✅ Giải thích cách sử dụng AWS Management Console, AWS CLI và AWS SDK để tương tác với AWS services
- ✅ Mô tả trách nhiệm của khách hàng và AWS đối với virtual machines
- ✅ Giải thích sự khác biệt giữa managed và unmanaged services
AWS APIs: Nền tảng của mọi tương tác
Chúng ta đã nói về một số dịch vụ AWS khác nhau, cũng như Global Infrastructure. Bạn có thể tự hỏi: "Làm thế nào để tôi thực sự tương tác với các dịch vụ này?"
Câu trả lời là APIs.
APIs là gì?
- 🔌 API = Application Programming Interface
- 📋 Định nghĩa các cách được xác định trước để bạn tương tác với AWS services
- 🚀 Bạn có thể invoke hoặc call các APIs này để provision, configure và manage tài nguyên của bạn
Trong AWS, mọi thứ đều là một API call:
- Launch EC2 instance → API call
- Stop instance → API call
- Create S3 bucket → API call
- Configure security groups → API call
Ba cách chính để gọi AWS APIs
Có ba cách chính bạn có thể gọi AWS APIs:
- 🌐 AWS Management Console - Giao diện web
- 💻 AWS Command Line Interface (CLI) - Dòng lệnh
- 🔧 AWS Software Development Kit (SDK) - Lập trình

Hãy cùng khám phá từng cách!
1. AWS Management Console
Tổng quan
AWS Management Console là một giao diện web để quản lý các dịch vụ AWS, cung cấp:
- ⚡ Quick access - Truy cập nhanh đến các dịch vụ
- 🔍 Search functionality - Chức năng tìm kiếm
- 🔄 Simplified workflows - Quy trình làm việc đơn giản hóa
Với mobile app:
- 📱 Monitor resources - Giám sát tài nguyên
- 🔔 View alarms - Xem cảnh báo
- 💰 Check billing - Kiểm tra hóa đơn
- 👥 Support multiple logged-in identities - Hỗ trợ nhiều danh tính đăng nhập cùng lúc
Đặc điểm
Sử dụng Console, bạn có thể:
- 👁️ Manage resources visually - Quản lý tài nguyên một cách trực quan
- 📊 Easy to digest - Dễ hiểu và dễ sử dụng
- 🎓 Great for learning - Tuyệt vời cho việc học tập
Use Cases
Console phù hợp cho:
- 🚀 Getting started - Bắt đầu với AWS
- 📚 Building knowledge - Xây dựng kiến thức về các dịch vụ
- 🧪 Setting up test environments - Thiết lập môi trường test
- 💵 Viewing AWS bills - Xem hóa đơn AWS
- 📊 Monitoring resources - Giám sát tài nguyên
- ⚙️ Managing non-technical tasks - Quản lý các tác vụ không kỹ thuật
Console có thể là nơi đầu tiên bạn sẽ đến khi học về AWS.
Hạn chế của Console
Tuy nhiên, sau khi bạn đã hoạt động trong môi trường production:
- ❌ Bạn không muốn dựa vào phong cách point-and-click của console
- ⏳ Ví dụ: Để tạo một EC2 instance, bạn cần:
- Navigate qua nhiều màn hình khác nhau
- Set tất cả các cấu hình bạn muốn
- Sau đó launch instance của bạn
- 🔄 Nếu bạn muốn launch một EC2 instance khác sau đó, bạn sẽ cần quay lại console và navigate qua các màn hình đó một lần nữa
Vấn đề với manual provisioning:
- ⚠️ Bằng cách để con người làm loại manual provisioning này, bạn đang mở ra khả năng lỗi tiềm ẩn
- 😱 Rất có thể quên ch ọn một checkbox hoặc đánh vần sai điều gì đó khi bạn đang làm mọi thứ thủ công
2. AWS Command Line Interface (AWS CLI)
Tổng quan
Với AWS CLI, bạn quản lý nhiều dịch vụ AWS trực tiếp từ command line trên Windows, macOS và Linux. Bạn có thể tự động hóa các tác vụ thông qua scripts, chẳng hạn như launch EC2 instances.
Đặc điểm
AWS CLI khác với phong cách điều hướng trực quan của console:
- 💻 Text-based input - Cho phép bạn tương tác với AWS services thông qua input dựa trên văn bản gọi là commands
- 🤖 Automation through scripting - Tự động hóa thông qua scripting trở nên khả thi
Use Cases
AWS CLI phù hợp cho:
- 👨💻 Advanced users - Người dùng nâng cao
- 👩💻 Developers - Developers
- 🤖 Automation - Tự động hóa tác vụ
- 📜 Scripting actions - Script các hành động
- ⚡ Efficient resource management - Quản lý tài nguyên hiệu quả từ command line
Ví dụ sử dụng AWS CLI
Ví dụ 1: Tạo EC2 Instance
Chúng ta có thể chạy commands sử dụng AWS CloudShell, một cloud-based terminal đã có AWS CLI được cài đặt sẵn trong môi trường được quản lý.
aws ec2 run-instances \
--image-id ami-0c55b159cbfafe1f0 \
--instance-type t3.micro \
--count 1
Kết quả: Instance hiện đang khởi tạo!
Ví dụ 2: Liệt kê Availability Zones
Nếu bạn muốn làm điều gì đó khác, như liệt kê tất cả các AZs trong Region hiện tại:
aws ec2 describe-availability-zones
Kết quả: Danh sách tất cả Availability Zones trong Region hiện tại.
Automation với AWS CLI
Điều quan trọng:
- 📝 Các commands trong ví dụ này được chạy thủ công
- 🤖 Nhưng chúng cũng có thể được bao gồm trong scripts và các quy trình tự động hóa khác
- 🎯 Automation là một khía cạnh quan trọng để có một cloud deployment thành công và có thể dự đoán được theo thời gian
3. AWS Software Development Kit (AWS SDK)
Tổng quan
AWS SDK giúp bạn có thể tương tác với tài nguyên AWS thông qua các ngôn ngữ lập trình khác nhau, như Python chẳng hạn.
Đặc điểm
AWS SDK:
- 🔧 Simplifies integration - Đơn giản hóa việc tích hợp AWS services vào ứng dụng của bạn
- 📚 Provides APIs - Cung cấp APIs cho các ngôn ngữ lập trình khác nhau
- 📖 Documentation and sample code - AWS cung cấp tài liệu và mã mẫu cho các ngôn ngữ như:
- C++
- Java
- .NET
- Python
- JavaScript
- Và nhiều hơn nữa
Use Cases
AWS SDK phù hợp cho:
- 👩💻 Developers - Developers
- 🔗 Integrating AWS services - Tích hợp dịch vụ AWS vào ứng dụng
- 💻 Language-specific APIs - Sử dụng APIs dành riêng cho ngôn ngữ
Ví dụ sử dụng AWS SDK
Ví dụ: Python Script sử dụng AWS SDK
Hãy chạy một Python script sử dụng integrated development environment, Visual Studio Code, sử dụng SDK để liệt kê các EC2 instances trong Region hiện tại:
import boto3
# Create EC2 client
ec2 = boto3.client('ec2')
# List all EC2 instances
response = ec2.describe_instances()
# Print instance information
for reservation in response['Reservations']:
for instance in reservation['Instances']:
print(f"Instance ID: {instance['InstanceId']}")
print(f"Instance Type: {instance['InstanceType']}")
print(f"State: {instance['State']['Name']}")
print("---")
Kết quả: Script sẽ liệt kê tất cả EC2 instances trong Region hiện tại.