Использование Moto для симуляции Lambda Response возвращает ошибку «b» при запуске lambda: (2, «WaitNamedPipe», «Система не может найти указанный файл.») «' - PullRequest
0 голосов
/ 28 ноября 2018

Я запускаю юнит-тест ( Pytest ), который вызывает поддельную лямбду (с Moto ) и ожидает ответа.Предположим, мы импортируем boto3 и создали лямбда-константу клиента.Вот функция:

def invoke_lambda():
    request = {'message': 'Hello World!'}
    lambda_response = LAMBDA_CLIENT.invoke(
        FunctionName='hello-world-lambda',
        InvocationType='RequestResponse',
        Payload=json.dumps(request)
    )

    response = lambda_response['Payload'].read()
    print(response)
    return response

Вот мой модульный тест:

import zipfile

import boto3
from moto import mock_lambda

CLIENT = boto3.client('lambda', region_name='us-east-1')

# Expected response setup and zip file for lambda mock creation
def lambda_event():
    code = '''
        def lambda_handler(event, context):
            return event
        '''
    zip_output = io.BytesIO()
    zip_file = zipfile.ZipFile(zip_output, 'w', zipfile.ZIP_DEFLATED)
    zip_file.writestr('lambda_function.py', code)
    zip_file.close()
    zip_output.seek(0)
    return zip_output.read()

# create mocked lambda with zip file
def mock_some_lambda(lambda_name, return_event):
    return CLIENT.create_function(
        FunctionName=lambda_name,
        Runtime='python2.7',
        Role='test-iam-role',
        Handler='lambda_function.lambda_handler',
        Code={
            'ZipFile': return_event,
        },
        Publish=True,
        Timeout=30,
        MemorySize=128
    )

# Test function
@mock_lambda
def test_invoke_lambda():
    mock_some_lambda('hello-world-lambda', lambda_event)
    response = function_code.invoke_lambda()
    assert response['message'] == 'Hello World!'

При запуске Pytest я вижу, что лямбда-ответ: b "ошибка при запуске лямбда: (2,'WaitNamedPipe', 'Система не может найти указанный файл.') "

Есть идеи, как это исправить?Я вижу некоторые проблемы, указывающие на докер из поисковых запросов Google, но, насколько я понимаю, Мото должен иметь возможность запускать все это из коробки без необходимости запускать это в контейнере докера.Справка была бы отличной:)

1 Ответ

0 голосов
/ 30 ноября 2018

Оказывается, мне просто нужно было установить Docker для Windows и запустить Docker ... Я больше не вижу этой проблемы, так что, думаю, все в порядке.- СамН только сейчас редактирую

...