AWS Data Pipeline 中的 ShellCommandActivity

ShellCommandActivity in AWS Data Pipeline

我正在使用数据管道将 Dynamo DB 数据传输到 S3。在 S3 存储桶中,我得到了备份,但它被分成了多个文件。为了在单个文件中获取数据,我使用了 Shell 命令 Activity 运行以下命令:

aws s3 cat #{myOutputS3Loc}/#{format(@scheduledStartTime,'YYYY-MM-dd')}/* > #{myRenamedFile}

这应该将 S3 文件夹中存在的所有文件连接到一个名为 #{myRenamedFile} 的文件中。但是我在数据管道中收到以下错误:

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument subcommand: Invalid choice, valid choices are: ls | website cp | mv rm | sync mb | rb

这是否意味着 Shell 命令 Activity 不支持 cat 或者这里有什么问题?有没有其他方法可以将不同的文件合并到 S3 本身的单个文件中?

aws s3 中没有 cat 命令。其他选项:

  • cp/sync 文件并使用 shell
  • 中的 cat 命令连接所有文件
  • 通过调用 aws s3 cp s3://<file> - 获取文件名并遍历列表,并将输出附加到新文件。您可以使用 cp--recursive 选项在单个命令中执行此操作,但如果将文件复制到 stdout
  • ,则不支持 --recursive