如何使用moto配置AWS Firehose(Python AWS模拟库)

时间:2018-06-20 00:50:08

标签: amazon-web-services moto

我正在这样创建我的firehose资源,以及一个名为self.problem_reporter_bucket_name的s3存储桶。但是,在调用put_record之后,我的存储桶中没有任何东西。也就是说,当我在存储桶中调用list_objects时,没有项目。

self.firehose.create_delivery_stream(
  DeliveryStreamName=self.problem_reporter_delivery_stream_name,
  S3DestinationConfiguration={
    'RoleARN': 'arn:aws:iam::123456789012:role/firehose_delivery_role',
    'BucketARN': 'arn:aws:s3:::' + self.problem_reporter_bucket_name,
    'Prefix': 'myPrefix',
    'BufferingHints': {
      'SizeInMBs': 1,
      'IntervalInSeconds': 60
    },
    'CompressionFormat': 'UNCOMPRESSED',
 })
)

甚至moto也支持我的用例吗?

1 个答案:

答案 0 :(得分:0)

moto似乎不支持Firehose。 我做了这样的事情来测试与Firehose相关的代码;

如果在所测试的模块中定义了firehose资源:

from unittest.mock import patch, MagicMock
@patch('mymodule.boto3')
def test_put_record(boto3):
    record = {'ID": "123'}
    my_put_firehose_record(record)

    all_args = {
        'DeliveryStreamName': 'my-test-firehose-stream',
        'Record': record
    }

    boto3.client.assert_called_with('firehose')
    boto3.client().put_record.assert_called_with(**all_args)

如果在测试模块之外定义了消防站资源:

from unittest.mock import patch, MagicMock
def test_put_record():
    firehose = MagicMock()
    record = {'ID': '123'}
    my_put_firehose_record_external(firehose, record)

    all_args = {
        'DeliveryStreamName': 'my-test-firehose-stream',
        'Record': record
    }

    firehose.put_record.assert_called_with(**all_args)