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 perintah COPY untuk memuat data secara paralel dari satu atau lebih host jarak jauh, seperti EC2 instans Amazon atau komputer lain. COPY terhubung 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 koneksi SSH. 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 koneksi SSH 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 menggunakan SSH.

  • 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, perintah COPY 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 perintah COPY. Untuk informasi selengkapnya, lihat Mempersiapkan data masukan Anda

  • Akses ke host dari komputer Anda.

    Untuk EC2 contoh Amazon, Anda akan menggunakan koneksi SSH 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 Penyerapan SSH.

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

    Screenshot dari grup SSH Ingestion Settings 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. Tergantung pada jenis host yang Anda sambungkan dan apakah itu dalam VPC, 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 Redshift CLI, jalankan perintah describe-clusters.

Misalnya:

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 Redshift API, gunakan DescribeClusters tindakan tersebut. Untuk informasi selengkapnya, lihat deskripsikan klaster di Panduan CLI Amazon Redshift atau DescribeClustersdi Panduan Amazon Redshift API.

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

Anda menambahkan kunci publik cluster 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 koneksi SSH.

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

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

  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. Misalnya:

    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 kluster EMR Amazon, tambahkan aturan Inbound ke grup keamanan host untuk mengizinkan lalu lintas dari setiap node cluster Amazon Redshift. Untuk Type, pilih SSH dengan protokol TCP 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 EC2 Amazon -Classic, keduanya berada di Wilayah yang sama. AWS

  • Anda memiliki cluster Amazon Redshift yang ada di VPC, dan instance Amazon EC2 -VPC, keduanya berada di Wilayah yang sama AWS dan di VPC yang sama.

Jika tidak, gunakan alamat IP publik.

Untuk informasi selengkapnya tentang penggunaan Amazon Redshift di VPC, 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. Perintah COPY tidak memerlukan kunci publik host tetapi, untuk alasan keamanan, kami sangat menyarankan menggunakan kunci publik untuk membantu mencegah man-in-the-middle 'serangan.

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 tombol RSA. Kami tidak mendukung kunci DSA.

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

Perintah COPY dapat terhubung ke beberapa host menggunakan SSH, dan dapat membuat beberapa koneksi SSH ke setiap host. COPY menjalankan perintah melalui setiap koneksi host, dan kemudian memuat output dari perintah secara paralel ke dalam tabel. File manifes adalah file teks dalam format JSON yang digunakan Amazon Redshift untuk terhubung ke host. File manifes menentukan titik akhir host SSH 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 koneksi SSH. Setiap entri mewakili koneksi SSH tunggal. 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

Alamat URL 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 perintah COPY harus gagal jika koneksi gagal. Nilai default-nya false. Jika Amazon Redshift tidak berhasil membuat setidaknya satu koneksi, perintah COPY 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 perintah COPY untuk memuat data

Jalankan MENYONTEK perintah untuk menyambung ke host dan memuat data ke dalam tabel Amazon Redshift. Dalam perintah COPY, tentukan jalur objek Amazon S3 eksplisit untuk file manifes dan sertakan opsi SSH. 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, perintah COPY 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 perintah COPY dengan opsi COMPUPDATE diatur ke OFF. Untuk informasi selengkapnya, lihat Memuat tabel dengan kompresi otomatis.