Tidak dapat menyalin data dari s3 ke cluster redshift di subnet pribadi

Saya telah menyiapkan cluster redshift di subnet pribadi. Saya berhasil terhubung ke cluster redshift saya dan melakukan kueri SQL dasar melalui DBeaver.

Saya perlu mengunggah beberapa file dari s3 ke redshift juga, jadi saya menyiapkan gateway s3 di subnet pribadi saya dan memperbarui tabel rute untuk subnet pribadi saya untuk menambahkan rute yang diperlukan sebagai berikut:

Destination       Target                 Status            Propagated
192.168.0.0/16    local                  active            No   
pl-7ba54012 (com.amazonaws.us-east-2.s3, 52.219.80.0/20, 3.5.128.0/21, 52.219.96.0/20, 52.92.76.0/22)   vpce-04eed78f4db84ae49  
active             No   
0.0.0.0/0         nat-0a73ba7659e887232  active            No 

Namun, saya tidak dapat menjalankan permintaan penyalinan dari ember s3 saya

copy venue
from 's3://*****/tickit/venue_pipe.txt'
iam_role 'arn:aws:iam::******:role/global-dev-rdt-role-S3ReadonlyAccess'
region 'us-east-2';

Tidak ada kebijakan yang membatasi pada bucket saya dan grup keamanan subnet publik dan privat dan saya sudah dapat menjalankan kueri SQL pada cluster redshift saya di subnet privat.

pembaruan: grup keamanan untuk cluster redshift mengizinkan semua koneksi ke port 5439

Type         Protocol      Port Range     Source      Description
Redshift     TCP           5439           0.0.0.0/0
Redshift     TCP           5439           ::/0
SSH          TCP           22             sg-0f933e18d6c1967b8

person Mahdi    schedule 01.01.2020    source sumber
comment
Apa yang Anda maksud dengan saya tidak dapat menjalankan permintaan penyalinan? Bisakah Anda membagikan pesan kesalahan atau menjelaskan masalahnya kepada kami?   -  person John Rotenstein    schedule 02.01.2020
comment
Kecuali Anda telah mengaktifkan Perutean VPC yang Ditingkatkan, menurut saya Anda tidak perlu menggunakan Titik Akhir VPC untuk menghubungkan Redshift ke S3, karena lalu lintas tidak melalui VPC.   -  person John Rotenstein    schedule 02.01.2020
comment
Dibutuhkan waktu sangat lama dan kueri kembali dengan status gagal..Saya juga telah mengaktifkan perutean VPC karena ini akan menghindari lalu lintas melalui internet.   -  person Mahdi    schedule 02.01.2020
comment
Apakah yang Anda maksud: gerbang s3 Apakah yang Anda maksud adalah VPC Endpoint untuk Amazon S3?   -  person John Rotenstein    schedule 02.01.2020
comment
Ya, yang saya maksud adalah titik akhir untuk s3 di subnet pribadi di VPC.   -  person Mahdi    schedule 02.01.2020
comment
Ngomong-ngomong, bagaimana cara Anda terhubung ke cluster Redshift? Apakah klaster Anda berada di subnet publik atau subnet privat? Jika berada dalam subnet publik, maka Anda perlu menambahkan VPC Endpoint ke tabel rute yang merupakan subnet publik tersebut.   -  person John Rotenstein    schedule 03.01.2020
comment
itu berada di subnet pribadi dan grup keamanannya memiliki aturan untuk mengizinkan semua koneksi ke port 5439. Redshift,TCP,5439,0.0.0.0/0. Agak aneh kecuali saya mengaktifkan perutean yang ditingkatkan, saya tidak dapat menjalankan perintah salin.   -  person Mahdi    schedule 03.01.2020


Jawaban (1)


