此页显示了支持的身份验证方法和客户端,并演示了可用于使用服务连接器从 Azure 计算服务连接 Neon 无服务器 Postgres 的示例代码。 在不使用服务连接器的情况下,您可能仍然能够使用其他编程语言连接到 Neon 无服务器 Postgres。 此页面还显示了你在创建服务连接时获得的默认环境变量名称和值(或 Spring Boot 配置)。
受支持的计算服务
服务连接器可用于将以下计算服务连接到 Neon 无服务器 Postgres:
- Azure 应用服务
- Azure 容器应用 (Azure Container Apps)
- Azure Functions(Azure 功能服务)
- Azure Kubernetes 服务 (AKS)
- Azure Spring 应用程序
受支持的身份验证类型和客户端类型
下表显示了将计算服务通过服务连接器连接到 Neon Serverless Postgres 时支持的身份验证方法和客户端组合。 “是”表示支持该组合,“否”表示不支持该组合。
客户端类型 |
系统分配的托管标识 |
用户分配的管理标识 |
机密/连接字符串 |
服务主体 |
。网 |
否 |
否 |
是的 |
否 |
Go (pg) |
否 |
否 |
是的 |
否 |
Java (JDBC) |
否 |
否 |
是的 |
否 |
Java - Spring Boot (JDBC) |
否 |
否 |
是的 |
否 |
Node.js (pg) |
否 |
否 |
是的 |
否 |
PHP (原生) |
否 |
否 |
是的 |
否 |
Python (psycopg2) |
否 |
否 |
是的 |
否 |
Python-Django |
否 |
否 |
是的 |
否 |
Ruby (ruby-pg) |
否 |
否 |
是的 |
否 |
没有 |
否 |
否 |
是的 |
否 |
此表支持表中客户端类型和身份验证方法的所有组合都受到支持。 所有客户端类型都可以使用任何身份验证方法通过服务连接器连接到 Neon 无服务器 Postgres。
默认环境变量名称或应用程序属性和示例代码
根据连接的身份验证类型和客户端类型,参考下表中的连接详细信息和示例代码,将计算服务连接到 Neon 无服务器 Postgres。 有关命名约定的详细信息,请参阅服务连接器内部一文。
连接字符串
警告
Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程需要非常高的信任度,并携带其他流中不存在的风险。 请仅在无法使用其他更安全的流(例如托管标识)时才使用此流。
默认环境变量名称 |
DESCRIPTION |
示例值 |
NEON_POSTGRESQL_CONNECTIONSTRING |
.NET PostgreSQL 连接字符串 |
Server=ep-still-mud-a12aa123.eastus2.azure.neon.tech;Database=<database-name>;Port=5432;Ssl Mode=Require;User Id=<username>; |
默认环境变量名称 |
DESCRIPTION |
示例值 |
NEON_POSTGRESQL_CONNECTIONSTRING |
JDBC PostgreSQL 连接字符串 |
jdbc:postgresql://ep-still-mud-a12aa123.eastus2.azure.neon.tech:5432/<database-name>?sslmode=require&user=<username>&password=<password> |
应用程序属性 |
DESCRIPTION |
示例值 |
spring.datasource.url |
数据库 URL |
jdbc:postgresql://ep-still-mud-a12aa123.eastus2.azure.neon.tech:5432/<database-name>?sslmode=require |
spring.datasource.username |
数据库用户名 |
<username> |
spring.datasource.password |
数据库密码 |
<password> |
默认环境变量名称 |
DESCRIPTION |
示例值 |
NEON_POSTGRESQL_CONNECTIONSTRING |
psycopg2 连接字符串 |
dbname=<database-name> host=ep-still-mud-a12aa123.eastus2.azure.neon.tech port=5432 sslmode=require user=<username> password=<password> |
默认环境变量名称 |
DESCRIPTION |
示例值 |
NEON_POSTGRESQL_NAME |
数据库名称 |
<database-name> |
NEON_POSTGRESQL_HOST |
数据库主机 URL |
ep-still-mud-a12aa123.eastus2.azure.neon.tech |
NEON_POSTGRESQL_USER |
数据库用户名 |
<username> |
NEON_POSTGRESQL_PASSWORD |
数据库密码 |
<database-password> |
默认环境变量名称 |
DESCRIPTION |
示例值 |
NEON_POSTGRESQL_CONNECTIONSTRING |
Go PostgreSQL 连接字符串 |
host=ep-still-mud-a12aa123.eastus2.azure.neon.tech dbname=<database-name> sslmode=require user=<username> password=<password> |
默认环境变量名称 |
DESCRIPTION |
示例值 |
NEON_POSTGRESQL_HOST |
数据库主机 URL |
ep-still-mud-a12aa123.eastus2.azure.neon.tech |
NEON_POSTGRESQL_USER |
数据库用户名 |
<username> |
NEON_POSTGRESQL_PASSWORD |
数据库密码 |
<password> |
NEON_POSTGRESQL_DATABASE |
数据库名称 |
<database-name> |
NEON_POSTGRESQL_PORT |
端口号 |
5432 |
NEON_POSTGRESQL_SSL |
SSL 选项 |
true |
默认环境变量名称 |
DESCRIPTION |
示例值 |
NEON_POSTGRESQL_CONNECTIONSTRING |
PHP 本机 PostgreSQL 连接字符串 |
host=ep-still-mud-a12aa123.eastus2.azure.neon.tech port=5432 dbname=<database-name> sslmode=require user=<username> password=<password> |
默认环境变量名称 |
DESCRIPTION |
示例值 |
NEON_POSTGRESQL_CONNECTIONSTRING |
Ruby PostgreSQL 连接字符串 |
host=<your-postgres-server-name>.postgres.database.azure.com port=5432 dbname=<database-name> sslmode=require user=<username> password=<password> |
默认环境变量名称 |
DESCRIPTION |
示例值 |
NEON_POSTGRESQL_HOST |
数据库主机 URL |
ep-still-mud-a12aa123.eastus2.azure.neon.tech |
NEON_POSTGRESQL_USERNAME |
数据库用户名 |
<username> |
NEON_POSTGRESQL_DATABASE |
数据库名称 |
<database-name> |
NEON_POSTGRESQL_PORT |
端口号 |
5432 |
NEON_POSTGRESQL_SSL |
SSL 选项 |
true |
NEON_POSTGRESQL_PASSWORD |
数据库密码 |
<password> |
示例代码
请参阅下面的步骤和代码,以使用连接字符串连接到 Neon Serverless Postgres。
- 按照 Npgsql 指南安装依赖项
- 在代码中,从 Service Connector 添加的环境变量中获取 PostgreSQL 连接字符串。
using System;
using Npgsql;
string connectionString = Environment.GetEnvironmentVariable("NEON_POSTGRESQL_CONNECTIONSTRING");
using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
{
connection.Open();
}
-
按照 pgJDBC 指南安装依赖项。
- 在代码中,从 Service Connector 添加的环境变量中获取 PostgreSQL 连接字符串。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
String connectionString = System.getenv("NEON_POSTGRESQL_CONNECTIONSTRING");
Connection connection = null;
try {
connection = DriverManager.getConnection(connectionString);
System.out.println("Connection successful!");
} catch (SQLException e){
System.out.println(e.getMessage());
}
- 通过将以下依赖项添加到
pom.xml
文件来安装 Spring Cloud Azure Starter JDBC PostgreSQL 模块。 在此处找到 Spring Cloud Azure 的版本。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>4.11.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
- 配置 Spring Boot 应用程序,详细信息请参阅本部分。
- 按照 psycopg2 指南安装依赖项。
- 在代码中,从 Service Connector 添加的环境变量中获取 PostgreSQL 连接信息。
import os
import psycopg2
connection_string = os.getenv('NEON_POSTGRESQL_CONNECTIONSTRING')
connection = psycopg2.connect(connection_string)
print("Connection established")
connection.close()
- 按照 Django 指南 和 psycopg2 指南安装依赖项。
pip install django
pip install psycopg2
- 在设置文件中,从 Service Connector 添加的环境变量中获取 PostgreSQL 数据库信息。
# in your setting file, eg. settings.py
host = os.getenv('NEON_POSTGRESQL_HOST')
user = os.getenv('NEON_POSTGRESQL_USER')
password = os.getenv('NEON_POSTGRESQL_PASSWORD')
database = os.getenv('NEON_POSTGRESQL_NAME')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': host,
'PORT': '5432', # Port is 5432 by default
'OPTIONS': {'sslmode': 'require'},
}
}
- 安装依赖项。
go get github.com/lib/pq
- 在代码中,从 Service Connector 添加的环境变量中获取 PostgreSQL 连接字符串。
import (
"database/sql"
"fmt"
"os"
_ "github.com/lib/pq"
)
connectionString := os.Getenv("NEON_POSTGRESQL_CONNECTIONSTRING")
conn, err := sql.Open("postgres", connectionString)
if err != nil {
panic(err)
}
conn.Close()
- 安装依赖项。
npm install pg dotenv
- 在代码中,从 Service Connector 添加的环境变量中获取 PostgreSQL 连接信息。
import { Client } from 'pg';
(async () => {
const client = new Client({
host: process.env.NEON_POSTGRESQL_HOST,
user: process.env.NEON_POSTGRESQL_USER,
password: process.env.NEON_POSTGRESQL_PASSWORD,
database: process.env.NEON_POSTGRESQL_DATABASE,
port: Number(process.env.NEON_POSTGRESQL_PORT) ,
ssl: process.env.NEON_POSTGRESQL_SSL
});
await client.connect();
await client.end();
})();
- 在代码中,从 Service Connector 添加的环境变量中获取 PostgreSQL 连接信息。
<?php
$conn_string = getenv('NEON_POSTGRESQL_CONNECTIONSTRING');
$dbconn = pg_connect($conn_string);
?>
- 安装依赖项。
gem install pg
- 在代码中,从 Service Connector 添加的环境变量中获取 PostgreSQL 连接信息。
require 'pg'
require 'dotenv/load'
begin
conn = PG::Connection.new(
connection_string: ENV['NEON_POSTGRESQL_CONNECTIONSTRING'],
)
rescue PG::Error => e
puts e.message
ensure
connection.close if connection
end
后续步骤
参考下面列出的教程来详细了解服务连接器。