Postgresql 尝试在azure云提供商上创建专用链接时出现问题
我正在尝试开发terraform脚本,在Azure上创建虚拟机,并使用专用链接将其连接到Azure Postgresql实例。我总是会遇到这样的错误:Postgresql 尝试在azure云提供商上创建专用链接时出现问题,postgresql,azure,mariadb,terraform-provider-azure,terraform0.12+,Postgresql,Azure,Mariadb,Terraform Provider Azure,Terraform0.12+,我正在尝试开发terraform脚本,在Azure上创建虚拟机,并使用专用链接将其连接到Azure Postgresql实例。我总是会遇到这样的错误: Error: creating Private Endpoint "n4gx6y-endpoint" (Resource Group "PGSQLResourceGroup"): network.PrivateEndpointsClient#CreateOrUpdate: Failure sending
Error: creating Private Endpoint "n4gx6y-endpoint" (Resource Group "PGSQLResourceGroup"):
network.PrivateEndpointsClient#CreateOrUpdate:
Failure sending request: StatusCode=400 -- Original Error:
Code="IncorrectPrivateLinkServiceConnectionGroupId"
Message="Call to Microsoft.DBforPostgreSQL/servers failed.
Error message: Private Link Service Connection Group Id is
incorrect for Azure Database for PostgreSQL" Details=[]
on main.tf line 68, in resource "azurerm_private_endpoint" "example":
68: resource "azurerm_private_endpoint" "example" {
以下是脚本:
# -*- mode: hcl; coding: utf-8; -*-
# vim: set syntax=hcl fileencoding=utf-8
terraform {
required_version = ">= 0.12, < 0.13"
}
provider "azurerm" {
version = ">=2.20"
subscription_id = var.subscription_id
client_id = var.client_id
client_certificate_path = var.client_certificate_path
tenant_id = var.tenant_id
features {}
}
provider "random" {
version = "~> 2.3"
}
resource "random_string" "random" {
length = 6
special = false
upper = false
}
resource "azurerm_resource_group" "grp" {
name = "PGSQLResourceGroup"
location = var.location
tags = {
environment = "Terraform Demo"
}
}
resource "azurerm_virtual_network" "example" {
name = "${random_string.random.result}-network"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.grp.location
resource_group_name = azurerm_resource_group.grp.name
}
resource "azurerm_subnet" "example" {
name = "${random_string.random.result}-subnet"
resource_group_name = azurerm_resource_group.grp.name
virtual_network_name = azurerm_virtual_network.example.name
address_prefixes = ["10.0.1.0/24"]
enforce_private_link_endpoint_network_policies = true
}
resource "azurerm_postgresql_server" "example" {
name = "${random_string.random.result}-pg"
location = azurerm_resource_group.grp.location
resource_group_name = azurerm_resource_group.grp.name
sku_name = "GP_Gen5_2"
backup_retention_days = 7
geo_redundant_backup_enabled = false
storage_mb = 51200
auto_grow_enabled = true
administrator_login = "mysqladmin"
administrator_login_password = "H@Sh1CoR3!"
version = "11"
ssl_enforcement_enabled = true
}
resource "azurerm_private_endpoint" "example" {
name = "${random_string.random.result}-endpoint"
location = azurerm_resource_group.grp.location
resource_group_name = azurerm_resource_group.grp.name
subnet_id = azurerm_subnet.example.id
private_service_connection {
name = "${random_string.random.result}-privateserviceconnection"
private_connection_resource_id = azurerm_postgresql_server.example.id
subresource_names = ["postgresServer"]
is_manual_connection = false
}
}
private_service_connection {
name = "${random_string.random.result}-privateserviceconnection"
private_connection_resource_id = azurerm_postgresql_server.example.id
subresource_names = ["postgresServer"] # <-- HERE!
is_manual_connection = false
}
#-*-模式:hcl;编码:utf-8-*-
#vim:set syntax=hcl fileencoding=utf-8
地形{
必需的_version=“>=0.12,<0.13”
}
提供程序“azurerm”{
version=“>=2.20”
订阅\u id=var.subscription\u id
客户机id=变量客户机id
客户端证书路径=var.client证书路径
租户id=变量租户id
特征{}
}
提供程序“随机”{
version=“~>2.3”
}
资源“随机\u字符串”“随机”{
长度=6
特殊=错误
上限=假
}
资源“azurerm\u资源组”“grp”{
name=“PGSQLResourceGroup”
位置=变量位置
标签={
环境=“地形演示”
}
}
资源“azurerm\u虚拟网络”示例{
name=“${random\u string.random.result}-网络”
地址空间=[“10.0.0.0/16”]
位置=azurerm\u资源\u组.grp.location
resource\u group\u name=azurerm\u resource\u group.grp.name
}
资源“azurerm_子网”示例{
name=“${random\u string.random.result}-子网”
resource\u group\u name=azurerm\u resource\u group.grp.name
virtual\u network\u name=azurerm\u virtual\u network.example.name
地址前缀=[“10.0.1.0/24”]
强制\u私有\u链接\u端点\u网络\u策略=true
}
资源“azurerm\u postgresql\u服务器”示例{
name=“${random_string.random.result}-pg”
位置=azurerm\u资源\u组.grp.location
resource\u group\u name=azurerm\u resource\u group.grp.name
sku_name=“GP_Gen5_2”
备份保留天数=7天
地理位置冗余备份已启用=错误
存储容量(mb=51200)
自动增长启用=真
管理员\u login=“mysqladmin”
管理员\登录\密码=”H@Sh1CoR3!"
version=“11”
ssl_强制_已启用=真
}
资源“azurerm_private_endpoint”示例{
name=“${random\u string.random.result}-端点”
位置=azurerm\u资源\u组.grp.location
resource\u group\u name=azurerm\u resource\u group.grp.name
subnet\u id=azurerm\u subnet.example.id
专用\u服务\u连接{
name=“${random\u string.random.result}-privateserviceconnection”
private\u connection\u resource\u id=azurerm\u postgresql\u server.example.id
子资源_名称=[“postgresServer”]
是否手动连接=错误
}
}
这是github回购协议,脚本相同,一个用于Postgres,一个用于Mariadb。该错误仅在Postgres中出现
问题实际上与脚本的这一部分有关:
# -*- mode: hcl; coding: utf-8; -*-
# vim: set syntax=hcl fileencoding=utf-8
terraform {
required_version = ">= 0.12, < 0.13"
}
provider "azurerm" {
version = ">=2.20"
subscription_id = var.subscription_id
client_id = var.client_id
client_certificate_path = var.client_certificate_path
tenant_id = var.tenant_id
features {}
}
provider "random" {
version = "~> 2.3"
}
resource "random_string" "random" {
length = 6
special = false
upper = false
}
resource "azurerm_resource_group" "grp" {
name = "PGSQLResourceGroup"
location = var.location
tags = {
environment = "Terraform Demo"
}
}
resource "azurerm_virtual_network" "example" {
name = "${random_string.random.result}-network"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.grp.location
resource_group_name = azurerm_resource_group.grp.name
}
resource "azurerm_subnet" "example" {
name = "${random_string.random.result}-subnet"
resource_group_name = azurerm_resource_group.grp.name
virtual_network_name = azurerm_virtual_network.example.name
address_prefixes = ["10.0.1.0/24"]
enforce_private_link_endpoint_network_policies = true
}
resource "azurerm_postgresql_server" "example" {
name = "${random_string.random.result}-pg"
location = azurerm_resource_group.grp.location
resource_group_name = azurerm_resource_group.grp.name
sku_name = "GP_Gen5_2"
backup_retention_days = 7
geo_redundant_backup_enabled = false
storage_mb = 51200
auto_grow_enabled = true
administrator_login = "mysqladmin"
administrator_login_password = "H@Sh1CoR3!"
version = "11"
ssl_enforcement_enabled = true
}
resource "azurerm_private_endpoint" "example" {
name = "${random_string.random.result}-endpoint"
location = azurerm_resource_group.grp.location
resource_group_name = azurerm_resource_group.grp.name
subnet_id = azurerm_subnet.example.id
private_service_connection {
name = "${random_string.random.result}-privateserviceconnection"
private_connection_resource_id = azurerm_postgresql_server.example.id
subresource_names = ["postgresServer"]
is_manual_connection = false
}
}
private_service_connection {
name = "${random_string.random.result}-privateserviceconnection"
private_connection_resource_id = azurerm_postgresql_server.example.id
subresource_names = ["postgresServer"] # <-- HERE!
is_manual_connection = false
}
private\u服务\u连接{
name=“${random\u string.random.result}-privateserviceconnection”
private\u connection\u resource\u id=azurerm\u postgresql\u server.example.id
subresource_names=[“postgresServer”]#在执行私有终结点之前Postgres数据库是否已启动?是的。问题实际上是其他问题。在将私有终结点应用于用作文件共享的存储帐户时,我也遇到了完全相同的错误。添加subresource_names=[“file”]更正了此错误。