Untuk mereproduksi situasi Anda, saya melakukan hal berikut:

  • Membuat VPC baru dengan Subnet Publik dan Subnet Pribadi (tanpa Gerbang NAT)
  • Launched a 1-node Amazon Redshift cluster in the private subnet
    • Enhanced VPC Routing = No
    • Dapat diakses publik = Tidak
  • Meluncurkan instans Amazon EC2 Linux di subnet publik
  • Jalankan sudo yum install postgresql pada instans EC2
  • Membuat koneksi ke klaster Redshift melalui psql pada instans EC2 (psql -h xx.yy.ap-southeast-2.redshift.amazonaws.com -p 5439 -U username)
  • Membuat tabel (create table foo(id integer);)
  • Memuat tabel (copy foo from 's3://my-bucket/bar.txt' iam_role 'xxx';)

Ini berhasil, dengan pesan:

INFO:  Load into table 'foo' completed, 4 record(s) loaded successfully.

Oleh karena itu, VPC Endpoint/NAT Gateway tidak diperlukan untuk menjalankan perintah COPY dari Redshift. Cluster Redshift memiliki cara khusus untuk terhubung ke S3, tampaknya melalui 'backend' Redshift.

Jika data dimuat dari Amazon S3 di Wilayah yang sama, maka lalu lintas akan tetap berada sepenuhnya dalam jaringan AWS. Jika data berasal dari wilayah lain, data tersebut akan tetap dienkripsi karena komunikasi dengan Amazon S3 akan dilakukan melalui HTTPS.

Ujian kedua: Menggunakan Jaringan VPC yang Disempurnakan

Untuk mencerminkan situasi Anda, saya meluncurkan cluster Redshift yang berbeda dengan Perutean VPC yang ditingkatkan diaktifkan.

Saat saya menjalankan perintah COPY, perintah tersebut diperkirakan hang karena saya tidak mengonfigurasi cara klaster Redshift untuk mengakses Amazon S3 melalui VPC.

Saya kemudian membuat VPC Endpoint untuk Amazon S3 dan menghubungkannya ke subnet pribadi dengan kebijakan "Akses Penuh".

Kemudian, ketika saya menjalankan kembali perintah COPY, perintah tersebut berhasil memuat data dari Amazon S3.

Intinya: Ini berhasil bagi saya. Anda mungkin ingin membandingkan konfigurasi Anda dengan langkah-langkah yang saya ambil di atas.

person John Rotenstein    schedule 02.01.2020
comment
Untuk skenario kedua, apakah Anda menyiapkan klaster redshift di subnet privat dengan gateway NAT? Saya dapat menjalankan perintah salin ketika saya menonaktifkan perutean yang ditingkatkan tetapi tidak ketika saya mengaktifkannya. - person Mahdi; 02.01.2020
comment
Kedua skenario menggunakan VPC yang sama: Subnet Publik dengan Internet Gateway dan instans EC2, Subnet Pribadi dengan klaster Redshift. Tidak ada skenario yang menggunakan NAT Gateway. Skenario kedua juga memiliki VPC Endpoint untuk S3 yang terhubung ke subnet privat. - person John Rotenstein; 02.01.2020
comment
Hai, maaf atas kesalahan saya, saya harus memasang gateway NAT di subnet publik dan juga memasang gateway internet untuk menyediakan akses internet yang aman ke VPC saya, dalam hal ini saya ingin tahu apakah perutean yang ditingkatkan dapat disetel ke true untuk menghubungkan melalui titik akhir s3 di subnet pribadi? - person Mahdi; 02.01.2020
comment
Ya, NAT Gateway dan VPC Endpoint dapat digunakan. Tabel Rute untuk subnet privat akan berisi entri untuk keduanya. Karena aturan perutean untuk VPC Endpoint lebih spesifik, lalu lintas untuk S3 akan melalui VPC Endpoint sementara lalu lintas lainnya akan melalui NAT Gateway. Jadi, konfigurasi yang Anda tampilkan di Pertanyaan Anda akan berfungsi dengan baik. Apakah Anda mengonfigurasi VPC Endpoint dengan kebijakan Akses Penuh? - person John Rotenstein; 03.01.2020