如何使用Boto3遍历 AWS Glue 中存在的 S3 Bucket 对象版本

如何使用Boto3遍历 AWS Glue 中存在的 S3 Bucket 对象版本

AWS Glue 是一种完全托管的 ETL (extract,transform,load)服务,可以让用户在几分钟内轻松地转换和在多个数据源之间移动数据。AWS Glue 还支持通过将数据目录抽象为一个 PySpark 数据帧来使用分析和机器学习(ML)服务。使用 AWS Glue,您可以连接到各种数据存储(移动数据)源,包括 Amazon S3、Redshift、Oracle 和 SQL Server 等,并将它们转换为分析友好的数据存储库(转换数据)。

在 AWS Glue 中,S3 是一个非常重要的数据源,S3 中的所有数据都被存储为对象。每个对象都有元数据,包括对象的大小、创建时间、最后修改时间以及标记为可选对象版本的信息。这个元数据可以通过 AWS Glue 或 Boto3 这样的 AWS SDK 来访问。

本文将介绍如何使用 Boto3 遍历 AWS Glue 中存在的 S3 Bucket 对象版本,下面我们将逐步进行以下操作:

  1. 确认 AWS CLI 凭证可用。
  2. 列出您的 S3 存储桶。
  3. 查看存储桶的对象版本详细信息。
  4. 通过 Boto3 遍历存储桶中的对象版本。

阅读更多:Python 教程

确认 AWS CLI 凭证可用

在开始之前,请确保您已经安装并配置 AWS CLI。您可以使用以下命令来检查 AWS CLI 的凭证:

aws sts get-caller-identity

该命令将返回您当前的 IAM 用户 ARN 和帐户 ID。如果您无法验证 AWS CLI,请参阅AWS 文档,以设置和验证 AWS CLI。

此外,您还应该配置 Boto3,这是使用 Python 与 AWS 交互的 SDK。

import logging

import boto3

# Set up logging
logging.basicConfig(level=logging.DEBUG)
LOGGER = logging.getLogger(__name__)

# Create an S3 Client
s3 = boto3.client("s3")

列出您的 S3 存储桶

执行以下命令来列出您的 S3 存储桶:

response = s3.list_buckets()
buckets = [bucket["Name"] for bucket in response["Buckets"]]

LOGGER.debug("Bucket List: %s", buckets)

响应将为所有存储桶的信息,但在此处,我们只需要存储桶名称。

查看存储桶的对象版本详细信息

现在,我们已经列出了您的存储桶,请使用以下代码查看某个存储桶的对象版本详细信息:

current_bucket = "my-bucket"

# List Object Versions
versions = s3.list_object_versions(
    Bucket=current_bucket,
)

LOGGER.debug("Object Versions: %s", versions)

所有版本的对象元数据都将返回到控制台。

通过 Boto3 遍历存储桶中的对象版本

考虑到可能有许多文件在存储桶中,您可能需要筛选或定位特定类型或类别的对象。例如,如果您想查看所有名称以*.pdf 结尾的对象,您可以使用以下代码:

def get_objects():
    """
    This function returns a list of objects in the specific bucket
    """

    current_bucket = "my-bucket"
    result = []

    paginator = s3.get_paginator("list_object_versions")
    pages = paginator.paginate(Bucket=current_bucket)

    for page in pages:
        LOGGER.debug("Object Versions: %s", page)
        versions = page.get("Versions")
        for version in versions:
            if ".pdf" in version.get("Key"):
                LOGGER.debug("PDF Objects: %s", version)
                result.append(version)

    return result

该函数将遍历存储桶中所有对象,并选择文件名以 “*.pdf” 结尾的所有对象。这些对象将被存储到一个列表中,并可以按照需要进一步使用。

结论

通过本文介绍的方法,您可以使用 Boto3 轻松地遍历 AWS Glue 中存在的 S3 Bucket 对象版本。为了更好地组织您的数据,您可以选择根据对象属性来筛选或筛选特定类型的对象。这对于处理大量数据或由用户上传的数据非常有用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程