Создание частной конечной точки для конкретного сервера MySQL в Azure

У меня есть существующий сервер MySQL, созданный в облаке Azure. Теперь я хочу установить частное соединение с конечной точкой с помощью кода Java (SDK). Не могли бы вы помочь мне, какой класс Java использовать для решения этих проблем. Скриншот облака Azure

1 ответ

Решение

Если вы хотите установить частную конечную точку с кодом Java, обратитесь к следующему коду

  1. Создайте субъект-службу и назначьте поставщику роль участника
az login
# it will create a service principal and assign a contributor rolen to the sp
az ad sp create-for-rbac -n "MyApp"   --sdk-auth

  1. SDK
<dependency>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure</artifactId>
      <version>1.36.1</version>
    </dependency>
  1. Код
String secret ="<the sp client secret>" ;
        String domain="<the sp tenantId>";
        String clientId="<the sp clientId>";
        String subscriptionId="";
        String groupName="testmysql";
        Region region = Region.JAPAN_EAST;
        String networkName="mysqlvnet1";
        String subnetName="default";
String serverId="<the mysql server resource id e.g. /subscriptions/b83c1ed3-c5b6-44fb-b5ba-2b83a074c23f/resourceGroups/v-wenxu-chinacxp/providers/Microsoft.DBforMySQL/servers/testsql08>"
        ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(clientId,domain,secret, AzureEnvironment.AZURE);

      

        NetworkManager networkManager =NetworkManager.authenticate(credentials,subscriptionId);
        // create vnet
        Network network = networkManager.networks()
                .define(networkName)
                .withRegion(region)
                .withExistingResourceGroup(groupName)
                .withAddressSpace("172.31.0.0/16")
                .defineSubnet(subnetName)
                    .withAddressPrefix("172.31.0.0/24")
                    .attach()
                .create();
        network.subnets().get(subnetName).inner().withPrivateEndpointNetworkPolicies("Disabled");
        network.subnets().get(subnetName).inner().withPrivateLinkServiceNetworkPolicies("Enabled");

        network.update()
                .updateSubnet(subnetName)
                .parent()
                .apply();

        // create network private endpoint.
        PrivateLinkServiceConnection privateLinkServiceConnection = new PrivateLinkServiceConnection()
                .withName("mysql1")
                .withPrivateLinkServiceId("the resource id of mysql service")
                .withPrivateLinkServiceConnectionState(new PrivateLinkServiceConnectionState()
                        .withStatus("Approved"))
                .withGroupIds(Arrays.asList(serverId);
        PrivateEndpointInner privateEndpoint = new PrivateEndpointInner()
                .withPrivateLinkServiceConnections(Arrays.asList(privateLinkServiceConnection))
                .withSubnet(network.subnets().get(subnetName).inner());

        privateEndpoint.withLocation(region.toString());
        privateEndpoint =networkManager.inner().privateEndpoints().createOrUpdate(groupName,"mysql1",privateEndpoint);

Другие вопросы по тегам