Copiar dados do Serviço de Armazenamento Simples da Amazon utilizando a Azure Data Factory ou a Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este artigo descreve como copiar dados do Amazon Simple Armazenamento Service (Amazon S3). Para saber mais, leia os artigos introdutórios para Azure Data Factory e Synapse Analytics.

Dica

Para saber mais sobre o cenário de migração de dados da Amazon S3 para a Azure Armazenamento, consulte os dados migratórios da Amazon S3 para a Azure Armazenamento.

Capacidades suportadas

Este conector Amazon S3 é suportado para as seguintes atividades:

Especificamente, este conector Amazon S3 suporta a cópia de ficheiros como está ou a analisar ficheiros com os formatos de ficheiros suportados e os codecs de compressão. Também pode optar por preservar os metadados de ficheiros durante a cópia. O conector utiliza a versão 4 da assinatura AWS para autenticar pedidos para S3.

Dica

Se pretender copiar dados de qualquer fornecedor de armazenamento compatível com S3, consulte o Armazenamento Compatível com o Amazon S3.

Permissões obrigatórias

Para copiar dados do Amazon S3, certifique-se de que lhe foram concedidas as seguintes permissões para operações de objetos Amazon S3: s3:GetObject e s3:GetObjectVersion .

Se utilizar a UI da Data Factory para autor, são necessárias permissões adicionais s3:ListAllMyBuckets para s3:ListBucket / s3:GetBucketLocation operações como testar a ligação ao serviço ligado e navegar a partir da raiz. Se não quiser conceder estas permissões, pode escolher as opções de "Testar a ligação para o caminho do ficheiro" ou "Navegar a partir do caminho especificado" a partir da UI.

Para obter a lista completa das permissões do Amazon S3, consulte especificar permissões numa política no site da AWS.

Introdução

Para realizar a atividade Copy com um pipeline, pode utilizar uma das seguintes ferramentas ou SDKs:

Criar um serviço de Armazenamento (S3) da Amazon usando uI

Use os seguintes passos para criar um serviço ligado ao Amazon S3 no portal Azure UI.

  1. Navegue no separador Gerir na sua Fábrica de Dados Azure ou no espaço de trabalho synapse e selecione Serviços Ligados e, em seguida, clique em Novo:

  2. Procure na Amazon e selecione o conector Amazon S3.

    Screenshot do conector Amazon S3.

  3. Configure os detalhes do serviço, teste a ligação e crie o novo serviço ligado.

    Screenshot da configuração para um serviço ligado ao Amazon S3.

Detalhes da configuração do conector

As secções seguintes fornecem detalhes sobre propriedades que são usadas para definir entidades da Data Factory específicas do Amazon S3.

Propriedades de serviço ligadas

As seguintes propriedades são suportadas para um serviço ligado à Amazon S3:

Propriedade Descrição Obrigatório
tipo A propriedade tipo deve ser definida para AmazonS3. Yes
authenticationType Especifique o tipo de autenticação utilizado para ligar ao Amazon S3. Pode optar por utilizar as chaves de acesso para uma conta AWS Identity and Access Management (IAM) ou credenciais de segurança temporárias.
Os valores permitidos são: AccessKey (padrão) e TemporarySecurityCredentials .
No
accessKeyId Identificação da chave de acesso secreta. Yes
SecretAccessKey A chave de acesso secreto em si. Marque este campo como um SecureString para armazená-lo de forma segura, ou fazer referência a um segredo armazenado no Cofre da Chave Azure. Yes
sessionToken Aplicável ao utilizar a autenticação temporária de credenciais de segurança. Saiba como solicitar credenciais de segurança temporárias à AWS.
Nota AWS a credencial temporária expira entre 15 minutos a 36 horas com base em configurações. Certifique-se de que a sua credencial é válida quando a atividade executa, especialmente para a carga de trabalho operacionalizada - por exemplo, pode aurépi-la periodicamente e armazená-la no Cofre da Chave Azure.
Marque este campo como um SecureString para armazená-lo de forma segura, ou fazer referência a um segredo armazenado no Cofre da Chave Azure.
No
serviceUrl Especificar o ponto final personalizado S3 https://<service url> . No
connectVia O tempo de integração a ser utilizado para ligar à loja de dados. Pode utilizar o tempo de funcionamento da integração Azure ou o tempo de integração auto-hospedado (se a sua loja de dados estiver numa rede privada). Se esta propriedade não for especificada, o serviço utiliza o tempo de execução de integração Azure padrão. No

Exemplo: utilização da autenticação da chave de acesso

{
    "name": "AmazonS3LinkedService",
    "properties": {
        "type": "AmazonS3",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": {
                "type": "SecureString",
                "value": "<secret access key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemplo: utilização de autenticação de credencial de segurança temporária

{
    "name": "AmazonS3LinkedService",
    "properties": {
        "type": "AmazonS3",
        "typeProperties": {
            "authenticationType": "TemporarySecurityCredentials",
            "accessKeyId": "<access key id>",
            "secretAccessKey": {
                "type": "SecureString",
                "value": "<secret access key>"
            },
            "sessionToken": {
                "type": "SecureString",
                "value": "<session token>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Dataset properties (Propriedades do conjunto de dados)

Para obter uma lista completa de secções e propriedades disponíveis para definir conjuntos de dados, consulte o artigo Datasets.

A Azure Data Factory suporta os seguintes formatos de ficheiros. Consulte cada artigo para obter definições baseadas em formato.

As seguintes propriedades são suportadas para o Amazon S3 location em configurações num conjunto de dados baseado em formato:

Propriedade Descrição Obrigatório
tipo A propriedade tipo location em baixo num conjunto de dados deve ser definida para AmazonS3Location. Yes
baldeName O nome do balde S3. Yes
folderPath O caminho para a pasta sob o balde dado. Se pretender utilizar um wildcard para filtrar a pasta, ignore esta definição e especifique-a nas definições de origem de atividade. No
fileName O nome do ficheiro sob o caminho do balde e da pasta. Se pretender utilizar um wildcard para filtrar ficheiros, ignore esta definição e especifique-a nas definições de origem de atividade. No
versão A versão do objeto S3, se a versão S3 estiver ativada. Se não for especificado, a versão mais recente será recolhida. No

Exemplo:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<Amazon S3 linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AmazonS3Location",
                "bucketName": "bucketname",
                "folderPath": "folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

Propriedades da atividade Copy

Para obter uma lista completa de secções e propriedades disponíveis para definir atividades, consulte o artigo Pipelines. Esta secção fornece uma lista de propriedades que a fonte do Amazon S3 suporta.

Amazon S3 como tipo de fonte

A Azure Data Factory suporta os seguintes formatos de ficheiros. Consulte cada artigo para obter definições baseadas em formato.

As seguintes propriedades são suportadas para o Amazon S3 storeSettings em configurações numa fonte de cópia baseada em formato:

Propriedade Descrição Obrigatório
tipo A propriedade tipo em baixo storeSettings deve ser definida para AmazonS3ReadSettings. Yes
Localize os ficheiros para copiar:
OPÇÃO 1: caminho estático
Copiar a partir do balde dado ou do caminho da pasta/ficheiro especificado no conjunto de dados. Se pretender copiar todos os ficheiros de um balde ou pasta, especificar ainda wildcardFileName como * .
OPÇÃO 2: Prefixo S3
- prefixo
Prefixo para o nome da chave S3 sob o balde dado configurado num conjunto de dados para filtrar ficheiros S3 de origem. As teclas S3 cujos nomes começam bucket_in_dataset/this_prefix por ser selecionadas. Utiliza o filtro do lado de serviço da S3, que proporciona um melhor desempenho do que um filtro wildcard.

Quando utilizar o prefixo e optar por copiar para a pia baseada em ficheiros com hierarquia de preservação, note o sub-caminho após a preservação do último "/" no prefixo. Por exemplo, tem fonte bucket/folder/subfolder/file.txt , e configurar prefixo como folder/sub , então o caminho de arquivo preservado é subfolder/file.txt .
No
OPÇÃO 3: wildcard
- wildcardFolderPath
O caminho da pasta com caracteres wildcard sob o balde dado configurado num conjunto de dados para filtrar pastas de origem.
Os wildcards permitidos são: * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou caracteres individuais). Use ^ para escapar se o nome da sua pasta tiver um wildcard ou este personagem de fuga no interior.
Veja mais exemplos em exemplos de pasta e filtro de ficheiros.
No
OPÇÃO 3: wildcard
- wildcardFileName
O nome do ficheiro com caracteres wildcard sob o caminho do balde e da pasta (ou caminho da pasta wildcard) para filtrar ficheiros de origem.
Os wildcards permitidos são: * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou caracteres individuais). Use ^ para escapar se o seu nome de ficheiro tiver um wildcard ou este personagem de fuga dentro. Veja mais exemplos em exemplos de pasta e filtro de ficheiros.
Yes
OPÇÃO 4: uma lista de ficheiros
- fileListPath
Indica copiar um determinado conjunto de ficheiros. Aponte para um ficheiro de texto que inclua uma lista de ficheiros que pretende copiar, um ficheiro por linha, que é o caminho relativo para o caminho configurado no conjunto de dados.
Quando estiver a utilizar esta opção, não especifique um nome de ficheiro no conjunto de dados. Ver mais exemplos em exemplos da lista de ficheiros.
No
Definições adicionais:
recursivo Indica se os dados são lidos novamente a partir das sub-dobradeiras ou apenas a partir da pasta especificada. Note que quando a recursiva é definida como verdadeira e a pia é uma loja baseada em ficheiros, uma pasta ou sub-dobrador vazio não é copiado ou criado na pia.
Os valores permitidos são verdadeiros (padrão) e falsos.
Esta propriedade não se aplica quando se fileListPath configura.
No
eliminarFilesAfterCompletion Indica se os ficheiros binários serão eliminados da loja de origem depois de se mudarem com sucesso para a loja de destino. A eliminação do ficheiro é por ficheiro, pelo que quando a atividade da cópia falhar, verá que alguns ficheiros já foram copiados para o destino e eliminados da fonte, enquanto outros ainda permanecem na loja de origem.
Esta propriedade é válida apenas em cenário de cópia de ficheiros binários. O valor predefinido: falso.
No
modificadoDatetimeStart Os ficheiros são filtrados com base no atributo: última modificada.
Os ficheiros serão selecionados se o seu último tempo modificado estiver dentro do intervalo de tempo entre modifiedDatetimeStart e modifiedDatetimeEnd . . O tempo é aplicado a um fuso horário UTC no formato de "2018-12-01T05:00:00Z".
As propriedades podem ser NUAS, o que significa que nenhum filtro de atributos de ficheiro será aplicado no conjunto de dados. Quando modifiedDatetimeStart tiver um valor de data, mas é modifiedDatetimeEnd NU, serão selecionados os ficheiros cujo último atributo modificado é superior ou igual ao valor da data. Quando modifiedDatetimeEnd tiver um valor de data mas é modifiedDatetimeStart NU, serão selecionados os ficheiros cujo último atributo modificado é inferior ao valor da data.
Esta propriedade não se aplica quando se fileListPath configura.
No
modificadoDatetimeEnd Mesmo que acima. No
permitirPartitionDiscovery Para os ficheiros que são divididos, especifique se analisar as divisórias do caminho do ficheiro e adicioná-las como colunas de origem adicionais.
Os valores permitidos são falsos (padrão) e verdadeiros.
No
partitionRootPath Quando a descoberta da partição estiver ativada, especifique o caminho da raiz absoluta para ler as pastas partidas como colunas de dados.

Se não for especificado, por defeito,
- Quando utiliza o caminho do ficheiro no conjunto de dados ou na lista de ficheiros na fonte, o caminho da raiz da partição é o caminho configurado no conjunto de dados.
- Quando utiliza o filtro de pasta wildcard, o caminho da raiz da partição é o sub-caminho antes do primeiro wildcard.
- Quando se utiliza prefixo, o caminho da raiz da partição é sub-caminho antes do último "/".

Por exemplo, assumindo que configura o caminho no conjunto de dados como "raiz/pasta/ano=2020/mês=08/dia=27":
- Se especificar o caminho da raiz da partição como "raiz/pasta/ano=2020", a atividade da cópia gerará mais duas colunas month e com o valor day "08" e "27", respectivamente, para além das colunas dentro dos ficheiros.
- Se não for especificado o caminho da raiz da partição, não será gerada nenhuma coluna extra.
No
maxConcurrentConnections O limite superior das ligações simultâneas estabelecidas na loja de dados durante a atividade. Especifique um valor apenas quando pretende limitar ligações simultâneas. No

Exemplo:

"activities":[
    {
        "name": "CopyFromAmazonS3",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "AmazonS3ReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Exemplos de filtro de pasta e ficheiro

Esta secção descreve o comportamento resultante do caminho da pasta e nome do ficheiro com filtros wildcard.

balde key recursivo Estrutura de pasta de origem e resultado do filtro (os ficheiros em negrito são recuperados)
balde Folder*/* false balde
    Pasta
        File1.csv
        File2.js
        Sub-página1
            File3.csv
            File4.js
            File5.csv
    Outra 14h
        File6.csv
balde Folder*/* true balde
    Pasta
        File1.csv
        File2.js
        Sub-página1
            File3.csv
            File4.js
            File5.csv
    Outra 14h
        File6.csv
balde Folder*/*.csv false balde
    Pasta
        File1.csv
        File2.js
        Sub-página1
            File3.csv
            File4.js
            File5.csv
    Outra 14h
        File6.csv
balde Folder*/*.csv true balde
    Pasta
        File1.csv
        File2.js
        Sub-página1
            File3.csv
            File4.js
            File5.csv
    Outra 14h
        File6.csv

Exemplos de lista de ficheiros

Esta secção descreve o comportamento resultante da utilização de um caminho de lista de ficheiros numa fonte de atividade copy.

Assuma que tem a seguinte estrutura de pasta de origem e quer copiar os ficheiros em negrito:

Estrutura de origem da amostra Conteúdo em FileListToCopy.txt Configuração
balde
    Pasta
        File1.csv
        File2.js
        Sub-página1
            File3.csv
            File4.js
            File5.csv
    Metadados
        FileListToCopy.txt
File1.csv
Sub-página1/File3.csv
Sub-página1/File5.csv
No conjunto de dados:
- Balde: bucket
- Caminho da pasta: FolderA

Na fonte de atividade do Copy:
- Caminho da lista de ficheiros: bucket/Metadata/FileListToCopy.txt

O caminho da lista de ficheiros aponta para um ficheiro de texto na mesma loja de dados que inclui uma lista de ficheiros que pretende copiar, um ficheiro por linha, com o caminho relativo para o caminho configurado no conjunto de dados.

Preservar metadados durante a cópia

Ao copiar ficheiros do Amazon S3 para Azure Data Lake Armazenamento o armazenamento da Gen2 ou do Azure Blob, pode optar por preservar os metadados do ficheiro juntamente com os dados. Saiba mais com os metadados da Preserve.

Propriedades de atividade de procura

Para obter detalhes sobre as propriedades, consulte a atividade de Lookup.

Propriedades de atividade getMetadata

Para obter detalhes sobre as propriedades, consulte a atividade da GetMetadata.

Eliminar propriedades de atividade

Para obter detalhes sobre as propriedades, verifique a atividade de Excluir.

Modelos legados

Nota

Os modelos seguintes ainda são suportados como é para retrocompatibilidade. Sugerimos que use o novo modelo mencionado anteriormente. A UI autora passou a gerar o novo modelo.

Modelo de conjunto de dados legado

Propriedade Descrição Obrigatório
tipo A propriedade do tipo do conjunto de dados deve ser definida para AmazonS3Object. Yes
baldeName O nome do balde S3. O filtro wildcard não é suportado. Sim para a atividade Copy ou Lookup, não para a atividade GetMetadata
key O nome ou filtro wildcard da chave do objeto S3 sob o balde especificado. Só se aplica quando a propriedade do prefixo não é especificada.

O filtro wildcard é suportado tanto para a parte da pasta como para a parte do nome do ficheiro. Os wildcards permitidos são: * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou caracteres individuais).
- Exemplo 1: "key": "rootfolder/subfolder/*.csv"
- Exemplo 2: "key": "rootfolder/subfolder/???20180427.txt"
Veja mais exemplos nos exemplos de pasta e filtro de ficheiros. Use ^ para escapar se a sua pasta ou nome de ficheiro tiver um wildcard ou este personagem de fuga no interior.
No
prefixo Prefixo para a tecla de objeto S3. São selecionados objetos cujas teclas começam com este prefixo. Só se aplica quando a propriedade chave não é especificada. No
versão A versão do objeto S3, se a versão S3 estiver ativada. Se uma versão não for especificada, a versão mais recente será recolhida. No
modificadoDatetimeStart Os ficheiros são filtrados com base no atributo: última modificada. Os ficheiros serão selecionados se o seu último tempo modificado estiver dentro do intervalo de tempo entre modifiedDatetimeStart e modifiedDatetimeEnd . . O tempo é aplicado ao fuso horário UTC no formato de "2018-12-01T05:00:00Z".

Tenha em atenção que ativar esta definição afetará o desempenho geral do movimento de dados quando pretender filtrar grandes quantidades de ficheiros.

As propriedades podem ser NUAS, o que significa que nenhum filtro de atributos de ficheiro será aplicado no conjunto de dados. Quando modifiedDatetimeStart tiver um valor de data, mas é modifiedDatetimeEnd NU, serão selecionados os ficheiros cujo último atributo modificado é superior ou igual ao valor da data. Quando modifiedDatetimeEnd tiver um valor de data mas é modifiedDatetimeStart NU, os ficheiros cujo último atributo modificado é inferior ao valor da data serão selecionados.
No
modificadoDatetimeEnd Os ficheiros são filtrados com base no atributo: última modificada. Os ficheiros serão selecionados se o seu último tempo modificado estiver dentro do intervalo de tempo entre modifiedDatetimeStart e modifiedDatetimeEnd . . O tempo é aplicado ao fuso horário UTC no formato de "2018-12-01T05:00:00Z".

Tenha em atenção que ativar esta definição afetará o desempenho geral do movimento de dados quando pretender filtrar grandes quantidades de ficheiros.

As propriedades podem ser NUAS, o que significa que nenhum filtro de atributos de ficheiro será aplicado no conjunto de dados. Quando modifiedDatetimeStart tiver um valor de data, mas é modifiedDatetimeEnd NU, serão selecionados os ficheiros cujo último atributo modificado é superior ou igual ao valor da data. Quando modifiedDatetimeEnd tiver um valor de data mas é modifiedDatetimeStart NU, serão selecionados os ficheiros cujo último atributo modificado é inferior ao valor da data.
No
formato Se pretender copiar ficheiros como está entre lojas baseadas em ficheiros (cópia binária), ignore a secção de formato nas definições de conjunto de dados de entrada e saída.

Se pretender analisar ou gerar ficheiros com um formato específico, suportam-se os seguintes tipos de formato de ficheiro: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. Desa um destes valores, o tipo de propriedade em formato. Para mais informações, consulte o formato Texto, formato JSON, formato Avro, formato Orce secções de formato Parquet.
Não (apenas para cenário de cópia binária)
compressão Especifique o tipo e o nível de compressão para os dados. Para obter mais informações, consulte formatos de ficheiros suportados e codecs de compressão.
Os tipos suportados são GZip, Deflate, BZip2 e ZipDeflate.
Os níveis suportados são ideais e mais rápidos.
No

Dica

Para copiar todos os ficheiros sob uma pasta, especifique o balde Para o balde e o prefixo para a parte da pasta.

Para copiar um único ficheiro com um nome próprio, especifique o balde para o balde e a chave para a parte da pasta mais o nome do ficheiro.

Para copiar um subconjunto de ficheiros sob uma pasta, especifique o baldeName para o balde e a chave para a parte da pasta mais o filtro wildcard.

Exemplo: utilização de prefixo

{
    "name": "AmazonS3Dataset",
    "properties": {
        "type": "AmazonS3Object",
        "linkedServiceName": {
            "referenceName": "<Amazon S3 linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "bucketName": "testbucket",
            "prefix": "testFolder/test",
            "modifiedDatetimeStart": "2018-12-01T05:00:00Z",
            "modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

Exemplo: utilização de chave e versão (opcional)

{
    "name": "AmazonS3Dataset",
    "properties": {
        "type": "AmazonS3",
        "linkedServiceName": {
            "referenceName": "<Amazon S3 linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "bucketName": "testbucket",
            "key": "testFolder/testfile.csv.gz",
            "version": "XXXXXXXXXczm0CJajYkHf0_k6LhBmkcL",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

Modelo de origem legado para a atividade copy

Propriedade Descrição Obrigatório
tipo A propriedade tipo da fonte de atividade copy deve ser definida como FileSystemSource. Yes
recursivo Indica se os dados são lidos novamente a partir das sub-dobradeiras ou apenas a partir da pasta especificada. Note que quando a recursiva é definida como verdadeira e a pia é uma loja baseada em ficheiros, uma pasta ou sub-dobragem vazia não será copiada ou criada na pia.
Os valores permitidos são verdadeiros (padrão) e falsos.
No
maxConcurrentConnections O limite superior das ligações simultâneas estabelecidas na loja de dados durante a atividade. Especifique um valor apenas quando pretende limitar ligações simultâneas. No

Exemplo:

"activities":[
    {
        "name": "CopyFromAmazonS3",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Amazon S3 input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "FileSystemSource",
                "recursive": true
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Passos seguintes

Para obter uma lista de lojas de dados que a atividade Copy suporta como fontes e sumidouros, consulte lojas de dados suportadas.