我试图用FakeS3来模拟我的S3端点来测试我的流水线在流浪机里面的流水线Luigi。对于boto能够与FakeS3交互的连接必须建立与OrdinaryCallingFormat
为:如何用FakeS3测试Luigi?
from boto.s3.connection import S3Connection, OrdinaryCallingFormat
conn = S3Connection('XXX', 'XXX', is_secure=False,
port=4567, host='localhost',
calling_format=OrdinaryCallingFormat())
但使用时路易吉此连接被掩埋在s3 module。我能够通过修改我的luigi.cfg
并添加S3部分作为
[s3]
host=127.0.0.1
port=4567
aws_access_key_id=XXX
aws_secret_access_key=XXXXXX
is_secure=0
通过大部分的选择,但我不知道如何来传递所需的对象为calling_format
。
现在我卡住了,不知道如何继续。选择我能想到的:
- 图如何通过
luigi.cfg
- 图如何强制
boto
始终使用此电话格式在我流浪的机器,通过设置一个未知的选项,我通过OrdinaryCallingFormat
到S3Connection
无论是在.aws/config
或boto.cfg
- 制作
FakeS3
接受由boto
出现这种情况使用的默认calling_format
为SubdomainCallingFormat
(不管它意味着)。
有关如何解决这个问题的任何想法?
我可以但是这行代码是luigi而不是我的代码。修补luigi是解决方法,但会打破任何新版本的Luigi – tonicebrian
您没有在您的代码中实例化'S3Target'?您应该能够将上面的'S3Client'作为客户端参数传递给'S3Target'构造函数。 – MattMcKnight
我正在实例化S3Target,但之后我无法找到Luigi管道为FakeS3注入S3Client以及默认S3Client进行生产的优雅方式。有关如何执行此依赖注入而不污染管道的所有代码的任何想法? – tonicebrian