Azure Data Factory kullanarak Amazon Simple Depolama Service'ten veri taşıma

Not

Bu makale, Data Factory’nin 1. sürümü için geçerlidir. Data Factory hizmetinin geçerli sürümünü kullanıyorsanız bkz. V2'de Amazon S3 bağlayıcısı.

Bu makalede, verileri Amazon Simple Depolama Service'ten (S3) taşımak için Azure Data Factory kopyalama etkinliğinin nasıl kullanılacağı açıklanmaktadır. Kopyalama etkinliğiyle veri taşımaya genel bir genel bakış sunan Veri taşıma etkinlikleri makalesini oluşturur.

Amazon S3'ten desteklenen herhangi bir havuz veri deposuna veri kopyalayabilirsiniz. Kopyalama etkinliği tarafından havuz olarak desteklenen veri depolarının listesi için Desteklenen veri depoları tablosuna bakın. Data Factory şu anda yalnızca Amazon S3'ten diğer veri depolarına veri taşımayı destekler, ancak diğer veri depolarından Amazon S3'e veri taşımayı desteklemez.

Gerekli izinler

Amazon S3'ten veri kopyalamak için size aşağıdaki izinlerin verildiğinden emin olun:

  • s3:GetObject ve s3:GetObjectVersion Amazon S3 Object Operations için.
  • s3:ListBucket Amazon S3 Bucket Operations için. Data Factory Kopyalama Sihirbazı'nı kullanıyorsanız, s3:ListAllMyBuckets bu da gereklidir.

Amazon S3 izinlerinin tam listesi hakkında ayrıntılı bilgi için bkz. İlkedeki İzinleri Belirtme.

Başlarken

Farklı araçlar veya API'ler kullanarak bir Amazon S3 kaynağından veri taşıyan kopyalama etkinliğine sahip bir işlem hattı oluşturabilirsiniz.

İşlem hattı oluşturmanın en kolay yolu Kopyalama Sihirbazı'nı kullanmaktır. Hızlı bir kılavuz için bkz . Öğretici: Kopyalama Sihirbazı'nı kullanarak işlem hattı oluşturma.

İşlem hattı oluşturmak için aşağıdaki araçları da kullanabilirsiniz: Visual Studio, Azure PowerShell, Azure Resource Manager şablonu, .NET API ve REST API. Kopyalama etkinliğiyle işlem hattı oluşturmaya yönelik adım adım yönergeler için Kopyalama etkinliği öğreticisine bakın.

İster araçları ister API'leri kullanın, bir kaynak veri deposundan havuz veri deposuna veri taşıyan bir işlem hattı oluşturmak için aşağıdaki adımları gerçekleştirin:

  1. Giriş ve çıkış veri depolarını veri fabrikanıza bağlamak için bağlı hizmetler oluşturun.
  2. Kopyalama işlemi için giriş ve çıkış verilerini temsil eden veri kümeleri oluşturun.
  3. Veri kümesini giriş, veri kümesini çıkış olarak alan kopyalama etkinliğine sahip bir işlem hattı oluşturun.

Sihirbazı kullandığınızda, bu Data Factory varlıkları (bağlı hizmetler, veri kümeleri ve işlem hattı) için JSON tanımları sizin için otomatik olarak oluşturulur. Araçları veya API'leri (.NET API hariç) kullandığınızda, JSON biçimini kullanarak bu Data Factory varlıklarını tanımlarsınız. Bir Amazon S3 veri deposundan veri kopyalamak için kullanılan Data Factory varlıkları için JSON tanımlarına sahip bir örnek için bu makalenin JSON örneği: Amazon S3'ten Azure Blob'a veri kopyalama bölümüne bakın.

Not

Kopyalama etkinliği için desteklenen dosya ve sıkıştırma biçimleri hakkında ayrıntılı bilgi için bkz. Azure Data Factory'da dosya ve sıkıştırma biçimleri.

Aşağıdaki bölümlerde, Amazon S3'e özgü Data Factory varlıklarını tanımlamak için kullanılan JSON özellikleri hakkında ayrıntılar sağlanır.

Bağlı hizmet özellikleri

