我尝试通过以下命令下载一些spacenet data(23 GB):
aws s3api get-object --bucket spacenet-dataset --key AOI_2_Vegas/AOI_2_Vegas_Train.tar.gz --request-payer requester AOI_2_Vegas_Train.tar.gz
我的默认区域是us-east-1,我知道我的密钥是正确的,因为帐户正在收费。
我在家中运行(30 mbps),大约12 GB后超时。
我在我的工作中运行了这个(200 mbps),它在大约16 GB之后超时。
这是错误:
HTTPSConnectionPool(host =' spacenet-dataset.s3.amazonaws.com',port = 443):读取超时。
有没有办法恢复" aws s3api get-object"请求已超时?
答案 0 :(得分:1)
我可能会尝试使用aws s3 cp
命令。此命令更高级,可以自动处理多部分传输。
此命令也可以采用几个可添加的选项。见http://docs.aws.amazon.com/cli/latest/topic/s3-config.html
特别针对您的工作,您可以增加max_concurrent_requests
和multipart_threshold
,例如,配置如下
$ aws configure set default.s3.max_concurrent_requests 25
$ aws configure set default.s3.multipart_threshold 128MB
$ aws configure set default.s3.multipart_chunksize 32MB
$ aws configure set default.s3.use_accelerate_endpoint true
并运行复制命令。
答案 1 :(得分:0)
可以下载对象的指定字节范围。这可以通过使用范围标志来完成,如下所示。
aws s3api get-object --bucket spacenet-dataset --key AOI_2_Vegas/AOI_2_Vegas_Train.tar.gz --request-payer requester --range bytes=0-99999 file_1.tar.gz
上面的命令下载23 GB文件的前100,000个字节并将其写入file_1.tar.gz
。
一旦下载了字节范围内的所有file_*.tar.gz
,它们就必须以正确的顺序连接起来。可以使用* nix cat
命令完成,如下所示。
cat file_1.tar.gz >> AOI_2_Vegas_Train_all.tar.gz
cat file_2.tar.gz >> AOI_2_Vegas_Train_all.tar.gz
查看this out了解详情。