【问题标题】:Upload archive AWS Glacier Python Scripting上传存档 AWS Glacier Python 脚本
【发布时间】:2018-09-10 16:46:30
【问题描述】:

我正在尝试制作一个 python 脚本,它允许我创建/删除/列出保管库、执行作业、列出/描述保管库作业、上传/下载档案以及制作和获取库存。

我正在使用awscliboto3 python3 包

在使用命令行上传文件时,我遇到了一些奇怪的事情,如下所示:

aws glacier upload-archive --vault-name <vault_name> --archive-description <archive_name> --body <file_2_upload> --account-id -

其中vault_namearchive_namefile_2_upload 是执行脚本时传递的变量,account-id 是在使用aws configure 命令执行脚本之前设置的

根据文件大小需要一段时间,但可以按预期工作

尝试使用我的脚本时(这是负责备份的部分)

glacier = boto3.client('glacier') upload = glacier.upload_archive(vaultName=vault, body=archive, archiveDescription=name)

答案几乎是立竿见影的,输出显示类似这样的内容

HTTP Code : 201 ==> 表示操作成功

但是我的保管库大小没有增加,而且我在其中找不到文件

我错过了什么?

提前致谢

【问题讨论】:

    标签: python-3.x amazon-web-services boto3 aws-cli amazon-glacier


    【解决方案1】:

    好的,我终于找到了它不工作的原因,我需要按如下方式对内存中的文件/文件部分收费:

    with open(archive, 'rb') as upload:
        archive_upload = upload.read(size)
        glacier_upload = glacier.upload_archive(vaultName=vault, archiveDescription=name, body=archive_upload)
    

    希望对遇到同样问题的人有所帮助

    干杯

    【讨论】:

    • “对内存中的文件收费”是什么意思? read() 函数中的“大小”是什么?
    • 抱歉我的英语不好,我的意思是在内存中加载文件
    • 最后我添加了一个读取32 Mb文件块的方法,问题解决了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多