{"id":13903,"date":"2020-04-07T14:53:49","date_gmt":"2020-04-07T12:53:49","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/"},"modified":"2020-04-07T14:53:49","modified_gmt":"2020-04-07T12:53:49","slug":"aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/","title":{"rendered":"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance"},"content":{"rendered":"<p>In the last tow posts we had a look at <a href=\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-1-db-parameter-groups\/\" target=\"_blank\" rel=\"noopener noreferrer\">DB Parameter Groups<\/a> and <a href=\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-2-subnet-groups\/\" target=\"_blank\" rel=\"noopener noreferrer\">Subnet Groups<\/a> as these  need to be ready when you want to deploy a RDS PostgreSQL instance on AWS. In this post we&#8217;ll use these two building blocks to bring up a high available PostgreSQL instance using a master instance in one, and a replica in another availability zone. This is usually what you want when you want a production deployment in AWS.<\/p>\n<p><!--more--><\/p>\n<p>As usual, with the AWS console, creating a new database is quite easy:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg\" alt=\"\" width=\"1363\" height=\"398\" class=\"aligncenter size-full wp-image-38748\" \/><\/a><\/p>\n<p>In our case we want to go for PostgreSQL:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_14.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_14.jpg\" alt=\"\" width=\"820\" height=\"713\" class=\"aligncenter size-full wp-image-38749\" \/><\/a><\/p>\n<p>The latest version as of today is 12.2, we want to go for production and we need to provide a name:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_15.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_15.png\" alt=\"\" width=\"781\" height=\"665\" class=\"aligncenter size-full wp-image-38750\" \/><\/a><\/p>\n<p>We sill stick with the default for the master username as that is postgres usually anyway:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_16.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_16.png\" alt=\"\" width=\"799\" height=\"406\" class=\"aligncenter size-full wp-image-38751\" \/><\/a><\/p>\n<p>We&#8217;ll go with the defaults for the storage section as well:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_20.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_20.jpg\" alt=\"\" width=\"759\" height=\"852\" class=\"aligncenter size-full wp-image-38771\" \/><\/a><\/p>\n<p>For production deployments you usually want to go for one or more standby instances. For the scope of this little demo it is not required:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_21.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_21.jpg\" alt=\"\" width=\"766\" height=\"219\" class=\"aligncenter size-full wp-image-38772\" \/><\/a><\/p>\n<p>Now it comes to the connectivity and this is where we need the <a href=\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-2-subnet-groups\/\" target=\"_blank\" rel=\"noopener noreferrer\">subnet group we created in the last post<\/a>:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_22.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_22.jpg\" alt=\"\" width=\"688\" height=\"870\" class=\"aligncenter size-full wp-image-38773\" \/><\/a><\/p>\n<p>For the security I&#8217;ve chosen my default which also allows incoming traffic to the standard PostgreSQL port 5432. We&#8217;ll let the default for authentication:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_23.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_23.jpg\" alt=\"\" width=\"719\" height=\"281\" class=\"aligncenter size-full wp-image-38774\" \/><\/a><\/p>\n<p>.. but will use the <a href=\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-1-db-parameter-groups\/\" target=\"_blank\" rel=\"noopener noreferrer\">DB Parameter Group we&#8217;ve created in the first post<\/a>:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_24.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_24.png\" alt=\"\" width=\"704\" height=\"355\" class=\"aligncenter size-full wp-image-38775\" \/><\/a><\/p>\n<p>We&#8217;ll keep the defaults for the remaining sections (backup, monitoring, encryption) and will create the RDS PostgreSQL instance:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_25.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_25.jpg\" alt=\"\" width=\"1000\" height=\"208\" class=\"aligncenter size-full wp-image-38776\" \/><\/a><\/p>\n<p>The deployment will take some minutes and once it is ready you get an overview in the console:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_26.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_26.jpg\" alt=\"\" width=\"1000\" height=\"448\" class=\"aligncenter size-full wp-image-38778\" \/><\/a><\/p>\n<p>If you are looking for the reference to the DB Parameter Group you can find that in the &#8220;Configuration&#8221; section:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_27.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_27.jpg\" alt=\"\" width=\"1000\" height=\"490\" class=\"aligncenter size-full wp-image-38779\" \/><\/a><\/p>\n<p>From now on we can use psql to connect to our PostgreSQL instance:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\n[ec2-user@ip-10-0-1-51 ~]$ psql -h dwe-pg.xxx.eu-central-1.rds.amazonaws.com -p 5432 -U postgres postgres\npsql (12.2)\nSSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)\nType \"help\" for help.\n\npostgres=&gt; select version();\n                                                version                                                 \n--------------------------------------------------------------------------------------------------------\n PostgreSQL 12.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit\n(1 row)\n<\/pre>\n<p>As you already can see the connection is encrypted and this is because AWS configured PostgreSQL for SSL out of the box and we saw that already when we created the <a href=\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-1-db-parameter-groups\/\" target=\"_blank\" rel=\"noopener noreferrer\">DB Parameter Group<\/a>:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=&gt; show ssl;\n ssl \n-----\n on\n(1 row)\n\npostgres=&gt; show ssl_cert_file ;\n              ssl_cert_file              \n-----------------------------------------\n \/rdsdbdata\/rds-metadata\/server-cert.pem\n(1 row)\n\npostgres=&gt; show ssl_key_file ;\n              ssl_key_file              \n----------------------------------------\n \/rdsdbdata\/rds-metadata\/server-key.pem\n(1 row)\n<\/pre>\n<p>As we are now using a managed service, do not expect that you can use PostgreSQL as you can do that when you install for your own:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=&gt; select pg_ls_dir('.');\nERROR:  permission denied for function pg_ls_dir\npostgres=&gt; \\du+\n                                                                      List of roles\n         Role name         |                   Attributes                   |                          Member of                           | Description \n---------------------------+------------------------------------------------+--------------------------------------------------------------+-------------\n pg_execute_server_program | Cannot login                                   | {}                                                           | \n pg_monitor                | Cannot login                                   | {pg_read_all_settings,pg_read_all_stats,pg_stat_scan_tables} | \n pg_read_all_settings      | Cannot login                                   | {}                                                           | \n pg_read_all_stats         | Cannot login                                   | {}                                                           | \n pg_read_server_files      | Cannot login                                   | {}                                                           | \n pg_signal_backend         | Cannot login                                   | {}                                                           | \n pg_stat_scan_tables       | Cannot login                                   | {}                                                           | \n pg_write_server_files     | Cannot login                                   | {}                                                           | \n postgres                  | Create role, Create DB                        +| {rds_superuser}                                              | \n                           | Password valid until infinity                  |                                                              | \n rds_ad                    | Cannot login                                   | {}                                                           | \n rds_iam                   | Cannot login                                   | {}                                                           | \n rds_password              | Cannot login                                   | {}                                                           | \n rds_replication           | Cannot login                                   | {}                                                           | \n rds_superuser             | Cannot login                                   | {pg_monitor,pg_signal_backend,rds_replication,rds_password}  | \n rdsadmin                  | Superuser, Create role, Create DB, Replication+| {}                                                           | \n                           | Password valid until infinity                  |                                                              | \n rdsrepladmin              | No inheritance, Cannot login, Replication      | {}                                                           | \n<\/pre>\n<p>Our &#8220;postgres&#8221; user is not a real super user anymore, but it is assigned to the &#8220;rds_superuser&#8221; role and this one has limited permissions. The real super is &#8220;rdsadmin&#8221; and we do not have access to this user. A lot of stuff is not possible, e.g.:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=&gt; select * from pg_hba_file_rules ;\nERROR:  permission denied for view pg_hba_file_rules\npostgres=&gt; \npostgres=&gt; select * from pg_read_file('\/var\/tmp\/aa');\nERROR:  permission denied for function pg_read_file\n<\/pre>\n<p>&#8230; and this is normal as all these would interact with the operating system, and that is hidden completely and not allowed at all. Changing parameters on the instance level does not work as well:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=&gt; alter system set work_mem='1MB';\nERROR:  must be superuser to execute ALTER SYSTEM command\n<\/pre>\n<p>You will need to do this by adjusting the DB Parameter group. What surprised me is that you can create a tablespace:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=&gt; create tablespace t1 location '\/var\/tmp';\nCREATE TABLESPACE\npostgres=&gt; \\db\n                      List of tablespaces\n    Name    |  Owner   |               Location                \n------------+----------+---------------------------------------\n pg_default | rdsadmin | \n pg_global  | rdsadmin | \n t1         | postgres | \/rdsdbdata\/db\/base\/tablespace\/var\/tmp\n(3 rows)\n<\/pre>\n<p>The location is remapped in the background. The reason is in the <a href=\"https:\/\/docs.aws.amazon.com\/AmazonRDS\/latest\/UserGuide\/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.Tablespaces\" target=\"_blank\" rel=\"noopener noreferrer\">documentation<\/a> and it is only supported for compatibility reasons, not to spread I\/O as you do not know what the storage looks like anyway. Using RDS for PostgreSQL (or any other RDS service) will change the way you will be working with the database instance. You carefully need to check your application if you want to migrate, maybe it is using functionality that is not supported in RDS. Setting parameters can not be done directly, but by using DB Parameter Groups.<\/p>\n<p>In the next post we&#8217;ll look at how you can change parametes by modifying the DB Parameter Group.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last tow posts we had a look at DB Parameter Groups and Subnet Groups as these need to be ready when you want to deploy a RDS PostgreSQL instance on AWS. In this post we&#8217;ll use these two building blocks to bring up a high available PostgreSQL instance using a master instance in [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":13904,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1865,229],"tags":[133,77,1869],"type_dbi":[],"class_list":["post-13903","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws","category-database-administration-monitoring","tag-aws","tag-postgresql","tag-rds"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance\" \/>\n<meta property=\"og:description\" content=\"In the last tow posts we had a look at DB Parameter Groups and Subnet Groups as these need to be ready when you want to deploy a RDS PostgreSQL instance on AWS. In this post we&#8217;ll use these two building blocks to bring up a high available PostgreSQL instance using a master instance in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-07T12:53:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1363\" \/>\n\t<meta property=\"og:image:height\" content=\"398\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance\",\"datePublished\":\"2020-04-07T12:53:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/\"},\"wordCount\":590,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg\",\"keywords\":[\"AWS\",\"PostgreSQL\",\"RDS\"],\"articleSection\":[\"AWS\",\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/\",\"name\":\"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg\",\"datePublished\":\"2020-04-07T12:53:49+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg\",\"width\":1363,\"height\":398},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/","og_locale":"en_US","og_type":"article","og_title":"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance","og_description":"In the last tow posts we had a look at DB Parameter Groups and Subnet Groups as these need to be ready when you want to deploy a RDS PostgreSQL instance on AWS. In this post we&#8217;ll use these two building blocks to bring up a high available PostgreSQL instance using a master instance in [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/","og_site_name":"dbi Blog","article_published_time":"2020-04-07T12:53:49+00:00","og_image":[{"width":1363,"height":398,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg","type":"image\/jpeg"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance","datePublished":"2020-04-07T12:53:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/"},"wordCount":590,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg","keywords":["AWS","PostgreSQL","RDS"],"articleSection":["AWS","Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/","url":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/","name":"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg","datePublished":"2020-04-07T12:53:49+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws_rds_pg_subnets_13.jpg","width":1363,"height":398},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/aws-rds-for-postgresql-3-creating-the-rds-postgresql-instance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"AWS RDS for PostgreSQL \u2013 3 \u2013 Creating the RDS PostgreSQL instance"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13903","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=13903"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13903\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/13904"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=13903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=13903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=13903"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=13903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}