本文概述了如何使用管道中的复制活动从 Amazon S3 复制数据。
所需的权限
若要从 Amazon S3 复制数据,请确保已被授予以下用于 Amazon S3 对象操作的权限:s3:GetObject 和 s3:GetObjectVersion。
此外,进行测试连接和从根浏览等操作需要s3:ListAllMyBucketss3:ListBucket/s3:GetBucketLocation权限。
有关 Amazon S3 权限的完整列表,请转到 AWS 网站上的策略中指定权限。
支持的格式
Amazon S3 支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。
支持的配置
有关复制活动下每个选项卡的配置,请分别转到以下部分。
概况
请参阅 常规 设置 指南,以配置 常规 设置选项卡。
来源
Amazon S3 在复制活动的 “源 ”选项卡下支持以下属性。
需要以下属性:
连接:从连接列表中选择 Amazon S3 连接。 如果不存在连接,则通过选择“ 新建”创建新的 Amazon 连接。
连接类型:为连接类型选择 Amazon S3 。
文件路径类型:可以选择 文件路径、 前缀、 通配符文件路径或 文件列表 作为文件路径类型。 每个设置的配置为:
文件路径:如果选择此类型,则可以从给定的存储桶或指定的给定存储桶和文件夹路径复制数据。
前缀:如果选择此类型,请指定 Bucket 和 Prefix。
存储桶:指定 S3 存储桶名称。 它是必需的。
前缀:指定给定存储桶下 S3 密钥名称的前缀以筛选源 S3 文件。 名称以
bucket/this_prefix开头的 S3 键已被选择。 它利用 S3 的服务端筛选器,该筛选器比通配符筛选器提供更好的性能。使用前缀时,如果选择保留层次结构并复制到基于文件的目标,请注意前缀中最后一个“/”后面的子路径会被保留。 例如,你有源
bucket/folder/subfolder/file.txt,并配置前缀folder/sub,然后保留的文件路径为subfolder/file.txt。
通配符文件路径:如果选择此类型,请指定 Bucket 和 通配符路径。
存储桶:指定 S3 存储桶名称。 它是必需的。
通配符路径:使用给定存储桶下的通配符指定文件夹或文件路径,以筛选源文件夹或文件。
允许的通配符为:
*(匹配零个或多个字符)和?(匹配零或单个字符)。 如果文件夹名称中包含通配符或此转义符,则用于^转义。 请参阅文件夹和文件筛选器示例中的更多示例。
通配符文件夹路径:给定存储桶下具有通配符的文件夹路径,用于筛选源文件夹。通配符文件名:在给定存储桶和文件夹路径(或通配符文件夹路径)下具有通配符的文件名,用于筛选源文件。
文件列表:如果选择此类型,请指定要复制给定文件集 的文件夹路径 和 文件路径列表 。 指向包含要复制的文件列表的文本文件,每行一个文件,这是配置的路径的相对路径。 有关更多示例,请转到 文件列表示例。
- 文件夹路径:指定给定存储桶下文件夹的路径。 它是必需的。
- 文件列表的路径:指定要复制的文件列表的文本文件的路径。
递归:指定数据是递归地从子文件夹读取,还是仅从指定文件夹读取。 选择 递归 且目标为基于文件的存储时,不会在目标处复制或创建空文件夹或子文件夹。 默认情况下,此属性处于选中状态,在配置 文件列表路径时不适用。
文件格式:从下拉列表中选择应用的文件格式。 选择 “设置” 以配置文件格式。 有关不同文件格式的设置,请参阅 支持格式 的文章以了解详细信息。
在“高级”下,可以指定以下字段:
按上次修改日期进行筛选:根据指定的上次修改日期筛选文件。 将文件路径类型配置为 文件列表时,此属性不适用。
- 开始时间(UTC):如果上次修改时间大于或等于配置的时间,则选择文件。
- 结束时间(UTC):如果文件的上次修改时间小于配置的时间,则会选择这些文件。
当 开始时间(UTC) 具有日期/时间值,但 结束时间(UTC) 为 NULL 时,表示将选择上次修改的属性大于或等于日期/时间值的文件。 当 结束时间(UTC) 具有日期/时间值但 开始时间(UTC) 为 NULL 时,这意味着将选择上次修改的属性小于日期/时间值的文件。 属性可以为 NULL,这意味着不会对数据应用任何文件属性筛选器。
启用分区发现:指定是否分析文件路径中的分区,并将其添加为其他源列。 默认情况下,它处于未选中状态,在使用二进制文件格式时不受支持。
分区根路径:启用分区发现时,请指定绝对根路径,以便将分区文件夹读取为数据列。
如果未指定,则默认为
- 使用源上的文件路径或文件列表时,分区根路径是你配置的路径。
- 使用通配符文件夹筛选器时,分区根路径是第一个通配符之前的子路径。
- 使用前缀时,分区根路径是最后一个“/”之前的子路径。
例如,假设将路径配置为
root/folder/year=2020/month=08/day=27:- 如果将分区根路径指定为
root/folder/year=2020,除文件内的列外,复制活动还会分别生成两个包含值“08”和“27”的列月和日。 - 如果未指定分区根路径,则不会生成额外的列。
最大并发连接数:活动运行期间与数据存储建立的并发连接上限。 仅当想要限制并发连接时,才指定一个值。
其他列:添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。
目的地
在复制活动的 “目标 ”选项卡下,Amazon S3 支持以下属性。
需要以下属性:
- 连接:从连接列表中选择 Amazon S3 连接。 如果不存在连接,则通过选择“ 新建”创建新的 Amazon 连接。
- 连接类型:为连接类型选择 Amazon S3 。
- 文件路径:可将数据复制到给定存储桶或指定的给定存储桶和文件夹路径。
- 文件格式:从下拉列表中选择应用的文件格式。 选择 “设置” 以配置文件格式。 有关不同文件格式的设置,请参阅 支持格式 的文章以了解详细信息。
在“高级”下,可以指定以下字段:
复制行为:当源是基于文件的数据存储中的文件时,定义复制行为。 可以从下拉列表中选择行为。
- 平展层次结构:源文件夹中的所有文件都位于目标文件夹的第一级。 目标文件具有自动生成的名称。
- 合并文件:将所有文件从源文件夹合并到一个文件。 如果指定了文件名,则合并文件的名称为指定名称。 否则,它是自动生成的文件名。
- 保留层次结构:保留目标文件夹中的文件层次结构。 源文件到源文件夹的相对路径与目标文件夹的目标文件的相对路径相同。
最大并发连接数:此属性指示活动运行期间与数据存储建立的并发连接上限。 仅当想要限制并发连接时,才指定一个值。
映射
对于 “映射 ”选项卡配置,请转到 “映射”选项卡下的“配置映射”。如果选择“二进制”作为文件格式,则不支持映射。
设置
对于 “设置 ”选项卡配置,请转到 “设置”选项卡下的“配置其他设置”。
表摘要
下表包含有关 Amazon S3 中的复制活动的详细信息。
源信息
| Name | Description | 价值 | 必选 | JSON 脚本属性 |
|---|---|---|---|---|
| 连接 | 与源数据存储的连接。 | <您的 Amazon S3 连接> | 是的 | 连接 |
| 连接类型 | 为连接选择类型。 | Amazon S3 | 是的 | / |
| 文件路径类型 | 用于获取源数据的文件路径类型。 | • 文件路径 • 前缀 • 通配符文件路径 • 文件列表 |
是的 | / |
| 对于 文件路径 | ||||
| 桶 | S3 存储桶名称。 | <存储桶名称> | 是的 | bucketName |
| Directory | 指定存储桶下文件夹的路径。 | <文件夹名称> | 否 | 文件夹路径 |
| 文件名 | 指定存储桶和文件夹路径下的文件名。 | <您的文件名> | 否 | fileName |
| 对于 前缀 | ||||
| 桶 | S3 存储桶名称。 | <存储桶名称> | 是的 | bucketName |
| 前缀 | 给定存储桶下 S3 键名称的前缀,用于筛选源 S3 文件。 | <您的前缀> | 否 | prefix |
| 对于 通配符文件路径 | ||||
| 桶 | S3 存储桶名称。 | <存储桶名称> | 是的 | bucketName |
| 通配符文件夹路径 | 指定存储桶下包含通配符的文件夹路径,用于筛选源文件夹。 | <包含通配符的文件夹路径> | 否 | wildcardFolderPath |
| 通配符文件名 | 具有指定存储桶和文件夹路径(或通配符文件夹路径)下的通配符的文件名,用于筛选源文件。 | <你的文件名包含通配符> | 是的 | wildcardFileName |
| 文件 列表 | ||||
| 桶 | S3 存储桶名称。 | <存储桶名称> | 是的 | bucketName |
| Directory | 指定存储桶下文件夹的路径。 | <文件夹名称> | 否 | 文件夹路径 |
| 文件列表的路径 | 指明复制给定文件集。 指向包含要复制的文件列表的文本文件,每行一个文件。 | < 文件列表路径 > | 否 | fileListPath |
| 文件格式 | 源数据的文件格式。 有关不同文件格式的信息,请参阅 支持格式 的文章以获取详细信息。 | / | 是的 | / |
| 递归 | 指示是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 请注意,在 选择“递归” 且目标为基于文件的存储时,不会在目标上复制或创建空文件夹或子文件夹。 配置 文件列表的路径时,此属性不适用。 | 选中(默认)或取消选择 | 否 | recursive |
| 按最近修改筛选 | 在 [开始时间, 结束时间) 范围内具有上次修改时间的文件将被筛选为进一步处理。 时间将以格式 yyyy-mm-ddThh:mm:ss.fffZ 应用于 UTC 时区。 可以跳过这些属性,这意味着不会应用任何文件属性筛选器。 将文件路径类型配置为文件列表时,此属性不适用。 |
日期/时间 | 否 | modifiedDatetimeStart modifiedDatetimeEnd |
| 启用分区发现 | 指示是否从文件路径分析分区,并将其添加为其他源列。 | 已选择或未选中(默认值) | 否 | enablePartitionDiscovery: true 或 false (默认值) |
| 分区根路径 | 启用分区发现时,请指定绝对根路径,以便将已分区文件夹读取为数据列。 | < 分区根路径 > | 否 | partitionRootPath |
| 最大并发连接数 | 活动运行期间与数据存储建立的并发连接的上限。 仅当想要限制并发连接时,才指定一个值。 | <最大并发连接数> | 否 | maxConcurrentConnections |
| 其他列 | 添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。 | • 姓名 •价值 |
否 | 附加列: •名字 •价值 |
目的地信息
| Name | Description | 价值 | 必选 | JSON 脚本属性 |
|---|---|---|---|---|
| 连接 | 与目标数据存储的连接。 | <您的 Amazon S3 连接> | 是的 | 连接 |
| 连接类型 | 为连接选择类型。 | Amazon S3 | 是的 | / |
| 文件路径 | 目标文件的文件夹/文件路径。 | <文件夹/文件路径> | 是的 | / |
| 桶 | S3 存储桶名称。 | <存储桶名称> | 是的 | bucketName |
| Directory | 指定存储桶下文件夹的路径。 | <文件夹名称> | 否 | 文件夹路径 |
| 文件名 | 指定存储桶和文件夹路径下的文件名。 | <您的文件名> | 否 | fileName |
| 复制行为 | 定义以基于文件的数据存储中的文件为源时的复制行为。 | 简化层次结构 • 合并文件 • 保留层次结构 |
否 | copyBehavior: • FlattenHierarchy • MergeFiles • 保留层次结构 |
| 最大并发连接数 | 活动运行期间与数据存储建立的并发连接的上限。 仅当想要限制并发连接时,才指定一个值。 | <最大并发连接数> | 否 | maxConcurrentConnections |