Skip to content

Hands-on AWS IoT Core learning toolkit with interactive Python scripts for device management, security, MQTT communication, and device shadows

License

Notifications You must be signed in to change notification settings

aws-samples/sample-aws-iot-core-learning-path-basics

AWS IoT Core - Learning Path - Basics

🌍 Available Languages | Idiomas Disponibles | 利用可能な言語 | 可用语言 | 사용 가능한 언어

A comprehensive Python toolkit for learning Amazon Web Services (AWS) AWS IoT Core basic concepts through hands-on exploration. Interactive scripts demonstrate device management, security, API operations, and MQTT communication with detailed explanations.

🚀 Quick Start - Complete Learning Path

# 1. Clone and setup
git clone https://github.com/aws-samples/sample-aws-iot-core-learning-path-basics.git
cd sample-aws-iot-core-learning-path-basics

# 2. Setup environment
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# 3. Configure AWS credentials
export AWS_ACCESS_KEY_ID=<your-key>
export AWS_SECRET_ACCESS_KEY=<your-secret>
export AWS_DEFAULT_REGION=<your-region (e.g. us-east-1)>

# 4. Optional: Set language preference
export AWS_IOT_LANG=en  # 'es' for Spanish, 'ja' for Japanese, 'zh-CN' for Chinese, 'pt-BR' for Portuguese, 'ko' for Korean

# 5. Complete learning sequence
python scripts/setup_sample_data.py          # Create sample IoT resources
python scripts/iot_registry_explorer.py      # Explore AWS IoT APIs
python scripts/certificate_manager.py        # Learn IoT security
python scripts/mqtt_client_explorer.py       # Real-time MQTT communication
python scripts/device_shadow_explorer.py     # Device state synchronization
python scripts/iot_rules_explorer.py         # Message routing and processing
python scripts/cleanup_sample_data.py        # Clean up resources (IMPORTANT!)

⚠️ Cost Warning: This creates real AWS resources (~$0.17 total). Run cleanup when finished!

Target Audience

Primary Audience: Cloud developers, solution architects, DevOps engineers new to AWS IoT Core

Prerequisites: Basic AWS knowledge, Python fundamentals, command line usage

Learning Level: Associate level with hands-on approach

🔧 Built with AWS SDKs

This project leverages the official AWS SDKs to provide authentic AWS IoT Core experiences:

Boto3 - AWS SDK for Python

  • Purpose: Powers all AWS IoT Registry operations, certificate management, and Rules Engine interactions
  • Version: >=1.26.0
  • Documentation: Boto3 Documentation
  • AWS IoT Core APIs: Boto3 IoT Client

AWS IoT Device SDK for Python

Why These SDKs Matter:

  • Production-Ready: Same SDKs used in real IoT applications
  • Security: Built-in support for AWS IoT security best practices
  • Reliability: Official AWS-maintained libraries with comprehensive error handling
  • Learning Value: Experience authentic AWS IoT development patterns

Table of Contents

⚙️ Installation & Setup

Prerequisites

  • Python 3.10+
  • AWS account with IoT permissions
  • Terminal/command line access
  • OpenSSL (for certificate features)

⚠️ IMPORTANT SAFETY NOTE: Use a dedicated development/learning AWS account. Do not run these scripts in accounts containing production IoT resources. While the cleanup script has multiple safety mechanisms, best practice is to use isolated environments for learning activities.

Cost Information

This project creates real AWS resources that will incur charges (~$0.17 total).

Service Usage Estimated Cost (USD)
AWS IoT Core ~100 messages, 20 devices $0.10
AWS IoT Device Shadow service ~30 shadow operations $0.04
IoT Rules Engine ~50 rule executions $0.01
Certificate Storage 20 certificates for 1 day $0.01
Amazon CloudWatch Logs Basic logging $0.01
Total Estimated Complete learning session ~$0.17

⚠️ Important: Always run the cleanup script when finished to avoid ongoing charges.

Detailed Installation

1. Clone Repository:

git clone https://github.com/aws-samples/sample-aws-iot-core-learning-path-basics.git
cd sample-aws-iot-core-learning-path-basics

2. Install OpenSSL:

  • macOS: brew install openssl
  • Ubuntu/Debian: sudo apt-get install openssl
  • Windows: Download from OpenSSL website

3. Virtual Environment (Recommended):

python3 -m venv venv
source venv/bin/activate  # macOS/Linux
# venv\Scripts\activate   # Windows
pip install -r requirements.txt

4. Language Configuration (Optional):

# Set language preference for all scripts
export AWS_IOT_LANG=en     # English (default)
export AWS_IOT_LANG=es     # Spanish
export AWS_IOT_LANG=ja     # Japanese
export AWS_IOT_LANG=zh-CN  # Chinese
export AWS_IOT_LANG=pt-BR  # Portuguese
export AWS_IOT_LANG=ko     # Korean

# Alternative: Scripts will prompt for language if not set

Supported Languages:

  • English (en, english) - Default
  • Spanish (es, spanish, español) - Full translation available
  • Japanese (ja, japanese, 日本語, jp) - Full translation available
  • Chinese (zh-CN, chinese, 中文, zh) - Full translation available
  • Portuguese (pt-BR, portuguese, português, pt) - Full translation available
  • Korean (ko, korean, 한국어, kr) - Full translation available

🌍 Multi-Language Support

All learning scripts support English, Spanish, Japanese, Chinese, Portuguese, and Korean interfaces. The language affects:

