If you get an error that looks like this when trying to run pip install (such as pip install cryptography or pip install paramiko) on AWS EC2 instance:
build/temp.linux-x86_64-3.5/_openssl.c:12:24: fatal error: pyconfig.h: No such file or directory
include <pyconfig.h>
compilation terminated.
error: command 'gcc' failed with exit status 1
...then you need to install the python development tools. Many blog posts explain this with answers like this for python 2 or python 3:
install python-dev
install python3-dev
On AWS however the libraries have different names. First run this command to list the available libraries that can be installed:
sudo yum list python3 | grep python3
In my case, I see that the library I need on this particular instance is not python3-dev but rather python35-devel.x86_64, which means to get this library I will instead run this command:
sudo install python3-dev python35-devel.x86_64
Note that you will need to run the version of library that is compatible with the version of python you are using.
---
Trying to set up a Python virtual environment that has the correct libraries and/or works on AWS Lambda? Check out these blog posts which are specific to Paramiko and Cryptography but explain how to determine which libraries to use and package up a virtual environment that has the correct underlying libraries:
http://websitenotebook.blogspot.com/2017/05/installing-paramiko-and-crytography-in.html
http://websitenotebook.blogspot.com/2017/05/creating-paramiko-and-cryptography.html