There is an FAQ on the kernel’s memory requirements, and documentation pages for individual libraries provide nominal code size measurements (eg see the code size table for coreMQTT on this page).
RAM memory requirements are more variable that code memory requirements as RAM usage depends on your configuration. For example, up to a point, TCP/IP throughput will increase as you increase the RAM it is able to use for buffers and the TCP window.
For an IoT application, TLS dominates both code and RAM size requirements - so start by looking at your chosen TLS stack. We have integrations with mbedTLS and WolfSSL. You can also look at a featured reference integration as a reference point - although these are not necessarily optimized for RAM usage and may have more functionality than you require.
If your device will use a radio, and memory footprint is of concern, then consider using one of the available AWS IoT ExpressLink modules. Those offload connectivity, secure storage and OTA to the radio chip, enabling secure IoT connectivity even from tiny 8-bit devices with just a UART required.
Also note FreeRTOS provided heap memory allocators use a statically allocated array as the heap, which by default ends up in the .bss section, which can give the impression the code consumes more RAM than it actually does.