如何使用Boto在Amazon上获取密钥/文件的校验和?

马丁尼

我正在编写两个Python脚本,它将在Amazon S3中将文件从一个存储桶移动到另一个存储桶,然后验证已移动的密钥的内容。在将它们的boto的Key类倾倒之后,​​并研究了这个stackoverflow问题,我发现了在复制文件后如何通过“ etag”提取校验和。

但是,这仅在文件被下装/上载的情况下有效,因为验证将通过完全不同的脚本完成,因此我需要帮助,而无需实际下载文件即可从文件中获取etag。

当前,工作流程是:文件一个经过一个存储桶,并使用boto复制所有键,然后打印输出键的路径以及它们的etag。(buckets []是源和目标),可以正常工作:

inbuck = conn.get_bucket(buckets[0])                                          
outbuck = conn.get_bucket(buckets[1])                                         
for inkey in inbuck.list():                                                   
    print buckets[1] + ";;" + inkey.key + ";;" + inkey.etag.replace("\"","")  
    out = Key(outbuck)                                                        
    out.key = inkey.key                                                       
    inkey.copy(outbuck,out.key,preserve_acl=True)                             

然后,文件2读取文件1的输出,检查密钥是否存在,然后应获取目标中密钥的etag以与输入的密钥进行比较。但是,该密钥的etag始终为“无”,因为未下载该密钥。

dstbuck = conn.get_bucket(destination[0])
dstkey = Key(dstbuck)               
dstkey.key = destination[1]    

if dstkey.exists() and dstkey.etag.replace("\"","") == destination[2]:
    PASSED.append(dstkey.key)
else:
    FAILED.append(dstkey.key)

由于dstkey.etag为“ None”,因此程序崩溃。有谁知道解决这个问题的方法吗?

装饰

问题在于您只是在创建本地Key对象。没有从S3检索到有关该密钥的信息。尝试这样的事情:

dstbuck = conn.get_bucket(destination[0])
dstkey = bucket.get_key(destination[1])
if dstkey is None:
    FAILED.append(destination[1])
else:
    # do etag check here

这样,Key对象应该具有来自S3的有关该对象的数据。get_key方法使用HTTP HEAD请求,因此将不检索对象的主体,而仅检索标头。

同样,如果对于程序的给定运行,存储桶名称(即destination [0])始终相同,则无需get_bucket对存储桶中的每个关键对象都执行“ a ”操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从webRequest获取文件的校验和

来自分类Dev

获取jar文件的校验和

来自分类Dev

如何使用azure函数在blob触发器上生成大blob文件的校验和?

来自分类Dev

如何在Deno中获取文件校验和?

来自分类Dev

如何使用python和boto3将Amazon S3文件下载到文件夹中的本地机器上?

来自分类Dev

如何使用boto3从Amazon S3获取.stl文件?

来自分类Dev

如何使用访问密钥ID和秘密访问密钥将文件上传到Amazon S3

来自分类Dev

如何使用javascript对要上传的文件进行校验和?

来自分类Dev

在bash上获取目录的校验和

来自分类Dev

Amazon SQS,Boto和Python:在Amazon EC2上获取并运行脚本

来自分类Dev

Amazon SQS,Boto和Python:在Amazon EC2上获取并运行脚本

来自分类Dev

通过 vsFTPd 获取文件的校验和

来自分类Dev

如何使用jq获取根密钥和密钥类型

来自分类Dev

如何使用AWS iOS SDK v2检查Amazon S3存储桶上密钥/文件的存在?

来自分类Dev

如何获得代表文件集合的校验和?

来自分类Dev

如何查看文件的btrfs校验和?

来自分类Dev

如何验证.mds文件格式的校验和?

来自分类Dev

如何计算文件名的校验和?

来自分类Dev

如何在目标C中获取OSX文件夹校验和?

来自分类Dev

如何在Android / Java中获取文件目录的MD5校验和

来自分类Dev

如何获取网站中文件的MD5校验和。电源外壳

来自分类Dev

如何在不使用大量磁盘空间的情况下,在busybox上的tar归档文件中创建文件的sha1校验和

来自分类Dev

如何获取所有S3密钥版本并使用Boto取消删除?

来自分类Dev

如何使用Dotnet Core获取Redis上的密钥的到期时间?

来自分类Dev

损坏文件的校验和

来自分类Dev

btrfs ioctl:从用户空间获取文件校验和

来自分类Dev

获取文件SHA256哈希码和校验和

来自分类Dev

如何在 Linux 上从文件名校验文件

来自分类Dev

如何使用带有校验和控制的Java从Google Cloud Storage下载大文件

Related 相关文章

  1. 1

    从webRequest获取文件的校验和

  2. 2

    获取jar文件的校验和

  3. 3

    如何使用azure函数在blob触发器上生成大blob文件的校验和?

  4. 4

    如何在Deno中获取文件校验和?

  5. 5

    如何使用python和boto3将Amazon S3文件下载到文件夹中的本地机器上?

  6. 6

    如何使用boto3从Amazon S3获取.stl文件?

  7. 7

    如何使用访问密钥ID和秘密访问密钥将文件上传到Amazon S3

  8. 8

    如何使用javascript对要上传的文件进行校验和?

  9. 9

    在bash上获取目录的校验和

  10. 10

    Amazon SQS,Boto和Python:在Amazon EC2上获取并运行脚本

  11. 11

    Amazon SQS,Boto和Python:在Amazon EC2上获取并运行脚本

  12. 12

    通过 vsFTPd 获取文件的校验和

  13. 13

    如何使用jq获取根密钥和密钥类型

  14. 14

    如何使用AWS iOS SDK v2检查Amazon S3存储桶上密钥/文件的存在?

  15. 15

    如何获得代表文件集合的校验和?

  16. 16

    如何查看文件的btrfs校验和?

  17. 17

    如何验证.mds文件格式的校验和?

  18. 18

    如何计算文件名的校验和?

  19. 19

    如何在目标C中获取OSX文件夹校验和?

  20. 20

    如何在Android / Java中获取文件目录的MD5校验和

  21. 21

    如何获取网站中文件的MD5校验和。电源外壳

  22. 22

    如何在不使用大量磁盘空间的情况下,在busybox上的tar归档文件中创建文件的sha1校验和

  23. 23

    如何获取所有S3密钥版本并使用Boto取消删除?

  24. 24

    如何使用Dotnet Core获取Redis上的密钥的到期时间?

  25. 25

    损坏文件的校验和

  26. 26

    btrfs ioctl:从用户空间获取文件校验和

  27. 27

    获取文件SHA256哈希码和校验和

  28. 28

    如何在 Linux 上从文件名校验文件

  29. 29

    如何使用带有校验和控制的Java从Google Cloud Storage下载大文件

热门标签

归档