Memindahkan data dari Amazon Simple Storage Service dengan menggunakan Azure Data Factory
Catatan
Artikel ini berlaku untuk versi 1 dari Data Factory. Jika Anda menggunakan versi layanan Azure Data Factory saat ini, lihat Konektor Amazon S3 di V2.
Artikel ini menjelaskan cara menggunakan aktivitas penyalinan di Azure Data Factory untuk memindahkan data dari Amazon Simple Storage Service (S3). Ini dibuat di atas artikel Aktivitas Perpindahan Data, yang menyajikan gambaran umum tentang perpindahan data dengan aktivitas penyalinan.
Anda dapat menyalin data dari Amazon S3 ke penyimpanan data sink yang didukung. Untuk daftar penyimpanan data yang didukung sebagai sink oleh aktivitas penyalinan, lihat tabel Penyimpanan data yang didukung. Azure Data Factory saat ini hanya mendukung pemindahan data dari Amazon S3 ke penyimpanan data lain, tetapi tidak memindahkan data dari penyimpanan data lain ke Amazon S3.
Izin yang diperlukan
Untuk menyalin data dari Amazon S3, pastikan Anda telah diberikan izin berikut:
s3:GetObjectdans3:GetObjectVersionuntuk Operasi Objek Amazon S3.s3:ListBucketuntuk Operasi Wadah Amazon S3. Jika Anda menggunakan Data Factory Copy Wizard,s3:ListAllMyBucketsjuga diperlukan.
Untuk detail tentang daftar lengkap izin Amazon S3, lihat Menentukan Izin dalam Azure Policy.
Memulai
Anda dapat membuat alur dengan aktivitas penyalinan yang memindahkan data dari sumber Amazon S3 dengan menggunakan alat atau API yang berbeda.
Cara termudah untuk membuat alur adalah dengan menggunakan Copy Wizard. Untuk panduan singkat, lihat Tutorial: Membuat alur menggunakan Copy Wizard.
Anda juga dapat menggunakan alat berikut untuk membuat alur: Visual Studio, Microsoft Azure PowerShell, templat Azure Resource Manager, .NET API, dan REST API. Untuk instruksi langkah demi langkah guna membuat alur dengan aktivitas penyalinan, lihat Tutorial aktivitas penyalinan.
Apakah Anda menggunakan alat atau API, Anda dapat melakukan langkah-langkah berikut untuk membuat alur yang memindahkan data dari penyimpanan data sumber ke penyimpanan data sink:
- Buat layanan tertaut untuk menautkan penyimpanan data input dan output ke pabrik data Anda.
- Buat kumpulan data untuk mewakili data input dan output untuk operasi salin.
- Buat jalur dengan aktivitas salinan yang mengambil set data sebagai input dan set data sebagai output.
Saat Anda menggunakan wizard, definisi JSON untuk entitas Data Factory ini (layanan tertaut, himpunan data, dan alur) akan dibuat secara otomatis untuk Anda. Saat Anda menggunakan alat/API (kecuali .NET API), Anda akan menentukan entitas Data Factory ini dengan menggunakan format JSON. Untuk contoh dengan definisi JSON untuk entitas Data Factory yang digunakan untuk menyalin data dari penyimpanan data Amazon S3, lihat bagian Contoh JSON: Menyalin data dari Amazon S3 ke Blob Azure di artikel ini.
Catatan
Untuk detail tentang format file dan kompresi yang didukung untuk aktivitas penyalinan, lihat Format file dan kompresi di Azure Data Factory.
Bagian berikut menyediakan detail tentang properti JSON yang digunakan untuk menentukan entitas Azure Data Factory khusus untuk Amazon S3.
Properti layanan tertaut
Layanan tertaut menghubungkan penyimpanan data ke pabrik data. Anda membuat layanan tertaut jenis AwsAccessKey untuk menghubungkan penyimpanan data Amazon S3 Anda ke pabrik data Anda. Tabel berikut memberikan deskripsi untuk elemen JSON khusus untuk layanan tertaut Amazon S3 (AwsAccessKey).
| Properti | Deskripsi | Nilai yang diizinkan | Diperlukan |
|---|---|---|---|
| accessKeyID | ID dari kunci akses rahasia. | string | Ya |
| secretAccessKey | Kunci akses rahasia itu sendiri. | String rahasia terenkripsi | Ya |
Catatan
Konektor ini memerlukan kunci akses untuk akun Manajemen Identitas & Akses untuk menyalin data dari Amazon S3. Info Masuk Keamanan Sementara tidak didukung.
Berikut ini contohnya:
{
"name": "AmazonS3LinkedService",
"properties": {
"type": "AwsAccessKey",
"typeProperties": {
"accessKeyId": "<access key id>",
"secretAccessKey": "<secret access key>"
}
}
}
Properti himpunan data
Untuk menentukan himpunan data guna mewakili data input di penyimpanan Blob Azure, atur properti jenis himpunan data ke AmazonS3. Atur properti linkedServiceName dari himpunan data ke nama layanan tertaut Amazon S3. Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat Membuat himpunan data.
Bagian seperti struktur, ketersediaan, dan kebijakan serupa untuk semua jenis himpunan data (seperti database SQL, blob Azure, dan tabel Azure). Bagian typeProperties berbeda untuk setiap jenis himpunan data dan memberikan informasi tentang lokasi data di penyimpanan data. Bagian typeProperties untuk himpunan data jenis AmazonS3 (yang mencakup himpunan data Amazon S3) memiliki properti berikut:
| Properti | Deskripsi | Nilai yang diizinkan | Diperlukan |
|---|---|---|---|
| bucketName | Nama wadah S3. | String | Ya |
| kunci | Tombol objek S3. | String | Tidak |
| awalan | Awalan untuk kunci objek S3. Obyek yang kuncinya dimulai dengan awalan ini dipilih. Hanya berlaku ketika kunci kosong. | String | Tidak |
| versi | Versi objek S3, jika penerapan versi S3 diaktifkan. | String | Tidak |
| format | Jenis format berikut didukung: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. Atur properti jenis di bawah format ke salah satu nilai ini. Untuk informasi selengkapnya, lihat bagian Format Teks, Format JSON, Format Avro, Format Orc, dan Format Parquet. Jika Anda ingin menyalin file sebagaimana adanya antara penyimpanan berbasis file (salinan biner), lewati bagian format di definisi himpunan data input dan output. |
Tidak | |
| compression | Tentukan jenis dan tingkat kompresi untuk data. Jenis yang didukung adalah: GZip, Deflate, BZip2, dan ZipDeflate. Tingkat yang didukung adalah: Optimal dan Tercepat. Untuk mengetahui informasi selengkapnya, lihat Format file dan kompresi di Azure Data Factory. | Tidak |
Catatan
bucketName + key menentukan lokasi objek S3, yang wadahnya adalah wadah root untuk objek S3 dan kuncinya adalah jalur lengkap ke objek S3.
Contoh himpunan data dengan awalan
{
"name": "dataset-s3",
"properties": {
"type": "AmazonS3",
"linkedServiceName": "link- testS3",
"typeProperties": {
"prefix": "testFolder/test",
"bucketName": "testbucket",
"format": {
"type": "OrcFormat"
}
},
"availability": {
"frequency": "Hour",
"interval": 1
},
"external": true
}
}
Contoh himpunan data (dengan versi)
{
"name": "dataset-s3",
"properties": {
"type": "AmazonS3",
"linkedServiceName": "link- testS3",
"typeProperties": {
"key": "testFolder/test.orc",
"bucketName": "testbucket",
"version": "XXXXXXXXXczm0CJajYkHf0_k6LhBmkcL",
"format": {
"type": "OrcFormat"
}
},
"availability": {
"frequency": "Hour",
"interval": 1
},
"external": true
}
}
Jalur dinamis untuk S3
Contoh sebelumnya menggunakan nilai tetap untuk properti key dan bucketName di himpunan data Amazon S3.
"key": "testFolder/test.orc",
"bucketName": "testbucket",
Anda dapat meminta Azure Data Factory menghitung properti ini secara dinamis saat runtime dengan menggunakan variabel sistem seperti SliceStart.
"key": "$$Text.Format('{0:MM}/{0:dd}/test.orc', SliceStart)"
"bucketName": "$$Text.Format('{0:yyyy}', SliceStart)"
Anda dapat melakukan hal yang sama untuk properti awalan dari himpunan data Amazon S3. Untuk daftar fungsi dan variabel yang didukung, lihat Fungsi dan variabel sistem Azure Data Factory.
Properti aktivitas penyalinan
Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan aktivitas, lihat Membuat alur. Properti seperti nama, deskripsi, tabel input dan output, serta kebijakan tersedia untuk semua jenis aktivitas. Properti yang tersedia di bagian typeProperties dari aktivitas akan berbeda-beda untuk setiap jenis aktivitas. Untuk aktivitas penyalinan, properti bervariasi bergantung pada jenis sumber dan sink. Saat sumber dalam aktivitas penyalinan berjenis FileSystemSource (termasuk Amazon S3), properti berikut tersedia di bagian typeProperties:
| Properti | Deskripsi | Nilai yang diizinkan | Diperlukan |
|---|---|---|---|
| rekursif | Menentukan apakah akan secara rekursif mencantumkan objek S3 di bawah direktori. | benar/salah | Tidak |
Contoh JSON: Menyalin data dari Amazon S3 ke penyimpanan Blob Azure
Contoh ini menunjukkan cara menyalin data dari Amazon S3 ke penyimpanan Blob Azure. Namun, data dapat disalin langsung ke salah satu sink yang didukung dengan menggunakan aktivitas penyalinan di Azure Data Factory.
Contoh tersebut memberikan definisi JSON untuk entitas Data Factory berikut. Anda dapat menggunakan definisi ini untuk membuat alur untuk menyalin data dari Amazon S3 ke penyimpanan Blob dengan menggunakan Visual Studio atau PowerShell.
- Layanan tertaut dari jenis AwsAccessKey.
- Layanan tertaut dari jenis AzureStorage.
- Himpunan data input dari jenis AmazonS3.
- Himpunan data output dari jenis AzureBlob.
- Sebuah alur dengan aktivitas penyalinan yang menggunakan FileSystemSource dan BlobSink.
Contoh menyalin data dari Amazon S3 ke blob Azure setiap jam. Properti JSON yang digunakan dalam contoh ini dijelaskan di bagian setelah contoh.
Layanan tertaut Amazon S3
{
"name": "AmazonS3LinkedService",
"properties": {
"type": "AwsAccessKey",
"typeProperties": {
"accessKeyId": "<access key id>",
"secretAccessKey": "<secret access key>"
}
}
}
Layanan tertaut Microsoft Azure Storage
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
}
}
}
Himpunan data input Amazon S3
Pengaturan "external": true memberi tahu layanan Data Factory bahwa himpunan data berada di luar pabrik data. Atur properti ini ke true pada himpunan data input yang tidak dihasilkan oleh aktivitas di alur.
{
"name": "AmazonS3InputDataset",
"properties": {
"type": "AmazonS3",
"linkedServiceName": "AmazonS3LinkedService",
"typeProperties": {
"key": "testFolder/test.orc",
"bucketName": "testbucket",
"format": {
"type": "OrcFormat"
}
},
"availability": {
"frequency": "Hour",
"interval": 1
},
"external": true
}
}
Himpunan data output Blob Azure
Data ditulis ke blob baru setiap jam (frekuensi: jam, interval: 1). Jalur folder untuk blob dievaluasi secara dinamis berdasarkan waktu mulai irisan yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, hari, dan jam dari waktu mulai.
{
"name": "AzureBlobOutputDataSet",
"properties": {
"type": "AzureBlob",
"linkedServiceName": "AzureStorageLinkedService",
"typeProperties": {
"folderPath": "mycontainer/fromamazons3/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
"format": {
"type": "TextFormat",
"rowDelimiter": "\n",
"columnDelimiter": "\t"
},
"partitionedBy": [
{
"name": "Year",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "yyyy"
}
},
{
"name": "Month",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "MM"
}
},
{
"name": "Day",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "dd"
}
},
{
"name": "Hour",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "HH"
}
}
]
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
Menyalin aktivitas di alur dengan sumber Amazon S3 dan blob sink
Alur berisi aktivitas penyalinan yang dikonfigurasi untuk menggunakan himpunan data input dan output, serta dijadwalkan untuk berjalan setiap jam. Dalam definisi alur JSON, jenis sumber diatur ke FileSystemSource dan jenis sink diatur ke BlobSink.
{
"name": "CopyAmazonS3ToBlob",
"properties": {
"description": "pipeline for copy activity",
"activities": [
{
"type": "Copy",
"typeProperties": {
"source": {
"type": "FileSystemSource",
"recursive": true
},
"sink": {
"type": "BlobSink",
"writeBatchSize": 0,
"writeBatchTimeout": "00:00:00"
}
},
"inputs": [
{
"name": "AmazonS3InputDataset"
}
],
"outputs": [
{
"name": "AzureBlobOutputDataSet"
}
],
"policy": {
"timeout": "01:00:00",
"concurrency": 1
},
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"name": "AmazonS3ToBlob"
}
],
"start": "2014-08-08T18:00:00Z",
"end": "2014-08-08T19:00:00Z"
}
}
Catatan
Untuk memetakan kolom dari himpunan data sumber ke kolom dari himpunan data sink, lihat Memetakan kolom himpunan data di Azure Data Factory.
Langkah berikutnya
Lihat artikel berikut ini:
Untuk mempelajari tentang faktor-faktor utama yang memengaruhi kinerja perpindahan data (aktivitas penyalinan) di Azure Data Factory dan berbagai cara untuk mengoptimalkannya, lihat Kinerja dan panduan pengaturan aktivitas penyalinan.
Untuk instruksi langkah demi langkah dalam membuat alur dengan aktivitas penyalinan, lihat Tutorial aktivitas penyalinan.