AWS Guide

repository·main·Indexed 20 days ago

https://github.com/mikeroyal/aws-guide

A curated collection of learning resources, tools, and development guides for engineers using Amazon Web Services. It covers AWS CLI tools (SAM, Copilot, CDK, Chalice), developer resources, certifications, and a broad overview of compute, storage, and DevOps tools. Additionally, it provides references for Infrastructure as Code (Terraform, Pulumi, Ansible), container orchestration (Kubernetes, Docker, Podman), CI/CD pipelines, and networking analysis tools.

Tokens
17.1K
Snippets
21
Records
112
Agent score
19%

What's inside aws-guide

  1. Overview of AWS Developer and Compute Tools

    main

    This guide provides a categorized list of AWS tools for developers, including:

    • IDEs & Development: AWS Cloud9 (browser-based IDE), Amazon CodeWhisperer (AI code recommendations).
    • Compute: AWS Lambda (serverless), AWS Fargate (serverless containers), AWS Elastic Beanstalk (web app deployment), AWS Batch (batch computing jobs), AWS SimSpace Weaver (spatial simulations).
    • Containers: Amazon ECS (orchestration), AWS Copilot (ECS management).
    • Storage & Databases: Amazon S3 (object storage), Amazon RDS (relational databases), Amazon Aurora (cloud-native relational), Amazon Neptune (graph), Amazon Timestream (time series), AWS Storage Gateway (hybrid storage).
    • DevOps & CI/CD: AWS CodeBuild (CI), AWS CodeDeploy (deployment), AWS CodePipeline (continuous delivery), AWS CodeCommit (source control), AWS CodeArtifact (artifact repository), AWS CodeStar (unified UI).
    • Networking & Security: Amazon VPC (isolated networks), Amazon API Gateway (API management), AWS Transit Gateway (network hub), AWS Shield (DDoS protection), Amazon GuardDuty (threat monitoring), Amazon Inspector (vulnerability scanning), AWS CloudTrail (auditing).
  2. Explore Cloud and Networking Infrastructure Tools

    main

    The guide provides a curated list of open-source and industry-standard tools for cloud infrastructure, networking, and edge computing. Key technologies include:

    • OpenStack: An open-source IaaS platform for orchestrating data center operations (compute, networking, storage, identity, and image services).
    • StarlingX: A cloud infrastructure software stack optimized for edge computing and ultra-low latency use cases.
    • Airship: A declarative framework for automating the lifecycle of open infrastructure tools and hardware.
    • Magma: An open-source mobile core network solution supporting 2G, 3G, 4G, and 5G.
    • Open vSwitch (OVS): A multilayer virtual switch designed for massive network automation via programmatic extension.
    • OpenRAN: An intelligent Radio Access Network ecosystem enabling multi-vendor interoperability.
  3. Explore Databases and Management Tools

    main

    This section provides a curated list of databases and software tools for data management, visualization, and administration.

    Databases

    • Amazon DynamoDB: Key-value and document database with single-digit millisecond performance.
    • MySQL: Fully managed service for cloud-native applications using open source SQL.
    • PostgreSQL: Open source object-relational database known for reliability and performance.
    • FoundationDB: Distributed database for large volumes of structured data using an ordered key-value store and ACID transactions.
    • CouchbaseDB: Multi-model NoSQL document-oriented database with a managed cache.
    • IBM DB2: Hybrid data management suite for structured and unstructured data.
    • MongoDB: Document database storing data in JSON-like documents.
    • OracleDB: Managed database for business-critical data.
    • MariaDB: Enterprise open source database solution.
    • SQLite: Lightweight, self-contained SQL database engine.

    Management and Visualization Tools

    • Tableau: Data visualization software for relational and cloud databases.
    • DataGrip: Professional Database IDE by JetBrains with context-sensitive code completion.
    • RStudio: IDE for R and Python with tools for plotting and debugging.
    • SQLite Database Browser: Open source tool to create, design, and edit SQLite files.
    • dbWatch: Monitoring and management solution for SQL Server, Oracle, PostgreSQL, Sybase, MySQL, and Azure.
    • Cosmos DB Profiler: Real-time visual debugger for Cosmos DB usage.
    • Adminer: SQL management client supporting MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, Elasticsearch, and MongoDB.
    • DBeaver: Open source tool supporting JDBC compliant databases (MySQL, Oracle, IBM DB2, SQL Server, etc.).
    • DbVisualizer: SQL management tool for Oracle, Sybase, SQL Server, MySQL, H3, and SQLite.
    • AppDynamics Database: Monitoring product for Microsoft SQL Server performance metrics.
    • Toad: SQL Server DBMS toolset for automation and workflow.
    • Lepide SQL Server: Storage manager utility to analyze SQL Server performance and configuration changes.
    • Sequel Pro: MacOS-specific management tool for MySQL.
  4. Rust-based Operating Systems and Embedded Platforms

    main

    Several operating systems leverage Rust for safety and performance:

    • Redox OS: A Unix-like operating system built on a modern microkernel.
    • Bottlerocket OS: A Linux-based OS optimized for hosting containers, focusing on security and maintainability.
    • Tock: An embedded OS for Cortex-M and RISC-V platforms. It uses Rust for the kernel and device drivers to ensure memory safety and isolates applications using memory protection units.
    • Chrome OS: Rust can be used to create projects for installation within Chrome OS and the Chrome OS SDK.
    • Writing an OS in Rust: A resource for learning how to build a small operating system from scratch using Rust.
  5. Virtualization technologies and tools

    main

    This section provides a curated list of virtualization technologies, hypervisors, and management tools used to create and manage virtual environments.

    Hypervisors and Virtualization Engines

    • KVM (Kernel-based Virtual Machine): A full virtualization solution for Linux on x86 hardware. It uses the kvm.ko kernel module and processor-specific modules (kvm-intel.ko or kvm-amd.ko).
    • QEMU: A fast processor emulator that can emulate a full system, including processors and peripherals, allowing for OS testing without rebooting.
    • Hyper-V: Microsoft's hypervisor for running virtualized systems on Windows hosts.
    • Xen: A hypervisor focused on server virtualization, IaaS, and security applications.
    • VMware Workstation: A hosted hypervisor for x64 Windows and Linux that allows running multiple VMs simultaneously with the host OS.

    Management and Automation Tools

    • VirtManager: A graphical tool for managing virtual machines via libvirt (supports QEMU/KVM, Xen, and LXC).
    • oVirt: An open-source distributed virtualization solution for enterprise infrastructure management, built on KVM, libvirt, Gluster, PatternFly, and Ansible.
    • Ganeti: A cluster management tool for virtual machines built on top of Xen or KVM.
    • Packer: An automation tool for creating identical machine images for multiple platforms from a single source configuration. It can integrate with configuration management tools like Chef or Puppet.
    • Vagrant: A tool for building and managing reproducible, portable virtual machine environments using a single consistent workflow.
  6. Rust Ecosystem and Tooling Overview

    main

    The Rust ecosystem provides a variety of specialized tools for development, testing, and runtime environments:

    Development & Package Management

    • Cargo: The official package manager for Rust; handles dependency downloading and project compilation.
    • VSCode-Rust: A Visual Studio Code plugin providing language support via RLS or rust-analyzer.
    • Clippy: A collection of lints used to catch common mistakes and improve code quality.
    • Rustlings: A set of exercises designed to help developers learn to read and write Rust code.

    Runtime & Infrastructure

    • Tokio: An event-driven, non-blocking I/O platform for building asynchronous applications.
    • Wasmer: A WebAssembly runtime that enables lightweight containers to run on Desktops, Cloud, and IoT devices.
    • Firecracker: A virtualization technology used to create secure, multi-tenant microVMs for serverless workloads.
    • Krustlet: An experimental Kubernetes Kubelet written in Rust that handles pods based on specific Kubernetes tolerations.

    Specialized Libraries & Frameworks

    • Hyper: A fast and correct HTTP library.
    • Rocket: An asynchronous web framework focused on usability, security, and speed.
    • Apache Arrow: A development platform for in-memory analytics and big data processing.
    • TiKV: A distributed transactional key-value database with ACID compliance.
    • Sonic: A fast, lightweight, schema-less search backend.
    • RustPython: A Python interpreter implemented in Rust.
  7. Explore Kubernetes managed services and distributions

    main

    Depending on your cloud provider or environment, you can use various managed Kubernetes services:

    • Amazon EKS: Runs Kubernetes control plane instances across multiple Availability Zones for high availability.
    • Google Kubernetes Engine (GKE): A managed, production-ready environment by Google.
    • Azure Kubernetes Service (AKS): Serverless Kubernetes with integrated CI/CD and enterprise security.
    • Oracle Container Engine for Kubernetes (OKE): An Oracle-managed service optimized for performance and cost.
    • Red Hat OpenShift: A fully managed platform for on-premises, hybrid, and multicloud deployments.
    • K3s: A lightweight, highly available distribution designed for resource-constrained environments like IoT or edge locations.
    • MicroK8s: A fully containerized Kubernetes experience supported on Linux, Windows, and MacOS.
  8. Manage Dependency Injection in TypeScript with InversifyJS

    main

    InversifyJS is a lightweight Inversion of Control (IoC) container for JavaScript and Node.js applications powered by TypeScript. It uses class constructors to identify and inject dependencies, facilitating modular and testable code architectures.

    https://github.com/inversify/InversifyJS
  9. Understand the OSI Model of network layers

    main

    The OSI (Open Systems Interconnect) model defines seven layers of network communication, where each successive higher layer abstracts data further to simplify application use. Data flows from the top layer down to the physical transmission at the bottom on the sender side, and back up the layers on the receiver side.

    The Seven OSI Layers:

    • Application: Interaction point for users and user-applications (resource availability, data synchronization).
    • Presentation: Maps resources and creates context; translates lower-level data into application-expected formats.
    • Session: Connection handler; creates, maintains, and destroys persistent connections between nodes.
    • Transport: Provides reliable connections; verifies data integrity, handles retransmission of dropped/corrupted data, and acknowledges receipt.
    • Network: Routes data between nodes using addresses; handles message fragmentation and reassembly.
    • Data Link: Establishes and maintains reliable links between nodes using physical connections.
    • Physical: Manages actual physical devices and hardware (e.g., Ethernet) and the bare software for physical connections.
  10. Core Networking Concepts

    main

    Fundamental terminology used in network engineering and cloud architecture:

    • Connection: Information transferred through a network, established before data transfer and deconstructed after.
    • Packet: The basic unit of network transfer. Consists of a header (source, destination, timestamps, hops) and a payload (the actual data).
    • Network Interface: A software interface to networking hardware (e.g., physical NICs or virtual interfaces like the loop-back device).
    • LAN vs. WAN:
      • LAN (Local Area Network): A private network not publicly accessible to the internet (e.g., home/office).
      • WAN (Wide Area Network): An extensive network, typically referring to the internet.
    • Protocol: A set of rules defining how devices communicate.
      • Low-level: TCP, UDP, IP, ICMP.
      • Application-layer: HTTP, SSH, TLS/SSL, FTP.
    • Port: A logical address on a machine tied to specific software, allowing a single server to run multiple applications.
    • Firewall: A program that filters traffic based on rules (e.g., blocking unused ports).
    • NAT (Network Address Translation): Translates incoming requests on a routing server to relevant devices within a LAN.
    • VPN (Virtual Private Network): Connects separate LANs over the internet while maintaining privacy, making remote systems behave as if they are on a local network.
  11. Use TheHive and Cortex for incident response

    main

    TheHive is a scalable 3-in-1 open-source Security Incident Response Platform designed for SOCs, CSIRTs, and CERTs. It is designed to work alongside MISP.

    Cortex is a powerful Observable Analysis and Active Response Engine that complements TheHive by assisting security researchers in threat intelligence, digital forensics, and incident response.

  12. Manage TensorFlow containers with Tensorman

    main
    Tensorman is a utility developed by System76 for managing TensorFlow containers. It allows TensorFlow to operate in an isolated environment, enabling the use of any TensorFlow version on any Linux distribution that supports the Docker runtime, independent of the base system.