首页 > 解决方案 > 使用 boto3 和 Python 从 S3 存储桶访问 db3 文件路径

问题描述

我的用例要求我从 S3 存储桶访问 db3 文件并将数据存储到数据库中。我编写了一个函数来提取 db3 文件。为此,我必须传递的参数是 db3 文件路径到我编写的用户定义函数的链接。我如何知道 S3 上文件的路径?或者有没有其他方法可以做到这一点?我已经使用 boto3 建立了与 S3 的连接,并且能够查看所有文件名。

我的自定义功能是读取ros bag文件

def read_bag_file(path_to_db3file):
    Code to extract and store information to the database

S3 连接

s3 = boto3.resource(
    service_name='s3',
    region_name='us-west-2',
    aws_access_key_id='access ID',
    aws_secret_access_key='Key'
)

for obj in s3.Bucket('test-bagfiles').objects.all():
    print(obj.key)

当我打印 obj.key 时,我得到了文件路径。其中一条路径是

bagfiles/bag_9998_central_2021_08_1218_33_49_d58fec5/bag_9998_central_2021_8_12-18_33_49_d58fec5_0.db3

我现在想将此 db3 文件路径传递给 read_bag_file 代码以提取信息并将其存储在数据库中。如何将此包文件位置传递给 read_bag_file 函数?

标签: pythonsqliteamazon-s3boto3

解决方案


您应该能够连接存储桶和密钥

bucket = 'test-bagfiles'

for obj in s3.Bucket(bucket).objects.all():
    read_bag_file(bucket + '/' + obj.key)

推荐阅读