Mengelola dan menghubungkan ke cluster DSQL Amazon Aurora menggunakan AWS PrivateLink - Amazon Aurora DSQL

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengelola dan menghubungkan ke cluster DSQL Amazon Aurora menggunakan AWS PrivateLink

Dengan AWS PrivateLink Amazon Aurora DSQL, Anda dapat menyediakan antarmuka titik akhir Amazon VPC (titik akhir antarmuka) di Amazon Virtual Private Cloud Anda. Titik akhir ini dapat diakses langsung dari aplikasi yang ada di lokasi melalui Amazon VPC AWS Direct Connect dan, atau berbeda dengan Wilayah AWS peering VPC Amazon. Menggunakan AWS PrivateLink dan antarmuka endpoint, Anda dapat menyederhanakan konektivitas jaringan pribadi dari aplikasi Anda ke Aurora DSQL.

Aplikasi dalam VPC Amazon Anda dapat mengakses Aurora DSQL menggunakan titik akhir antarmuka Amazon VPC tanpa memerlukan alamat IP publik.

Titik akhir antarmuka diwakili oleh satu atau lebih antarmuka jaringan elastis (ENIs) yang diberi alamat IP pribadi dari subnet di VPC Amazon Anda. Permintaan ke Aurora DSQL melalui titik akhir antarmuka tetap ada di jaringan. AWS Untuk informasi selengkapnya tentang cara menghubungkan VPC Amazon dengan jaringan lokal, lihat Panduan AWS Direct Connect Pengguna dan Panduan Pengguna AWS Site-to-Site VPN VPN.

Untuk informasi umum tentang titik akhir antarmuka, lihat Mengakses AWS layanan menggunakan antarmuka titik akhir Amazon VPC di AWS PrivateLinkPanduan Pengguna.

Jenis titik akhir VPC Amazon untuk Aurora DSQL

Aurora DSQL membutuhkan dua jenis endpoint yang berbeda. AWS PrivateLink

  1. Endpoint manajemen — Endpoint ini digunakan untuk operasi administratif, seperti,,get, create updatedelete, dan pada cluster list Aurora DSQL. Lihat Mengelola cluster Aurora DSQL menggunakan AWS PrivateLink.

  2. Connection endpoint — Endpoint ini digunakan untuk menghubungkan ke cluster Aurora DSQL melalui klien PostgreSQL. Lihat Menghubungkan ke cluster Aurora DSQL menggunakan AWS PrivateLink.

Pertimbangan Amazon VPC berlaku untuk AWS PrivateLink Aurora DSQL. Untuk informasi selengkapnya, lihat Mengakses AWS layanan menggunakan titik akhir VPC antarmuka dan AWS PrivateLink kuota di Panduan. AWS PrivateLink

Anda dapat menggunakan AWS Command Line Interface atau AWS Software Development Kit (SDKs) untuk mengelola cluster Aurora DSQL melalui titik akhir antarmuka Aurora DSQL.

Membuat titik akhir Amazon VPC

Untuk membuat titik akhir antarmuka VPC Amazon, lihat Membuat titik akhir VPC Amazon di Panduan. AWS PrivateLink

aws ec2 create-vpc-endpoint \ --region region \ --service-name com.amazonaws.region.dsql \ --vpc-id your-vpc-id \ --subnet-ids your-subnet-id \ --vpc-endpoint-type Interface \ --security-group-ids client-sg-id \

Untuk menggunakan nama DNS Regional default untuk permintaan API Aurora DSQL, jangan nonaktifkan DNS pribadi saat Anda membuat titik akhir antarmuka Aurora DSQL. Ketika DNS pribadi diaktifkan, permintaan ke layanan Aurora DSQL yang dibuat dari dalam VPC Amazon Anda akan secara otomatis menyelesaikan ke alamat IP pribadi titik akhir VPC Amazon, bukan nama DNS publik. Saat DNS pribadi diaktifkan, permintaan Aurora DSQL yang dibuat dalam VPC Amazon Anda akan secara otomatis diselesaikan ke titik akhir VPC Amazon Anda.

Jika DNS pribadi tidak diaktifkan, gunakan --endpoint-url parameter --region dan dengan AWS CLI perintah untuk mengelola cluster Aurora DSQL melalui titik akhir antarmuka Aurora DSQL.

Daftar cluster menggunakan URL endpoint

Dalam contoh berikut, ganti Wilayah AWS us-east-1 dan nama DNS vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com ID endpoint Amazon VPC dengan informasi Anda sendiri.

aws dsql --region us-east-1 --endpoint-url https://vpce-1a2b3c4d-5e6f.dsql.us-east-1.vpce.amazonaws.com list-clusters

Operasi API

Lihat referensi Aurora DSQL API untuk dokumentasi pengelolaan sumber daya di Aurora DSQL.

