AWS Data Pipeline tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada dari 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. Konsol AWS Data Pipeline membuat peran ini untuk Anda secara otomatis. Jika Anda belum menggunakan konsol AWS Data Pipeline setidaknya sekali, maka Anda harus membuat peran ini secara manual. Untuk informasi selengkapnya, lihat IAM Role 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 pipeline input mendefinisikan lokasi untuk data input; dalam hal ini, instans Amazon RDS. MySqlDataNodeKomponen 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 nama pengguna saya
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 basis data akun dengan awalan tanda bintang untuk menunjukkan bahwa AWS Data Pipeline harus mengenkripsi nilai kata sandi. Ganti
kata sandi saya 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 basis data Anda.- connectionString
JDBC koneksi string 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
SqlDataNodeJenis, yang merupakan instans Amazon RDS menggunakan MySQL dalam contoh ini.
catatan
Jenis MySqlDataNode tidak lagi digunakan. Meskipun Anda masih dapat menggunakanMySqlDataNode, kami sarankan menggunakanSqlDataNode.
Simpul Data Amazon S3
Selanjutnya, komponen pipa input S3Output mendefinisikan lokasi untuk file output; dalam hal ini, file CSV di lokasi bucket Amazon S3. Output DataNode komponen 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 untuk mencocokkan lokasi tempat data berada, dalam bucket Amazon S3.
Resource
Ini adalah definisi sumber daya komputasi yang melakukan operasi penyalinan. Dalam contoh ini, AWS Data Pipeline harus secara otomatis membuat instans EC2 untuk melakukan tugas menyalin dan mengakhiri sumber daya setelah tugas selesai. Bidang didefinisikan di sini mengontrol pembuatan dan fungsi dari instans EC2 yang melakukan pekerjaan. EC2Resource didefinisikan oleh 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, instans EC2. Ada jenis sumber daya lain yang tersedia, seperti EmrCluster tipe.
- resourceRole
IAM role akun yang menciptakan sumber daya, seperti membuat dan mengonfigurasi instans EC2 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 dalam bucket Amazon S3 ke file lain. Komponen CopyActivity didefinisikan oleh 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 menyediakan referensi ke instans EC2 didefinisikan sebelumnya. Menggunakan bidang
runsOn
menyebabkan AWS Data Pipeline untuk membuat instans EC2 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 alur Anda dan pipeline_file
dengan jalur yang sepenuhnya memenuhi syarat untuk file .json
definisi alur.
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