Skip to content

Commit 837acdf

Browse files
committed
feat: custom SSL CA support for SQL data sources
1 parent 5691d81 commit 837acdf

File tree

1 file changed

+14
-8
lines changed
  • src/pages/[platform]/build-a-backend/data/connect-to-existing-data-sources/connect-postgres-mysql-database

1 file changed

+14
-8
lines changed

src/pages/[platform]/build-a-backend/data/connect-to-existing-data-sources/connect-postgres-mysql-database/index.mdx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,6 @@ You must create a connection string using the following database information to
4040
- Database **user password**
4141
- Database **name**
4242

43-
<Callout info>
44-
45-
**Only databases with certificates from well-known certificate providers are supported.** Support for databases using custom or self-signed SSL certificates is under active development.
46-
47-
Amplify's MySQL and PostgreSQL feature builds on top of [AWS Lambda](https://aws.amazon.com/lambda) with a Node.js runtime. By default, Node.js includes root certificate authority (CA) certificates from [well-known certificate providers](https://github.com/nodejs/node/issues/4175). Lambda Node.js runtimes up to Node.js 18 augments these certificates with Amazon-specific CA certificates, making it easier to create functions accessing other AWS services.
48-
49-
</Callout>
50-
5143
## Step 1 - Set secrets for database connection
5244

5345
First, provide all the database connection information as secrets, you can use the Amplify sandbox's secret functionality to set them or go to the Amplify console to set secrets in a shared environment:
@@ -123,6 +115,20 @@ However, there is a tradeoff of increased latency - queries may take slightly lo
123115

124116
</Accordion>
125117

118+
<Accordion title="Connecting to a database with a custom SSL certificate">
119+
120+
Amplify creates an [AWS Lambda](https://aws.amazon.com/lambda) function using a Node.js runtime to connect your AppSync API to your SQL database. The Lambda function connects to the database using Secure Socket Layer (SSL) or Transport Layer Security (TLS) to protect data in transit. Amplify automatically uses the correct root certificate authority (CA) certificates for Amazon RDS databases, and the Node.js runtime includes root CAs from [well-known certificate providers](https://github.com/nodejs/node/issues/4175) to connect to non-RDS databases.
121+
122+
However, if your database uses a custom or self-signed SSL certificate, you can upload the PEM-encoded public CA certificate to your Amplify project as an Amplify Secret when you generate the database configuration, and specify that secret when generating the schema from your database:
123+
124+
```
125+
npx ampx sandbox secret set CUSTOM_SSL_CERT < /path/to/custom/ssl/public-ca-cert.pem
126+
npx ampx generate schema-from-database --connection-uri-secret SQL_CONNECTION_STRING --ssl-cert-secret CUSTOM_SSL_CERT --out amplify/data/schema.sql.ts
127+
```
128+
129+
The Lambda function will then use the specified root CA to validate connections to the database.
130+
131+
</Accordion>
126132

127133
This creates a new **schema.sql.ts** with a schema reflecting the types of your database. **Do not edit the schema.sql.ts file directly**. Import the schema to your **amplify/data/resource.ts** file and apply any additive changes there. This ensures that you can continuously regenerate the TypeScript schema representation of your SQL database without losing any additive changes that you apply out-of-band.
128134

0 commit comments

Comments
 (0)