With former generation of Amazon Linux, all I needed to do is add the following in .ebextensions in order to use PostgreSQL:
packages:
yum:
postgresql93-devel: []
Now when I deploy on EB with the following platform: Python 3.7 running on 64bit Amazon Linux 2/3.0.0
I get the following error on deployment:
[ERROR] Error occurred during build: Yum does not have postgresql93-devel available for installation
Therefore it is impossible to deploy as I need to connect to a PostgreSQL database in RDS.
What config in .ebextensions do I need to do?
postgresql93-devel is pretty old. The yum PostgreSQL repository starts at 9.5. Depending on your needs you may want to upgrade to at least 9.5. PostgreSQL 12 is the latest production release.
EDIT
As to the comment @jordanm made - that's correct, the AWS Linux 2 environment does have PostgreSQL 9.2.24 available. If you're ok with that version then you can just install postgresql-devel. Change your .ebextensions to just run:
packages:
yum:
postgresql-devel: []
This will install the devel package for 9.2.24.
If you'd like something a bit newer, it's apparently a bunch harder. I was unable to get this to work for the devel package. If you change your .ebextensions to contain something like (not tested!):
container_commands:
command: 'amazon-linux-extras install -y postgresql9.6'
Then you'll get PostgreSQL 9.6 but it does not appear to have the devel package available.
It doesn't look possible to use the RPM's from https://yum.postgresql.org/ as AWS Linux 2 is not supported. Trying CentOS or RHEL gives an error.
Is 9.2 usable for your environment?
The following works:
packages:
yum:
amazon-linux-extras: []
commands:
01_postgres_activate:
command: sudo amazon-linux-extras enable postgresql10
02_postgres_install:
command: sudo yum install -y postgresql-devel
Something that helped me with Amazon Linus 1, is the fact that I didn't need to install Postgres at all when plugging in a RDS service and specifying Postgres as the driver. It's just a thought for people having this problem. But maybe just try to not explicitly install Postgres.
I haven't validated which version will be installed by default.
This configuration works fine with the ElasticBeanstalk environment (Python 3.6 running on 64bit Amazon Linux). After this, I was able to install psycopg2 with requirements.txt
packages:
yum:
libicu-devel: []
commands:
01_postgres_libs:
command: rpm -ivh --force https://yum.postgresql.org/10/redhat/rhel-6.9-x86_64/postgresql10-libs-10.7-1PGDG.rhel6.x86_64.rpm
02_postgres_install:
command: rpm -ivh --force https://yum.postgresql.org/10/redhat/rhel-6.9-x86_64/postgresql10-10.7-1PGDG.rhel6.x86_64.rpm
03_symink_pg_config:
command: sudo ln -sf /usr/pgsql-10/bin/pg_config /usr/bin/pg_config
04_postgres_devel:
command: sudo rpm -ivh --force https://yum.postgresql.org/10/redhat/rhel-6.9-x86_64/postgresql10-devel-10.7-1PGDG.rhel6.x86_64.rpm