{"library":"awscrt","title":"AWS Common Runtime (awscrt)","type":"library","description":"awscrt provides Python 3 bindings for the AWS Common Runtime, a collection of modular C libraries designed for high-performance and a minimal footprint in AWS applications. It offers foundational capabilities like I/O, TLS, and common AWS protocols (e.g., MQTT, HTTP, S3). The library is actively maintained, with version 0.32.0 released on March 26, 2026, and typically follows a frequent release cadence for minor updates and bug fixes.","language":"python","status":"active","last_verified":"Wed May 20","install":{"commands":["pip install awscrt"],"cli":null},"imports":["from awscrt import io","from awscrt import mqtt","from awscrt import auth","from awscrt import http","from awsiot import mqtt_connection_builder"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":"https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html","github":"https://github.com/awslabs/aws-crt-python","docs":"https://awslabs.github.io/aws-crt-python","changelog":null,"pypi":"https://pypi.org/project/awscrt/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import os\nimport time as t\nfrom awscrt import io, mqtt, auth, http\nfrom awsiot import mqtt_connection_builder\n\n# Replace with your AWS IoT Core endpoint, client ID, and certificate paths\nENDPOINT = os.environ.get(\"AWS_IOT_ENDPOINT\", \"YOUR_AWS_IOT_ENDPOINT\")\nCLIENT_ID = \"testDevice\"\nPATH_TO_CERTIFICATE = os.environ.get(\"AWS_IOT_CERT_PATH\", \"certificates/certificate.pem.crt\")\nPATH_TO_PRIVATE_KEY = os.environ.get(\"AWS_IOT_PRIVATE_KEY_PATH\", \"certificates/private.pem.key\")\nPATH_TO_AMAZON_ROOT_CA_1 = os.environ.get(\"AWS_IOT_ROOT_CA_PATH\", \"certificates/root-CA.pem\")\nTOPIC = \"test/topic\"\nMESSAGE = \"Hello from awscrt Python!\"\n\n# Spin up resources\nevent_loop_group = io.EventLoopGroup(1)\nhost_resolver = io.DefaultHostResolver(event_loop_group)\nclient_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)\n\nmqtt_connection = mqtt_connection_builder.mtls_from_path(\n    endpoint=ENDPOINT,\n    cert_filepath=PATH_TO_CERTIFICATE,\n    pri_key_filepath=PATH_TO_PRIVATE_KEY,\n    ca_filepath=PATH_TO_AMAZON_ROOT_CA_1,\n    client_bootstrap=client_bootstrap,\n    client_id=CLIENT_ID,\n    clean_session=False,\n    keep_alive_secs=30\n)\n\nprint(f\"Connecting to {ENDPOINT} with client ID '{CLIENT_ID}'...\")\nconnect_future = mqtt_connection.connect()\nconnect_future.result()\nprint(\"Connected!\")\n\nprint(f\"Publishing message to topic '{TOPIC}': {MESSAGE}\")\nmqtt_connection.publish(topic=TOPIC, payload=MESSAGE, qos=mqtt.QoS.AT_LEAST_ONCE).result()\nprint(\"Published!\")\n\n# Disconnect\ndisconnect_future = mqtt_connection.disconnect()\ndisconnect_future.result()\nprint(\"Disconnected!\")\n","lang":"python","description":"This quickstart demonstrates how to establish an MQTT connection to AWS IoT Core and publish a message using `awscrt`. It sets up basic I/O resources, builds an mTLS connection, connects, publishes a message, and then disconnects. Environment variables are used for sensitive credentials and endpoint configuration.","tag":null,"tag_description":null,"last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","last_tested":"2026-05-20","installed_version":"0.32.2","pypi_latest":"0.32.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.1,"avg_import_s":0.06,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":0.8,"disk_size":"29.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":0.8,"disk_size":"29.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.04,"mem_mb":1.1,"disk_size":"30M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":1.1,"disk_size":"30M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":1.2,"disk_size":"31.1M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.07,"mem_mb":1.2,"disk_size":"31.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.05,"mem_mb":1.2,"disk_size":"32M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.06,"mem_mb":1.2,"disk_size":"32M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":1,"disk_size":"23.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.07,"mem_mb":1,"disk_size":"22.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.05,"mem_mb":1,"disk_size":"24M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.06,"mem_mb":1,"disk_size":"24M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":1.1,"disk_size":"22.6M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.06,"mem_mb":1.1,"disk_size":"22.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.05,"mem_mb":0.9,"disk_size":"24M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.06,"mem_mb":0.9,"disk_size":"23M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":0.8,"disk_size":"28.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":0.8,"disk_size":"28.7M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.7,"import_time_s":0.05,"mem_mb":1.1,"disk_size":"30M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"awscrt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.1,"disk_size":"30M"}]}}