运行位于计算机上的 python 脚本,并将 aws s3 文件夹对象作为 ec2 实例中的输入参数



我正在尝试运行一个python脚本,该脚本将pdf文件夹作为输入,并在当前目录中输出一个excel文件。在终端中,我将输入下面的行,一个 excel 文件将出现在当前目录中。

$python 3 script.py 文件夹

我想知道如何使用位于 aws s3 存储桶中的文件夹作为输入来运行此脚本,而无需下载该文件夹,因为它非常大。我相信您必须使用 ec2 实例,但不清楚整个过程,尤其是如何让 s3 文件夹对象成为 python 脚本的输入参数。

您可以在 Python 中使用 AWS 开发工具包 (Boto3( 列出 S3 存储桶的内容,获取每个对象并对其执行操作。

以下是您通常的做法:

  1. 获取对 s3 客户端处理程序的访问权限: 获取 Boto3 S3 客户端
  2. 列出 S3 存储桶对象: 列出 S3 存储桶对象
  3. 迭代列表并获取对象: 获取每个对象

  4. 对每个对象执行要查找的任何操作。

此外,您可以将生成器与 python 一起使用,以便在迭代列表时优化应用程序内存。

注意:如果您使用的是 EC2,最佳实践是将具有权限的 IAM 角色附加到您尝试列出的特定存储桶。

谢谢!

您可以使用适用于 Python 的 AWS 开发工具包 (Boto3( 列出 S3 位置的内容并流式传输每个 S3 对象的内容。您将传递给脚本的参数将是 S3 url,如s3://my-bucket/my-folder。您必须将脚本中的所有本地文件系统 I/O 调用替换为 Boto3 S3 API 调用。不需要在 EC2 实例上运行脚本,尽管它与 S3 的连接速度通常比本地计算机更快。