代码之家  ›  专栏  ›  技术社区  ›  Greg Hewgill

Amazon S3独立存根服务器

  •  16
  • Greg Hewgill  · 技术社区  · 16 年前

    我记得我读过一篇关于AmazonS3兼容的测试服务器的文章,您可以在自己的服务器上运行单元测试或者其他任何东西。然而,我已经耗尽了我的耐心在谷歌和AWS上寻找这个。这样的事情存在吗?如果没有,我想我会写一封。

    注意:我问的是AmazonS3(存储系统)而不是AmazonEC2(云计算)。

    7 回复  |  直到 16 年前
        1
  •  6
  •   pts    15 年前

    你在想吗 Park Place ?

    它的 old home page 现在离线。

        2
  •  4
  •   andres.riancho    11 年前

    我想摩托( https://github.com/spulec/moto )是单元测试的完美工具。moto模拟所有对s3、sqs等的访问,并且可以使用其Web服务器在任何编程语言中使用。

    安装简单,重量轻,速度快。

    从moto的自述:

    假设您有以下要测试的代码:

    import boto
    from boto.s3.key import Key
    
    class MyModel(object):
        def __init__(self, name, value):
            self.name = name
            self.value = value
    
        def save(self):
            conn = boto.connect_s3()
            bucket = conn.get_bucket('mybucket')
            k = Key(bucket)
            k.key = self.name
            k.set_contents_from_string(self.value)
    

    花点时间想想你过去是怎么测试的。现在看看如何用moto测试它:

    import boto
    from moto import mock_s3
    from mymodule import MyModel
    
    @mock_s3
    def test_my_model_save():
        model_instance = MyModel('steve', 'is awesome')
        model_instance.save()
    
        conn = boto.connect_s3()
        assert conn.get_bucket('mybucket').get_key('steve') == 'is awesome'
    
        3
  •  2
  •   pts    15 年前

    Park Place已经搬到Github: http://github.com/technoweenie/parkplace

        4
  •  1
  •   community wiki 2 revs, 2 users 90% Stephen    15 年前

    Eucalyptus http://eucalyptus.cs.ucsb.edu/

    桉树弹性效用计算 用于链接程序的体系结构 对有用的系统-是一个开源的 软件基础设施 在上实现“云计算” 集群。当前接口到 桉树与亚马逊的兼容 EC2接口,但基础设施 旨在支持多个 客户端接口。

    请注意,根据文档,eucalypus不仅包括EC2接口的重新实现,还包括S3存储系统。那个储存部件叫做海象。( http://open.eucalyptus.com/wiki/EucalyptusUserGuide_v1.5.2 )

        5
  •  1
  •   Greg Hewgill    12 年前

    Fake S3 似乎是S3的最新重新实现,专门设计用于测试。

        6
  •  1
  •   Andreas Haufler    11 年前

    我们遇到了在本地测试基于S3的代码的问题,并实际实现了一个小型的Java服务器,它模拟S3对象API。因为它可能对其他人有用,我们设置了一个Github回购和一个小网站: http://s3ninja.net -麻省理工学院许可证下的所有OpenSource。

    它非常小和简单,可以在几分钟内设置。(作为) SIRIUS 基于应用程序,中等服务器上的状态需要不到一秒钟的时间)。

        7
  •  -3
  •   Matthias Winkelmann    16 年前

    Amazon使用Xen,所以您可以在自己的Xen安装中运行AMI。不过,我只是启动一个实例并在那里运行测试。它的成本不高,而且您通常可以很好地在本地开发,很少在系统上测试它。