如何使用 boto3 访问 Python 中的 AWS S3 存储桶

How to Access AWS S3 Bucket in Python using boto3

我是一名刚入门的数据工程专业的学生。下面是 link 到 public S3 数据集,其中包含存档和实时天气雷达报告。

https://registry.opendata.aws/noaa-nexrad/

我能够使用 Python 中的 nexradaws 模块轻松访问存档数据。但是,我无法访问 Python 中的实时数据集,因为 nexradaws 模块中没有提供它。

我阅读了一些与此相关的 Whosebug 帖子,发现了一些不同的方法:

  1. 使用 boto3 包 - 我试过了,但 boto3 文档似乎专注于在 Python 中创建存储桶。然后,使用访问密钥和秘密密钥访问这些存储桶。但是,此存储桶不需要凭据即可访问。不确定在我的案例中实施 boto3 的正确方法是什么。此外,我浏览了官方的 boto3 文档,但无法找到有关如何访问不需要访问密钥的 public 存储桶的信息。但是,为了以防万一,我确实设置了一个 AWS 帐户并尝试在创建存储桶时使用 ARN,但是,创建的存储桶仍然是空的。
  2. 在 Python 和 运行 AWS CLI 中使用子进程模块 - 我也在尝试这个,但无法找到在子进程模块中实施 AWS CLI 的正确方法。
  3. 使用 brilliant sh Python 包 - 试试这个,我遇到了和上面一样的问题。

我的问题是,如何使用 boto3 访问实时数据?我怎样才能下载数据? boto3的好资源在哪里?

boto3:

import boto3
from botocore import UNSIGNED
from botocore.client import Config

s3 = boto3.resource("s3", config=Config(signature_version=UNSIGNED))
bucket = s3.Bucket("noaa-nexrad-level2")

for obj in bucket.objects.filter(Prefix="2021/01/01"):
    print(obj)