Mengelola kebijakan endpoint

Dengan menguji dan mengonfigurasi kebijakan titik akhir VPC Amazon secara menyeluruh, Anda dapat membantu memastikan bahwa klaster Aurora DSQL Anda aman, sesuai, dan selaras dengan kontrol akses dan persyaratan tata kelola khusus organisasi Anda.

Contoh: Kebijakan akses DSQL Aurora Penuh

Kebijakan berikut memberikan akses penuh ke semua tindakan dan sumber daya Aurora DSQL melalui titik akhir VPC Amazon yang ditentukan.

aws ec2 modify-vpc-endpoint \ --vpc-endpoint-id vpce-xxxxxxxxxxxxxxxxx \ --region region \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "dsql:*", "Resource": "*" } ] }'

Contoh: Kebijakan Akses Aurora DSQL Terbatas

Kebijakan berikut hanya mengizinkan tindakan Aurora DSQL ini.

  • CreateCluster

  • GetCluster

  • ListClusters

Semua tindakan Aurora DSQL lainnya ditolak.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "dsql:CreateCluster", "dsql:GetCluster", "dsql:ListClusters" ], "Resource": "*" } ] }

Setelah AWS PrivateLink endpoint Anda diatur dan aktif, Anda dapat terhubung ke cluster Aurora DSQL Anda menggunakan klien PostgreSQL. Instruksi koneksi di bawah ini menguraikan langkah-langkah untuk membangun nama host yang tepat untuk menghubungkan melalui titik akhir. AWS PrivateLink

Langkah 1: Dapatkan nama layanan untuk cluster Anda

Saat membuat AWS PrivateLink endpoint untuk menghubungkan ke cluster Anda, Anda harus terlebih dahulu mengambil nama layanan khusus cluster.

AWS CLI
aws dsql get-vpc-endpoint-service-name \ --region us-east-1 \ --identifier your-cluster-id

Contoh tanggapan

{
    "serviceName": "com.amazonaws.us-east-1.dsql-fnh4"
}

Nama layanan termasuk pengenal, seperti dsql-fnh4 dalam contoh. Pengenal ini juga diperlukan saat membuat nama host untuk menghubungkan ke cluster Anda.

AWS SDK for Python (Boto3)
import boto3 dsql_client = boto3.client('dsql', region_name='us-east-1') response = dsql_client.get_vpc_endpoint_service_name( identifier='your-cluster-id' ) service_name = response['serviceName'] print(f"Service Name: {service_name}")
AWS SDK for Java 2.x
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dsql.DsqlClient; import software.amazon.awssdk.services.dsql.model.GetVpcEndpointServiceNameRequest; import software.amazon.awssdk.services.dsql.model.GetVpcEndpointServiceNameResponse; String region = "us-east-1"; String clusterId = "your-cluster-id"; DsqlClient dsqlClient = DsqlClient.builder() .region(Region.of(region)) .credentialsProvider(DefaultCredentialsProvider.create()) .build(); GetVpcEndpointServiceNameResponse response = dsqlClient.getVpcEndpointServiceName( GetVpcEndpointServiceNameRequest.builder() .identifier(clusterId) .build() ); String serviceName = response.serviceName(); System.out.println("Service Name: " + serviceName);

Langkah 2: Buat titik akhir Amazon VPC

Dengan menggunakan nama layanan yang diperoleh pada langkah sebelumnya, buat titik akhir VPC Amazon.

penting

Petunjuk koneksi di bawah ini hanya berfungsi untuk menghubungkan ke cluster saat privat diaktifkan DNS. Jangan gunakan --no-private-dns-enabled bendera saat membuat titik akhir, karena ini akan mencegah instruksi koneksi di bawah ini berfungsi dengan baik. Jika Anda menonaktifkan DNS pribadi, Anda harus membuat catatan DNS pribadi wildcard Anda sendiri yang menunjuk ke titik akhir yang dibuat.

AWS CLI
aws ec2 create-vpc-endpoint \ --region us-east-1 \ --service-name service-name-for-your-cluster \ --vpc-id your-vpc-id \ --subnet-ids subnet-id-1 subnet-id-2 \ --vpc-endpoint-type Interface \ --security-group-ids security-group-id

Contoh respon

