AWS Data Pipeline tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Data Pipeline dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Salin Data MySQL Menggunakan Baris Perintah
Anda dapat membuat alur untuk menyalin data dari tabel MySQL ke file di bucket Amazon S3.
Prasyarat
Sebelum memulai tutorial ini, Anda harus menyelesaikan langkah berikut:
-
Pasang dan konfigurasi antarmuka baris perintah (CLI). Untuk informasi selengkapnya, lihat Mengakses AWS Data Pipeline.
-
Pastikan bahwa peran IAM bernama DataPipelineDefaultRoledan DataPipelineDefaultResourceRoleada. AWS Data Pipeline Konsol membuat peran ini untuk Anda secara otomatis. Jika Anda belum pernah menggunakan AWS Data Pipeline konsol setidaknya sekali, maka Anda harus membuat peran ini secara manual. Untuk informasi selengkapnya, lihat Peran IAM untuk AWS Data Pipeline.
-
Mengatur bucket Amazon S3 dan instans Amazon RDS. Untuk informasi selengkapnya, lihat Sebelum Anda Memulai.
Mendefinisikan Alur dalam Format JSON
Contoh skenario ini menunjukkan bagaimana menggunakan definisi alur JSON dan CLI AWS Data Pipeline untuk menyalin data (baris) dari tabel dalam basis data MySQL ke file CSV (nilai yang dipisahkan koma) dalam bucket Amazon S3 pada interval waktu yang ditentukan.
Ini adalah file JSON definisi alur lengkap diikuti dengan penjelasan untuk setiap bagiannya.
catatan
Kami merekomendasikan bahwa Anda menggunakan editor teks yang dapat membantu Anda memverifikasi sintaks file yang diformat JSON, dan nama file menggunakan ekstensi file .json.
{ "objects": [ { "id": "ScheduleId113", "startDateTime": "2013-08-26T00:00:00", "name": "My Copy Schedule", "type": "Schedule", "period": "1 Days" }, { "id": "CopyActivityId112", "input": { "ref": "MySqlDataNodeId115" }, "schedule": { "ref": "ScheduleId113" }, "name": "My Copy", "runsOn": { "ref": "Ec2ResourceId116" }, "onSuccess": { "ref": "ActionId1" }, "onFail": { "ref": "SnsAlarmId117" }, "output": { "ref": "S3DataNodeId114" }, "type": "CopyActivity" }, { "id": "S3DataNodeId114", "schedule": { "ref": "ScheduleId113" }, "filePath": "s3://
example-bucket
/rds-output
/output
.csv", "name": "My S3 Data", "type": "S3DataNode" }, { "id": "MySqlDataNodeId115", "username": "my-username
", "schedule": { "ref": "ScheduleId113" }, "name": "My RDS Data", "*password": "my-password
", "table": "table-name
", "connectionString": "jdbc:mysql://your-sql-instance-name
.id
.region-name
.rds.amazonaws.com:3306/database-name
", "selectQuery": "select * from #{table}", "type": "SqlDataNode" }, { "id": "Ec2ResourceId116", "schedule": { "ref": "ScheduleId113" }, "name": "My EC2 Resource", "role": "DataPipelineDefaultRole", "type": "Ec2Resource", "resourceRole": "DataPipelineDefaultResourceRole" }, { "message": "This is a success message.", "id": "ActionId1", "subject": "RDS to S3 copy succeeded!", "name": "My Success Alarm", "role": "DataPipelineDefaultRole", "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic
", "type": "SnsAlarm" }, { "id": "Default", "scheduleType": "timeseries", "failureAndRerunMode": "CASCADE", "name": "Default", "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" }, { "message": "There was a problem executing #{node.name} at for period #{node.@scheduledStartTime} to #{node.@scheduledEndTime}", "id": "SnsAlarmId117", "subject": "RDS to S3 copy failed", "name": "My Failure Alarm", "role": "DataPipelineDefaultRole", "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic
", "type": "SnsAlarm" } ] }
Simpul Data MySQL
Komponen MySqlDataNode pipa input mendefinisikan lokasi untuk data input; dalam hal ini, instans Amazon RDS. MySqlDataNode Komponen input didefinisikan oleh bidang-bidang berikut:
{ "id": "MySqlDataNodeId115", "username": "
my-username
", "schedule": { "ref": "ScheduleId113" }, "name": "My RDS Data", "*password": "my-password
", "table": "table-name
", "connectionString": "jdbc:mysql://your-sql-instance-name
.id
.region-name
.rds.amazonaws.com:3306/database-name
", "selectQuery": "select * from #{table}", "type": "SqlDataNode" },
- Id
Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.
- nama pengguna
Nama pengguna aku basis data yang memiliki izin yang cukup untuk mengambil data dari tabel basis data. Ganti
my-username
dengan nama pengguna Anda.- Jadwal
Sebuah referensi ke komponen jadwal yang kita buat di baris sebelumnya dari file JSON.
- Nama
Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.
- *Kata Sandi
Kata sandi untuk akun database dengan awalan tanda bintang untuk menunjukkan bahwa AWS Data Pipeline harus mengenkripsi nilai kata sandi. Ganti
my-password
dengan kata sandi yang benar untuk pengguna Anda. Bidang kata sandi didahului oleh karakter khusus tanda bintang. Untuk informasi selengkapnya, lihat Karakter khusus.- Tabel
Nama tabel basis data yang mengandung data untuk disalin. Ganti
table-name
dengan nama tabel database Anda.- connectionString
String koneksi JDBC untuk CopyActivity objek untuk terhubung ke database.
- selectQuery
Sebuah query SQL SELECT valid yang menentukan data untuk menyalin dari tabel basis data. Perhatikan bahwa
#{table}
adalah ekspresi yang kembali menggunakan nama tabel yang disediakan oleh variabel “tabel” di baris sebelumnya dari file JSON.- Tipe
SqlDataNode Tipe, yang merupakan instance Amazon RDS menggunakan MySQL dalam contoh ini.
catatan
MySqlDataNode Jenis ini tidak digunakan lagi. Meskipun Anda masih dapat menggunakan MySqlDataNode, kami sarankan untuk menggunakan SqlDataNode.
Simpul Data Amazon S3
Selanjutnya, komponen pipa input S3Output mendefinisikan lokasi untuk file output; dalam hal ini, file CSV di lokasi bucket Amazon S3. DataNode Komponen output S3 didefinisikan oleh bidang-bidang berikut:
{ "id": "S3DataNodeId114", "schedule": { "ref": "ScheduleId113" }, "filePath": "s3://
example-bucket
/rds-output
/output
.csv", "name": "My S3 Data", "type": "S3DataNode" },
- Id
ID yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.
- Jadwal
Sebuah referensi ke komponen jadwal yang kita buat di baris sebelumnya dari file JSON.
- filePath
Jalur ke data yang terkait dengan simpul data, yang merupakan file output CSV dalam contoh ini.
- Nama
Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.
- Tipe
Jenis objek pipeline, yaitu S3 DataNode agar sesuai dengan lokasi tempat data berada, di bucket Amazon S3.
Sumber Daya
Ini adalah definisi sumber daya komputasi yang melakukan operasi penyalinan. Dalam contoh ini, AWS Data Pipeline harus secara otomatis membuat sebuah EC2 instance untuk melakukan tugas copy dan mengakhiri sumber daya setelah tugas selesai. Bidang yang didefinisikan di sini mengontrol pembuatan dan fungsi EC2 instance yang melakukan pekerjaan. Sumber EC2 daya didefinisikan oleh bidang-bidang berikut:
{ "id": "Ec2ResourceId116", "schedule": { "ref": "ScheduleId113" }, "name": "My EC2 Resource", "role": "DataPipelineDefaultRole", "type": "Ec2Resource", "resourceRole": "DataPipelineDefaultResourceRole" },
- Id
ID yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.
- Jadwal
Jadwal untuk membuat sumber daya komputasi ini.
- Nama
Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.
- Peran
IAM role akun yang mengakses sumber daya, seperti mengakses bucket Amazon S3 untuk mengambil data.
- Tipe
Jenis sumber daya komputasi untuk melakukan pekerjaan; dalam hal ini, sebuah EC2 instance. Ada jenis sumber daya lain yang tersedia, seperti EmrCluster tipe.
- resourceRole
Peran IAM dari akun yang menciptakan sumber daya, seperti membuat dan mengonfigurasi EC2 instance atas nama Anda. Peran dan ResourceRole dapat menjadi peran yang sama, tetapi secara terpisah memberikan perincian yang lebih besar dalam konfigurasi keamanan Anda.
Aktifitas
Bagian terakhir dalam file JSON yang merupakan definisi dari aktivitas yang mewakili pekerjaan yang akan dilakukan. Dalam hal ini kami menggunakan CopyActivity komponen untuk menyalin data dari file di bucket Amazon S3 ke file lain. CopyActivity Komponen didefinisikan oleh bidang-bidang berikut:
{ "id": "CopyActivityId112", "input": { "ref": "MySqlDataNodeId115" }, "schedule": { "ref": "ScheduleId113" }, "name": "My Copy", "runsOn": { "ref": "Ec2ResourceId116" }, "onSuccess": { "ref": "ActionId1" }, "onFail": { "ref": "SnsAlarmId117" }, "output": { "ref": "S3DataNodeId114" }, "type": "CopyActivity" },
- Id
ID yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja
- Input
Lokasi data MySQL yang akan disalin
- Jadwal
Jadwal untuk menjalankan kegiatan ini
- Nama
Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja
- runsOn
Sumber daya komputasi yang melakukan pekerjaan yang ditentukan oleh aktivitas ini. Dalam contoh ini, kami memberikan referensi ke EC2 instance yang didefinisikan sebelumnya. Menggunakan
runsOn
bidang AWS Data Pipeline menyebabkan membuat EC2 instance untuk Anda. BidangrunsOn
menunjukkan bahwa sumber daya yang ada di infrastruktur AWS, sedangkan nilai workerGroup tersebut menunjukkan bahwa Anda ingin menggunakan sumber daya lokal Anda sendiri untuk melakukan pekerjaan.- onSuccess
SnsAlarm untuk mengirim jika aktivitas selesai dengan sukses
- onFail
SnsAlarm untuk mengirim jika aktivitas gagal
- Output
Lokasi Amazon S3 dari file output CSV
- Tipe
Jenis aktivitas yang harus dilakukan.
Unggah dan Aktifkan Definisi Alur
Anda harus mengunggah definisi alur Anda dan mengaktifkan alur Anda. Dalam contoh perintah berikut, ganti pipeline_name
dengan label untuk pipeline Anda dan pipeline_file
dengan jalur yang sepenuhnya memenuhi syarat untuk file definisi .json
pipeline.
AWS CLI
Untuk membuat definisi alur Anda dan mengaktifkan alur Anda, gunakan perintah create-pipeline. Perhatikan ID alur Anda, karena Anda akan menggunakan nilai ini dengan sebagian besar perintah CLI.
aws datapipeline create-pipeline --name
{ "pipelineId": "df-00627471SOVYZEXAMPLE" }pipeline_name
--unique-idtoken
Untuk mengunggah definisi pipeline Anda, gunakan put-pipeline-definitionperintah berikut.
aws datapipeline put-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE --pipeline-definition file://MyEmrPipelineDefinition.json
Jika validasi alur Anda berhasil, bidang validationErrors
akan kosong. Anda harus meninjau peringatan apa pun.
Untuk mengaktifkan alur Anda, gunakan perintah activate-pipeline.
aws datapipeline activate-pipeline --pipeline-id df-00627471SOVYZEXAMPLE
Anda dapat memverifikasi bahwa alur Anda muncul dalam daftar alur menggunakan perintah list-pipelines berikut.
aws datapipeline list-pipelines