Bağlı hizmet, veri deposunu bir veri fabrikasına bağlar. Amazon S3 veri deponuzu veri fabrikanıza bağlamak için AwsAccessKey türünde bir bağlı hizmet oluşturursunuz. Aşağıdaki tabloda, Amazon S3 (AwsAccessKey) bağlı hizmetine özgü JSON öğeleri için açıklama sağlanır.

Özellik Açıklama İzin verilen değerler Gerekli
accessKeyID Gizli anahtar erişim anahtarının kimliği. string Yes
secretAccessKey Gizli dizi erişim anahtarının kendisi. Şifrelenmiş gizli dizi dizesi Yes

Not

Bu bağlayıcı, Amazon S3'ten veri kopyalamak için IAM hesabının erişim anahtarlarını gerektirir. Geçici Güvenlik Kimlik Bilgileri desteklenmiyor.

Örnek aşağıda verilmiştir:

{
    "name": "AmazonS3LinkedService",
    "properties": {
        "type": "AwsAccessKey",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": "<secret access key>"
        }
    }
}

Veri kümesi özellikleri

Azure Blob depolamada giriş verilerini temsil eden bir veri kümesi belirtmek için veri kümesinin tür özelliğini AmazonS3 olarak ayarlayın. Veri kümesinin linkedServiceName özelliğini Amazon S3 bağlı hizmetinin adına ayarlayın. Veri kümelerini tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için bkz. Veri kümeleri oluşturma.

Yapı, kullanılabilirlik ve ilke gibi bölümler tüm veri kümesi türleri (SQL veritabanı, Azure blobu ve Azure tablosu gibi) için benzerdir. typeProperties bölümü her veri kümesi türünden farklıdır ve veri deposundaki verilerin konumu hakkında bilgi sağlar. AmazonS3 (Amazon S3 veri kümesini içerir) türünde bir veri kümesinin typeProperties bölümü aşağıdaki özelliklere sahiptir:

Özellik Açıklama İzin verilen değerler Gerekli
bucketName S3 demet adı. Dize Yes
anahtar S3 nesne anahtarı. Dize No
Önek S3 nesne anahtarının ön eki. Anahtarları bu ön ek ile başlayan nesneler seçilir. Yalnızca anahtar boş olduğunda geçerlidir. Dize No
sürüm S3 sürüm oluşturma etkinleştirildiyse, S3 nesnesinin sürümü. Dize No
biçim Aşağıdaki biçim türleri desteklenir: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. biçim altındaki type özelliğini bu değerlerden birine ayarlayın. Daha fazla bilgi için Metin biçimi, JSON biçimi, Avro biçimi, Ork biçimi ve Parquet biçimi bölümlerine bakın.

Dosyaları dosya tabanlı depolar (ikili kopya) arasında olduğu gibi kopyalamak istiyorsanız, hem giriş hem de çıkış veri kümesi tanımlarında biçim bölümünü atlayın.
No
sıkıştırma Veriler için sıkıştırma türünü ve düzeyini belirtin. Desteklenen türler şunlardır: GZip, Deflate, BZip2 ve ZipDeflate. Desteklenen düzeyler şunlardır: En uygun ve en hızlı. Daha fazla bilgi için bkz. Azure Data Factory'da dosya ve sıkıştırma biçimleri. No

Not

bucketName + key , S3 nesnesinin konumunu belirtir; burada demet S3 nesnelerinin kök kapsayıcısı ve anahtar da S3 nesnesinin tam yoludur.

Ön ekli örnek veri kümesi

{
    "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
    }
}

Örnek veri kümesi (sürüm ile)

{
    "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
    }
}

S3 için dinamik yollar

Yukarıdaki örnekte Amazon S3 veri kümesindeki key ve bucketName özellikleri için sabit değerler kullanılmaktadır.

"key": "testFolder/test.orc",
"bucketName": "testbucket",

Data Factory'nin bu özellikleri çalışma zamanında SliceStart gibi sistem değişkenlerini kullanarak dinamik olarak hesaplamasını sağlayabilirsiniz.

"key": "$$Text.Format('{0:MM}/{0:dd}/test.orc', SliceStart)"
"bucketName": "$$Text.Format('{0:yyyy}', SliceStart)"

Aynı işlemi Amazon S3 veri kümesinin ön ek özelliği için de yapabilirsiniz. Desteklenen işlevlerin ve değişkenlerin listesi için bkz. Data Factory işlevleri ve sistem değişkenleri.

Kopyalama etkinliğinin özellikleri

Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için bkz. İşlem hattı oluşturma. Ad, açıklama, giriş ve çıkış tabloları ve ilkeler gibi özellikler tüm etkinlik türleri için kullanılabilir. Etkinliğin typeProperties bölümünde bulunan özellikler her etkinlik türüne göre değişir. Kopyalama etkinliği için, özellikler kaynak ve havuz türlerine bağlı olarak değişir. Kopyalama etkinliğindeki bir kaynak FileSystemSource türündeyse (Amazon S3 içerir), typeProperties bölümünde aşağıdaki özellik kullanılabilir:

Özellik Açıklama İzin verilen değerler Gerekli
Özyinelemeli Dizinin altındaki S3 nesnelerinin özyinelemeli olarak listelenip listelenmeyeceğini belirtir. true/false No

JSON örneği: Amazon S3'ten Azure Blob depolamaya veri kopyalama

Bu örnek, Amazon S3'ten Azure Blob depolama alanına veri kopyalamayı gösterir. Ancak veriler, Data Factory'deki kopyalama etkinliği kullanılarak desteklenen havuzlardan herhangi birine doğrudan kopyalanabilir.

Örnek, aşağıdaki Data Factory varlıkları için JSON tanımları sağlar. Visual Studio veyaPowerShell kullanarak Amazon S3'ten Blob depolamaya veri kopyalamak için işlem hattı oluşturmak için bu tanımları kullanabilirsiniz.

Örnek, Amazon S3'teki verileri saatte bir Azure blob'a kopyalar. Bu örneklerde kullanılan JSON özellikleri, örnekleri izleyen bölümlerde açıklanmıştır.

Amazon S3 bağlı hizmeti

{
    "name": "AmazonS3LinkedService",
    "properties": {
        "type": "AwsAccessKey",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": "<secret access key>"
        }
    }
}

Azure Storage bağlı hizmeti

{
  "name": "AzureStorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Amazon S3 giriş veri kümesi

"dış" ayarı: true, Data Factory hizmetine veri kümesinin veri fabrikasının dışında olduğunu bildirir. İşlem hattındaki bir etkinlik tarafından üretilmeyen bir giriş veri kümesinde bu özelliği true olarak ayarlayın.

    {
        "name": "AmazonS3InputDataset",
        "properties": {
            "type": "AmazonS3",
            "linkedServiceName": "AmazonS3LinkedService",
            "typeProperties": {
                "key": "testFolder/test.orc",
                "bucketName": "testbucket",
                "format": {
                    "type": "OrcFormat"
                }
            },
            "availability": {
                "frequency": "Hour",
                "interval": 1
            },
            "external": true
        }
    }

Azure Blob çıktı veri kümesi

Veriler saatte bir yeni bir bloba yazılır (sıklık: saat, aralık: 1). Blobun klasör yolu, işlenen dilimin başlangıç zamanına göre dinamik olarak değerlendirilir. Klasör yolu başlangıç saatinin yıl, ay, gün ve saat bölümlerini kullanır.

{
    "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
        }
    }
}

Amazon S3 kaynağı ve blob havuzu içeren bir işlem hattında Kopyalama etkinliği

İşlem hattı, giriş ve çıkış veri kümelerini kullanacak şekilde yapılandırılmış bir kopyalama etkinliği içerir ve saatte bir çalışacak şekilde zamanlanır. İşlem hattı JSON tanımında kaynak türü FileSystemSource, havuz türü ise BlobSink olarak ayarlanır.

{
    "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"
    }
}

Not

Kaynak veri kümesindeki sütunları havuz veri kümesindeki sütunlara eşlemek için bkz. Azure Data Factory'de veri kümesi sütunlarını eşleme.

Sonraki adımlar

Aşağıdaki makalelere bakın: