【发布时间】:2019-08-06 01:16:09
【问题描述】:
我正在编写一个脚本来解析 S3 存储桶文件,而无需在本地下载它们。似乎代码在找不到冰川文件的情况下有效。我现在正在添加一个异常(我保证,错误处理在实际代码中看起来更好),但理想情况下我想看看是否可以过滤掉冰川文件。
这是我的代码:
import boto3
import gzip
import os
try:
s3_client = boto3.client('s3')
bucket = 'my_bucket'
prefix = 'path_to_file/file_name.csv.gz'
obj = s3_client.get_object(Bucket=bucket, Key=prefix)
body = obj['Body']
with gzip.open(body, 'rt') as gf:
for ln in gf:
print(ln)
except Exception as e:
print(e)
我看到使用 AWS CLI,我至少可以按照冰川文件位于底部的方式对文件进行排序,因此必须有一种方法可以在 boto3 中对它们进行排序或过滤:
aws s3api list-objects --bucket my-bucket --query "reverse(sort_by(Contents,&LastModified))"
【问题讨论】:
-
您正在检索的文件是否恰好在冰川中?
-
我不知道,但如果这意味着我无法从存储桶中检查它们,那可能是。我尝试使用 ForkLift Archive Utility 打开它们,但也没有从那里工作。只能在本地下载
-
您是说可以从 Amazon S3 下载 CSV 文件吗?在 S3 管理控制台中,对象的存储类显示什么?如果您重新上传 CSV 文件并在该文件上尝试,会发生什么情况?这将覆盖 Glacier 设置。
-
是的,我很困惑。我将更改问题,因为问题与 csv 无关,而是与冰川文件有关。
标签: python-3.x amazon-web-services amazon-s3 boto3 aws-cli