{
    "VpcEndpoint": {
        "VpcEndpointId": "vpce-0123456789abcdef0",
        "VpcEndpointType": "Interface",
        "VpcId": "vpc-0123456789abcdef0",
        "ServiceName": "com.amazonaws.us-east-1.dsql-fnh4",
        "State": "pending",
        "RouteTableIds": [],
        "SubnetIds": [
            "subnet-0123456789abcdef0",
            "subnet-0123456789abcdef1"
        ],
        "Groups": [
            {
                "GroupId": "sg-0123456789abcdef0",
                "GroupName": "default"
            }
        ],
        "PrivateDnsEnabled": true,
        "RequesterManaged": false,
        "NetworkInterfaceIds": [
            "eni-0123456789abcdef0",
            "eni-0123456789abcdef1"
        ],
        "DnsEntries": [
            {
                "DnsName": "*.dsql-fnh4.us-east-1.vpce.amazonaws.com",
                "HostedZoneId": "Z7HUB22UULQXV"
            }
        ],
        "CreationTimestamp": "2025-01-01T00:00:00.000Z"
    }
} 
SDK for Python
import boto3 ec2_client = boto3.client('ec2', region_name='us-east-1') response = ec2_client.create_vpc_endpoint( VpcEndpointType='Interface', VpcId='your-vpc-id', ServiceName='com.amazonaws.us-east-1.dsql-fnh4', # Use the service name from previous step SubnetIds=[ 'subnet-id-1', 'subnet-id-2' ], SecurityGroupIds=[ 'security-group-id' ] ) vpc_endpoint_id = response['VpcEndpoint']['VpcEndpointId'] print(f"VPC Endpoint created with ID: {vpc_endpoint_id}")
SDK for Java 2.x

Gunakan URL endpoint untuk Aurora DSQL APIs

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.CreateVpcEndpointRequest; import software.amazon.awssdk.services.ec2.model.CreateVpcEndpointResponse; import software.amazon.awssdk.services.ec2.model.VpcEndpointType; String region = "us-east-1"; String serviceName = "com.amazonaws.us-east-1.dsql-fnh4"; // Use the service name from previous step String vpcId = "your-vpc-id"; Ec2Client ec2Client = Ec2Client.builder() .region(Region.of(region)) .credentialsProvider(DefaultCredentialsProvider.create()) .build(); CreateVpcEndpointRequest request = CreateVpcEndpointRequest.builder() .vpcId(vpcId) .serviceName(serviceName) .vpcEndpointType(VpcEndpointType.INTERFACE) .subnetIds("subnet-id-1", "subnet-id-2") .securityGroupIds("security-group-id") .build(); CreateVpcEndpointResponse response = ec2Client.createVpcEndpoint(request); String vpcEndpointId = response.vpcEndpoint().vpcEndpointId(); System.out.println("VPC Endpoint created with ID: " + vpcEndpointId);

Menghubungkan ke cluster Aurora DSQL menggunakan titik akhir koneksi AWS PrivateLink

Setelah AWS PrivateLink titik akhir Anda diatur dan aktif (periksa apakah adaavailable), Anda dapat terhubung ke cluster Aurora DSQL Anda menggunakan klien PostgreSQL. State Untuk petunjuk penggunaan AWS SDKs, Anda dapat mengikuti panduan dalam Pemrograman dengan Aurora DSQL. Anda harus mengubah titik akhir cluster agar sesuai dengan format nama host.

Membangun nama host

Nama host untuk menghubungkan AWS PrivateLink berbeda dari nama host DNS publik. Anda perlu membangunnya menggunakan komponen-komponen berikut.

  1. Your-cluster-id

  2. Pengidentifikasi layanan dari nama layanan. Misalnya: dsql-fnh4

  3. The Wilayah AWS

Gunakan format berikut: cluster-id.service-identifier.region.on.aws

Contoh: Koneksi Menggunakan PostgreSQL

# Set environment variables export CLUSTERID=your-cluster-id export REGION=us-east-1 export SERVICE_IDENTIFIER=dsql-fnh4 # This should match the identifier in your service name # Construct the hostname export HOSTNAME="$CLUSTERID.$SERVICE_IDENTIFIER.$REGION.on.aws" # Generate authentication token export PGPASSWORD=$(aws dsql --region $REGION generate-db-connect-admin-auth-token --hostname $HOSTNAME) # Connect using psql psql -d postgres -h $HOSTNAME -U admin

Masalah dan Solusi Umum

Tabel berikut mencantumkan masalah umum dan solusi yang berkaitan AWS PrivateLink dengan Aurora DSQL.

Isu Kemungkinan penyebab Solusi

Batas waktu koneksi

Grup keamanan tidak dikonfigurasi dengan benar

Gunakan Amazon VPC Reachability Analyzer untuk memastikan penyiapan jaringan Anda memungkinkan lalu lintas di port 5432.

Kegagalan resolusi DNS

DNS pribadi tidak diaktifkan

Verifikasi bahwa titik akhir VPC Amazon dibuat dengan DNS pribadi diaktifkan.

Kegagalan otentikasi

Kredensi salah atau token kedaluwarsa

Buat token otentikasi baru dan verifikasi nama pengguna.

Nama layanan tidak ditemukan

ID cluster salah

Periksa kembali ID cluster Anda dan Wilayah AWS saat mengambil nama layanan.

Untuk informasi selengkapnya, lihat sumber daya berikut: