Memuat data dari host jarak jauh - Amazon Redshift

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

Memuat data dari host jarak jauh

Anda dapat menggunakan COPY perintah untuk memuat data secara paralel dari satu atau lebih host jarak jauh, seperti EC2 instans Amazon atau komputer lain. COPYterhubung ke host jarak jauh menggunakan SSH dan menjalankan perintah pada host jarak jauh untuk menghasilkan output teks.

Host jarak jauh dapat berupa instance Amazon EC2 Linux atau komputer Unix atau Linux lain yang dikonfigurasi untuk menerima SSH koneksi. Panduan ini mengasumsikan host jarak jauh Anda adalah EC2 instance Amazon. Di mana prosedurnya berbeda untuk komputer lain, panduan akan menunjukkan perbedaannya.

Amazon Redshift dapat terhubung ke beberapa host, dan dapat membuka beberapa SSH koneksi ke setiap host. Amazon Redshifts mengirimkan perintah unik melalui setiap koneksi untuk menghasilkan output teks ke output standar host, yang kemudian dibaca Amazon Redshift seperti halnya file teks.

Sebelum Anda mulai

Sebelum Anda mulai, Anda harus memiliki yang berikut:

  • Satu atau lebih mesin host, seperti EC2 instans Amazon, yang dapat Anda sambungkan untuk digunakanSSH.

  • Sumber data pada host.

    Anda akan memberikan perintah bahwa cluster Amazon Redshift akan berjalan pada host untuk menghasilkan output teks. Setelah cluster terhubung ke host, COPY perintah menjalankan perintah, membaca teks dari output standar host, dan memuat data secara paralel ke dalam tabel Amazon Redshift. Output teks harus dalam bentuk yang dapat dicerna oleh COPY perintah. Untuk informasi selengkapnya, silakan lihat Mempersiapkan data masukan Anda

  • Akses ke host dari komputer Anda.

    Untuk EC2 contoh Amazon, Anda akan menggunakan SSH koneksi untuk mengakses host. Anda harus mengakses host untuk menambahkan kunci publik klaster Amazon Redshift ke file kunci resmi host.

  • Cluster Amazon Redshift yang sedang berjalan.

    Untuk informasi tentang cara meluncurkan klaster, lihat Panduan Memulai Amazon Redshift.

Memuat proses data

Bagian ini memandu Anda melalui proses memuat data dari host jarak jauh. Bagian berikut memberikan rincian yang harus Anda capai di setiap langkah.

Langkah 1: Ambil kunci publik cluster dan alamat IP node cluster

Anda akan menggunakan alamat IP untuk setiap node cluster untuk mengonfigurasi grup keamanan host untuk mengizinkan akses dari cluster Amazon Redshift Anda menggunakan alamat IP ini.

Untuk mengambil kunci publik klaster dan alamat IP node cluster untuk cluster Anda menggunakan konsol
  1. Akses Konsol Manajemen Amazon Redshift.

  2. Pilih tautan Clusters di panel navigasi.

  3. Pilih klaster Anda dari daftar.

  4. Temukan grup Pengaturan SSH Tertelan.

    Perhatikan alamat IP Cluster Public Key dan Node. Anda akan menggunakannya di langkah selanjutnya.

    Screenshot dari grup Pengaturan SSH Ingestion yang menunjukkan alamat IP Cluster Public Key dan Node.

    Anda akan menggunakan alamat IP di Langkah 3 untuk mengonfigurasi host untuk menerima koneksi dari Amazon Redshift. Bergantung pada jenis host yang Anda sambungkan dan apakah itu ada di aVPC, Anda akan menggunakan alamat IP publik atau alamat IP pribadi.

Untuk mengambil kunci publik klaster dan alamat IP node cluster untuk klaster Anda menggunakan Amazon CLI Redshift, jalankan perintah deskripsikan klaster.

Sebagai contoh:

aws redshift describe-clusters --cluster-identifier <cluster-identifier>

Respons akan mencakup ClusterPublicKey dan daftar alamat IP pribadi dan publik, mirip dengan yang berikut ini:

{ "Clusters": [ { "VpcSecurityGroups": [], "ClusterStatus": "available", "ClusterNodes": [ { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "LEADER", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-0", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-1", "PublicIPAddress": "10.nnn.nnn.nnn" } ], "AutomatedSnapshotRetentionPeriod": 1, "PreferredMaintenanceWindow": "wed:05:30-wed:06:00", "AvailabilityZone": "us-east-1a", "NodeType": "dc2.large", "ClusterPublicKey": "ssh-rsa AAAABexamplepublickey...Y3TAl Amazon-Redshift", ... ... }

Untuk mengambil kunci publik klaster dan alamat IP node cluster untuk klaster Anda menggunakan Amazon API Redshift, gunakan DescribeClusters tindakan. Untuk informasi selengkapnya, lihat deskripsikan klaster di Panduan Amazon Redshift atau CLIdi Panduan Amazon Redshift. DescribeClustersAPI

Langkah 2: Tambahkan kunci publik klaster Amazon Redshift ke file kunci resmi host

Anda menambahkan kunci publik klaster ke file kunci resmi masing-masing host sehingga host akan mengenali Amazon Redshift dan menerima koneksi. SSH

Untuk menambahkan kunci publik klaster Amazon Redshift ke file kunci resmi host
  1. Akses host menggunakan SSH koneksi.

    Untuk informasi tentang menghubungkan ke instans yang menggunakanSSH, lihat Connect to Your Instance di Panduan EC2 Pengguna Amazon.

  2. Salin kunci publik Amazon Redshift dari konsol atau dari teks CLI respons.

  3. Salin dan tempel konten kunci publik ke dalam /home/<ssh_username>/.ssh/authorized_keys file di host jarak jauh. <ssh_username>Harus cocok dengan nilai untuk bidang “nama pengguna” di file manifes. Sertakan string lengkap, termasuk awalan "ssh-rsa" dan akhiran "”Amazon-Redshift. Sebagai contoh:

    ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift

Langkah 3: Konfigurasikan host untuk menerima semua alamat IP cluster Amazon Redshift

Jika Anda bekerja dengan EC2 instans Amazon atau EMR kluster Amazon, tambahkan aturan Inbound ke grup keamanan host untuk mengizinkan lalu lintas dari setiap node cluster Amazon Redshift. Untuk Type, pilih SSH dengan TCP protokol pada Port 22. Untuk Sumber, masukkan alamat IP node cluster Amazon Redshift yang Anda ambil. Langkah 1: Ambil kunci publik cluster dan alamat IP node cluster Untuk informasi tentang menambahkan aturan ke grup EC2 keamanan Amazon, lihat Mengotorisasi Lalu Lintas Masuk untuk Instans Anda di Panduan Pengguna Amazon EC2.

Gunakan alamat IP pribadi saat:

  • Anda memiliki klaster Amazon Redshift yang tidak ada di Virtual Private Cloud (VPC), dan instance Amazon EC2 -Classic, keduanya berada di Wilayah yang sama. AWS

  • Anda memiliki cluster Amazon Redshift yang ada diVPC, dan VPC instance AmazonEC2, keduanya berada di AWS Wilayah yang sama dan di tempat yang sama. VPC

Jika tidak, gunakan alamat IP publik.

Untuk informasi selengkapnya tentang menggunakan Amazon Redshift di aVPC, lihat Mengelola Cluster di Virtual Private Cloud (VPC) di Panduan Manajemen Amazon Redshift.

Langkah 4: Dapatkan kunci publik untuk tuan rumah

Anda dapat memberikan kunci publik host secara opsional dalam file manifes sehingga Amazon Redshift dapat mengidentifikasi host. COPYPerintah tidak memerlukan kunci publik host tetapi, untuk alasan keamanan, kami sangat menyarankan menggunakan kunci publik untuk membantu mencegah serangan man-in-the-middle ''.

Anda dapat menemukan kunci publik tuan rumah di lokasi berikut, di <ssh_host_rsa_key_name> mana nama unik untuk kunci publik tuan rumah:

: /etc/ssh/<ssh_host_rsa_key_name>.pub
catatan

Amazon Redshift hanya mendukung RSA kunci. Kami tidak mendukung DSA kunci.

Saat Anda membuat file manifes di Langkah 5, Anda akan menempelkan teks kunci publik ke bidang “Kunci Publik” di entri file manifes.

Langkah 5: Buat file manifes

COPYPerintah dapat terhubung ke beberapa host menggunakanSSH, dan dapat membuat beberapa SSH koneksi ke setiap host. COPYmenjalankan perintah melalui setiap koneksi host, dan kemudian memuat output dari perintah secara paralel ke dalam tabel. File manifes adalah file teks dalam JSON format yang digunakan Amazon Redshift untuk terhubung ke host. File manifes menentukan titik akhir SSH host dan perintah yang dijalankan pada host untuk mengembalikan data ke Amazon Redshift. Secara opsional, Anda dapat menyertakan kunci publik host, nama pengguna login, dan bendera wajib untuk setiap entri.

Buat file manifes di komputer lokal Anda. Pada langkah selanjutnya, Anda mengunggah file ke Amazon S3.

File manifes dalam format berikut:

{ "entries": [ {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "<host_user_name>"}, {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "host_user_name"} ] }

File manifes berisi satu konstruksi “entri” untuk setiap SSH koneksi. Setiap entri mewakili satu SSH koneksi. Anda dapat memiliki beberapa koneksi ke satu host atau beberapa koneksi ke beberapa host. Tanda kutip ganda diperlukan seperti yang ditunjukkan, baik untuk nama bidang maupun nilainya. Satu-satunya nilai yang tidak memerlukan tanda kutip ganda adalah nilai Boolean true atau false untuk bidang wajib.

Berikut ini menjelaskan bidang dalam file manifes.

titik akhir

URLAlamat atau alamat IP host. Misalnya, "ec2-111-222-333.compute-1.amazonaws.com" atau "22.33.44.56

perintah

Perintah yang akan dijalankan oleh host untuk menghasilkan teks atau biner (gzip, lzop, atau bzip2) output. Perintah dapat berupa perintah apa pun yang pengguna “host_user_name” memiliki izin untuk dijalankan. Perintahnya bisa sesederhana mencetak file, atau bisa menanyakan database atau meluncurkan skrip. Output (file teks, file biner gzip, file biner lzop, atau file biner bzip2) harus dalam bentuk yang dapat dikonsumsi oleh perintah Amazon Redshift. COPY Untuk informasi selengkapnya, lihat Mempersiapkan data masukan Anda.

kunci publik

(Opsional) Kunci publik tuan rumah. Jika tersedia, Amazon Redshift akan menggunakan kunci publik untuk mengidentifikasi host. Jika kunci publik tidak disediakan, Amazon Redshift tidak akan mencoba identifikasi host. Misalnya, jika kunci publik host jarak jauh adalah:ssh-rsa AbcCbaxxx…xxxDHKJ root@amazon.com, masukkan teks berikut di bidang kunci publik:AbcCbaxxx…xxxDHKJ.

wajib

(Opsional) Menunjukkan apakah COPY perintah harus gagal jika koneksi gagal. Default-nya adalah false. Jika Amazon Redshift tidak berhasil membuat setidaknya satu koneksi, COPY perintah gagal.

nama pengguna

(Opsional) Nama pengguna yang akan digunakan untuk masuk ke sistem host dan menjalankan perintah jarak jauh. Nama login pengguna harus sama dengan login yang digunakan untuk menambahkan kunci publik ke file kunci resmi host di Langkah 2. Nama pengguna default adalah “redshift”.

Contoh berikut menunjukkan manifes lengkap untuk membuka empat koneksi ke host yang sama dan menjalankan perintah yang berbeda melalui setiap koneksi:

{ "entries": [ {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata1.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata2.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata3.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata4.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"} ] }

Langkah 6: Unggah file manifes ke bucket Amazon S3

Unggah file manifes ke bucket Amazon S3. Jika bucket Amazon S3 tidak berada di AWS Wilayah yang sama dengan cluster Amazon Redshift, Anda harus menggunakan REGION opsi untuk menentukan AWS Wilayah tempat manifes berada. Untuk informasi tentang membuat bucket Amazon S3 dan mengunggah file, lihat Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Langkah 7: Jalankan COPY perintah untuk memuat data

Jalankan COPY perintah untuk menyambung ke host dan memuat data ke dalam tabel Amazon Redshift. Dalam COPY perintah, tentukan jalur objek Amazon S3 eksplisit untuk file manifes dan sertakan SSH opsi. Misalnya,

COPY sales FROM 's3://amzn-s3-demo-bucket/ssh_manifest' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|' SSH;
catatan

Jika Anda menggunakan kompresi otomatis, COPY perintah melakukan dua pembacaan data, yang berarti menjalankan perintah jarak jauh dua kali. Pembacaan pertama adalah memberikan sampel untuk analisis kompresi, kemudian pembacaan kedua benar-benar memuat data. Jika menjalankan perintah jarak jauh dua kali dapat menyebabkan masalah karena potensi efek samping, Anda harus mematikan kompresi otomatis. Untuk mematikan kompresi otomatis, jalankan COPY perintah dengan COMPUPDATE opsi yang disetel keOFF. Untuk informasi selengkapnya, lihat Memuat tabel dengan kompresi otomatis.