✅ What Gets Translated:

  • Welcome messages and educational content
  • Menu options and user prompts
  • Learning moments and explanations
  • Error messages and confirmations
  • Progress indicators and status messages

❌ What Stays in Original Language:

  • AWS API responses (JSON data)
  • Technical parameter names and values
  • HTTP methods and endpoints
  • Debug information and logs
  • AWS resource names and identifiers

Usage Options:

Option 1: Environment Variable (Recommended)

# Set language preference for all scripts
export AWS_IOT_LANG=en     # English
export AWS_IOT_LANG=es     # Spanish
export AWS_IOT_LANG=ja     # Japanese
export AWS_IOT_LANG=zh-CN  # Chinese
export AWS_IOT_LANG=pt-BR  # Portuguese
export AWS_IOT_LANG=ko     # Korean

# Run any script - language will be applied automatically
python scripts/iot_registry_explorer.py

Option 2: Interactive Selection

# Run without environment variable - script will prompt for language
python scripts/setup_sample_data.py

# Output example:
# 🌍 Language Selection / Selección de Idioma / 言語選択 / 语言选择 / Seleção de Idioma / 언어 선택
# 1. English
# 2. Español (Spanish)
# 3. 日本語 (Japanese)
# 4. 中文 (Chinese)
# 5. Português (Portuguese)
# 6. 한국어 (Korean)
# Select language (1-6): 6

Supported Scripts:

  • setup_sample_data.py - Sample data creation
  • iot_registry_explorer.py - API exploration
  • certificate_manager.py - Certificate management
  • mqtt_client_explorer.py - MQTT communication
  • mqtt_websocket_explorer.py - WebSocket MQTT
  • device_shadow_explorer.py - AWS IoT Device Shadow service operations
  • iot_rules_explorer.py - Rules Engine exploration
  • cleanup_sample_data.py - Resource cleanup

📚 Learning Scripts

Recommended Learning Path:

1. 📊 Sample Data Setup

File: scripts/setup_sample_data.py Purpose: Creates realistic IoT resources for hands-on learning Creates: 20 Things, 3 Thing Types, 4 Thing Groups

2. 🔍 IoT Registry API Explorer

File: scripts/iot_registry_explorer.py Purpose: Interactive tool for learning AWS IoT Registry APIs Features: 8 core APIs with detailed explanations and real API calls

3. 🔐 Certificate & Policy Manager

File: scripts/certificate_manager.py Purpose: Learn AWS IoT security through certificate and policy management Features: Certificate creation, policy attachment, external certificate registration

4. 📡 MQTT Communication

Files:

  • scripts/mqtt_client_explorer.py (Certificate-based, recommended)
  • scripts/mqtt_websocket_explorer.py (WebSocket-based alternative)

Purpose: Experience real-time IoT communication using MQTT protocol Features: Interactive command-line interface, topic subscription, message publishing

5. 🌟 AWS IoT Device Shadow service Explorer

File: scripts/device_shadow_explorer.py Purpose: Learn device state synchronization with AWS IoT Device Shadow Features: Interactive shadow management, state updates, delta processing

6. ⚙️ IoT Rules Engine Explorer

File: scripts/iot_rules_explorer.py Purpose: Learn message routing and processing with IoT Rules Engine Features: Rule creation, SQL filtering, automatic AWS IAM setup

7. 🧹 Sample Data Cleanup

File: scripts/cleanup_sample_data.py Purpose: Clean up all learning resources to avoid charges Features: Safe cleanup with dependency handling

🧹 Resource Cleanup

⚠️ IMPORTANT: Always run cleanup when finished learning to avoid ongoing AWS charges.

python scripts/cleanup_sample_data.py

What gets cleaned up:

  • ✅ Sample Things (Vehicle-VIN-001, Vehicle-VIN-002, etc.)
  • ✅ Associated certificates and policies
  • ✅ Thing Types and Thing Groups
  • ✅ Local certificate files
  • ✅ IoT Rules (if any created)

What's protected:

  • ❌ Existing production IoT resources
  • ❌ Non-sample certificates and policies
  • ❌ Resources not created by learning scripts

🛠️ Troubleshooting

Common Issues

AWS Credentials:

# Set credentials
export AWS_ACCESS_KEY_ID=<your-key>
export AWS_SECRET_ACCESS_KEY=<your-secret>
export AWS_DEFAULT_REGION=us-east-1

Python Dependencies:

pip install -r requirements.txt

OpenSSL Issues:

  • macOS: brew install openssl
  • Ubuntu: sudo apt-get install openssl

Debug Mode

All scripts support debug mode for detailed API logging:

python scripts/<script_name>.py --debug

📖 Advanced Documentation

Detailed Documentation

Documentación en Español

Documentação em Português

日本語ドキュメント

中文文档

한국어 문서

Learning Resources

AWS IoT Core Documentation

AWS SDKs Used in This Project

Protocol and Standards

🤝 Contributing

This is an educational project. Contributions that improve the learning experience are welcome:

  • Bug fixes for script issues
  • Translation improvements for better localization
  • Documentation enhancements for clarity
  • Additional learning scenarios that fit the basic level

📄 License

This project is licensed under the MIT-0 License - see the LICENSE file for details.

🏷️ Tags

aws-iot iot-core mqtt device-shadow certificates python learning tutorial hands-on interactive

About

Hands-on AWS IoT Core learning toolkit with interactive Python scripts for device management, security, MQTT communication, and device shadows

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages