在复制活动中配置 Amazon S3

本文概述了如何使用数据管道中的复制活动从/向 Amazon S3 复制数据。

所需的权限

若要从 Amazon S3 复制数据,请确保已被授予以下 Amazon S3 对象操作权限:s3:GetObjects3:GetObjectVersion

此外,测试连接和浏览到文件路径等操作也需要 s3:ListAllMyBucketss3:ListBucket/s3:GetBucketLocation 权限。

如需 Amazon S3 权限的完整列表,请转到在 AWS 网站上指定策略中的权限

支持的格式

Amazon S3 支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

支持的配置

有关复制活动下每个选项卡的配置,请分别转到以下各部分。

常规

若要配置“常规”设置选项卡,请参阅常规”设置指导。

Source

复制活动的“”选项卡下的 Amazon S3 支持以下属性。

Screenshot showing source tab and the list of properties.

需要以下属性:

  • 数据存储类型:选择“外部”。

  • 连接:从连接列表中选择 Amazon S3 连接。 如果不存在连接,则通过选择“新建”创建新的 Amazon 连接。

  • 连接类型:为连接类型选择“Amazon S3”。

  • 文件路径类型:可以选择“文件路径”、“前缀”、“通配符文件路径”或“文件列表”作为文件路径类型。 每个设置的配置为:

    • 文件路径:如果选择此类型,则可以从给定的 Bucket 或指定的文件夹路径复制数据。

    • 前缀:如果选择此类型,请指定 Bucket 和前缀。

      • 存储桶:指定 S3 存储桶名称。 它是必需的。

      • 前缀:指定给定 Bucket 下的 S3 密钥名称的前缀,用于筛选源 S3 文件。 名称以 bucket/this_prefix 开头的 S3 密钥会被选中。 它利用 S3 的服务端筛选器。与通配符筛选器相比,该服务端筛选器可提供更好的性能。

        在使用前缀的情况下选择复制到基于文件的目标并保留层次结构时,请注意,系统会保留前缀中最后一个“/”后面的子路径。 例如,如果在源为 bucket/folder/subfolder/file.txt 的情况下将前缀配置为 folder/sub,则保留的文件路径为 subfolder/file.txt

      Screenshot showing prefix.

    • 通配符文件路径:如果选择此类型,请指定 Bucket 和通配符路径。

      • 存储桶:指定 S3 存储桶名称。 它是必需的。

      • 通配符路径:指定给定 Bucket 下包含通配符的文件夹或文件路径,用于筛选源文件夹或文件。

        允许的通配符为:*(匹配零个或更多字符)和 ?(匹配零个或单个字符)。 如果文件夹名内包含通配符或此转义字符,请使用 ^ 进行转义。 请参阅文件夹和文件筛选器示例中的更多示例。 通配符文件夹路径:给定 Bucket 下包含通配符的文件夹路径,用于筛选源文件夹。Screenshot showing wildcard file path.

        通配符文件名:给定 Bucket 和文件夹路径(或通配符文件夹路径)下包含通配符的文件名,用于筛选源文件。

    • 文件列表:如果选择此类型,请指定“文件夹路径”和“文件列表路径”,以指示复制给定的文件集。 指向包含要复制的文件列表的文本文件,其中每行一个文件(即配置路径的相对路径)。 如需更多示例,请转到文件列表示例

      Screenshot showing list of files.

      • 文件夹路径:指定给定 Bucket 下文件夹的路径。 它是必需的。
      • 文件列表路径:指定包含要复制的文件列表的文本文件的路径。
  • 递归:指定是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 选中“递归”并且目标是基于文件的存储时,不会在目标上复制或创建空的文件夹或子文件夹。 默认会选中此属性,但在配置“文件列表的路径”时不会应用此属性。

  • 文件格式:从下拉列表中选择适用的文件格式。 选择“设置”以配置文件格式。 有关不同文件格式的设置,请参阅支持格式的文章了解详细信息。

在“高级”下,可以指定以下字段:

  • 按上次修改时间筛选:根据指定的上次修改日期筛选文件。 将文件路径类型配置为文件列表时,此属性不适用。

    • 开始时间(UTC):如果文件的上次修改时间不早于配置的时间,则会选择这些文件。
    • 结束时间(UTC):如果文件的上次修改时间早于配置的时间,则选择这些文件。

    如果“开始时间(UTC)”具有日期/时间值,但“结束时间(UTC)”为 NULL,意味着将选中“上次修改时间”属性不早于该日期/时间值的文件。 如果“结束时间(UTC)”具有日期/时间值,但“开始时间(UTC)”为 NULL,则意味着将选中“上次修改时间”属性早于该日期/时间值的文件。 属性可以为 NULL,这意味着不会向数据应用任何文件属性筛选器。

  • 启用分区发现:指定是否从文件路径分析分区,并将它们添加为附加的源列。 默认情况下,它处于未选中状态,而且在使用二进制文件格式时不受支持。

    • 分区根路径:当启用了分区发现时,请指定绝对根路径,以便将已分区文件夹读取为数据列。

      如果未指定,默认情况下,

      • 在源上使用文件路径或文件列表时,分区根路径是你已配置的路径。
      • 使用通配符文件夹筛选器时,分区根路径是第一个通配符前的子路径。
      • 在使用前缀时,分区根路径是最后一个“/”前的子路径。

      例如,假设将路径配置为 root/folder/year=2020/month=08/day=27

      • 如果将分区根路径指定为 root/folder/year=2020,则除了文件内的列外,复制活动还会生成另外两列 month 和 day,其值分别为“08”和“27”。
      • 如果未指定分区根路径,则不会生成额外的列。

      Screenshot showing Enable partition discovery.

  • 最大并发连接:活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

  • 其他列:添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。

目标

Amazon S3 在复制活动的“目标”选项卡下支持以下属性。

Screenshot showing destination tab and the list of properties.

需要以下属性:

  • 数据存储类型:选择“外部”。
  • 连接:从连接列表中选择 Amazon S3 连接。 如果不存在连接,则通过选择“新建”创建新的 Amazon 连接。
  • 连接类型:为连接类型选择“Amazon S3”。
  • 文件路径:数据可以复制到给定的 Bucket 或指定的 Bucket 和文件夹路径。
  • 文件格式:从下拉列表中选择适用的文件格式。 选择“设置”以配置文件格式。 有关不同文件格式的设置,请参阅支持格式的文章了解详细信息。

在“高级”下,可以指定以下字段:

  • 复制活动:定义以基于文件的数据存储中的文件为源时的复制行为。 可以从下拉列表中选择行为。

    • 平展层次结构:源文件夹中的所有文件都位于目标文件夹的第一级别。 目标文件具有自动生成的名称。
    • 合并文件:将源文件夹中的所有文件合并到一个文件中。 如果指定了文件名,则合并文件的名称为指定名称。 否则,它是自动生成的文件名。
    • 保留层次结构:将文件层次结构保留到目标文件夹中。 从源文件到源文件夹的相对路径与从目标文件到目标文件夹的相对路径相同。
  • 最大并发连接数:此属性指示活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

映射

对于“映射”选项卡配置,请转到“映射选项卡下的配置映射”。如果选择“二进制”作为文件格式,则不支持映射。

设置

对于“设置”选项卡配置,请转到“设置”选项卡下的“配置其他设置”

表摘要

下表包含有关 Amazon S3 中复制活动的详细信息。

源信息

名称 描述 必选 JSON 脚本属性
数据存储类型 你的数据存储类型。 外部 /
Connection 与源数据存储的连接。 <Amazon S3 连接> 连接
连接类型 为连接选择类型。 Amazon S3 /
文件路径类型 用于获取源数据的文件路径类型。 文件路径
• 前缀
通配符文件路径
文件列表
/
对于文件路径
Bucket S3 存储桶的名称。 你的 Bucket 名称<> bucketName
Directory 指定的 Bucket 下的文件夹路径。 <你的文件夹名称> folderpath
文件名 指定的 Bucket 和文件夹路径下的文件名。 <你的文件名> fileName
对于前缀
Bucket S3 存储桶的名称。 你的 Bucket 名称<> bucketName
Prefix 给定 Bucket 下的 S3 密钥名称的前缀,用于筛选源 S3 文件。 你的前缀<> prefix
对于通配符文件路径
Bucket S3 存储桶的名称。 你的 Bucket 名称<> bucketName
通配符文件夹路径 指定的 Bucket 下包含通配符的文件夹路径,用于筛选源文件夹。 <你的包含通配符的文件夹路径> wildcardFolderPath
通配符文件名 指定的 Bucket 和文件夹路径(或通配符文件夹路径)下包含通配符的文件名,用于筛选源文件。 <你的包含通配符的文件名> wildcardFileName
对于文件列表
Bucket S3 存储桶的名称。 你的 Bucket 名称<> bucketName
Directory 指定的 Bucket 下的文件夹路径。 <你的文件夹名称> folderpath
文件列表的路径 指明复制给定文件集。 指向包含要复制的文件列表的文本文件,每行一个文件。 <文件列表路径> fileListPath
文件格式 源数据的文件格式。 有关不同文件格式的信息,请参阅支持的格式的文章了解详细信息。 / /
Recursively 指示是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 请注意,选中“以递归方式”,并且目标是基于文件的存储时,不会在目标上复制或创建空的文件夹或子文件夹。 配置“文件列表的路径”时,此属性不适用。 已选择(默认)或未选择 recursive
按上次修改时间筛选 将筛选在 [开始时间、结束时间) 范围内具有上次修改时间的文件,以便进一步处理。 该时间将以 yyyy-mm-ddThh:mm:ss.fffZ 格式应用于 UTC 时区。 可以跳过此属性,这意味着不会应用任何文件属性筛选器。 将文件路径类型配置为文件列表时,此属性不适用。 datetime modifiedDatetimeStart
modifiedDatetimeEnd
启用分区发现 指示是否从文件路径分析分区,并将它们添加为附加的源列。 选中或未选中(默认) enablePartitionDiscovery:
true 或 false(默认)
分区根路径 启用分区发现时,请指定绝对根路径,以便将已分区文件夹读取为数据列。 <你的分区根路径> partitionRootPath
最大并发连接数 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 <最大并发连接数> maxConcurrentConnections
其他列 添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。 • 姓名
• 值
additionalColumns:
• 名称
• 值

目标信息

名称 描述 必选 JSON 脚本属性
数据存储类型 你的数据存储类型。 外部 /
Connection 与目标数据存储的连接。 <Amazon S3 连接> 连接
连接类型 为连接选择类型。 Amazon S3 /
文件路径 目标文件的文件夹/文件路径。 <文件夹/文件路径> /
Bucket S3 存储桶的名称。 你的 Bucket 名称<> bucketName
Directory 指定的 Bucket 下的文件夹路径。 <你的文件夹名称> folderpath
文件名 指定的 Bucket 和文件夹路径下的文件名。 <你的文件名> fileName
复制行为 定义以基于文件的数据存储中的文件为源时的复制行为。 • 平展层次结构
• 合并文件
• 保留层次结构
copyBehavior
- FlattenHierarchy
- MergeFiles
- PreserveHierarchy
最大并发连接数 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 <最大并发连接数> maxConcurrentConnections